Monday 9 April 2012

Game Design Document



High Level Game Design Concept

             Top-down, action adventure in which an evil race of aliens has come to earth is search of a new food source. After discovering humans don’t taste as good as they once thought, the evil aliens discover the tastiest animal on earth is cows! The player will step into the shoes of a light hearted alien who has devoted himself to beaming his new bovine friends to safety.
Controls:
The character will be controlled using the WASD keys to move and the P key to beam up target cow. The item used to beam up the cow must be used at melee distance thus the character will have to be close to a target cow in order to successfully beam it up to safety. Camera will be third person and fixed in an over the shoulder perspective behind the character.
Environments:
Our environments and currently planned levels will be in the form of various farms. These levels will be sand boxes allowing the player to go where they will within the limits of the farm as opposed to following a linear track or sequence of events. Obstacles within the level will be farm buildings, equipment and tools, hay bales, tractors, etc. Things to avoid on the map will be rival aliens as they are able to hurt you if you get to close.  
Gameplay:
Player’s progress will be scored by the pounds of beef that get beamed to safety. If a player takes too long and the rival aliens collect to many pounds, the player will lose game. Players will have an open sandbox style map in which they will have to search for the cows to beam up. Along the way however rival aliens stand guard as they prepare to butcher and steal their meat. Should they catch you beaming up their cows they will attempt to chase the player who must then make a rapid escape.
Assets:
The player will control Yhtrod, the good alien, while trying to avoid the rival aliens (evil aliens) scattered across the map. There will also be a UFO situated above the map, owned by the evil aliens, who beam cows up to it. We also have farm-themed assets in our game, such as cows, farmhouses, greenhouses, a barn, silo, fencing, and also a grass-textured ground as well. We also have a main menu screen, along with a controls menu screen, and a win and lose screen. 

Design Breakdown
Game Mechanics
Our game Medium Rare is based on the player character, a good alien, trying to beam up cows without getting caught by the enemy evil aliens. The good alien that is controlled by the player will be able to move forward when the player presses the “W” key, and is able to turn when the “A” and “D” keys are pressed. The player is able to beam up cows when they are within a certain distance from the cow, and they can do this by pressing and holding down the space bar until that cow is fully beamed up into a UFO. The player can also switch into first person perspective at any point in the game by pressing the “F” key, and can switch back to third person perspective by pressing the “G” key. The player can quit the game at any point in the game by pressing the “Q” key. Whenever the player loses the game, he/she is able to press the “N” key to restart that level once again.

The enemy evil aliens features the use of seek and pursue behaviors, which are evident when the player gets too close to one of the evil aliens. One mechanic that we added was the fact that the evil aliens will stop chasing the player when the player gets out of a certain radius around that evil alien. Whenever the player enters the radius of that evil alien once again, the seek and pursue behaviors will activate and they will chase after the player once again until he/she can get out of the radius of that evil alien. The cows in our game uses mostly the repulse behavior, and sometimes the flee behavior. This can be seen when the good alien moves within the radius of a cow, which will cause the cow to repulse and flee from the good alien.

We also added a mechanic which occurs when the good alien comes to close to a cow, causing the cow to stop “dead in its tracks” to allow the player to be able to beam up that cow without it running away.

Game Interfaces
Our game features a main menu screen, with several options such as “Start Game”, “Controls”, “Quit Game”, and “View Scene”, and is associated with the “E”, “C”, “Q”, and “P” keys, respectively. Pressing the “C” key will open the controls menu, where the controls for our game will be displayed to the player. Pressing the “E” key will start the game, and pressing the “Q” key will close the game. Pressing the “P” key will allow the player to view the entire map of level 1 through the perspective of a camera that uses half quaternions and half catmull-rom mechanics in order to move it around the map, allowing the player to get a glimpse of the entire map.

Once the game is started, the good alien will appear on the farm and the player will then be able to control that alien, as stated in the game mechanics section. We have also designed a win screen as well as a lose screen, which will pop up when the player either wins or loses that level. For the win screen, the player will have the choice of pressing the “N” key in order to proceed to the next level, if applicable, or to quit the game. During the lose screen, the player will have to option of pressing the “N” key in order to restart from scratch at the beginning of the level that the player is currently on, or to quit the game.

Our game was originally planned to be a third person shooter, however, since we were unable to implement shooting into our game, we just created it as a first/third person game without shooting. Our main designer had wanted to implement interaction with the cows at close and far range (through use of a beam gun), but in the end we could only do close range interactions. The entire game is focused on the player’s goal to beam up all the cows in the level. Our main designer had originally planned for our game to have more obstacles around the map, which can hinder the player’s movement around the map, as well as more intricate maps with more detail and assets. He also planned for more levels to be implemented into our game, including various farms as well being able to enter/exit buildings, and even a bonus level that could take place in a UFO.

Our main designer had also planned to create the game at a faster pace, resulting in faster gameplay, but for technical reasons, we could not create the game at such a pace. Medium Rare was also supposed to include hazards, such as a lumber grinder where players can fall into it and die immediately, or farmers who would shoot you randomly from outside of the map (the fence). There was also the idea of having NPCs who would assist you in dealing with enemies, but we did not get to make them in time. Our AI system was also envisioned to be much smarter, but that proved to be difficult to create at our level. Our main designer also had to idea of creating an AI called Oto, who would be the ship’s computer, and would be situated inside the good alien’s UFO. Oto’s main purpose is to deliver information to the player, such as objectives and tutorials, and can help the player in case they get stuck.


Medium Rare was also envisioned by our main designer to include more assets, such as ray guns, score counters (which would display the amount of beef collected by the player in pounds), and more obstacles and objects in the farm. There was also supposed to be more combat and interaction between the player and the enemies on the farm. The game play for our game was also originally supposed to be a race between the evil aliens and the good alien to collect all the cows in the level, but now it is just the good alien who collects the cows. Our main designer had originally wanted a cinematic at the start of the game, rather than our current interpolating camera system, that would include a detailed story. He had also wanted for us to create and include custom sound design, such as recording our own sound effects and music, but that did not happen.   

Developer Diaries:
Weeks 1 and 2:
For the second week of the semester, our group had to get support and advice from our professors in order to turn our current game into a finalized game. We had also planned to eventually add a HUD into our game in order to make our game look better. We also wanted to add a mechanic to the evil aliens that will allow them to beam up the cows as well, in order to give a challenge to the player. This would provide a challenge to the player by causing the game to become a race, where the player must beam up more cows than the evil aliens can. We were also told to try to improve our buildings to have a cartoony feel to it in order to match our game.
http://gdwteamprojectoz.blogspot.ca/2012/01/week-1-of-game-development-workshop.html

Week 3:
For the third week, our programmers had to work on the sound portion of our game, as well as adding more textures to it. All the sound programming had begun at this point, but was not finalized until much later. At this stage we also had a slight conflict where the main designer wanted the modelers to change the models completely, which would require a great amount of time to do. In the end, due to work constraints, we ended up not changing the looks of the models that much, unless the modelers had free time during the semester.

Week 4:
At this stage in the development of our game, we streamlined our code in order to reduce the length of the code greatly. We had to remove several things from our code that would make it much shorter than before, such as cutting out the useless parts or the parts that were not needed in order for the game to run. We had also considered trying to convert our code into arrays in order to make the game run more efficiently, and this will continue on for several weeks until it was completed later on. We initially planned to convert and upgrade all our buildings in the farm into a cartoony look, but that was put on hold due to the increased workload for this semester. We also planned to start implementing textures, shaders, sounds, and cinematics starting from this week.

Week 5:
At this stage, the programmers who were responsible for the sound portion of our game had received new code from our professors that would allow them to add sounds to our game. They tweaked around with the code and ran into several problems, but in the end we managed to pull through and get the sounds working properly. We also started to develop our cut scene, by creating all the models and other assets in Maya in order to be put into the cut scene.

Week 6:
For our 6th week, we focused on cleaning up the code for our game in order to make sure our game runs more smoothly and efficiently. This would also make the code neater and easier to read and use for the programmers. At this stage the modellers focused on creating and/or upgrading our current buildings, characters, and other assets’ art styles in order to suit the theme of our game. At this point we had three cut scenes finished, which we plan to implement into our game trailer. All the textures for our game had been pretty much completed by our lead artist at this stage, using photoshop.

Weeks 7 and 8:
Weeks seven and eight has been very productive for us, since we had added mechanics to our code that allows for multiple levels in our game. We also added shaders and Mudboxed textures into our game in order to make our game look better. With these additions, our game now includes a fog effect which makes it harder for the player to see enemies on the level. This was used heavily for our second level, which takes place at night and is very difficult to navigate. We also implemented a mechanic that allows the player to repeat a level at this point or to move onto the next level, which allows for more freedom of choice. We also implemented sound during these two weeks, making our game a lot better than before. Our lead artist also created a brand new and original grass texture to be used for our game, making the game’s grass look much better.

Week 9:
After numerous play tests, we have found that the fog effects and the shaders had made the second (night time) level more difficult than we had anticipated. We had to add a directional light (similar to a beam) in order to allow the player to see where they are going. We also changed the game speed to be faster than before, in order to make the game easier to play, but the difficult still felt the same. By this point we had already implemented a good portion of our sounds, but the rest still have to be put into the game in the next few weeks.

Week 10:
By this point, all our modelling and programming teams are hard at work on our game, and we also took this time to work and finish our paper prototype for our Game Design and Production class.

Week 11:
By the 11th week, our game was pretty much completed, other than the fact that we still had to finalize our sounds and effects, as well as to choose a fitting music track for our game. The majority of the problems that we had have been solved by this point, such as texturing, modelling, and directional light issues. With the majority of our issues solved, at this stage we began to work on cleaning up our code in order to be finalized and handed in.

Week 12:
During our 12th week, our game is practically done, with the exception of a small issue where the sound would loop despite being coded to not loop. It was eventually solved by our programming team, and with the solving of all our problems, our game was ready to be handed in for marking.
Technical Documentation
Writing and Design
  For the written and design portion of our game, Joseph had handled the majority of this section, as the lead and main designer of Project Oz. He had designed the story and general gameplay concepts, and written a design document for Project Oz. Joseph had also extracted the gameplay elements from the story, in order to turn it from a document into an actual game. Then, as a group, we had all refined the gameplay elements and our programmers began with the programming aspects of our game, starting with the base engine. At the same time, our modelers also started to create all the models required for our game. On a side note, the story for Project Oz didn’t make it to the game, but it served as the foundation for all the gameplay elements of the game.

Programming
The programming stage for our game was separated into three different parts:
Base engine:
         For this step, all our programmers had to create the base engine that would serve as the foundation for our game, and would eventually run the entire game. The first step was to program and create the controls for our game, and this was mainly done by our lead programmer, Yang. The next step was to create an object loader that will manage the loading of all visual assets into the game, and this was handled by Joseph, our secondary programmer. At this point, the majority of the models for our game were finished, and this part was handled by our modelers Edward and Christian. Once all the models were imported into the game, Joseph then proceeded to program all the animations for the models. We decided to use morphing to animate all of the models as it was easier to program. Other engine components were done by this step, and this mainly includes programming the basic AI, which was done by Yang and Joseph. They also handled programming the NPC movement patterns and how they interact with the player. At this point, Yang also programmed the level for our game, using assets from the modelers. Yang also put all the models and similar assets into the game at this point.
Streamlining:
                        The streamlining process has been continuous throughout the whole project, starting from this stage, and was sort of just a side task that was done whenever Joseph had free time to work on the game. In this step, Joseph was in charge of condensing and optimizing the program and any other assets.
Base Engine (continued):
        At this point, the particle systems were completed by Joseph, with arrays in conjunction with simple models. These simple models were later textured, and would resemble particles when zoomed out. A randomization algorithm was created and used to make sure that the particles don’t seem to be redundant, and would be more appealing to the player. By this stage, the majority of the sound portion has been implemented into our game, and Yang, Shing, and Seonghyun were responsible for this portion of our game. For this step, Shing and Seonghyun had found and put together all the sounds to be implemented into our game, while Yang worked to program all the sounds into our game.
The shaders for our game were also done at this stage, and Yang and Shing were responsible for this portion. Shing worked on programming the lighting portion for our shaders, while Yang had programmed the remaining portions and aspects of our shaders for our game. At this point, our lead programmer Yang had implemented a system that allows the player to change the levels freely. Our secondary programmer Joseph had also implemented textures into our game at this stage, in conjunction with the object loader that he had programmed earlier. For the next step, Joseph had implemented a system in our game that manages loading all the textures into the game, in conjunction with the object loader that he had designed and programmed earlier.
It was at this point that the menu had been constructed, where Christian was in charge of drawing the menu art, and Yang was responsible for programming and implementing them into the game. Any other engine components had been completed by this stage, and were tweaked to perfection by our programmers Yang and Joseph. Lastly, our game is being polished, debugged, and tested constantly as a group to prepare it for marking and presenting.

Testing Report
Throughout the development process of Medium Rare we did in fact receive many feedback criticisms. These occurred at various stages and most were in fact solved. Below we have outlined the different major concerns of our game and how we have dealt with them:
Initially one of the first comments we had from a game development student outside of our group was that our farm’s grass texture was not very appropriate for the context of our game. The student claimed that it was too pixelated and fuzzy and made the game somewhat of an eyesore to look at when playing the game. A new grass texture was later developed from scratch in Photoshop, in order to make the farm’s grass look cartoony and better suited for the game. 


Another issue within our group was that our team leader was extremely unsatisfied with the style of music within our game. Our team leader claimed that it was different from his original design concept. Sounds initially for the game were more comical and happy themed, whereas our game designer and a few other group members decided that the game should take a more serious tone in terms of the sounds and music in the game. Sound was then developed more recently near completion to accommodate this.
One of our Professor’s also felt like our farm objects were not very well shaped and needed it bit more assets such as haystacks and stuff. In order to fix the models up we needed to add a bit more shape and cartoony style of development in the overall design of the objects. Though we had completed this on the side in Maya, we were unable to fully implement these extra criticized features into the game.


Two of our Professor’s informed us early in the development stage that our walking cycle should be faster paced because it did not look fluid enough. The walk cycle was slightly improved to make the character move a little faster and smoother than the previous style where it was undergoing moments of lag. This particular feature we do actually consider a failure since we weren’t fully able to get this working.
One major problem that was in fact noticed by everyone who tested the game was that our character and level textures were not properly applied and looked very basic and blocky. This was early in the first semester of development. Character and level textures were later greatly improved on through the painting of the character model’s UV maps in Autodesk Mudbox. Through this we were able to use shaders and apply the painted textures onto our character which later received great feedback from professors and fellow students outside of the group.


Within our gameplay players have the goal to beam up a Cow to safety. Players of this game claimed that once they had beamed up one cow, they found it frustrating to figure out where the others may be. With this source of feedback coming to us early in development, we developed a first person view that players could switch to at any time in order to view their surroundings and seek out another cow.
Some major features that evaluators and fellow students felt were really necessary and missing in our game would include a Heads up Display and some sort of Interface such as a health meter or score counter, more sound effects for the various actions that take place in the game, and the game being much too short. A Heads up Display was actually originally planned to be in our game but Implementing the HUD was a failure due to the lack of time and many other debugging issues that needed to be prioritized for the games completion.
 In terms of sound effects we added much more sound effects into the game, such as when our character is being chased by an enemy, or when the player is chasing a cow, when a cow is being beamed up, a run cycle sound, a UFO flying sound and natural sounds of a cow as well.
In order to solve the problem of the game being too short, we developed levels of a different challenge to engage the player further. However, once the second level was developed, players complained that the level was much too difficult in comparison to the first level. They claimed that the second level developed was too difficult due to the fact that it took place in the night time and players found it hard to see enemies. This was then fixed by changing the color of our night sky to dark blue rather than being black, and when the enemies approach the player a sound will play and you will need to run away and avoid them. This made it a little easier for the players to complete the level, while keeping the challenge.

Developer Profiles
Yang Zhou
Role: Lead Programmer & Project Manager
          Yang took on the role of the Lead programmer as well as the project manager in the development of Medium Rare. He was in charge of creating the basic engine for our game. He also had to work with each and every member of the group in order to combine all the different code aspects such as the Object loader from Joseph, as well as the sound coding and files from Shing and Seonghyun. Christian and Edward also had to work with Yang to implement and fix any issues with the models and animations of all the characters and level objects. Yang was also in charge of breaking down all the work for our game into different milestones and kept the group organized.  Each member was given specific dates to have certain assets completed by.


Joseph Tuffner
Role: Game Designer, Co-Lead Programmer
 
Joseph originally came up with the design and concept of Medium Rare, the group members consider him to be the team leader. In addition to designing our game initially, Joseph assisted a great deal with the programming. The main areas that Joseph helped with on programming would be the object loader. Some of the other areas include the Texture Shaders and more importantly the basic AI systems of our non-playable characters. Joseph also played an important role in debugging and testing of the game throughout various stages of development.

Christian Perera
Role: Character Modeling, Texture Artist, Concept & In-Game Artwork
                Christian was in charge of all the art and modeling aspects of the game. He assisted Edward in the design and asset lists of all the farm models. Christian created the initial level design sketches and the character sketches for the game. He was also in charge of creating all the menu assets such as the winning and losing screens and the main and control menu. Christian created the character models in Autodesk Maya and painted all the textures in Autodesk Mudbox and created the textures such as the grass. Christian worked together with Yang and Edward to create the introduction cut scene as well.

Edward Kwok
Role: Skeletal Animator & Character Rigging, Design Documentation
 
Edward’s role in the development of Medium Rare was originally to be programming. He later realized his skills were better in the Animation aspect of our game. Edward had created all the skeletons and different walk cycle and movement animations of our main character, enemy characters and the cow entities. Edward also created the basic objects found on the farm, such as the barn, haystacks, barrels and troughs on the farm. Edward also played a major role in managing our Development Diaries and the construction of this design document. Edward was also primarily in charge of composing the trailer for Medium Rare.

Seonghyun Lee
Role: Sound Recorder & Programmer
                Seonghyun’s role in development of Medium Rare was primarily to design and record the different sound effects and music for the game. These included the various sounds of the Cows, Walking sounds and the sound effects of the Cows being beamed up. He also worked together with Shing to code the sounds in our game using FMOD and C++. 





Shing Hei Yee
Role: Sound Recorder & Programmer, Entrepreneurial Finance
 
            Seonghyun’s role in development of Medium Rare was primarily to design and record the different sound effects and music for the game. These included the various sounds of the Cows, Walking sounds and the sound effects of the Cows being beamed up. He also worked together with Seonghyun to code the sounds in our game using FMOD and C++.  Shing was heavily involved in create our game’s Paper Prototype. Shing was involved in the designing of our board game, and came up with the rules. Shing was also in charge of the financial aspect of our game.


Here is our poster for Medium Rare:

Sunday 8 April 2012

Week 12


         A surprising problem had come up, in which a certain sound began to continuously loop despite being set to run a single time. The problem was quite persistent and had taken up a further few days’ worth of effort, but was eventually solved. Now our game is more or less complete. Our game is titled Medium Rare; the player will take control of a single alien whose direction they can control with the ‘a’ and ‘d’ keys, and move forward to the direction it is facing by pressing the ‘w’ key. The player must chase down cows that will move away from the player, while running away from evil aliens that will move towards the player once they are within a certain range. When the player is close enough to the cow, they can press and hold space to beam up the cow. Once the player beams up all the cows without being caught, they will win that round. Currently, we have a second level included for an additional challenge, where the cover of darkness is only lit by a light that lights the area in front of the player alien, in the direction that the player is facing. The first-person view available in the game will come in far handier, as the range of the light reaches longer than the third-person view, allowing the player to seek out cows in the darkness and avoid dangers in the distance without getting too close to them. Most of the various and numerous problems that had plagued this project had been ironed out, and we hope to be able to finish all the reports and other requirements before the due date.
PROJECT OZ
Christian Perera (100343813)
Edward Kwok (100368569)
Joseph Tuffner (100393724)
Seonghyun Lee (100425275)
Shing Hei Yee (100419025)
Yang Zhou (100382767)

Week 11


          The last week was a terribly busy one. The non-digital paper prototype of the game that was being developed since week 10 had taken up most of the group’s time and resources, not the least of which was the problem in confirming all the rules of the game, which had to be written almost entirely new since the current gameplay does not convert accurately to a non-digital format. The other problem was in preparing all the sounds, which were formerly set back on the schedule due to their limited immediate concern. However, with the due date fast approaching, we had to scramble to obtain the appropriate sound effects and music for the game. Moreover, there were arguments on which music was the most fitting for our game, further dragging on the discussion. Eventually, the differences were sorted out and we were able to decide on all the sound choices that would be included in the game. In other areas, quite a few of the former problems were dealt with, including most of the remaining texturing problems, modeling problems, and most importantly the problems of light directions. With the major gameplay issues solved, it is now a matter of cleaning up and preparing our reports to meet the deadline.
PROJECT OZ
Christian Perera (100343813)
Edward Kwok (100368569)
Joseph Tuffner (100393724)
Seonghyun Lee (100425275)
Shing Hei Yee (100419025)
Yang Zhou (100382767)