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

Sprint 5 - Finishing the Furniture

This week, I completed modelling (4hrs) and texturing (7hrs) the furniture that will be used in the scene. It took longer than I expected because I had difficulty nailing down an art style while also working with new techniques in Substance Painter that I wasn't familiar with. A big challenge was finding a style that I really liked and understanding how to achieve that. My experience is more in realistic modelling and texturing where it's easy to see where things don't look right. However, with stylized pieces, it's up to my own interpretation. I'm also working with a very base, low-resolution mesh because I want to avoid creating too much detail through normal or height maps. The simpler, the better, but, the simpler, the less there is to work with. The grand solution in nailing down a flexible art style was through the use of ambient occlusion. By baking the same model over itself, I get an AO map, which already improves the look dramatically as it removes ...

[WEEK 3] Illustrations and Alpha Prototype

This week, we need to complete the user interaction specification document, which contains many graphical components that need to be created. This includes the storyboard/wireframes, design compositions, and the architectural flow of our game. Additionally, the Alpha prototype is due next Friday! This is a huge priority and at this point, we will be relying on Mitchell to work on coding majority of the functional elements. Primitive environments have been prepared by Maxime, but they need to be tested in a VR environment (i.e. for scale). Priscilla will be putting together all the parts of the proposal document and supporting both Mitchell and Maxime with their tasks.

Storyboard and Physical Layout

I finished up on some graphical elements for the user interaction specification component of the proposal due this coming Friday. This includes the storyboard panels and the physical layout diagram. As I was researching Oculus Rift physical setups, I had to determine how many sensors we would need for our game. I believe that 2 sensors will be sufficient, since we do not need a true 360 degrees experience as the Builder player will primarily be focused on the 180 degree space in front of them (i.e. the fireplace, the TV, and building the furniture). Our game is not an action packed game with any running or shooting. Of course, the player will still be able to fully look around but they shouldn't have a great need to move in the other 180 degrees of space. This would also take into consideration accessibility to our game, because it costs extra to buy a third sensor (the Rift only comes with 2) as well as requiring adapters and wire extensions. I spent about 4 hours researching ...