Skip to main content

Building the Shelf and Chairs

With the final submission looming closer, most of my effort was directed at replacing some hard-coded game-play functionality with dynamic data from the Builder and Finder systems (~3 hours), assisting my team with issues they encountered (~2-3 hours), and getting the shelf and chair ready to be built by the players (~8 hours).

The Builder and Finder systems still had a few hard-coded values from the Beta build of the project that were specific to constructing the table, so I worked on replacing those with the data that is contained in the instructions arrays that Priscilla and Maxime created this week.  I was initially have problems accessing this array before I discovered that JavaScript arrays can be accessed by string, which simplified it a lot.  Below is an example of the before and after of this process.


// Before
socket.on('setFurn', function (data)
{
    this.current = data.id; // Where data.id was always "table"
    this.step = 0

    // "tableTop" is the id for the first piece of the table.
    sceneEl.emit("setInstruct", { furn: this.current, piece: "tableTop" }); 
});

// After
socket.on('setFurn', function (data)
{
    // Get the instruction object for the specified id
    this.current = instructions[data.id]; 
    this.step = 0

    // Send the parts required out to the app.
    sceneEl.emit("setInstruct", instructions[this.step]) 
});

 In addition to this, I helped Priscilla and Max with some of the code they worked on.  The most notable was helping Max to add images to the snap-points by adding the image source to the templates array and reading it in through the 'spawner' component, which is something he discusses further in his blog.

Unfortunately a large chunk of my time was spent preparing the chair and shelf models for their placement into the game; far more than I anticipated.  Preparing the models for the Aframe environment involved manually creating the Aframe Physics bounding boxes and then manually placing each snap-point for every individual piece of the chair and shelf models.  Creating the bounding box for a piece involves finding the dimensions of the piece from the Maya file, and then translating these values into XYZ 'half-extends' that the physics system uses to create the bounding box.  Placing the snap-points then requires spawning all the pieces for a build, constructing the furniture in the Aframe Scene Inspector, then dragging a placeholder snap-point to the approximate positions that are required, and recording the position data in the template file. 
Although this was not challenging work, it was time-consuming and repetitive and it was slowed down occasionally when problems with the exported models or textures were discovered.

As we approach the final deadline the stress is mounting, but the worst is behind us, so all that is really left to do is hooking up the remaining systems, and implementing a player 'ready' system. 




Comments

Popular posts from this blog

[FINAL] - Where to find our game

Hello future builders, we're 3 programmer-artists that make up the Seismic Octopus team: Mitchell Koch - lead programmer, game tester, researcher  Priscilla Lo - project manager, sound design, lead 2D artist, programmer, documentation  Maxime Vincent - lead 3D artist, lighting designer, game tester We finished this course in May 2020 with a final release of Build-a-Furniture available on GitHub: https://github.com/Areizza/Build-a-Furniture Although this semester was full of hardships and unprecedented times near the end, we got through it together and are proud to present our simple web-VR game. Check it out and let us know what you think! :)

Sprint 10 - Adding more boxes and lots of scripting

As the final submission draws near, lots of work has yet to be done. Due to time constraints and the lack of resources in light of recent events, we made the decision to cut down our scope by removing VR functionality entirely and focus on desktop-to-desktop connection fully. With new goals in mind, I spent the beginning of the week by adding all the boxes for spawning furniture components. To do so, I started by replacing the blue boxes we used previously with stylised boxes that match the environment better. To tell the player what each box contains, an image of the rendered component is placed on each side. The challenge here was that I wanted to avoid creating a GLTF for every single box because it would have slowed down the page drastically. The solution was to instead use a single, universal GLTF for every box and placed images on each side of the box as explained previously (~6hrs). New Warehouse Area - Added new boxes Close up of updated box - Bright colours and side

Sprint 6 - Redesigning and Finalizing the Warehouse

Based on feedback from the alpha build and some considerations from the rest of the team, I spent the week redesigning (~9hrs) the design of the warehouse and retexturing (~5hrs) it to fit the aesthetic of the furniture more. Some of the changes made to the warehouse include the following. First off, the game will only support three pieces of furniture to build, therefore it was unnecessary to have five rows of scaffolding. This is also supported by our attempts to reduce the poly count as well as create more space between shelves. From the way players moved into the environment, it was clear that there was too little space between shelves to removes boxes, so this was reduced. There was also too much unnecessary space in the front of the warehouse, so everything was pushed forward more while cropping the back end a little to reduce the poly count further. The doors of the warehouse were also redesigned to add more interest in that section of the environment. (~4hrs) Next, I UV map