The universal racing game
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nomagno df35b62e98 Make operation procedures return carry flag as cdr 12 hours ago
docs Make operation procedures return carry flag as cdr 12 hours ago
include/halfworld Generalize bins, rename it to define 2 weeks ago
src Tweak stack frame size 13 hours ago
.clang-format The Universal Racing Game Protocol 6 months ago
LICENSE Add RSS feed system 5 months ago
README Add Half-World Eloquent Lisp parser 2 weeks ago



Half-World is a stateless protocol for racing games, and with a bit more work any 2D game that needs to be accessible, lightweight, and work under heavy/total packet loss.

It has no implementation requirements whatsoever.

There is a modular no-dependency implementation of a racing game that adheres to Half-World.
'include' folder: Interfaces
'src' folder: Implementations
It has a lot of C utility interfaces, such as:
- Portable freestanding implementation of the C standard library (include/halfworld/hwstdlib.h)
- Portable coroutine-esque utilities (include/halfworld/hwcr.h)
- HWDOC (Packet/Circuit) generic tokenizer (include/halfworld/hwdoc/hwdoc.h)
- Packet/Circuit data structures and tokenizer (WIP) (include/halfworld/hwdoc/hwnet.h) (include/halfworld/hwdoc/hwt.h)
- Portable VM with custom instruciton set, and assembly language (include/halfworld/hwvm/hwvm.h) (include/halfworld/hwvm/hwasm.h)
- Portable abstraction over graphics, sound, and input backends (include/halfworld/hwvi.h)
- Portable utilities for working with rational numbers (include/halfworld/rat.h)
- Portable utilities for handling mathematical operations (include/halfworld/hwmath.h)
- Portable RPG battle simulator and prototypes (WIP) (include/halfworld/hwrpg.h) (include/halfworld/hwrpg_proto.h)
- Portable declarative physics engine (WIP) (include/halfworld/halfive.h)

List of specifications and corresponding mime types:
Encoding formats:
Half-World Document (HWDOC)
- text/hwdoc

Domain-specific data formats:
Half-World Network (HWNET)
- text/hwnet
Half-World Track (HWT)
- text/hwt

General-purpose tools:
Half-World Virtual Machine (HWVM)
- text/hwasm
- application/hwbin
- application/hwdrive
Half-World Eloquent Lisp (HWElq)
- text/hwelq
Half-World Pixel Format (HWPIX)
- application/hwpix

If you read all specifications in the docs, you should be able to:
- Use HWNET as a basic communications standard
- Use HWT as a basic format for circuits
- Use HWVM as a basic runtime for user-generated content

To make them extensions easily trackable, I recommend specifying inside them an 8-character alphanumerical name (underscore hyphen 0-9 A-Z a-z, e.g "_My-Ext2").

--- Licensing ---
The whole project is released under the COIL license, as well as all *original* assets/code. Please see each file for individual licensing information, however.