Half-World Design notes

SPDX identifier: COIL-1.0

Copyright Nomagno 2022


Missing suitable (re)implementations

The hwrpg.h header, for simulating turn-based combat, is awaiting an implementation. It is meant to be an easter egg (SIMPLE)

The hwdoc.h header, for processing the HWDOC format, is awaiting a reimplementation to make its internal data structures child-linked rather than parent-linked (SIMPLE)

The hwt.h and hwnet.h headers, to tokenize Half-World Track and Half-World Network .hwdoc files, respectively, are awaiting an implementation (TEDIOUS).

The halfive.h header, for simulating physics, is awaiting an implementation that uses fixed-timestep semi-explicit Euler integration to remain framerate-independent, as well as a redesign that includes the possibility of custom objects that aren’t just cars, and of well-defined actions that may be mapped to real code or to a HWVM instance. (HARD)

Missing suitable interfaces and implementations

The hwvi.h header needs a big library with auxiliary software rendering functions such as blitting, bitmap text rendering, arbirary shapes, line rendering, quadratic bezier curve rendering, etcetera: hwrender.h (TEDIOUS)

The Half-World Pixel format needs a library utilities for converting to/from at least BMP, JPG and SVG images: hwpix.h (HARD)

A new comprehensive, higher-level implementation for user interface, track rendering, network code handling, balancing, content, etcetera, that exists on top of all other low-level modules, is needed: halfworld_engine.h (HARD)


General design notes about the game

Half-World is meant to be a racing game engine as well as a game that isn’t inherently constrained to any type of gameplay, however not making a flagship physics engine implementation and base game to go with it would be simply disingenous.

A few overarching notes about code architecturing, game design, atmosphere and car handling are clear: