This is a DevLog thread about a minimalistic 3D game engine (oriented to FPS games because that's what i like and love) i'm writing called
Alithia Engine (Alithia means "truth" in Greek). I wanted to have this here earlier but i decided to wait for a bit until i was sure i'm going to actually work on it instead of writing a few lines of code and dumping the thing altogether in the Great Unfinished Projects Void.
However i also decided (after the previous decision) that i will never be sure about that so the choices were two: have it here or not. Now, i know there are many unfinished projects around here and adding yet another isn't helping anything. Besides i will feel (slightly) bad if someone actually likes the project and i fail to finish it. Not that "finishing" an engine makes much sense though, there is always something neat to add or modify. Or remove. So this is my unofficial excuse.
The engine has a minimalistic design. This means i'm going to do as less as i can think to have things working, i'm not going to spent more than needed time to make things go fast and that only if they actually prove to be painfully slow (in my own hardware, which includes an Acer Aspire One netbook - yes it works so far, no it isn't fast but a game will be playable i hope). The structures, world, etc all are simple and implemented in the first (and easiest) method that comes in my mind. If that's bad or slow, it'll be proven in practice while the engine runs: is it
really that bad? If so, i'll rewrite it. Otherwise i'll leave it there and put on extra armor to help me survive the CS zombie apocalypse.
The inspiration of the engine was the somewhat popular
Cube 1 engine, so you have an initial idea of what to expect (don't worry there will be screenshots and videos in this thread). The world is made up of a 2D grid will cells that contain ceiling and floor height, textures and other stuff and the engine shoots rays from the camera to the world to figure out what is visible and what not. There is also the ability to put arbitrary 3D geometry in the world so stuff-over-stuff can be made although it's not as optimal. There is an in-game editor where you fly around the world and modify stuff like changing textures, adding and removing entities, putting lights, getting stuck, wishing for real 3D structures, cursing me for my incompetence, wondering why you're using that engine, etc. Still the Cube 1 engine was used only as an inspiration, none of its code was used or harmed at the process of writing Alithia Engine.
Alithia is written with slightly more modern hardware in mind, even if the screenshots will remind you of Quake -1 and the code doesn't use any newer GL feature than what was available in OpenGL 1.1 (except multitexturing and possibly something else i don't remember right now). Still, despite the initial WTF impression, the engine performs very good in limited hardware such as the aforementioned Acer Aspire One which contains a puny GMA 950 or something slow like that, on a similarly slow CPU (let's all remind ourselves, no matter how painful it is, that three-digit-ed GMAs do vertex processing and lighting on the CPU). So, in a nutshell Alithia is fast. Ok it isn't but it tries a little.
In a failed attempt to be a good netizen, i decided to give the source code of the engine away for free under a very permissive license, zlib. This means that you can do whatever you want with the engine as long as you don't claim you wrote it yourself and that i can't sell it for billions, be rich and have crocodiles with castles or something like that. However as i said, the attempt failed and i'm not much of a good netizen, but don't worry because thanks to the force of habit the engine is and will be free for eternity or at least until i break free from said force. For anyone interested, the engine is written in plain pure simple C, SDL and uses OpenGL. Beyond that it contains its own everything, which includes rendering, model format, Blender 2.5 exporter, GUI system, bad physics, awful controls, scripting language, etc. Actually the scripting language part isn't specific to Alithia Engine, but it is a generic embeddable scripting language i'm writing called LIL (for Little Interpreted Language - cute isn't it?).
Ok, now some screenshots:
Open area
Eh, closed area
Also for anyone interested in stuff you can download here are some links:
http://github.com/badsector/alithia - this is the engine's site at GitHub
http://github.com/badsector/alithia/downloads - this is the download section of said site from where you can download the
Alithia Engine Prelpha Zero release, the first Ever release of this engine. It contains binaries (executables) for Mac OS X, Windows and Linux.
YouTube Playlist with many videos i've uploaded and i'll upload while developing the engine. Don't worry i'll also mention them here!
The never up-to-date "howitworks" document which tries to explain in more detail how the engine works. So far only the world rendering is explained but that's okay because beyond that most other parts are pretty standard.
git://github.com/badsector/alithia.git - public git repository. It doesn't contain the data files which you need to download from the GitHub site above (actually you probably need to download the Alithia Engine Prealpha Zero archive - i'll upload new data files soon-ish).
So, until i have anything new to mention (something that i do quite often, unless i have nothing new), feel free to comment :-). As a starting point,
. Note that the feature mentioned in the video's comments (skybox lighting) isn't available in the preview above but it is available in the last commit.
Have fun! :-)