Skip to main content

Polishing Snapping and Spawning Objects

Finishing the alpha prototype made up the majority of the work completed this week (~20 hours), but even after the alpha presentation there was still some more work and polishing to do with snapping components together (~4 hours), and then work began on dynamically spawning modular furniture (~2 hours) pieces and that will be the focus of this coming week.

Creating the snapping functionality we desired for our alpha prototype proved to be quite the challenge, and this was not because of the logic or technical requirements behind snapping objects, but rather due to some limitations of the A-Frame Physics System library.  Before going into these limitations I will go over the two approaches taken to try and create this functionality.  
The original approach was to take the smaller piece that was attached parent it to the larger object, and then apply translations to the piece to line it up correctly.  However, in practice sometimes the transformations would not apply to the component and it would remain positioned the same way it was originally attached, and the rest of the time A-Frame itself would crash, which is not ideal.
The second approach was to clone the object being attached, use the clone as the attachment, and delete the original part.  In practice, the clone was not a full clone and did not partake in the physics system, so was not solid, and trying to delete the original component in any fashion caused A-Frame to crash. 

An inordinate amount of time was spent trying to interpret the error and warnings messages thrown by A-Frame the Physics library and Three.js, but eventually, through much trial and error, I was able to determine the crashes occurred were because the physics system does not now how to handle dynamic objects that are removed while undergoing collisions, and transformations were not applying to attached parts because the physics system would override the new values.  In the end, the prototype used the cloning method and the old part was just hidden.  The current build uses the first method, but there is still some fine tuning to do.

I tried to record an example of the alpha prototype in action, but for some reason my screen capture software cannot record a browser window that has the mouse captured.  Instead here is an image of the partially completed table. 

How the game appeared for the alpha.

The snapping functionality should be the biggest technical hurdle, so with luck the rest will be smoother sailing, but we all now that is not how software development works.

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 ...

Making Instructions

This week, I worked on creating all the instructions images for both the Warehouse and the Living Room. Although this was not a very difficult task, it was tedious to work on and took around 3hrs to complete. It was a challenge to adjust to our new schedules given the current circumstances and allot appropriate time to spend on each of our classes. The instructions in the Living Room show the current required furniture pieces and their quantities, which the Builder will need to communicate to the Finder in the Warehouse. See below for an example of pieces required for a table. On the other hand, the instructions in the Warehouse would show the symbols on the different furniture pieces that should touch in order to be combined, which the Finder will need to communicate to the Builder in the Living Room. See below for an example where the green heart marking should be made to touch the green circle marking. I will be putting the source link for these instructions into arr...