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.

Island materials prototype

2016

Island materials prototype

2016

An experiment in UE4 node-based material shaders, including a multiple materials with HLSL custom nodes. Materials were created for the shoreline, ocean, horizon, and terrain. A post-processing pattern dithering shader was also created and included in the source project, but not enabled by default (turned out quite garish).

The ambient background track samples sounds from freesound.org, and a small but very slowed-down snippet from a song by Rei Harakami.

Filtering by tag: Git( Reset Filter )