Tuesday, May 11, 2010

Final Presentation

And here are the slides I presented during the senior project presentation.

ENJOY!

Final Results

I will summarize the last couple of weeks of work:

Shadows
After testing the game several times, shadows were added to the character to give a better sense of depth and the distance from the wall.

Lag
Most of the lag problems were resolved when the game was running on Release mode. And the Vicon Data was streamed and through Ethernet cable instead of wireless.
More lag problems arose when I added more walls (went from 5 to 10) and the lag was extremely high. Aline and I tried to figure it out and it just didn't seem logical that adding walls would cause this terrible lag. On my way home something came to mind: The problem was that when you set a collision pair on PhysX it test collisions for that pair on every update adding 5 add-ed about 5,000 collision pair which would account for the lag. To solve this problem I am now inactivating collisions for all walls except for the active wall. That is the wall closest to the player.

Reduced Marker Set
Luckily there was enough time to get into one of the Fu-ture Tasks which was creating a reduced marker set. The game is now being played with 16 markers.

Final Results
The Game at this stage is a fully playable game with a new game menu. It was really important for me to have this polished, the looks can always be improved but it is crucial to have a game that will not brake when you transition from one state to another. The game has two play modes:
1) Survivor (the player only has 3 lives)
2) Continuous (the game goes on forever)
Each game mode has its own scoring system and the high scores are saved and can be viewed by the player at any moment. (believe it or not this gave me a couple of really bad headaches)
The game also features a bonus wall, this is a solid wall with one colored area. If the player hits this area bonus points are awarded.
The overall look of the game was kept very simple.

Friday, April 30, 2010

Game is Ready!

There are a lot of updates which I will write asap, for now enjoy the latest videos:










Wednesday, March 31, 2010

First Live Test


I am really excited, today we did the first live test of the game and it worked REALLY well (I mean for a first run). Joe uploaded some videos of me playing:






Here are also a couple of Screen Shots of how the game looks:



Obviously not everything is sweet and perfect and some problems did arise:
- I was backwards (need to make sure this doesn't happen)
- There was quite a lag (although the game was running on debug mode and the data was being streamed on wireless which gives room for improvement)
- The walls are a little bit too short. They were just right for my height but if Joe plays the game it will probably be way harder for him.
- Need to place some sort of markers on the virtual floor to give a better sense of depth and know when you passed the wall
- The player seems to be resetting between walls

Things to do over the week before the next test:
- Make sure the player is not backwards
- Make sure the player is not resetting between walls
- Put in overlays for score
- Make the walls more continuous and give less time when you crashed against a wall

Hopefully I can get most of the bigger issues worked out before next Wednesday when I will be testing the game again!


Monday, March 29, 2010

The Controller

(Hey, I said coming soon....)
Annnnd this is what I've been working on:


This video might not seem different from the one I showed during the Alpha Presentation buuuut it is. Trust me.
The difference is that the motions we are seeing on this video are being streamed live from the Vicon box in the lab. Even though it is not a real time motion yet, it is pretty much like it. Before I was loading and playing a pre-captured motion.

So this is what I accomplished:
- Install the Vicon Data Stream stuff
- Understand how the data is being streamed and get it working with Aline's OpenGL example
- Adapt that to my code and to the way gamebryo/physx deal with geometry
- Make sure the motion fits in my world (I had to fit Gulliver into my tiny world). The mocap data came from a world of 1000x1000 (more a less) and my worlds is about 200x200...

Steps to follow:
- Test what I have with real-time data..... aaaahhh (scary...)

(Getting to this stage on the project was possible because I had the helping hands of Joe and Aline)

Alpha Review Comments

After the Alpha Review I got great comment which helped me realize that there are still some unclear elements to the gameplay (or maybe they were clear somewhere deep inside my brain...) Some of the things I've been thinking about are (yes, I've been thinking...):

- There are going to be two game modes: 3 lives (survivor), infinite lives (continuous)
- I won't be able to define if it is going to be 3rd person or 1st person until I test it (maybe I'll have both and let the player choose)
- The game difficulty is as follows:
* I have sets of predefined walls (probably: easy, med-easy, medium, hard-med, hard)
* I will be sending random walls withing a set to the player (starting with easy)
* As the game progresses I will be incrementing the range of the walls being sent (easy+med-easy, etc)
* The speed at which walls move also increases (it will have a limit to avoid making the game impossible)
* The score is merely based on the number of walls you successfully avoided
* You can crash 3 times, the 4th one you are OUUUUUT (for 3 lives mode), for infinite lives hmmmmm....I haven't decided
- I need a pool for the Final Presentation! :>

Coming soon: the controller...

Friday, March 19, 2010

Alpha Review

Today is the Alpha Review. On the last post, I had four main goals to accomplish for alpha, out of those the only one that I wasn't able to finish is adding sound. The good news is that my Sphereman is now playing and the motions look great, at first I was having problems with the frame rate, it seemed to drop a lot. But after rearranging some of the code to make sure all the motions are preloaded before the game starts the frame rate problem was fixed. I also generated about five different walls, one of the walls doesn't have a hole. That was to make sure I can show the collisions no matter what. Finally, I put in some screen overlays for the beginning of the game and one the player collides. I still to add the lives and the score but the Overlay system is already in place.

After the alpha review my to-dos are:
- Polish the game (add score, sound, etc )
- Work on the interactive controller, which should be the bulk of the work from now on.

Overall I am happy on where I am at the alpha stage. My main goal was to have something that could potentially be played, i.e. a rough version of the game, so I can focus my energy on getting the interactive controller.


Friday, March 5, 2010

Crashing Against Walls

Last week I was able to accomplish all of my goals (yay!). This is a summary of it: All of my collisions are working. I was able to do it with the character, so sphereman is able to play the game! And if he crashes into a wall "clashhhh" the wall shatters. I also started making it more like a game, so if yo crash the wall shatters then it resets it and another wall comes at you. If you do not crash walls keep coming. Right now I only have one shape, but it bring the point across.
I also dedicated some of my time in cleaning my code and making it more modular. Here is a video showing the collisions:


For this week and next (ie, before our Alpha Review) this is my to-do list with priorities:
- Be able to load motions with the PhysicX Sphereman (I do not know if I am going to run into some problems...)
- Generate a couple of different walls
- Overlays for score
- Add sound
I might not get to all of them but the main goal for the Alpha Review is to show a functional game without the interactive controller.

Thursday, February 25, 2010

PhysX In

From the plans I last wrote, this is what I got done: I have all my PhysX in place, collisions are working, the wall is moving towards the player and if you collide with it it "breaks." What I need to do now is have multiple walls coming at you, have the wall's PhysX turned of when the wall is moving and turn the on when there is a collision. I worked a little bit on the character but it still seems off.

Here is the game plan: I will have the collision reporter so the PhysX for the walls only turn on when there is a collision. Why is this important? Well, if I have the PhysX on all the time my fractured wall will break before it gets to the player, gravity, and that would be no fun. Another thing I plan on doing is testing the collisions with my Sphere Character. Right now I've been doing it with a cube, not very interesting but useful for making sure the basics are in. Hopefully at the end of this week I will be able to have that and then I'll upload a video showing the progress.

Saturday, February 13, 2010

FSM and Character

First this week's progress:
I was having a little bit of trouble when I was trying to make my Sphere man move. It would go crazy. I realized that the problem was that I had my skeleton hierarchy correctly setup in Maya but once I exported it to a NIF file it would mess it up. After Aline showed me how to prevent Gamebryo of doing this my skeleton looks how it should. I was also able to load a .amc file with a motion and play it. It looks correct, I just need to make sure that the character is not floating in space.
I also setup my Finite State Machine. I took the one Ted and I had for the CIS 564 Bowling game and modified it for what I need. So the game logic is in place and ready to be filled in.
The last thing I did was add PhysX to my scene, my scene has the character, floor, and a wall with a hole, and a cube which I will be using to test for collisions. Every object but the character have Physx. (Below an image of the scene)



For now my plan is to get on one side the character working 100% and on the other get the game mechanics working (collision, moving walls, response to collisions, etc) 100%. Once they are both working I will integrate them. For next week I will start moving the wall forward and will start testing for collisions. Most likely I will have the PhysX turned off while the wall is moving and will turn them on if there is a collision. If there is a collision the wall will break. Once I have this working with the cube I will put a capsule around the character and try that out. On the side of the character I just need to make sure it is moving how it should and not floating and that the rotations are applied appropriately.

Monday, February 8, 2010

Setting up

This last week I wasn't able to make a lot of progress because I spent a lot of time setting everything up. It always takes more than expected but I am up and ready to go. This is what I set up: (I reformatted my computer so had to start from square 0)
- Visual Studio
- Gamebryo + PhysX
- DirectX
- Fmod
- SVN
- Git and my repository. I'll be hosting it with github since I've found Git to be very efficient.

I also started working with gamebryo. I am using the libraries in the EMG project to load an .asf file.

My goals for the next few day will be to have it properly working (I have a coupe of bugs). Right now I only have spheres for the skeleton so I need to make a real skeleton with spheres and cylinders. And I will start playing with the PhysX. What this means is that I will add physX to my skeleton and will test for collisions with a wall. I will initially test with a hole-less wall and then with a very simple hole.

Monday, January 25, 2010

More on Flex, Plan for the week

More on Flex
I've been doing some research for the project and found some nice videos that relate to Flex.
The inspiration for the theme of the game: Hole in the Wall TV Show
The initial inspiration for this project: Johnny Lee’s TED talk
A game that I was showed which has a similar thematic: Muscle March

Plan for the Week
For Week 1 (Jan 25 - Jan 31) I will be working on (there were some slight changes since I am already up to speed with Gamebryo I will be using that as an engine instead of Learning Ogre):
- I got the code for the EMG Player from Aline so I will be creating a Gamebryo visualizer. This includes setting up the geometry and setting up a UI to load motion/play/pause.
- Will do some more background reading.

Monday, January 18, 2010

What is Flex?

Most games we find these days require some complicated controller where you have to learn a series of button combinations to control it. The first platform to try to solve this problem was the Wii, but it still comes with some caveat, such as having to learn how to move the Wiimote. The purpose of this project is to have an intuitive controller for the game, your body, which will respond to your movements without having to learn anything beforehand.
Flex is a game where you have to fit your body to the shapes that are coming at you, like the TV show “Hole in the Wall.” The game will track the position of your body, as the game progresses the shapes will come faster at you and will be more difficult. Another objective of this project is to be able to play almost right away using few markers to track the player's position (between 6 and 8 Degrees of Freedom), as well as making it accessible to almost everyone by using inexpensive hardware such as the infrared camera found in the Wiimote, which is able to track 4 points with a 45° field of view.