Terminal Velocity

Terminal Velocity Used AI

11 devlogs
23h 31m
•  Ship certified
Created by sugo14

I built a 3D software rasterizer (renderer) and game engine that runs in the terminal from scratch, and a space navigation game built in it. Low-dependency and a simple build (and even simpler to run precompiled), but no online demo due to it requiring a fast terminal and significant resources. AI minimally used for repetitive code (for example, see matrix determinant and inverse). The project was started before Summer of Making, so by the first devlog the project was already pretty far along.
---
The year is 2525. You're yet another expendable contractor, assigned to one of the deadliest jobs in the galaxy: crystal extraction from unstable asteroid belts deep in space. Armed with only your teleportation blasters, you'll have to harvest as many alien crystals as possible before the asteroids accelerate faster than you can react. One collision, and it's over...

Timeline

Ship 1

1 payout of shell 615.0 shells

sugo14

28 days ago

sugo14 Covers 11 devlogs and 23h 31m

Spent way too much time creating a release. I tried to make an online demo with Emscripten compiling to webassembly and using online terminal simulators, but that ended up being just way too complicated. Then, I decided to just add a precompiled binary to the GitHub release and call it a day, but I needed to compile with an old version of glibc to ensure compatibility on old OS's, so I needed to make a Docker script to simulate an old OS with an old glibc just to compile. Overall way too much hassle, but at least I know how to go about it now.

Update attachment

The project is finally in a first-shippable state! As for the changes I made, I just fixed a bad attempt at frame safety that caused the HUD to jitter, and did a few other adjustments to difficulty scaling. In the future, I'm looking to change the way the score text is displayed (unify it with the rest of the physical HUD), add more visuals to make the world feel alive (like stars), and implement multithreading to improve performance and add true frame safety.

Here's a cool GIF I put together that showcases the game:

Update attachment

Finally added this game over screen, it looks decent IMO and ends the game as expected

Started working on Game Over text. I'm implementing it a little differently than the start text, in part because it has a specific destination rather than just move to the side, but also because I wanted to try something a little different. I also improved organization a bit by moving all assets to a resources folder, and did some other minor adjustments to improve gameplay.

Update attachment

Updated the title text and prepared to add game over text. Also other misc polish in preparation for shipping

Update attachment

Finally got some decent text working, just chose to make it in the image buffer rather than separately printing. This approach is ultimately way easier, keeps the screen modular, and allows usage of many different fonts

Update attachment

Added numeric text rendering thats highly sketchy at the moment. ASCII art is cool, and if I'm making a terminal engine, I need to have support for it, so I wrote code to make working with actual text (rather than my pseudo-screenbuffer) easier

Update attachment

Spent some time on maintenance, cleaning up terrible code, commenting it, and so on. One of the most notable things I did was fix an extremely major issue with the crystal collisions: when a crystal was hit, it would not necessarily delete the crystal that was hit, but rather the oldest (or newest? not 100% sure) crystal in the scene.

Update attachment

Added a cool little title screen, which took a while to make as I needed to improve my image support. Also, I made some much-needed clean-ups, with many more likely to come.

Added some variance to the crystals' color, rotation, and spawn rate.

Update attachment

Finally got a functional version of the game working! Harmful asteroids spawn in, and occasionally crystals spawn that the player must shoot and collect. I used a trick to make the asteroid spawn rate increase with the player's forward movement, as though there are asteroids evenly spaced throughout z-space. It also ended up being a more fun experience than I initially expected, which is a pleasant surprise.

Update attachment