← Back to Portfolio
GAME ENGINE DEVELOPMENT

Custom C++
2D/3D Game Engine

A cross-platform game engine developed from scratch, focusing on understanding graphics pipelines, rendering systems, and engine architecture.

Project Overview

This project is a custom-built game engine written in C/C++. The main goal was to understand and implement the fundamental components of modern game engines without relying on large external frameworks.

The engine supports both 2D and 3D rendering, custom asset formats, animation systems, collision detection, particle effects, lighting and editor tools.

Technology Stack

C++ OpenGL SDL GLSL Linux Windows XML

Engine is able to cross compile on Linux and Windows.

An experimental, native version of the engine is implemented in D language also.

2D Features

Basic functions

Basic textured objects with scale and rotate features

Sprite System

Sprite animation, object management and frame-based AABB collision handling. XML based animation descriptor

Game related parts

Gameobject2D, 2D layering background system, layer camera, scene management, XML based world descriptor

Tile Map System

Basic implementtion of a Tile based world representation with collision support.

Particle System

Particle effects implementation: fire, smoke, other

3D Features

Scene and camera and world management. Frustum culling, etc.

Basic structures to support 3D worlds. Made an own custome world XML descriptior format.

Support static and animated (keyframe) game objects

General structures for game objects, collision detection, etc

Implemented many model formats: ASE, Obj, MD2, MD3

Designed an XML based model format, named TMD. Implemented a command line model converter to convert other models to the own TMD format.

Particle system

Basic particle system implementation: fire, smoke, rain

Shadow support

Engine suppports shadow mapping. Have some demo with Shadow Volume as well.

Basic voxel support. Rendered in CPU or GPU (billboards)

Experiment with voxel based models. Supports the .vox format

Per-pixel lighting, Normal and Parallax mapping

Implemented Phong based lighting.

SkyBox, Skydome, terrain

Some very basic implementation of heightmap based terrains, skybox and skydome.

Technical Challenges

Learning by Building

The main challenge was implementing low-level engine functionality instead of depending on existing solutions. This required solving problems related to rendering performance, memory management, mathematics, asset handling and cross-platform development.

Research & Publications

The renderer also served as a platform for experimenting with custom rasterization techniques and performance-oriented rendering algorithms.

RESEARCH

The Past and the Future of Computer Visualization

Some prediction of the future of the modern computer graphics

Read the Article →

Collision Detection in 2D Games

Making a (non-full) overview about mainstream collision detection techniques in 2D games.

Read the Article →

Practical guide to implement a simple 2D game engine

A simple "guide" how to approach 2D game engine implementation.

Read the Article →

Game loop: the heart of the game engine

Talk about one of the main component of a game engine.

Read the Article →

Per-Pixel Lighting for Multi-Object Models

A detailed description of a Phong based per-pixel lighting with normal mapping.

Read the Article →

A Hybrid Rendering Pipeline Combining CPU Rasterization and GPU Upscaling

The future is about the methods which combines the CPU and GPU resources.

Read the Article →

Gallery

Lightroom demo