REBELLION
(tentative name)
PART ONE: FUNCTIONAL DESCRIPTION
Game Description:
The player is flying an aircraft (probably a jet of some kind). His missions will be proposed before the game starts. As he completes the missions, the game will remind him of his next mission. At any time, the player can bring up the objectives menu during game play.
The missions will range from bombing runs, to dog fights; with the possibility of rescue missions.
The game will appear to take place in the future where the missions will take place over land on planets(terrain), and in space between the planets.
The storyline for the game:
The player is part of a rebellion of some type, for unknown or unworthy reasons. He will be given strategic missions aimed at disabling the power and resources of the enemy. The overall goal is to completely annihilate the enemy (or at least piss him off,) who controls a large sector in space. At the beginning of each level, the player can choose a few teammates to join in his operation. The teammates will be bots who will help in completing the missions, and defending the player. The more the player uses a bot, the more skilled it becomes. When a bot is killed in battle it is respawned into the game, but its 'experience' will be penalized.
The weapons that the player will have at his disposal will consist of unlimited laser beams both in space and over a planet. When he is in space, he will have a limited number of target seeking plasma torpedoes, and when he is over a planet, he will have a limited number of heat-seeking missiles. The player will have to lock onto a target and then fire his missile or torpedo while the enemy is still locked on in order for the weapon to target the enemy.
Enemies will consist of gun turrets, <tanks>, and other aircraft. In space they will consist of other spacecraft. Their weapons will be similar to that of the player.
The representation of the game world will consist of a huge cube which will contain spheres that represent the planets. Subtraction cubes will be used to restrict the player from flying too far away from the action. When the player approaches a planet, his ship will begin to slow down to represent the approach to a large planet. As he gets closer, a fog will begin to develop in front of the ship and slowly get thicker. While this is going on, the initialization of the terrain of the planet, and loading of all appropriate objects for the level will begin slowly over time(or the game will pause while everything loads). When the fog reaches a point where it is opaque, everything will be removed from the space world and replaced with the terrain and models. When everything is replaced, the fog will dissipate, and the player will be reoriented to appear to be approaching the surface. The player will now be able to complete the objectives on the planet. When the player wants to leave a planet and go back out to space, he simply begins to fly up towards the sky. As he approaches the sky, a fog will thicken. During this time, the terrain and all models will be removed from the world, and replaced with a sphere representing the planet. When a player is in wide open space, he can go into "hyperspeed" where he will be moving very fast. This will enable him to fly from planet to planet when needed, or flying back towards the action if he ventures too far away. If the player is in hyperspeed, and approaches a planet, or an objective, he will not be able to continue hyperspeed through the area.
Settings/Saving:
The user will have the ability to bind the keys for the game using a key binding configuration file The game will be run in full screen 1024x768, 32 bit color. Eventually we'll probably have a configuration menu with all of these options, and save them in a config file.
The game will save automatically after the completion of each objective. All save information will be written to a save file, and re-loaded when the player dies or restarts the game.
PART TWO: TECHNICAL DESCRIPTION
CLASS STRUCTURE
Objects represent the highest level entity in the engine; everything descends them. Materials (and sounds if we get that far) will be referenced as instanced objects, while Input and configuration will be Singleton objects. The actor class represents all of the entities that can be “spawned” inside the game world.
OBJECT CLASSES
+ Object
| -+ Actor
| - + Materials
| - + Input
| - + Sound?
| - + Configuration
Actors represent all objects that are spawned in the game world. This includes terrains, special effects such as fog and particles, planets, cameras, etc. There will be exactly one GameWorld object, that represents outer space and contains all the PlanetExteriors. PlanetExteriors are basically a giant textured sphere in space, possibly with layers of atmosphere. The GameWorld actor will have objectives within it in various areas of space. Each PlanetExterior will be associated with a PlanetWorld actor, which will contain a terrain with objectives and enemies of its own, along with a unique skybox for that planet. Upon approaching A PlanetExterior in space, the player will be transferred to a PlayerWorld, where he can complete the objectives, or exit the PlanetWorld back into the GameWorld.
If the player or one of his wingmen dies while inside a PlanetWorld he will be re-spawned at the entry point for that world. If he dies while in space (the GameWorld) he will respawn near the place where he died.
ACTOR CLASSES
+ Actor
| - - +DynamicActor
| - - +GameWorld
| - - +PlanetWorld
| - - + Terrain
| - - + PlanetExterior
| - - + Skybox
| - - +GameObjective
+DynamicActor
| - - + Controller
| - - + Effects
| - - + Vehicle
| - - + Camera
Vehicles will be any type of game object that’s controlled by an AI or a player. Controllers represent the objects that will tell the vehicles what to do. In the case of a PlayerController, this means gathering the input and telling the vehicle where to go etc. Bogeys represent the brains of the AI-controlled enemies in the game, and handle the AI states of the enemies. Bots are your teammates, which are also controlled by AI, but are more humanlike. For each Vehicle in the game, exactly one Controller will be spawned and associated with it.
+ Controller
| - - + PlayerController
| - - +AIController
| - - - - + Bot
| - - - - + Bogey
| - - - - - -+ JetController
| - - - - - -+ TankController
| - - - - - -+ TurretController
| - - - - - -+ StarshipController
Jets will be the only vehicle used by the Player and his wingmen. They function in space or over land. Tanks will be ground AI units, and turrets will be stationary ground AI units. Starships will be larger space vehicles, which will serve as enemy targets in some space missions.
+Vehicle
| - - + Jets
| - - + Tanks
| - - + Turrets
| - - + Starship