“A painter paints pictures on canvas. But muscians paint their pictures on silence ~Leopold Stokowski

Friday, December 9, 2011

Circuitree 2.0

Published by Amy at 12:23 PM

Team: Oscar Camorlinga

ROLES
Oscar: Unity, Scripting, Kinect Implementation, Texturing, Rigging
Amy: Concept Art, Modeling, Texturing, Rigging, Animation


Concept


We decided to create a dynamic and immersive environment in which the user will gain an interesting and new perspective of a computer virus.  The user is in a surreal forest where they are left to heal infected trees.  We expanded on our original idea by adding additional levels.  We originally were going to go with three levels + a boss level, but we decided to stick with three levels (third level being the boss level).  It was necessary to obey the Rule of Thirds!


Expansion: 


Kinect Implementation - For Circuitree 1.0, there was a large separation between the user and the environment because of the navigation system (computer).  It was only natural to pursue the kinect since it involves the body.


Larva- Besides the computer worm, the larva are also responsible for spreading the virus. The larva interact by infecting trees and attacking the user.  When the user gets attacked by the larva, the camera shakes.  


Environment - The environment was expanded to three levels.  


1st level: The user encounters environment and explores.  The user notices green (healthy) and red (infected) trees in the environment.  The user can heal trees in this level.  The user also encounters a few larva in the level.  Larva infect the healthy trees.  The user can kill the larva by "stomping" on them.  Once the user has healed a certain amount of trees, the gate opens and they can proceed to the next level.  


2nd level:  The user encounters more larva and continues to heal infected trees.  Once the user has healed a certain amount of trees, the gate opens and they can proceed to the final boss level.


3rd level:  The user has to heal four columns around the computer Worm.  The worm can attack the user.  After they heal the columns, they heal the alter which is the central computing processor.   


Technical Background
Used the Kinect in conjunction with Unity to create a more immersive experience when playing the game. It proved easy to install and run in Unity, but the real challenge came with gathering the Kinect data and transferring that data to the controller mechanics. There was a vast array of scripts that were all communicating with each other while Unity was running, making it rather difficult to sift through thousands of lines of code to find only certain pieces of the script that were needed for implementation. Thanks to Krista Murphy and her successful implementation of the kinect in Honey, I shrunk something! (see research below) she was able to guide me through the process of gathering the data ans using it for player control.


Research
Technical:
Kinect controls were researched, such as how best to use the body to control the movement of the character in a 3D space. Should we control the character using the movement of our upper body like a joystick? Perhaps the head movement could be tracked so that you could simply lean forward and backward? How will you turn the camera to look at the world around you? perhaps by rotating your shoulders? Or using your hand as a kind of "guide" for the camera? Or possibly using both your hands as a kind of steering wheel as if you were in a vehicle? We ended up polling people their opinion on past Kinect experiences with games similar to ours, as well as researched online the best methods of Kinect character control. Ultimately it was decided that the head would be tracked to control the movement of the character on the X & Z plane, as if you were a giant joystick, and then the shoulder rotation would determine the rotation of the camera on the Y axis. Below are two videos on Kinect movement implementation that we used extensively as a reference.

Honey, I shrunk something!
Call of Duty FPS on Kinect Hack (FAAST) with Wiimote (GlovePIE)


Process
Unity & Kinect:
We first decided to get the hardest part out of the way, which was the Kinect implementation in Unity for player movement, though this proved to be the least time consuming and easiest part of the project on the technical side. Once the Kinect was working, scripting began on the game. First, the initial game was re-scripted up to before the boss battle (tree healing), and then the addition of the Larva AI introduced. (see challenges below for more details) 


As Oscar implemented the Kinect with Unity, I was off to model a new feature to the game: Larva.  Thankfully, I had saved previous versions of the worm model and was able to construct the larva from separate pieces.  In the levels, the larva infect healthy trees and also come after the user.  They can bite at the user which causes the camera to stumble.  The user can kill the larva by lifting their leg and "stomping".  The larva has two attack and three death animations.  I also rigged, textured, and animated the larva.




Challenges

Unity & Kinect:
Several issues arose, which are listed below, and were widely researched through Unity's amazing reference library and support forum.


Determining the current level and using that information to change game states and larva activeness
Particle systems for tree healing and final pedestal
Particle system lightning effect for the worm boss
Correcting the larva orientation to match the terrain using ray casting


Larva AI

Infecting trees
Attacking player once a certain "closeness" was reached
Death
Spawning from the mother worm during the boss battle
Worm AI
Spawning larva
Following the player
Attacking the player once a certain "closeness" was reached
Death
Receiving "power" from the pillars (electricity going to its body and following it)

Generative level creation
Kinect sensitivity changing depending on the distance of the player
Kinect not being able to re-calibrate users once they went off screen or calibrate a different user
Kinect shoulder data becoming corrupt and "reversing" the rotation
Kinect shoulder data needed to update rotation dynamically (the more you rotate your shoulders, the more the character turned)
Kinect stomp being extremely delayed at times
Everything else was either already implemented from the last version or didn't take too long to implement.



Rigging:
The worm rig was supposed to be updated in order to provide better control for the animation of the boss, but the spine IK setup proved to be problematic. Controls were not being updated with the movement of the spline (ie. leg/arm controls, head joint and jaw controls) Trying to fix the issue by parenting and/or constraining control movement to the spline caused double influence on joints and interesting rotation problems.


Future Improvement


Health would be an essential characteristic for the game.  Right now, the larva attacks only cause the camera to stumble or shake.  The larva would have more purpose (besides infecting trees) if they actually did damage to the user.  


Wiimote:  The wiimote would be used for camera orientation.  This would allow the user to look up and down.  


User Experience


1st person: Users felt as if they were in the environment.  They thought the game was enjoyable and wanted to explore.  (Screen was lowered to make the ground plane parallel to the actual ground).


2nd person:  People enjoyed watching users play the game.  They encouraged and helped the user through the environment when navigating for infected trees or larva.   


3rd person:  People seemed to be actively involved in the game, whether they watched the user or actually played Circuitree.


Demo















Presentation Slides

Published by Amy at 12:21 PM













Sunday, December 4, 2011

Additions

Published by Amy at 10:03 AM

We had extra models for Circuitree that were not implemented for the first project.  I had to check each model (5 rocks, 2 plants) to see if their normals were correct.  For the first project, Circuitree's trees normals were inverted.  That's why the the models were missing a few faces.  Oscar also had to fix the normals for each tree.  He separated them into different parts.  I reconstructed them by putting each of the tree parts together in an irregular manner.  


As for textures, Oscar created the new texture for the worm, larva, and trees.  I did the textures for the rocks and the plants.  The plant texture wasn't mapped correctly, so I plan to change it before the VIST show.  


Storyboard of game