'Elroids' Developer Notes.
Source access
There is a, currently private, github repository here.
Alternatly it's all just script. You can 'inspect'/download the code from your browser.
There is also a facebook discussion group here. If
you want github access please join this and post a request to be added.
Known bugs
- Missiles are created too far in front of ship (see 'quantization' issue below). Sometimes miss very close
targets ... fix
- If going fast enough can fly through station. Hit it but get kicked out the far side.
- Menu system/cursors only just works. Requies carefully 'tuned' menu pages.
- Labels are in the foreground. If something passes between the viewer and a labeled object label will be
infront.
- Sometimes, e.g if rammed, can end up going faster than the maximum hull speed. Guess thats OK.
The 'Test Universe'
If the game is launched with parameter 'rockCount="0"' a 'Test Universe' is generated.
This contains a populated Universe and Ship with test versions of most things. Can be used for code testing.
"'Someone else' can add unittests later." ... as idiots, who have no place in any comptent development
environment, like to say.
For notes on code operation/stucture see the Developer Code notes..
ToDos (In some sort of priority order)
V9.x Improve opposition.
Add smart enemy ships.
Put 'back', 'exit' and 'undock' on same line.
V10.x Fix game launch problems.
Add 'loading' screen.
V11.x Add extra ship components.
- 'Elite style' (over heating) beam weapon.
- Thrusters (directional control)
- Extra avionics including:
- HUD
- Docking computer. Then make docking more difficult.
- Range finder
- Mineral detector
- Missile lock.
- Homing missile
- Proximity missiles (mainly for use by the bad guys).
- Shields.
- Separate warp drive.
- Improved terminal (but keep VT100 as default).
V12.x Bulk up.
Add many more:
- Goods Types.
- Systems.
- Hull types.
Add player 'criminality/reputation' in each system. Modified by illegal trading, piracy etc.
Documentation.
Add screen shot with various display panels labled.
Add images (screen shots) of Items in place of game logo.
General 'good stuff' ... Post V12.0
- Game mechanics:
- Improve 'vision through' wrap to take account of camera direction (i.e. dont just use
Universe.handleWrap()). i.e. allow rocks to be seen at full universe width not half.
- Improve 'collision detection' mechanism (Item.detectCollision()). Although, for now, the 'cylinder
Vs sphere' bounding check seems to be doing good service.
- For ship/station interaction, once an rough aproximation to a collision is detected, it is
confirmed using ray tracing (Item.isPointInside()). Maybe extend to ray trace all the corners of
the Items bounding box.
- Carve the universe into 'regions'. So don't have the square law issue of checking collisions
between everything and 'everthing else'.
- Limited number of missiles in flight (like Asteroids).
- In flight ship repairs based on expenditure of, purchable, 'univeral shunt' modules (goods) rather than
credits.
Do something about saucer 'seeking' target location behaviour ... or maybe just leave it since it looks like
defensive manouvering.
Componentize sacucer
Sort out menu system:
- Current code for buttons and scripts is ugly. Works in the context of MenuSystem, where it is evaled,
rather than it's own. Good enough for a 'minimum feature set' but needs a re-work.
- Currently buttons won't work on nested tables
- Re-work menu system as real HTML with style sheets to control look and feel. Back end to communicating
via HTTP with a, localy implemeneted in the client, 'HTML server'.
Possibly limit amount of goods available at stations.
- Maybe stations gradually 'grow' goods.
- Maybe station 'craft' goods from minerals delivered.
Try it with really big rocks.
Prettiness:
- Create 'exploding ship' animation. (Exploding Mesh? Then it could also do rocks/saucers etc.)
- Add surface texture to ship.
- Make saucers more 'shiny'. Probably involves MeshPhongMaterial ... but for me that just comes out white.
- Add extra vt100 features (e.g. block graphics) to ship control terminal.
- Fix audio to use THREE.PositionalAudio (Item.js.playSound()). I tried but cant get the listener to stay
stuck to the camera in all cases. Maybe add it to the Ship instead. Fell back on manually reducing volume
wih distance (and living without correct stereo).
- Make crater textures proceduraly generated (less download).
- Add 'tunnel' graphics when going through wormholes.
Additional features:
- Implement mother ships spawning more mother ships?
- Implement saucers spawning multiple loot packeges.
UI improvements:
Abstract keyboard controls to Events (Roll left, Pause, etc.) rather than characters. Makes switch to other
UIs easier.
- Add mouse controls.
- Make radar zoomable.
- Add joystick/tablet controls (maybe via on screen buttons reproducing keyboard keys). Maybe use tilt sensor
for movement.
Extensions:
- Test on platforms other than PC/Chrome.
- Move code under npm repository.
- Make it multi-player (AJAX?).
- Add optional gravity effects (like Gravitar).
- Add on line high score table?
- Maybe collision damage should be proportional to mass and relative speed of colliding object. Common for
all items apart from 'rock on rock' impacts.
- Revisit inline 'ToDos'.
- Add 'toxic' crates. Triibles, bombs, xenomorphs.