Skip to content

dadavidtseng/DaemonEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Daemon Engine - Modern Game Engine

C++ Platform Graphics API License

๐Ÿ“‹ Table of Contents

  1. ๐ŸŽฎ Engine Overview
  2. ๐ŸŽฏ Core Engine Systems
  3. ๐ŸŒŸ Key Features
  4. ๐Ÿ› ๏ธ Technical Stack
  5. ๐Ÿ“ Project Architecture
  6. ๐Ÿš€ Getting Started
  7. ๐ŸŽฎ Engine Usage
  8. ๐Ÿ“ˆ Development Progress
  9. ๐ŸŽจ Engine Capabilities
  10. ๐Ÿ“Š Research Focus
  11. ๐Ÿค Contributing
  12. ๐Ÿ“„ Documentation
  13. ๐Ÿ“ License
  14. ๐Ÿ™ Acknowledgments
  15. ๐Ÿ“ž Contact

๐ŸŽฎ Engine Overview

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.

๐ŸŽฏ Core Engine Systems

  • 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

๐ŸŒŸ Key Features

  • 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

๐Ÿ› ๏ธ Technical Stack

  • 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)

๐Ÿ“ Project Architecture

โ”œโ”€โ”€ 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)

๐Ÿš€ Getting Started

Prerequisites

  • 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)

Installation

  1. Clone the repository

    git clone https://github.com/dadavidtseng/DaemonEngine.git
    cd DaemonEngine
  2. Open the Visual Studio solution

    start Engine.sln
  3. Build the engine

    • Set platform to x64
    • Choose Debug or Release configuration
    • Build solution (Ctrl+Shift+B)
  4. Integration with game projects

    • Reference the engine library in your game project
    • Include necessary headers from Code/Engine/
    • Initialize engine systems in your application

๐ŸŽฎ Engine Usage

Basic Engine Initialization

#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();
}

Rendering System Usage

// 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();

๐Ÿ“ˆ Development Progress

Current Status: Active Development (Version 2.x)

Milestones

  • 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

Known Issues

  • 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

๐ŸŽจ Engine Capabilities

Rendering Features

  • 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

Audio Features

  • 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

Performance Features

  • 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

๐Ÿ“Š Research Focus

This engine serves as a platform for exploring modern game engine architecture and optimization techniques:

Research Objectives

  • 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

Methodology

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

Findings

  • 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%

๐Ÿค Contributing

Contributions are welcome from developers interested in game engine architecture, graphics programming, and systems development.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/rendering-enhancement)
  3. Implement changes following coding standards
  4. Add comprehensive unit tests
  5. Update documentation as needed
  6. Submit a pull request with detailed description

Coding Standards

  • 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

๐Ÿ“„ Documentation

๐Ÿ“ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • 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

๐Ÿ“ž Contact

For questions about engine architecture, integration, or contribution opportunities:


Development Period: 2022 - Present (Active Development)
Last Updated: August 7, 2025

About

Daemon Engine is a modular, performance-oriented game engine built from the ground up with modern C++ practices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages