Daídalos
One project, three iterations: an OpenGL shooter, its DirectX 9 rebuild, and the reusable engine that came out of it.
Daídalos
2008
An old-school 3D first-person shooter written from scratch in C++ and OpenGL.
Daídalos started in 2008 as a way to learn 3D rendering. Inspired by the original Doom and Wolfenstein 3D, it set out to build a viable indie FPS from proven mechanics rather than reinvent the genre.
Trapped in labyrinth-like levels, the player fights through the creatures haunting them, picking up objects along the way to get out alive. The game offers several environments and object types.
C++ · OpenGL · SDL_mixer
Daídalos DX
2010
The same game rebuilt on DirectX 9, with deferred rendering and dynamic soft shadows.
Daídalos DX keeps the goals of the first game and pushes the technical side much further. It grew out of DirectX 9 courses taken during my studies: the aim was to apply them to the previous prototype with dynamic lighting and shadows, normal mapping and specular rendering.
It runs on a personal engine developed alongside it, which became Daídalos Engine: dynamic soft shadows, a BSP tree for collisions and normal mapping.
C++ · DirectX 9 · HLSL · Deferred rendering · OpenAL
Daídalos Engine
2011
The engine extracted from Daídalos DX and made generic and reusable.
Daídalos Engine is an educational 3D engine that covers the jobs a real engine does: rendering, collisions, audio, I/O and scene management. It takes the technology built for Daídalos DX and makes it generic.
- Scenes: elements are organized as a tree of scene nodes (3D models, sprites, lights, sounds, particle effects such as smoke and fire), declared in XML.
- Rendering: forward rendering for simple scenes, and deferred rendering when many light sources are involved, with HLSL 3.0 shaders for dynamic lights, soft shadows and normal mapping.
- Collisions: a binary space partitioning (BSP) tree splits each scene into convex zones to resolve collisions between static and dynamic elements.
- Resources: wav/ogg/flac audio; obj/ms3d/md2 models; bmp, dds, jpg, png, tga and other textures; ini configuration.
- Editor: a level editor built on the engine itself, for laying out levels and testing them in real time.
C++ · DirectX 9 · HLSL · OpenAL · TinyXML2