Here’s a rough draft, I’m trying to err on the side of achieveability rather than creativity!
Space Trading Game Community Project Specification
Title:
Must be short, memorable & descriptive.
Concept:
Players fly around space in upgradable spaceships exploring, following quests, trading, space-mining or enjoying the leisure facilities of space stations.
Description:
A player starts with a few credits and simple spaceship docked in a space station. The space station has a workshop, a market, a leisure facility and a library. A casual player can launch immediately and fly around outside where there are convenient asteroids for target practice. Further off are planets which the player may go and explore. Planets may have space stations in orbit which can be friendly/neutral/hostile and may launch ships to assist/attack the player based on the player’s legal status: Fully lawful to outlaw. Destroyed ships drop their cargo which may be recovered. Players can dock at any space station (that they can get to!) and try out the facilities: Upgrade or repair the ship, trade, play minigames, check library for info on missions.
Each group of planets comprises a ‘zone’. There are many zones and the player can hyperspace jump between them.
Unique Selling Points:
So far, so Elite! What makes this different?
- Accessible: runs in a browser so anyone can try it.
- Visual variety: No two planets/ships are the same.
- Minigames: Space stations may have 1 or more casual games to play (not necc. context related, showcase for developers).
- Changeable - new planets/quests emerge as developers create/modify them.
- Highscores - scores for overall best fighter, best trader, highscore lists for minigames.
Target Audience:
Anyone who’s bored, has a browser and likes flying spaceships! May exclude total novices due to flight mechanics. Ease of play should be favoured over realism for this reason. Ideally everyone who visits the game will enjoy some aspect of it, even if it’s just flying around looking at pretty planets.
Implementation:
Written in java (1.4,1.5?) to run as an applet in a browser.
The decision between software and openGL is a tough one. Software: always works but slow, OpenGL: fast, pretty but scary popup issues/technical probs.
My instinct is to go for procedurally generated graphics rather than fixed resources - easier to manage asset database if graphics are included in classes.
The game consists of 4 software elements;
loader
physics engine
renderer
GUI
These are all very small so they load fast. Initially the player is docked so the physics and renderer can be loaded at launch.
The loader loads the relevant class files for the current zone. Class files may be;
Planets
Space stations
Ships
Missiles
Cargo items
Asteroids (ie any passive objects)
These classes are all abstract and are implemented by developers. The loader simply has a list of classes to load and their locations.
Once loaded, classes are polled by the physics engine and renderer.
Typical class structure:
class Planet
String name
Vector3D location
int[] textureData
float rotation
... & other attributes
void init();
class Ship
String name
Vector3D location
Vector3D orientation
Vector3D[] vertexData
Vector3D[] uvData
int[] textureIndices
int[][] textureData
float speed
int health
Vector weapons
Vector Cargo
... & other attributes
void init(WorldState ws);
void tick(WorldState ws);
void collision(WorldState ws); (is this needed?)
The WorldState is simply a list of objects in that zone (ordered/culled by distance?).
So a developer fills in the methods for any classes they implement. In the init method they define the shape and textures of the ship, in the tick method the AI is implemented &c.
It would make sense to have a set of default models/textures available to avoid too much data replication & to let new developers get results quickly.
Unanswered questions:
Multiplayer: It would be brilliant implement some kind of multiplayer support - not MM! - but I’m sure PvP/collaborative play would be possible for a limited number of players.
Customisable ships: No reason why not as data is mutable in game, may present problems GUI-wise.
Data Persistance: save data for registered players?
Music/SFX: would be cool to have in-flight entertainment system where musicians can showcase.
Scripting/cutscenes: very useful for plotlines &c. but may cause camera/behaviour conflicts if not managed carefully.
Artwork: it’d be good to have an attractive & consistent look to the game interface.
Player control system. Mouse? Keyboard? Must be immediately accessable to a novice.
Publicity: Ways needed to get people playing/contributing to the game (the ‘hook’).
Edit: These spelling mistakes get everywhere…