A never-finished project to create a similar game to Elite for TIC-80. Please run this in the native version of TIC-80 for your operating system for optimal performance.
-- CONTROLS --
Arrows: Pitch and yaw
Z: Accept / Fire Laser
X: Back / Afterburner
A: Shift key - affects what other buttons do
A+Arrows: Thrust level and yaw
A+S: Open menu in flight
A+X: Jump to new system
A+A: Change radar zoom level
I originally began this project towards the end of 2017. Every now and then I would work a bit more on it, but since I haven't touched it in months, I figure it's about time to upload it. If you are sufficiently interested (and willing to trudge through barely-documented code), you have my permission to modify this project in any way you please.
Most basic functions of Elite are implemented in the game. The AI is very rudimentary and will only dock with the station. The controls are a bit of a pain since it is based entirely on TIC's 'controller' i.e. d-pad and 4 buttons.
-- FEATURES --
- Full 3D
- Shoot ships with lasers (they won't shoot back)
- Different ship types
- Procedural universe
- Buy and sell cargo - you can make money from trading
- Basic collisions
- Autosave when docking at a station
- Cheats: infinite money, change galaxy
-- TECHNICAL DETAILS --
The 3d renderer uses TIC's in-built tri() and textri() functions. It is based upon a simple rule where the x and y coordinates of vertices are divided by their z coordinate, then offset and scaled to fit the screen. The renderer also has backface and (attempted) viewport culling. One issue with TIC's tri() function is that it seems to loop over pixels that are off screen, which causes lag when models are viewed at certain angles and positions. I use quaternions to store rotations using the maf library. https://github.com/bjornbytes/maf
Models are stored and loaded from ram, to save code space. This was back when there was a hard limit of 64k of code. I planned to create a simple 3d modelling program but didn't get far with it, so all models were typed by hand then converted in code to the format used in ram.
Hit detection is done by casting a ray from the player's position. Triangles are treated as if they are perfectly aligned with the screen; the z positions of the vertices are averaged. This has no impact on lasers, but it means that you can clip into the station if you try, though you will likely take damage.
There is no option in menu to start the game itself? Only to save/load or change settings?
Hold down A/X and use the arrows
I may change the controls to be a bit more intuitive, but I have more or less abandoned the project