team: couch potato gaming ohio state computer science...

12
Team: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone Game Design Document Matt Bartholomew, Jack Butts, John Cramer, Kyle Powers, Connor Swick

Upload: others

Post on 18-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

 

Team: Couch Potato Gaming

Ohio State Computer Science/Engineering 5912 Capstone

Game Design Document

Matt Bartholomew, Jack Butts, John Cramer, Kyle Powers, Connor Swick

Page 2: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Table of Contents 

Introduction ...……………………………….…………………………. 2

Quick Game Overview ...……………………………….…………………………. 2

Game Features ...……………………………….…………………………. 3

Game States ...……………………………….…………………………. 4

Key Game Components ...……………………………….…………………………. 5

Algorithms ...……………………………….…………………………. 6

Task Schedule ...……………………………….…………………………. 8

Assets ...……………………………….…………………………. 10

Final Screenshots ……………………………………………………………. 11

1

Page 3: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Introduction 

Couch Party Racing was conceived through mutual agreement that some of our fondest gaming memories are those from our childhood, playing local-multiplayer games with friends and family. The team Couch Potato Gaming wanted to recreate this nostalgia through a couch-multiplayer kart racer with a focus on party modes. Bring friends together for a return to the classic multiplayer games people enjoyed so greatly. Couch Party Racing features an aesthetic that is of toy cars, such as Hot Wheels™, and wrapping tracks around the furniture throughout a home. Racers will navigate the environment aiming to finish the race first, all while facing obstacles a house may create. Dive into the party aspect of this game, where players will have a variety of game modes to select between. These different modes bring a variety of playstyles, such as racing or soccer. Players will also be able to create their own maps, and race on them with their friends. By offering a variety of game modes to chose from, we hope that Couch Party Racing will have a game mode that everyone can enjoy. We hope players will have as much fun playing Couch Party Racing as we have had developing it!

Quick Game Overview

6 Areas of Gameplay ● Race Mode ● Spud Run ● Chip Shop ● Tot Shot ● Map Editor ● Couch Party Mode

Key Features:

● Local multiplayer ● Several game modes ● Gamepad/Keyboard support ● AI racers ● User created race tracks ● In-game jukebox ● Progression via shop purchases earned with in-game currency

2

Page 4: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Game Features 

Race Mode The classic mode everyone has grown up loving. Players control karts that will race through various maps trying to be the first to complete 3 laps. Obstacles will be a common occurrence, and players can use power-ups to gain advantages over the competition. This mode supports 1 to 4 players, and for any non-human player there will be an AI kart generated to fill that role.

Spud Run The goal is simple: hold the glowing Potato the longest and the player with the highest score wins! Karts compete to be the holder of this Potato for the duration of the round, and if they are damaged they will drop the spud for another player to snag. Time stops as long as the Potato is dropped, and score is increased through both holding and damaging Potato holders. Simply colliding with a Potato holder after their brief invulnerability timer rewards 3 points, while colliding with the Spark power-up active gives the user 5 points. Hitting a Potato-carrying opponent with the Marble power-up provides 2 points. Finally, the Potato-holder earns 1 point for every second they hold the spud. After three rounds, the player with the highest score wins.

Tot Shot Take the karts to the field and compete in 1 vs. 1, 2 vs. 1, and 2 vs. 2 “kart soccer.” Two teams will use their karts as a force to push a physics-driven ball around the playing field and try to score goals in the opposing team’s net. Players can boost around the field and perform aerial acrobatics to try to hit the ball in their opponent’s goal. The team to score the most goals before time expires wins the game.

Track Editor Allows the user to create a custom track and imports it into Race mode. Includes the ability to map tracks for AI to be compatible with, place traps without limitations, and utilize all axes for maps as tall or large as possible. Players can edit previously-built tracks for endless replayability.

3

Page 5: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Chip Shop Couch Party Racing’s official form of progression. Earn chips through both in-game milestones and playing modes with your friends, then spend your currency on unique karts & colors.

Couch Party Mode Play through Race Mode, Spud Run, and Tot Shot back-to-back and be awarded points based on performance. This mode is designed for long play sessions with your friends. 

Key Game Components  

Kart Mechanics/Physics The users of this game drive a kart throughout the many game modes we offer. Karts are generated after the total users is determined, and each kart will display a unique color to distinguish itself. Physics is handled through Unity3D and its Box Collider + Rigidbody dynamics. Karts have an applied force while accelerating, and the kart is rotated when a user inputs a turn. These tools allow the kart to handle physics of collision, terrain/height changes, and outside forces without hassle. Some design decisions were made for the kart, such as slower movement off-track or damage being shown with a spinning out effect. Karts also can have their physics replaced for the Physics Playground gamemode, allowing karts to fly to great heights in order to hit the ball.

Artificial Intelligence Race Mode offers the ability to fill empty player spots with computer driven karts. This makes the game’s challenge persist even when the player’s couch is only half-full. AI will play as realistically as possible, allowing it to make smart decisions on the track like using power-ups in opportune moments.

4

Page 6: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

The AI proceeds through the track by following a number of waypoints.The AI will target one of three lanes, and will change its target lane after it passes through a random number of waypoints. If an AI is unable to reach its target waypoint, it will reset the AI to its last checkpoint, similar to the player reset feature. The AI will also accelerate/brake depending on its surrounding environment. The AI makes use of many of the same components as the players, such as the physics, and power ups. This allows the AI to race against the other players without any inherent advantages/disadvantages.

Power Ups Each game mode features an array of Power Ups to pick up in races. The Boost offers a regeneration of the player’s current boost bar, which is capped at 100%. For damaging opponents, Oil drops a slippery trap that is persistent throughout the match until a kart drives over and is spun out. The Spark puts a damaging electricity on the user’s kart and damages all others who are hit during the active time. The Marble launches a homing projectile at your enemies, and Shield protects your kart for a short duration.

Track Builder The Track Builder gives the user the ability to create their own tracks to race on using prebuilt track pieces. These pieces, ranging from straight track, turns, ramps, and power-ups, can be placed throughout the home area in any such order. In addition, the pieces have the ability to help the AI navigate the course, meaning that any track the user creates, will in some way, be able to be played by AI Karts. Once the user has placed a starting track piece, the entire track can be saved to the local disc for later use in a file format readable by the Track Generation algorithms. To prevent possible damage, the user cannot save over the tracks that came preloaded with Couch Party Racing. Finally, if any changes need to be made, the user can simply load up the pre-existing file and modify any piece already placed or add new track pieces.

Algorithms  

Development Specifics Couch Party Racing was created using the Unity3D game engine, with code written in the C# programming language. It is run on the Windows 64-bit platform and supports Keyboard/Mouse + Xbox 360/Xbox One + PS4 gamepads. This game was created for The Ohio State University’s Computer Science/Engineering course number 5912. This was an engineering capstone, thus Couch Party Racing was created for educational purposes only. All game media used was either created by our team or are provided royalty-free.

5

Page 7: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Artificial Intelligence The AI makes use of a variety of algorithms that allow it to function in Race mode. The AI itself is a steering agent, whose goal is to steer towards what it perceives as its next waypoint. The AI steering makes use of Unity’s Slerp function, which allows the AI to smooth steer towards its next target waypoint. The AI then moves between waypoints by applying a forward force, which is calculated by our physics implementation. Due to allowing the users to create their own courses, we needed an algorithm that allows us to automatically set waypoint identifiers at runtime. In order to do this, the algorithm creates a list of all known waypoints, which are located on the track prefabs that are used in building, and starts by setting the start track prefab’s two waypoint identifiers to 0, and the number of waypoints - 1. These waypoints are then added to a closed list. The algorithm then starts at the new waypoint 0, and searches against all of the waypoints not in the closed list, until it finds a waypoint that minimizes the distance between the two waypoints. This waypoint’s identifier is then set to 1. This is then repeated with waypoint 1, 2, and so on, until all waypoints have been set. Also while setting waypoints in this manner, and the track type is a checkpoint, the algorithm will set the checkpoint numbers in the order of which they are found.

Simple Input Due to the limitations of Unity’s Input system, mainly its lack of multiplayer support and configurability ingame, Simple Input was created to solve these glaring issues. Simple Input works by abstracting the Unity Input system behind a list of ControlSchemes. ControlSchemes are dictionary structures consisting of action strings keys and IControl object values. The action strings are generic actions to be performed such as “Jump” or “Shoot”. As such, when passed an action string, the system will then use the associated IControl object that stores the bound key, button, or axis in the Unity Input system. These IControl objects however abstract away the need to know which device the action is defined with, either Keyboard, Xbox, or Playstation 4. In addition, multiple ControlSchemes can be made such that the user could pick from various Keyboard configurations or even have multiple players on the same keyboard. However, with the use of controllers, the joystick number of these devices needed to be stored and mapped to the appropriate player. Another issue Simple Input solves is the use of multiple players locally. By storing different action configurations for every player, the user implementing this API will simply have to pass in the action string they want to listen for and the correct player. If the user does not care which player performs the action string, this can be ignored. Finally, the Simple Input system can change the configurations of the user in-game; a feature lacking in vanilla Unity. This is accomplished by changing the ControlScheme associated with the player. In theory, Simple Input could also change each individual control associated with an action string, but due to time limitations, this feature in the API was not completed fully.

6

Page 8: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Track Generation When playing Race Mode, the user selected track is generated during run-time from a pre-existing XML file. Every piece of the track is stored inside this file with the associated prefab name. In addition to the name, the position, the size, and the rotation are also stored to correctly recreate every piece of a user-created track. As such, once a specific track is selected, the track generator will iterate over every piece in this file and instantiate a copy of the prefab.

Scene Generation When first loading a new game, Unity must load in the needed assets or scene to correctly play each game. However, due to the large amount of variable features that could occur for each game mode, we implemented an additional system to work in tandem with Unity’s scene loading system. While Unity’s system will load consistent features such as the arenas or the house, Scene Generation will create all other assets needed. This system decouples the interaction between each game mode and track from Unity’s scene files, which allows us to easily modify and add new features without needing additional and/or modified scenes. For each game mode, the Scene Generation system, or the Scene Generator, instantiates the following items when first launching a game.

● Tracks (If Race-mode) ● Players ● Cameras ● AI (If Race-mode) ● User HUDs ● Minimap (If not Tot-Shot)

The tracks in race mode are generated using Track Generation which if possible, determine the starting points for the users karts to be placed. The number of players chosen in the Player Selection Menu will then determine how many karts should be created for human players. Next, the number of players determines how many cameras are created and in what fashion should they split up the screen. If there are not four players, the AI added until there are four karts in total. The UI for each player is created, displaying the power-ups, amount of boost, and other necessities for each camera. Finally, the minimap is created either for each camera or once for all players to view.

Task Schedule

Timebox #1 Due: January 25th

● Polished Implementation of Pong ● Loading screen with team images

7

Page 9: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

● Game proposal ● In-game recording/screenshot capability

Timebox #2 Due: February 8th

● Kart Prefab (Kart class, Kart physics) ● Kart AI ● Basic Race Mode ● Asset gathering ● Input manager ● HUD and GUI

Timebox #3 Due: February 22nd

● Revamped Kart AI ● Polished Race Mode ● Power Ups ● Basic Spud Run ● Kart Sounds ● XML Level Generation ● Redesigned track pieces ● In-game jukebox

Timebox #4 Due: March 7th

● Refinement of Race Mode ● Polished Spud Run ● Initial Map Editor ● Initial Tot Shot ● Marble (power-up) ● Initial Settings Menu ● Screen transitions + sound ● Kart color selection

Timebox #5 Due: April 5th

● Polished Tot Shot ● Polished Map Editor ● Additional Levels ● Initial Chip Shop

8

Page 10: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Timebox #6 Due: April 19th

● Polished Race Mode ● Polished Spud Run ● Polished Tot Shot ● Polished Track Editor ● Polished Chip Shop ● Polished Settings Menu ● Code refactoring

Assets

● Basement Pack  - Sunsuite Studio ● Dust & Rust Racetrack  - Rorije ● Mobile Power Ups Free Vol 1  - VisCircle ● Transform Utilities  - Freakshow Studio AS ● Simple Furniture  - OSU Box  ● Kart  - OSU Box ● Main Menu Music: A Better Day  - Soundscrate ● Selection Menu Music: Training Mixed  - Soundscrate ● Simple Homes Stuff  - Mohelm97  ● NFS Font  - JLTV (dafont.com) ● Cartoon Car (Free)  - DooLabs ● Cube Space (Effects)  - Swift Games ● Low Poly Cartoon Cars (Free)  - Interactive Stone ● House Scene  - OSU Box ● Simple FX Cartoon Particles  - Synty Studios ● Explosive Toon VFX Texture (Free)  - Gustav Hagerling ● Yughues Frees Fabric Materials  - Nobiax/Yughues ● Action Game Music - Plastic Sound Design 

 ● cpuspin: http://www.superluigibros.com/super-mario-kart-sound-effects-wav ● Car Engine: https://www.youtube.com/watch?v=5TNLwFyXrI4 

 

9

Page 11: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

Final Screenshots

10

Page 12: Team: Couch Potato Gaming Ohio State Computer Science ...web.cse.ohio-state.edu/.../DesignDocument.pdfTeam: Couch Potato Gaming Ohio State Computer Science/Engineering 5912 Capstone

11