top of page

Custom Game Engine Development

As part of my passion for game development, I have been building a custom game engine from scratch in C++. This project demonstrates my deep understanding of low-level programming, architecture design, and the foundational systems required to create and run games effectively.

Key Features

  • Application Framework

Implemented a modular Application class that provides the foundation for game creation. The framework allows users to define their own applications by extending this base class, following industry-standard patterns for extensibility.​

  • Platform-Specific Compilation

Designed the engine to target Windows platforms, utilizing conditional preprocessor directives to manage platform-specific dependencies and exports (__declspec(dllexport/dllimport).​

  • Core Logging System

Integrated spdlog to provide robust, customizable logging capabilities. The engine supports separate logging levels for the core engine and client applications, ensuring clear diagnostics and debugging during development.

  • Entry Point Definition

Created a dedicated entry point system for the engine, simplifying the process of initializing core systems and launching applications.​

  • Runtime Loop

Implemented a basic runtime loop that demonstrates how the engine will process game logic continuously until termination.

Technical Challenges Overcome

  1. Modular API Design:
    Ensured the engine's API supports future scalability, allowing developers to easily extend or modify its core functionalities.

  2. Cross-Module Logging:
    Developed a shared logging infrastructure that distinguishes between engine-level and application-level messages, enhancing clarity during debugging.

  3. Dynamic Linking:
    Addressed the complexities of building and managing DLLs for Windows, ensuring seamless export/import of symbols across modules.

Technologies Used

  • Programming Language: C++

  • Logging Library: spdlog (take from a github repository)

  • Platform: Windows

Future Goals

  • Introduce a robust event system for handling user input and internal messaging.

  • Develop a graphics rendering pipeline leveraging modern APIs like DirectX or Vulkan.

  • Build a basic physics engine to handle collision detection and response.

  • Add support for cross-platform deployment by abstracting platform-specific dependencies.

video of working demo

adding lua/premake5

This code snippet is a Premake5 configuration file for setting up a project with two components: a shared library (My_Game_Engine) and a console application (Sandbox). Below is a detailed breakdown and explanation of the file:

image.png
bottom of page