The universal racing game
http://halfive.nomagno.xyz
assets | ||
docs | ||
include/halfive | ||
src | ||
.clang-format | ||
.gitignore | ||
format.sh | ||
LICENSE | ||
README |
HALFIVE, THE UNIVERSAL RACING GAME Halfive is a collection of specifications, libraries and implementations for a portable racing game. Extension ID: _DEFAULT To make extensions/modifications to this project easily trackable, I recommend specifying an 8-character alphanumerical extension ID (underscore hyphen 0-9 A-Z a-z, e.g "_My-Ext2"). 'docs' folder: Documentation 'include' folder: Interfaces 'src' folder: Implementations It has a lot of portable C utility interfaces, such as: - Freestanding standard library (SWP) (include/halfive/h5stdlib.h) - Coroutines (SWP) (include/halfive/h5cr.h) - Custom document format (SWP) (include/halfive/h5doc/h5doc.h) - Racing track format (WIP) (include/halfive/h5doc/h5t.h) - Network packet format (UWP) (include/halfive/h5doc/h5net.h) - Custom virtual machine (SWP) (include/halfive/h5vm/h5vm.h) - Assembler for the VM (SWP) (include/halfive/h5vm/h5asm.h) - Lisp dialect for the VM (WIP) (include/halfive/h5vm/h5elq.h) - Rational numbers (SWP) (include/halfive/h5rat.h) - Other mathematical tools (UWP) (include/halfive/h5math.h) - Graphics/Sound/input glue code (UWP) (include/halfive/h5vi.h) - RPG battle simulator (WIP) (include/halfive/h5rpg.h) - RPG battle simulator prototypes (WIP) (include/halfive/h5rpg_proto.h) WIP: Work in progress, unstable/unfinished UWP: Work in progress, usable SWP: Work in progress, stable List of specifications and corresponding MIME types: Encoding formats: Halfive Document (H5DOC) - text/x-h5doc Halfive Bitmap Format (H5BMP) - application/x-h5bmp [ARCHIVED] Halfive Sound Format (H5SND) - sound/flac Domain-specific data formats: [ARCHIVED] Halfive Network (H5NET) - text/x-h5net Halfive Track (H5T) - text/x-h5t General-purpose tools: Halfive Virtual Machine (H5VM) - text/x-h5asm - application/x-h5bin - application/x-h5drive Halfive Eloquent Lisp (H5Elq) - text/x-h5elq If you read all specifications in the docs, you should be able to: - Use H5T as a basic format for circuits - Use H5BMP as a basic format for sprites - Use H5SND as a basic format for sound effects and music - Use H5NET as a basic format for communication - Use H5VM as a basic runtime for user-generated content Bonus projects in this repo: - Custom Version Control System (SWP) (src/h5vcs/) - Custom web client for controlling the server (UWP) (src/web-control/) - Preprocessor for H5VM assembly (SWP) (src/core/h5vm/pp.sh) - Generate an RSS feed from a directory (SWP) (docs/news/genfeed.sh) - Generate a traffic page from an nginx log file (SWP) (docs/trafficgen.sh) - Viewer for PAM files and tilesets (run 'make pamview' in src/core/, requires SDL2 headers) (SWP) (src/core/h5vi.c, part inside #ifdef H5VI_IMAGE_VIEWER) --- Licensing --- The whole project is released under the MIT license (SPDX: MIT). Please see each folder/file for individual licensing information.