Ghosts on a Plane

Michael Chrien
Ryan Cornelius
John Sheblak
Dustin Stewart-Silverman


Ghosts on a Plane
Second Stage User Interface
Documentation and Questions

When the user starts the game, he will be prompted with a short cinematic showing a ghost heading towards the house to haunt it.  The camera will slowly zoom out as it continues to follow the single ghost, and more ghosts will enter the shot.  Suddenly the ghosts are cut down by laser fire, and the camera pans out to see the house on one side of the screen, guarded by lasers.  Welcome to the world of "Ghosts on a Plane"...

The main menu screen will then pop up.  The main menu will be text rendered over the game running in demo mode in the background.  In the main menu, the user will select, through either the mouse or keyboard, what he wants to do.  He’ll have the option of starting the game, seeing a high score list, or quitting.  If he selects the high score list, the top ten highest scores will replace the main menu text, and they will be displayed in a chart.  Any interaction from the user at this point (mouse click or keyboard press) will take him back to the main menu.  If he selects quit, the game will exit. Each selection on the menu will be highlighted so that the user knows which option is currently selected.


When he selects “Play Game”, the main menu will disappear and the camera will pan out and down centering on the house (overhead view with the house in the center). The user is now in "turret placement mode".  In this mode the user will use the mouse to move a turret in the specified area around the house.  When the user left clicks on a turret, that turret will be highlighted. When the user left clicks again on an unoccupied area near the house, the turret will be placed there. Once the user is satisfied with the turret placement, he will press a "Begin" button at the bottom of the screen, and the game begins. Ghosts will begin to appear from the graveyard and head towards the house. The user can fire the closest turret by left clicking near the turret. This will cause the turret to fire in the direction of the projected click. The player has to protect the house from being haunted, and he does this by firing laser beams at ghosts drawn to the house.  The ghosts will be controlled by neural networks and over the course of the game, they will get smarter and smarter.  If the player lets too many ghosts into the house, the house becomes haunted, and the game is over.  The player’s score is determined by how many ghosts he killed.


The main game will be divided into several waves of enemies. The player will destroy a certain number of ghosts, and then he will be rewarded with either a new turret or an impenetrable wall to place. The ghosts will be unable to go through the wall, and will have to go around it. The user will be free to place the turret or wall anywhere within a certain radius of the house after each wave.  The user will also be able to pick up and move previously placed defenses when a wave is completed. The lasers will by default fire at the closest enemy, except if the user clicks a target of interest.  For example, the user will be able to control where one turret fires by clicking on targets near it, while the other turrets will just simply fire at the closest enemy.


After each wave, the camera will move further away from the house, revealing more of the map, and exposing more areas to defend.  The game will reach an unavoidable climax level where there is a single, never-ending wave.  From this point on, there will be no more new turrets or walls to place.  More and more enemies will continue to stream towards the house, and it is up to the user’s placement of defenses to defend the house until it eventually gets haunted.

The player will be able to tell how haunted the house is by the amount of light emanating from it.  Initially the house will be dark, but as more and more ghosts enter it, the house will begin to glow.  Eventually the house will become overrun with ghosts, and this is when the game ends.  When this happens, the house will continue to get brighter and brighter, until the entire scene is white, and the user is presented with a game over screen.  We are hoping to add camera effects to game such as shaking and smooth path movements.


We found the rendering and model work was the hardest do at this point. Since we have modularized the game, that is, each person is responsible for a certain part of the game such as rendering or game simulation, it has been difficult to communicate between the different modules. We are currently writing a system-wide messenger which will alleviate a lot of these communication problems, but we do not have this done for the milestone. Creating the models was also challenging. It was not hard, just time consuming to get the right effect, normals, etc.


As a group I think we can all say that up to this point, we're all proud of the rendering module. It is very versatile, and contains many features we have yet to take advantage of such as multitextured objects, shaders, and different shading modes. John is also in the process of adding cool visual effects such as fog and shadows to enhance the game's look and achieve the scary look that we are trying to shoot for. We will continue to add cool features to the renderer, and given its modularity, this should be a fairly easy task. Another cool thing that we're proud about is the GUI which is extremely versatile. Buttons will have three states or images: one when the mouse is over it, one when the button is pressed, and one when the button is just rendered. We're looking forward to showing the full capabilities of this for the next milestone. Lastly, this isn't related to the game per say, but we've really managed to keep the code clean and manageable. It's easy to dive into a certain module and start working on it. The code is well documented, and we think that's something to be very proud of. Especially if we want to reuse the code.