Cogwheel Engine

About the Game Engines

Version 2 of the engine is heavily (if not entirely at the moment) built around the superb rendering capabilities of the Wicked Engine, with UI features supplemented by Dear ImGui and 3D model conversion/ingestion helped by Assimp. Each of these software facets is an amazing achievement by the respective authors and the Open Source communities that also support the development.

Version 1 of the ‘Cogwheel Engine’ is a heavily modified and updated build of the ‘Game Guru’ game maker, the source code for which was kindly provided by Lee Bamber of ‘The Game Creators’ company.

Cogwheel Engine V1 – Updates & Features

Note – the ‘cogwheel engine V1’ (as I’ve come to call it) is for personal use only as it is built upon closed source!
Change Log, updated May 2022

Engine updates to allow dynamic lights (spotlights) have realtime shadows.

Player flashlight can now cast shadows.

Shaders updated to allow underwater caustic simulation.

HDR update with redeveloped bloom shaders.

Day/Night demo mode added.

HBAO and ray traced HBAO added to post processing.

Assimp added to allow more and consistent import of 3D model formats.

Major update to convert 16 to 32 bit indices – allows high poly model import.

Allow in-game (user added) cameras to be placed and used in world.

Added video textures – can play in game videos diegetic-ally (not full screen).

No longer dependent on terrain – terrain can be completely removed or added to scene when/if necessary.

Terrain ‘normals’ re-developed (along with tri-planar shaders).

Added procedural clouds to Simulated Sky.

Simulated Sky – uses shaders only (no sky textures) to create appropriate azimuth to zenith sky colour with Mie, Rayleigh …

Allow games to run within windows (rather than always full screen).

Allow user driven game screen resolution changes.

Individual in game asset highlight/glow to show items of interest and collectables to player (lua, HLSL and engine update).

Book and note inspection (lua).

Allow lua controlled spawn of entity items (static or dynamic) as and when needed (lua and engine).

Major bug fixed affecting normal and other texture maps that were not being applied to multi texture models properly.

World navigation and player map management (lua).

Enhanced compass (player or vehicle heading as required) and direction hint system (lua).

Hub/persistent level interactions with other quest levels (tracked back and forth movement) (lua).

Player XP, Stamina & Underwater Breathing, ‘magic’ quotient for special activities.

Surface swimming using player capsule physics – third person animations to complement (lua).

Underwater swimming, diving and surfacing control (lua and engine).

Permanent switch between first/third person (player choice) (lua and engine – for player voice updates).

Auto switch to first person from third when required (if playing in third person) (lua).

First & Third Person Male/Female character switch at any time (lua).

Facilitate onboarding of vehicles or climbing/traversing vertical objects of interest (lua) .

Sky hook transport to static and moving assets (lua).

First person discoverable HUD entity numbers – to allow allocation and placement of custom particles to hands / weapons via lua (engine & lua).

Allow airship flight control with player allowed to move around airship whilst in flight (lua).

Biplane, static player view but with full flight control, take-off, landing, aerobatics (lua).

Clouds layer needed to be fixed in world height and changed to allow air vehicles to ‘punch’ through without intersecting player or vehicle – to allow flight below, through and above cloud layer (lua and HLSL).

Submarine control required to explore ‘Octolantis’, needed to complement underwater swimming capability (lua).

Water layer also needed to be changed to allow submarine to submerge without water plane intersecting player view (lua and HLSL).

Water layer needed foam disturbance for sub, boat or air vehicles when landing or traversing close to water level (lua and HLSL).

Mount, dismount and ride horse across terrain (lua).

Added NPC tags to allow name plates (lua, HLSL and engine).

Rewrote AI for dialogue and non soldier style interaction (lua).

Added commands to allow particles to be easily attached to NPCs ( a lot of smoke and steam needed on mechs and fire on dragons 🙂 ) (lua and engine).

Day/Night Cycle – included blending of sky boxes and alternative sky boxes over a weekly cycle. Also dynamic shadows based on time of game day. (lua and engine).

Dynamic procedural cloud system.

Increased terrain size (landed on 4 times stock area as being OK) (lua, HLSL, engine).

In game loading of alternative terrains (to facilitate quests requiring travel to new terrain islands) (lua, HLSL engine).

Terrain movement to new 3D world location (hooked to quest system) (lua and engine).

Underground terrain required to facilitate efficiency – use below terrain space for game play as well as above (engine and HLSL).

Terrain holes to allow better world creation of caves and access to underground environments.

Realistic terrains required height map import (also needed to increase development speed). (engine)

Flying islands and seamless rock entity shading addition to terrain required assets to be able to use terrain shader (HLSL and engine).

Grass looked pretty bad, so added multi-grass (just 3 types but revamped blend into terrain).

Added IBL so that dynamic sky switching and day/night cycle affected lighting, indoor and outdoor (engine, HLSL)..

Added ‘indoor zone’ to regenerate cube maps for reflection & diffuse captures for indoor IBL (engine, HLSL, lua).

Added AO to terrain rendering (HLSL).

Added moving exponential height based fog as critical to environment requirements and game concept (lua and HLSL).

Added LUT to post process pipeline (engine and HLSL).

Changed light-mapper so that only chosen items would be light-mapped (rather than all) – this allowed light-mapped interiors to work with non light-mapped exterior terrain and reduced texture and memory consumption.

Added ‘packed gloss’ texture (like GG Max _surface texture) to reduce video memory card load and transition state changes – allowed more entities in world with better FPS.

A lot of bug fixes, many many 🙂

Even more bug fixes …