I've decided to knuckle down and start on the design of a game. I'll be documenting the design process here, mostly as an exercise for anyone who hasn't seen it done before. Comments, suggestions and observations are very welcome at any time.
The first thing that I need to make absolutely clear is that this is not the announcement of a game project. It is a game design project. There will be a lot of words here, and no code. I will follow the design process until:
1) The time estimates look achievable within my lifetime, at which point I will start a game project.
2) The time estimates come in too high, at which point I will /dev/null the project.
3) I get bored or distracted by something shiny.
Second, I will not be dogmatically following any particular design methodology. Design methodologies ultimately boil down to organising blocks of content (text and mockups). What will be documented here is just the content, not the organisation.
Phase 1: Preliminary requirements
Before you can start to test, implement, design or analyse your project, you have to first decide what you're going to produce. Those are your requirements. If you don't have requirements, then you don't know what you're making, and so you won't know when you're done.
Requirements gathering is the most important part of the whole process. You should, by the end of it, have a list of everything that will be in your game, which just as importantly defines by omission what won't be in it. Everything that you implement should be trackable back to an original requirement.
It's important to distinguish between requirements and design. Requirements set out what you're going to do. Design deals more with how you're going to achieve it. So at this point, try to stay at a fairly high level of abstraction - although if your requirements will have significant consequences for implementation, it's fine to note that.
Don't skimp on or try to rush through this phase; correcting mistakes here is by far the cheapest place to do it.
What follows is a work-in-progress list of my actual and potential requirements, all of which are (at this stage) open to addition, removal or amendment. At some point soon, the list will be arranged into sub-sections.
Your comments and especially questions are most welcome.
Fundamental requirements:
- Multiplayer
- Realtime.
- Fleet based.
- Set in space.
- The primary game activity will be starship tactical combat.
- The game will be played in a winnable strategic environment.
- The game must not exactly duplicate or directly compete with any existing space themed game. It must offer a unique experience that offers a compelling reason to play it.
High level requirements:
- The game will have a client/server/metaserver architecture.
- The server must be able to service at least 16 clients via a home broadband connection with 128Kbs upstream capacity.
- The maximum number of players can be determined by the server admin. 32 concurrent players over 128Kbs will be a goal, 64 players a stretch goal, and 128 players a bluesky goal.
- Servers will register with the metaserver(s) and keep it/them appraised of their availability.
- A server with no human players will continue to advertise itself as active and available, although it may halt the game while there are no human players.
- Clients may connect directly to a known server (including a local server), or may obtain a list of available servers via the metaserver(s)
- The game will be played in fleets. Each player will join and remain a member of a fleet.
- The server will provide a configurable number of computer players to fill in for human players, potentially allowing single player play.
- Each player will control one starship.
- Players will be able to join or leave the server at any time.
- When a player leaves the server, his current starship will become computer controlled, and will attempt to disengage from combat, reach a safe area and eventually leave the game environment. If it is destroyed before leaving the game environment, the player is penalised as though he were still piloting it.
- Upon joining the server, if the player still has a starship in play (i.e. he has reconnected after a disconnect) then he will immediately be placed back in control of it. Otherwise he will have to select a starship, which will enter the game at a 'safe' area.
- The player will be represented by a crew that will gain in level, which will unlock more powerful starships.
- Each player will also have a record of combat achievements and losses.
- Each server will hold a persistent record of players, and will store their crew levels and combat record.
- The game will be played on a 2D plane, with false height for visual purposes only. Starships may yaw, but not pitch or roll (except for visual purposes).
- The viewpoint will be 3rd person.
- Tactical combat must rely on player skill and judgement rather than purely on statistics and random numbers.
- The size of the strategic environment can be set by the server admin.
- The game will be "winnable". Victory will be achieved by capturing all or most strategic points via tactical victories.
- After a strategic victory, the game universe will reset.
- There will be no overall time limit on strategic victory.
- There will be a resettable countdown to strategic victory once a fleet controls a large majority of strategic resources
- The state of the strategic environment will be serialisable.
- The game must offer incentives for both/all fleets to continue playing regardless of the strategic situation.
- The strategic environment will provide an area or areas in which only small starships can operate.
- The game will support team and global communication, with configurable message macros for standard message types (e.g. "Help me", "Moving to capture resource X")
- Computer players will send and respond to the standard message types in order to co-operate with each other and with human players.
- Combat performance will not award players with experience directly. Instead it will give them 'awardable merits'.
- Players may assign their awardable merits either as merits or demerits to any (other) friendly player. The awarding of these merits is what generates crew experience for the recipient.
- The game unit will be starships. Each player will control one starship, ranging in size from gun/torpedo boats to battleships and heavy carriers.
- Starships will always face in their direction of travel.
- The feel should be similar to WWI/WWII naval combat.
- Starships will be armed with guns and torpedoes grouped in batteries.
- Starship weapons must be aimed manually at a point in the game world, not by clicking on a target.
- Starship weapons will be externally mounted and rotate and reload fairly slowly.
- Gun 'shells' will not strike or damage targets until they explode at or near the point of aim.
- Torpedoes travel relatively slowly and can be dodged by nimble ships. They will not track or home on targets.
- There will be an enforced delay between successfully issuing repeated orders of the same type: turn, change speed, aim weapons.
- Some starships may carry and operate starfighters.
- Starfighters will be of 3 types: interceptors (anti fighter), bombers (anti ship) and scouts.
- All starcraft (starships and starfighters) will have sensors of limited range. Enemy starcraft that are outside of sensor range will not be fully visible.
- Starships will be equipped with tractor/pressor beams.
- Starships will not be able to operate all of their systems at full capacity indefinitely.
Option #1
(Already decided in favour of starships)
* * * * * * * * * * * * * * * * * * * * * * * *
Option #2
Three types of strategic environment are being considered:
- Contiguous universe. There is no discrete boundary between points of strategic importance, and starships can travel without 'jumping'. Immediately upon entering the universe, players are effectively in the tactical combat environment.
- Discrete strategic areas. The universe is split into 'starsystems', which contain strategic resources. Starships must 'jump' into a starsystem in order to take part in combat there, but may do so freely at any time.
- (Option discarded)
Option #3
Strategic resource interactivity.
- Strategic resources are passive and do not fight back.
- Strategic resources have fixed combat capability.
- Strategic resources have combat capability that can be increased over time or by spending limited resources on them, adding a layer of strategic play.
Option #4
Method of capturing strategic resources.
- Capturing can be achieved simply by controlling the area of space around the resource for a certain amount of time, or clearing the entire 'starsystem' in a discrete area model.
- Capturing a strategic resource requires assaulting it with starships, with some starships being more suited to assault than others.
- Capturing a strategic resource required expending limited resources (e.g. the Netrek model of removing armies from a friendly planet and dropping them on an enemy planet to destroy enemy armies).
Option #5
(Already decided in favour of awardable merits)
* * * * * * * * * * * * * * * * * * * * * * * *
Option #6
Availability of starships
- Starships will be available 'free' based purely on crew experience.
- Players will accumulate limited personal resources which must be used to purchase allowed starships.
- Fleets will accumulate collective resources which can be used by individual players to purchase starships.
Option #7
(Already decided in favour of tactical intelligence)
