TomentRaycaster Online
project DESCRIPTION
TomentOnline is an open-source Software Rendering Raycaster Engine with multiplayer written in plain C and SDL2, without any other external library. I’ve intentionally choose to not use any external dependency to be exposed to every single component of a game engine, inspired by the Doom and Wolfenstein 3D engines.
Every component was therefore written from scratch, my desire was to start just from a function similar to what PutPixel is and build up from there.
Achievements:
- Custom Multi-Threaded Software Renderer: multi-threaded renderer built from uttermost primitive “R_DrawPixel(…)” to be able to draw multilayered levels, textured walls, floors, ceiling, sprites, animated sprites, fog rendering, 8-angled sprites and more.
- Custom Asset Manager & Archiving Tool: built a dedicated archiving tool (TomentARCH) and a custom file format (.archt) to bundle game assets and let the engine load them.
- Multiplayer Architecture: peer-to-peer based multiplayer system over TCP using the low-level Winsock API. I wrote a custom serialization system to pack game data into structured packets, managing my own send/receive buffers to overcome TCP stream latency and segmentation, needed to support the online gameplay.
- Gameplay System: built out a complete multiplayer gameplay loop on top of the engine, including a lobby system, RPG class selection (Tank, Healer, DPS), spells, skills & cooldowns, and multi-phase boss fights with their own mechanics.
- AI and Behaviours: designed 2D enemy AI using Finite State Machines to drive pathfinding, combat logic and multi-phase boss mechanics.
- Maps & Dynamic Object Interaction: data-driven and multi-layered map architecture to manage both static geometry and dynamic entities (potions, doors, power-ups). The engine reads a custom file format generated by a dedicated level editor.
- Physics: 2d collision resolution with dynamic entities that can traverse the map layers (such as the Skeleton Lord boss).
- Custom UI & Text Rendering.
level EDITOR
A Map Editor for the TomentRaycaster engine, written in Java and Swing.
