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...
Vivaan
Check their projects out: Portfolio, Deadzone, Climate IQ, Drenched, Avada-kedava, Trident, Anti portfolio, Anti portfolio, Rims, MarkdownMayhem
Thomas McConkey
Check their projects out: UIL Forces, Fractal Desmos, Finite Element Visualizer
Kevin
Check their projects out: ValAmi, Beacon, int0x80.ca, MonteCraplo, PZChessBot
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
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.
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:
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.
Updated the title text and prepared to add game over text. Also other misc polish in preparation for shipping
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
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
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.
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.
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.