Skip to main content

Controllers and Game-state Management

The two issues I worked on this past week were getting game-pad controllers working with our project (~6 hours), and general work on the game-state systems to iron out some of the kinks and add some more functionality (~3-4 hours).  Unfortunately neither of these tasks proved 100% successful due to some set backs.

The game-pad controllers are so close to working, movement and look controls are fully functional, but I cannot get the Super Hands components to pick up the button events from aframe-extras.  The easiest way to see this is by looking at some code:

<!-- Camera -->
<a-entity id="rig"
            movement-controls
            position="0 0 0">
    <a-entity id="camera"
                camera
                wasd-controls="acceleration: 125"
                look-controls="pointerLockEnabled:true"
                position="0 1.6 0"
                capture-mouse
                static-body="shape: sphere; sphereRadius: 0.0002"
                super-hands="colliderEvent: raycaster-intersection;
                    colliderEventProperty: els;
                    colliderEndEvent:raycaster-intersection-cleared;
                    colliderEndEventProperty: clearedEls;">
        <a-cursor id="cursor"
                    cursor-extend
                    downEvents="gamepadbuttondown"
                    upEvents="gamepadbuttonup"
                    rayOrigin="entity"
                    far="5"
                    interval="100"
                    objects=".grabbable, .clickable">
        </a-cursor>
    </a-entity>

The above code is the player element in the scene which is composed of a rig, camera, and cursor.  The 'movement-controls' element is the component that implements the game-pad controls and every time a button is hit on the controller it emits a 'gamepadbuttondown' event on the 'rig' entity that has the value of the pressed button in the event.details.index.  The problem is that the cursor element and the 'grabbable' component on grabbable elements need to listen for this event, so I created a custom component, 'cursor-extend', to see if I could extend the event down to the cursor element, but the cursor still does not hear the event.  Looking at the source code for the Aframe Cursor, I can see that the cursor component watches for inputs at the Canvas level of the document, so it looks like I would need to route the event through the canvas for the cursor to pick it up. 

Seeing as there is still a lot more important work to complete for our final deadline, I am going to leave the controller button support for if I have extra time later.

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! :)

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

Catalogue, Sound Effects, JSON for Instructions

This week I updated the image for the catalogue and added it to the Living Room environment as an image plane (~2hrs). I am currently adding smaller clickable planes on top of it to represent the different furniture options to choose to build. A screenshot of this can be seen below. I also looked for some sound effects to use for user feedback (~2hrs) when pieces are combined together correctly, incorrectly, pieces are dropped, etc. These sound files have been added to the shared drive and will be implemented in the code in the next few days. Some example sounds can be listened to at the following links: https://freesound.org/people/NenadSimic/sounds/150879/ https://freesound.org/people/grunz/sounds/109662/ https://freesound.org/people/GabrielAraujo/sounds/242501/ https://freesound.org/people/kirbydx/sounds/175409/  I also worked on adding JSON for the builder.js and finder.js files to store the required information for the instructions (~1hr). An example o...