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

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