Component engine 2

2016

Component engine 2

2016

A data-oriented game engine, based on ECS (entity component system), and abstracted with Lua C for game-object component scripts. Lacks a decent renderer (has basic OpenGL for visual feedback), but made to be small, light-weight, and fast when only using the C++ base engine.

The engine layer provides no real object-like interface for game-objects, and is purely data-oriented with behaviour programmed for bulk objects within system classes. The scripting layer allows for game-object like component programming in Lua, with simple access to engine features and maths objects.

Handles around 4,000 script objects above 60 FPS on a decent PC running the test in the video below. An equivalent test programmed only in the C++ layer handles around 16,000 objects above 60 FPS.

Created as part of a university dissertation back in August, but ongoing. See ObjectPool for updates.


Requires Visual C++ redistributable 2015.

Autonomous TORCS driver

2016

Autonomous TORCS driver

2016

TORCS (the open race car simulator) has a server-side patch allowing driver AI to be programmed into clients that control drivers in a simulated race. The server provides clients mainly with 32 track distance sensors, 19 opponent sensors, track middle offset, engine RPM, gear, and XYZ velocity.

The below video shows the server-side view of TORCS with a fixed camera on the main driver, and the client-side implementation debug renderer of the sensor inputs and outputs. The algorithm calculates the furthest sensor after being filtered, and then steers towards it using a PID (proportional-integral-derivative) controller.

The 32 combined sensor inputs are represented as white lines, with the green line being the calculated steering direction. The running graph shows the outputs, with the steering in blue (-1 to 1), acceleration in purple (0 to 1), and braking in yellow (0 to 1). The race shown is a test for opponent avoidance running 4 of the same driver algorithm.

The implementation also includes a custom client connector to allow for multiple drivers to connect on different threads, seen here.


Runs on a patched version of TORCS 1.3.4 (patch included in the Win32 download), running a race of 4 scr_server drivers.

Requires Visual C++ redistributable 2015.

State sync network prototype

2016

State sync network prototype

2016

A MVC (model-view-controller) asynchronous network framework for TCP state synchronization. The base server and client are programmed with SDL network. The below video shows an example implementation of the framework for draughts with an SDL renderer, running locally.

The draughts implementation is quite bare, but included is an additional speed testing implementation to show response times.


Requires Visual C++ redistributable 2013.

CHIP-8 emulator

2015

CHIP-8 emulator

2015

A CHIP-8 assembly interpreter, uses SDL for input and rendering.

ROMs are included in the download, simply drag and drop them onto the executable, or use 'open with' on Windows.


Requires Visual C++ redistributable 2013.

Component engine 1

2015

Component engine 1

2015

My first attempt at creating a component based C++ engine, along with various prototype implementations.

1st prototype - A 3D shooter with an OpenGL renderer for rendering external assets. Uses OpenGL texture buffers, index buffer objects, and GLSL.

2nd prototype - A simulation running FANN, where agents have been back-propagated from the output of previously programmed AI, enabling them to run from the input of a 5 by 5 visual sensor array surrounding each one.

3rd prototype - An implementation of object-oriented bounding box collision detection.

4th prototype - An shader implementation in GLSL to achieve bump and specular maps using external texture and material files.

The biggest feature this engine lacks from usual component engine implementations is any smart data-oriented memory management. Although this engine is okay for prototypes with low object counts, it has since been superseded by ComsEngine using more data-oriented methods.


Requires Visual C++ redistributable 2013.

Filtering by tag: C++( Reset Filter )