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 d5151af91e Implement hwumax to rational SQRT 2 days ago
docs partial replace 1 week ago
include/halfworld Implement hwumax to rational SQRT 2 days ago
src Implement hwumax to rational SQRT 2 days ago
.clang-format The Universal Racing Game Protocol 5 months ago
LICENSE Add RSS feed system 4 months ago
README Add uint32_t requirement 3 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:
- 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)
- 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

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.