Post-jam update #1: "Phantom Hands"
- the application now works with Oculus runtime 0.7/0.8
- new interaction video (the old one is still here)
- UI can now be locked in place on the phantom hands
- small locomotion fix for better headset-to-tracker distance calculation on game start
In a distant future scattered across time and space semi-digitized human beings fight for the last vital resource - processing power, distributed by the central server located on uninhabited Earth.
In dedicated facilities, their daemons face each other in physical form via robotic telepresence. Last one standing will keep operational until next time, while others will be disconnected and forever lose what still left of their physical presence.
Central server reached partial self-awareness centuries ago and initiated countless request collisions in order to start automated resource allocation system and reduce client base. Your daemon is the last active process doomed to fight its own reflection until bitter halt.
Instead of ghosts, our ancestors developed daemons - core low-level programs used to maintain functions of biomechanical bodies. While digitized consciousness stored in data vaults due it's large and complex structure, daemons located in remote bodies. Daemons aren't able to question the reason for their existence and therefore proved themselves more robust than the mind which tends to decay with time.
Daemons communicate with the central server in order to get command stream from stored consciousness. Reduced data flow results in temporary blackouts while disconnected daemons stay idle eternally.
Automated resource allocation system was initially introduced to resolve request collisions with temporary disconnects during traffic jams. With structural collapse leading to bandwidth reduction, temporal disconnects became permanent. Later it was agreed that all disconnect decisions should be made according to results of chess-derived robotic battle in a clean room, protected from electronic warfare systems.
This game prototype is controlled with the hand-based user interface (UI). UI displayed when a single hand or both hands are in one of the following poses:
- placed parallel to the floor, palm facing upwards (palmar aspect)
- placed parallel to the Leap Motion sensor surface, palm facing forward (dorsal aspect)
Depending on the pose and number of hands present in sensor's field of view, one of the five possible widgets will be displayed:
- main menu - contains current time/time from start, HMD recenter, game restart and exit options
- motion controller - shows player's position against initial pose and tracking camera, direction buttons for quick rotation, toggle button for enabling/pausing locomotion system
- ring selector - used to specify a destination for the selected figure by constructing a letter-digit coordinate point
- aim selector - similar for both hands, left for enemy figures (capture/attack), right for player's figures (select/deselect/move)
- map widget - shows positions of all figures and destination points on the level
Motion controller has simple push-button interaction, while ring selector uses clockwise/counterclockwise 360-degree rotation as a trigger. Aim selector uses grab gesture for selection confirmation, and the main menu requires grab gesture to be performed with both hands. To select an option in main menu player can move one of the hands up and another down while holding them in dorsal aspect.
This is standing experience where to move yourself player should perform a step in the desired direction. Locomotion system detects 8 possible directions (as marked on the level's floor). After movement player should return to initial position (center of the cell) to re-enable locomotion system for next move. Please note that you need to have at least one meter of free space in each direction for safety reasons. If your Oculus Rift and Leap Motion cables are not long enough, you can move only forward/left/right, and use direction buttons to rotate and then move in other directions.
How to recenter the headset (set initial pose):
- run the game, dismiss health and safety warning by hitting any button
- stand ~one meter away from the tracking camera while facing it and put the headset on
- place both hands in front of you, select recenter option from the main menu
- perform grab gesture with both hands simultaneously, so question mark changes to an arrow
- move yourself in that way so the arrow will face eye icon while being at the center of UI's reticle
- perform grab gesture with both hands again
Bright/reflective surfaces like windows, white walls and furniture can affect Leap Motion controller performance, as well as long sleeves and rings. Use Visualizer with images displayed to detect possible problems.
If you receiving the wrong pose for your hand or hand scale is off, move it in and out from sensor's field of view.
- background music "pots" by lonelyfridays, under CC BY 3.0 license
- 360 Panorama Capture script by eVRydayVR (Unity Asset Store page)
- wireframe shader from The UCLA Game Lab (Unity Asset Store page)
- particle effects from ktk.kumamoto (Unity Asset Store page)
- "Nucleus BRK" font by Brian Kent (freeware at 1001fonts)
- "Nova Display" font by Nihar Mazumdar (freeware at 1001fonts)
- "Modern Pictograms" font by John Caserta under SIL Open Font License
- "Free 3 of 9" font by Matthew Welch (freeware at 1001fonts)
- 360-degree panoramas at VRCHIVE
- my Tumblr blog
- Twitter: @cbrpnkrd