Concept sketch for PlanetKiller:
This is a game in two stages:
Stage 1:
Overall concept is Asteroids / Geometry wars mash up.
Asteroids clone that uses 3D models drawn wireframe with glowing pixel shaders. Gameplay is still 2D wraparound world.
It is implemented in C# with managed DirectX 10. It requires at least a DirectX 9 or maybe 8 card. It is strictly HLSL
programmable pipeline.
Stage 2:
Using the same engine and models, turn the Asteroids clone into a game consisting of a single level,
or a few levels, where at the beginning of the round, the player is facing a large planet, which then
explodes. The camera has changed to a chase cam, and the movement and action has become 3D.
The player’s objective is to destroy as many hurtling planet chunks as possible before they are all gone,
after some predefined time limit. The player has a finite number of lives (3) to do it in.
Small, brightly colored objects may do things like grant additional lives or different, better, prettier
weapons when shot.
There will also be an online mode, perhaps with both cooperative and competitive modes.
The competitive mode mechanic will work like so:
Games are time-limited. The time limit will determine the size of the planet and the
initial distance between players.
The object is to get the highest score possible; Players will have infinite respawns at their initial spawn
point, but their score is cleared whenever they die, and only the highest counts.
Also, players can shoot other players, and the shot player’s score for that life does not count. However,
the initial distance between players will be considerable, and to get close enough to shoot the other player
will require flying across the trajectories of the planetary chunks, which is more dangerous.
There may also be power ups that:
Allow you to keep your score the next time you get killed.
Allow your score to count if you are shot by another player.
Make you turn faster.
Make you go faster.
Notes:
There will eventually be different models of ships and weapons (ship selection determines initial weapon, but
powerups can change that).
Radar. This would allow you to realistically fly with the rocks at your back, which would make shooting
other players easier.
Projectiles should be relatively slow and easy to see, so that they can be dodged. This will make dog fights
much more interesting.
QUESTIONS:
Would it be better to have a shot player be out of the game, to better encourage inter-player carnage?
If so, then there should probably be a power up to protect you from that.
NOTES:
Don’t forget network play must be a first order feature or you’ll waste so god-damned much work it won’t
be funny.
Object model is probably something like:
PlanetKillerEntity–Projectile
-Gun–(various)
-Ship–(various) (hasA: Player) (hasA: Gun) (hasA: main booster) (hasA:
-Powerup
-Rock–(various)
-Fragment
-Planet
-TBD
-Effect–Explosion
-(various)
The above treats thrusters as separate visual as well as functional components. They may be models
with defined attachment points to the ship model.
Where entities store position, trajectory/velocity, rotational and linear acceleration,
implement collision detection and state update, etc.
Player–LocalPlayer
-RemotePlayer (must have position extrapolation to account for network lag)
World
Camera (tied to a ship in stage 2)
Loop is probably something simple like:
Get input
Update game state
Render current game state.