Spring 2006 - Rawhide Frontier – CSE 788.14 Game Design
Design Document for:
Rawhide Frontier:
The BIG West RTS
Version # 1.00
Monday, May 01, 2006
John H Scott
Jordan Lemiller
Aaron Cardwell
Paul Betts
John Battagline
Kyle Moore
Table of Contents
Rawhide Frontier:______
Design History______
Version 1.0______
Version 1.5______
Game Overview______
Philosophy______
Game Design Goal
Common Questions______
What is the game?
Where does the game take place?
What do I control?
How many characters do I control?
What is the main focus?
What’s different?
Feature Set______
General Features______
Multiplayer Features______
Editor______
Gameplay______
The Game World______
Overview______
Rendering System______
Overview
Game Engine______
Overview
Object Management
Map Management
The World Layout______
Map Details______
Overview______
Resources______
Camera______
Overview______
Camera Movement______
Game Characters______
Units______
Buildings______
Upgrades______
User Interface______
UI Details______
Musical Scores and Sound Effects______
3D Sound______
Sound Design______
Multiplayer Game______
Overview______
Max Players______
Servers______
Customization______
Saving and Loading______
Victory Conditions______
Character Rendering/Model Details______
Overview______
Model Details______
Animation States______
Animation States______
World Editing______
Custom Map Designer______
Design History
This section covers the high level details of the major revisions of the game.
Version 1.0
Version 1.0 of the game contains the base framework that the rest of the game will be built upon.
- Introduction logos completed.
- Introduction music added.
- Interactive Main Menu started.
- Basic game states created, including Introduction, Play, and Pause.
- Temporary win/lose conditions created.
Version 1.5
Version 1.5 of the game contains the base user activity, as well as the entire client/server model.
- Client/Server module is active.
- Players have a user interface to select and view selected units.
- Added mouse drag for select.
- Added right-click-to-move functionality for single and groups of units.
- Added the initial buildings.
- Menu buttons are interactive.
Game Overview
Philosophy
Game Design Goal
Rawhide Frontier is not meant to be a historically accurate portrait of the American West. Rather the theme is meant to be taken in a more satirical sense. For inspiration of locations, cultures and people in the game, we want to draw more from cultural references instead of historical accounts.
Common Questions
What is the game?
The year is 1863. The flames of civil war are still raging in the east, and you are the mayor of a frontier town in America’s Wild West. You explore and conquer the unforgiving dessert wasteland, encountering other towns and other mayors—all competing for the same precious resources. Outlaws, cowboys, crooked deputies and many others are invading your territory, looting your lands. You must fight for your right to live. You train a powerful army of cutthroat warriors to ward them off, knowing that, when the day is finally won, only one nation can stand alive beneath the setting sun of this Rawhide Frontier.
Where does the game take place?
This game takes place in 1863, located in the American Wild West.
What do I control?
You are the mayor of a western frontier town. You oversee the creation of your town by creating buildings, such as saloons, stables, and blacksmiths, and command a wide variety of units from gold diggers and sheriffs to cavalrymen and the feared outlaws.
How many characters do I control?
Since you are in charge of creating and maintaining expandable towns, you are capable of controlling dozens of units at a time.
What is the main focus?
At the start of the game, you focus on gathering resources, expanding your town, and creating and training various units to defend your city and to attack your enemies. This is a multiplayer game, so the player vs. player aspect of the game is heavily emphasized.
What’s different?
While we will draw from some traditional elements of Real Time Strategy games, we aim to make a few notable differences. First, we want the peasant production for the town to be dependant on the buildings constructed by the player. The number of villagers will only grow when there is enough housing to support them. The player will then need to balance their use as soldiers or as workers.
Feature Set
General Features
3D Graphics
3D Sound
Custom Map Maker
OpenGL and DirectX support
Multiplayer Features
One vs. One online competition
Real-time online play
Editor
Custom map creator and editor.
Gameplay
The gameplay of Rawhide Frontier will start you out with a town hall, a house or two, and a few villagers. You must then train these villagers to become workers so you can build your town. Buildings and units will cost gold which workers can collect at gold mines. Throughout the game, players will have to find gold mines when old ones run out of gold. Workers will also be able to create buildings which will serve a large variety of purposes including building units, upgrading units, and defending your town. When you run out of villagers and capacity for villagers you will have to build more houses. Once houses are built population will slowly begin to migrate to your town again until you reach your capacity once more.
The Game World
Overview
The game world will essential be the series of maps that the players can battle on. The maps should be expected to contain at least two starting locations for players, and near them, a mine for workers to gather gold from. In addition there will be railroad tracks for players to build stations at to gather resources from.
The world will be represented by tiles that will be pre-generated in a custom map editor. Each tile will contain a 3d mesh to represent the terrain on the square of land. Inside each tile, will be contained “WorldObjects” which may be things such as buildings or units.
Rendering System
Overview
We are using Ogre3d to handle the rendering of our game. This allows for either an OpenGL rendering or DirectX 9 which can be dependant on player capabilities or preference. For more details of the Ogre3D rendering system, visit
Game Engine
Overview
Our engine will consist of two major sections to represent the game state. First will be Object Management which should manage all the objects in the world that are dynamic, like Units and buildings. Second there is Map Management. This will manage details related to the map, its terrain, and which portions are visible to the user.
Object Management
Each dynamic object like buildings and units will be represented as a WorldObject class. Although the WorldObject will contain several functions common to all objects, most instances of these objects will be in inherited classes specific to the type of object they represent. A Building object will contain members to store the actions it can take, the training order, and so on. Units will contain a Queue of actions that they have been ordered to take, available orders, and so on.
At the beginning of each frame, these objects, stored in a linked list, will be iterated through to perform their game logic. The code to control the AI for each of these objects will be in Python scripts so that it can be edited without needing to recompile the actual game code.
Map Management
The map will be represented by individual tiles which will be predefined from a file. These maps will be created in an external editor. In game, the tiles will also be used to partition the rendering so that not all the objects and tiles need to be draw each frame, instead just the ones visible. The tiles will also contain pointers to the WorldObjects that reside in them. This will allow for the objects to search units nearby in a time that should be faster than iterating through the entire list of World Objects.
The World Layout
Map Details
Overview
Since the location of this game is in the Wild West, much of the game world will be in an arid desert location. Many areas will have scenic terrain, such as mountains, oasis’s, and gulches; however, many of these areas of the map will be impassible. The interactive portion of the world map will be a flat 2D plane, with the camera positioned a set distance above the world.
Resources
The maps will have two different locations for gold to be gathered. Workers can pan rivers and streams for a steady amount of gold, and certain mountains can be found that contain rich gold veins.
Camera
Overview
This game uses a birds-eye-view camera. That is, the camera can only travel up, down, left, and right on a plane parallel to the game world. Moving the camera in and out will not be allowed.
Camera Movement
Players have two ways to move the camera. There are eight directions the user can scroll the camera by moving the mouse to the edges or corners of the screen. For example, if the cursor is moved to the left edge of the screen, the camera will scroll left as long as the cursor is on that edge. If the cursor is moved to the upper left corner, the camera will scroll in that diagonal direction.
The second option for camera movement will be via clicking on the mini-map. This will allow the user to jump the camera to specific areas of the map quickly.
Game Characters
Units
Townsfolk – The basic unit which trains/upgrades to the rest of the units that can be created.
Workers – Unit dedicated to gathering resources and the construction and repairing of buildings
Lawmen – A close ranged, pistol wielding unit
Marksmen – Long range units
Calvary – A fast melee range horse-mounted units
Cannons – Siege unit with the highest damage vs. buildings
Outlaws – Complex end-game unit
Buildings
Houses – Allow for the creation of Townsfolk. Each house supports a set number of units.
City Hall – Used for training workers. The base building needed to construct all other buildings.
Jail – Used to train Lawmen.
Gunsmith – Trains Marksmen and builds Cannons. Also allows various unit upgrades.
Stables – Trains Cavalrymen. Requires a Gunsmith in order to be constructed.
Saloon – Trains Outlaws. Requires a Jail in order to be constructed. This building is also used as a resting and healing point for damaged units.
User Interface
2D GUI Details
The 2D graphical user interface will be displayed in the bottom of the screen and take up about 25% of the window. It will be the users main location for game interactions and status. On the very left part of the window will be the mini-map. The mini-map will show a general visual layout of the level and mark enemy units and buildings as well as your own. Clicking on the mini-map at any location will take you to that area of the map in your window as to easily be able to maneuver to important locations on the map quickly.
In the center of the GUI there will be a selection box which will specify which will display to the user what they have selected at the current time. This will contain small images representing which units or buildings are currently selected by the user. It will also show each units health under its image and we hope to eventually be able to click on the images to select that single unit.
Lastly, on the right side we will have a number of interactive buttons which will give certain commands such as building units, moving, attack, and more. These buttons will change depending on what types of units are selected at the time.
World UI Details
The World will also provide a user interface when dealing with objects inside the 3D world. When a unit is clicked on its details will appear in the 2D GUI. Beyond this a green circle will surround the unit’s feet so that you know which unit is currently selected. You will also be able to drag a box around whichever units you wish to select. Releasing the box will select all of the units in the selected area which belong to you. When you have units selected you can group them by holding control and clicking a button 0-9. This will assign them to that key so that whenever you click that number button again the units assigned to it will be selected. This will also work with buildings.
Musical Scores and Sound Effects
3D Sound
The sound API we are using is Fmod-EX. As opposed to using the build in Ogre sound manager, we created our own sound manager class to help make playing and using sounds easy. We are not using many complex sound effects, such as the Doppler Effect and complex sound occlusion, refraction, and reflection. Since the game is a camera above a 3D plane, the user will be able to hear sounds that play in the field of view. The players will also hear some sounds outside the field of view to help them determine where actions are taking place that they cannot see; however, they will not hear sounds that play on the other side of the map or a certain tolerance distance away.
Sound Design
The goal for sound in this game is a Country-Western style. By Country-Western, we do not mean mainstream Nashville-based songs, but a calmer, folk Western camp style sound. The game has calm music in the main menu, and more intense western music during game play that can be turned on and off. As actions happen, players will hear sound effects, such as gun shots, explosions, and quiet yells when units die. When units are selected individually, they will play a talking sound to give them a more personal feel.
Multiplayer Game
Overview
In order for the multiplayer games to start, one player creates a new game, which starts a server session on his local computer. The second player then connects to the first player’s server, and once a connection is made, the game can begin. “Rawhide Frontier” is a multiplayer only game, so an internet connection is required for players to play the game. The game is playable across a Local Area Network also.
Max Players
Currently, the multiplayer system supports 2 players.
Servers
The multiplayer design will be based off of a client-server model. Peer-2-Peer will not be an option to players. The player creating the game (host) will be acting as the server and a client at the same time. The “host” will only have one process of the game running. Rather than have a server process and a client process running on the host computer, we combined these so the host does not send packets between processes. This required a little bit of extra coding to keep the client and server as separate players, rather than follow the dedicated server format.
The client/server model is build on top of the RakNet toolkit. We use this toolkit to run the server, connect to the server, automatically handle client connections, unique playerID assignment, and the sending and receiving of packets. There was an option to use a data replication system, where the server handled all creation of sending packets. However, we decided against this approach and just use bitstreams to send and receive the packets. This way we have a lot more control over what is being sent to and from the players, and this also helps us manage packet size to reduce bandwidth usage.
Customization
Players will be able to choose a “team color” for all of their units. This will help distinguish friendly units from enemy units. Players will also be able to use the map editor and send their maps to friends and play on their own custom designed worlds.
Saving and Loading
Multiplayer games cannot be saved. Every time a new game starts, each player starts from scratch, with only a City Hall, a house and a few Townsmen.
Victory Conditions
A player wins a multiplayer game when he destroys all of the opponent’s buildings.
Character Rendering/Model Details
Overview
As far as units go, there are not going to be any complex rendering, lighting, or extreme detail renders. Each unit will have a model, a unique texture, and multiple different animation states.
Model Details
Currently, there are going to be very few different model skeletal structures. Since all but 1 unit is a humanoid, the skeletal mesh and the animations will come from up to two files. One model will have a hat, one will not (may change). Each unit type will be scaled slightly different and each type will have its own unique texture to help distinguish the unit types apart. The only other animated model type will be the cannon, which will not be an overly complex model.
Each team will have textures or colors specific to their team so players can distinguish their units apart. This will most likely be in the form of outfit color in the textures for the units.
Animation States