- ๐ฎ Engine Overview
- ๐ฏ Core Engine Systems
- ๐ Key Features
- ๐ ๏ธ Technical Stack
- ๐ Project Architecture
- ๐ Getting Started
- ๐ฎ Engine Usage
- ๐ Development Progress
- ๐จ Engine Capabilities
- ๐ Research Focus
- ๐ค Contributing
- ๐ Documentation
- ๐ License
- ๐ Acknowledgments
- ๐ Contact
Daemon Engine is a modular, performance-oriented game engine built from the ground up with modern C++ practices. Designed for both educational purposes and production-ready game development, it provides a comprehensive suite of systems including advanced rendering, robust audio management, flexible input handling, and cross-platform networking capabilities. The engine emphasizes clean architecture, extensibility, and developer-friendly APIs while maintaining high performance for game development across various genres.
- Modular Rendering Pipeline: DirectX 11-based renderer with sprite batching, advanced lighting, and efficient GPU resource management
- Comprehensive Audio System: 3D positional audio with FMOD integration, supporting multiple audio formats and real-time effects
- Event-Driven Architecture: Robust event system enabling loose coupling between engine systems and game logic
- High-Performance Rendering: Optimized rendering pipeline with batch processing, texture atlasing, and GPU-accelerated effects
- Advanced Audio Engine: 3D spatial audio, dynamic music systems, and real-time audio processing capabilities
- Flexible Input Management: Multi-device input support with configurable key bindings and controller integration
- Resource Management System: Efficient asset loading, caching, and hot-reloading for rapid development iteration
- Cross-Platform Networking: TCP/UDP networking foundation with reliable packet delivery and connection management
- Developer Console: Runtime command system for debugging, tweaking parameters, and profiling performance
- Mathematical Framework: Comprehensive math library optimized for game development with SIMD support
- XML Configuration: Flexible configuration system supporting runtime parameter adjustment and data-driven design
- Programming Languages: C++11/14/17, HLSL
- Graphics Pipeline: DirectX 11, Custom Renderer with GPU-accelerated effects
- Audio Engine: FMOD Studio integration with 3D positional audio support
- Networking: Custom TCP/UDP implementation with packet reliability systems
- Platform: Windows (x64) with planned cross-platform support (Linux, macOS)
โโโ Code/
โ โโโ Engine/
โ โโโ Audio/ (FMOD-based audio system)
โ โ โโโ AudioSystem.cpp
โ โ โโโ AudioSystem.hpp
โ โโโ Core/ (Fundamental systems)
โ โ โโโ Clock.cpp (Time management)
โ โ โโโ EventSystem.cpp (Event handling)
โ โ โโโ DevConsole.cpp (Developer console)
โ โ โโโ FileUtils.cpp (File I/O utilities)
โ โ โโโ StringUtils.cpp (String manipulation)
โ โ โโโ Timer.cpp (High-precision timing)
โ โ โโโ XmlUtils.cpp (XML parsing)
โ โโโ Input/ (Input management system)
โ โโโ Math/ (Mathematics library)
โ โโโ Network/ (Networking foundation)
โ โโโ Platform/ (OS abstraction layer)
โ โโโ Renderer/ (Graphics and rendering)
โ โ โโโ Renderer.cpp (Main renderer)
โ โ โโโ Camera.cpp (View management)
โ โ โโโ Texture.cpp (Texture handling)
โ โ โโโ Shader.cpp (Shader management)
โ โ โโโ VertexBuffer.cpp (GPU buffer management)
โ โ โโโ BitmapFont.cpp (Text rendering)
โ โ โโโ DebugRenderSystem.cpp (Debug visualization)
โ โโโ Resource/ (Asset management)
โ โโโ Scripting/ (Scripting integration)
โโโ Docs/ (Documentation)
โโโ Tools/ (Development tools)
โโโ ThirdParty/ (External dependencies)
โโโ fmod/ (FMOD audio library)
- Visual Studio 2019 or later with C++17 support
- Windows 10 SDK (10.0.18362.0 or later)
- DirectX 11 compatible graphics hardware
- Git for version control
- Doxygen (optional, for documentation generation)
-
Clone the repository
git clone https://github.com/dadavidtseng/DaemonEngine.git cd DaemonEngine
-
Open the Visual Studio solution
start Engine.sln
-
Build the engine
- Set platform to
x64
- Choose
Debug
orRelease
configuration - Build solution (
Ctrl+Shift+B
)
- Set platform to
-
Integration with game projects
- Reference the engine library in your game project
- Include necessary headers from
Code/Engine/
- Initialize engine systems in your application
#include "Engine/Core/EngineCommon.hpp"
#include "Engine/Renderer/Renderer.hpp"
#include "Engine/Audio/AudioSystem.hpp"
// Initialize core systems
g_theRenderer = new Renderer();
g_theAudio = new AudioSystem();
g_theEventSystem = new EventSystem();
// Game loop
while (isRunning) {
g_theRenderer->BeginFrame();
// Your game logic here
g_theRenderer->EndFrame();
}
// Sprite rendering with advanced features
g_theRenderer->BindTexture(spriteTexture);
g_theRenderer->DrawSprite(position, scale, rotation, tint);
// Batch rendering for performance
g_theRenderer->BeginSpriteBatch();
for (auto& sprite : sprites) {
g_theRenderer->DrawSpriteBatched(sprite);
}
g_theRenderer->EndSpriteBatch();
- Phase 1: Core architecture and foundational systems
- Phase 2: DirectX 11 rendering pipeline with sprite support
- Phase 3: FMOD audio system integration and 3D spatial audio
- Phase 4: Event system and inter-system communication
- Phase 5: Resource management and asset pipeline
- Phase 6: Advanced lighting and particle systems
- Phase 7: Cross-platform support (Linux, macOS)
- Phase 8: Visual editor and development tools
- Memory Management: Some edge cases in resource cleanup during rapid asset loading
- Platform Compatibility: Currently Windows-only, cross-platform support in development
- Documentation: API documentation is being migrated to Doxygen format
- Hardware-accelerated sprite rendering with batching optimization
- Advanced lighting system with normal mapping and dynamic shadows
- Particle system for visual effects and atmospheric elements
- Debug rendering system for development visualization
- 3D positional audio with distance attenuation and Doppler effects
- Dynamic music system with seamless looping and crossfading
- Real-time audio effects processing and filtering
- Multi-channel audio mixing with priority-based voice management
- Memory pool allocators for efficient memory management
- Multi-threaded rendering and asset loading
- CPU and GPU profiling tools for performance optimization
- Configurable quality settings for different hardware targets
This engine serves as a platform for exploring modern game engine architecture and optimization techniques:
- Modular Architecture Design: Investigating optimal patterns for game engine component organization and inter-system communication
- Rendering Optimization: Developing efficient techniques for high-performance graphics rendering on modern GPUs
- Developer Experience Enhancement: Creating intuitive APIs and tools that accelerate game development workflows
Development follows industry best practices with emphasis on:
- Performance-First Design: Every system is architected with performance considerations as primary constraints
- Data-Oriented Design: Utilizing cache-friendly data structures and processing patterns for optimal CPU utilization
- Continuous Profiling: Regular performance analysis and optimization based on real-world usage patterns
- Modular Design Impact: Well-defined system boundaries significantly improve maintainability and testing capabilities
- Batching Effectiveness: Sprite batching provides 300-500% performance improvement in typical rendering scenarios
- Developer Productivity: Comprehensive debugging and profiling tools reduce development iteration times by approximately 40%
Contributions are welcome from developers interested in game engine architecture, graphics programming, and systems development.
- Fork the repository
- Create a feature branch (
git checkout -b feature/rendering-enhancement
) - Implement changes following coding standards
- Add comprehensive unit tests
- Update documentation as needed
- Submit a pull request with detailed description
- Follow C++ Core Guidelines for modern C++ practices
- Maintain consistent naming conventions (PascalCase for classes, camelCase for functions)
- Document all public APIs with comprehensive comments
- Ensure thread safety in multi-threaded contexts
- Engine Architecture Overview (planned)
- Rendering System Guide (planned)
- Audio System Documentation (planned)
- Performance Optimization Guide (planned)
- API Reference (Doxygen) (generated from source)
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Modern C++ Community: Inspiration from contemporary C++ best practices and design patterns
- Game Engine Architecture: Insights from established engines and academic research in real-time systems
- Graphics Programming Resources: Techniques derived from GPU programming literature and developer conferences
- Open Source Contributors: Various open-source projects that informed architectural decisions
For questions about engine architecture, integration, or contribution opportunities:
- Engine Architect: Yu-Wei Tseng - [email protected]
- GitHub Repository: https://github.com/dadavidtseng/DaemonEngine
- Portfolio: https://dadavidtseng.info
Development Period: 2022 - Present (Active Development)
Last Updated: August 7, 2025