Recently my girlfriend asked me if I would help her program a text adventure. She has wanted to learn the program in C for a long time and also has been looking for a project we could work on together. I thought this was an awesome idea, so I set about programming a basic shell of an adventure engine for her to work with. I wanted to take the load off her so she can focus on developing the story rather then dealing with blitting, messaging, etc.
I managed to pack the entire DOS font of 256 characters in to 3k of space and embed it into the program, which was pretty cool, so each bit encodes only one pixel. I could perhaps have achieved more using RLE but there really isn’t any need to go that far.
My library emulated a console screen of 40×20 characters. It has a cursor that can be moved, text and symbols can be written to the screen and it handles user input, so in short, all of the basics for a text adventure. There is no scrolling implemented yet however since that didn’t seem necessary. Conceivably an awesome rogue like could be easily written with this library.
Plain text however just seems too digital and static. I wanted something more like and old analogue CRT monitor with a little too much interference, and misaligned deflection coils. So a second achievement was to finally get around to writing my ‘ghetto blur’ as suggested long ago for my yet unnamed dungeon game. I managed to do this efficiently using some cool tricks, using only ANDs, ORs and shifts. It looks fairly retro and below you can see it for yourself, however the magic is seeing it animated as it subtly flickers and wobbles.
Again, I have produced a small demo of the Tengu Engine as my own way of experimenting with what may be possible as it progresses along its development path. While work is already under way on the hardware renderer, it still has not been integrated into the main code so this demo here still uses SDL for all of the rendering. What it shows is a top down perspective using a destroyed space ship tile set I made recently. There are ray traced shadows as well as what I refer to as gradients, or distance based mask pattern selection, to give the illusion of light or visibility falloff, which is a technique somewhat similar to dithering I suppose.
I have been working on some tiles for this project today to help me define a more solid overall look of the game. The task for today will be to update the engine to support custom maps and these nice tiles. The water rendering is also coming along so I am hoping I can have these things integrated by tomorrow.
Also, something that I have rarely seen in a platform game is genuine AI companions that can join the player on their journey. I guess this is in part due to the fact that it can be hard to create an AI that can navigate and jump between platforms properly, however I have devised what could be a great solution to this problem.