Selknam is a versatile 2.5D adventure game engine built with C++23 and Raylib. It features a unique blend of 3D environments with 2D-style interactions, supporting a rich narrative and exploration experience.
- 2.5D Rendering: Combines 3D perspective with billboarded entities and orthographic-style UI.
- Advanced Shader Effects: Includes post-processing, screen transitions, and object highlighting.
- Narrative System: Integrated dialogue management for deep storytelling.
- Dynamic Scene Management: JSON-based level loading with support for room transitions and persistence.
- Inventory & Item System: Flexible item management and interaction mechanics.
- Save/Load System: Persistence layer with support for multiple slots and automated screenshots.
- Pathfinding: Grid-based AI movement and navigation.
- Audio Management: Centralized handling of music and sound effects.
- Cross-Platform: Built on top of Raylib for broad compatibility.
The project is organized into several key modules:
- Renderer: Handles the 3D scene and post-processing pipeline.
- EntityManager: Manages the lifecycle and drawing of game entities (Player, NPCs, Items).
- SceneManager: Controls level loading, state transitions, and environmental properties.
- DialogueManager: Powers the branching narrative and UI dialogues.
- InputHandler: Bridges player input with game actions and interactions.
- StoryManager: Tracks global game flags and narrative progress.
- SaveManager: Handles serialization of game state to JSON.
- AudioManager: Manages background music and sound effect playback.
- CMake: Version 3.25 or higher.
- C++ Compiler: Support for C++23 (e.g., GCC 13+, Clang 16+, MSVC 19.36+).
- Dependencies: Raylib and nlohmann_json (automatically downloaded via CMake FetchContent).
- Clone the repository.
- Create a build directory:
mkdir build cd build - Configure and build:
cmake .. make
- Run the executable:
./Selknam
- Left Mouse: Interact with objects, NPCs, or walk to a destination.
- Arrow Keys: Rotate the camera.
- + / -: Zoom the camera in and out.
- H: Toggle "Clue Mode" (highlights interactive objects).
- S: Open the Save Menu.
- F: Toggle Fullscreen mode.
- F1: Show/Hide Help.
- Space: Advance dialogue or toggle experimental shaders.
- ESC: Return to Main Menu.
This project is licensed under the MIT License - see the LICENSE file for details.