This commit is contained in:
Miloslav Ciz 2025-07-06 09:01:22 +02:00
parent d60f3c941f
commit 475f355b36
12 changed files with 1984 additions and 1963 deletions

View file

@ -1,10 +1,10 @@
# Licar
Licar (short for *[libre](libre.md) car*), also known as *the best racing game ever made*, is a fully [public domain](public_domain.md), [free software](free_software.md) and [free culture](free_culture.md) 3D racing [game](game.md) by [drummyfish](drummyfish.md), inspired mostly by the proprietary game [Trackmania](trackmania.md). Licar was made in similar fashion to [Anarch](anarch.md) (another major game by the same guy) but is a little more [bloated](bloat.md): it is a fully [3D game](3d_rendering.md) made with [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md) and although it's not the most [minimalist](minimalism.md) piece of [software](sw.md) under the sun, it is still very much [KISS](kiss.md), extremely [portable](portability.md), not using any third party [libraries](library.md) etc. The [git](git.md) repo is currently at http://git.coom.tech/drummyfish/Licar; version 1.0 of the game was released on 25.06.2025 after 329 commits and didn't immediately receive as much Internet attention as Anarch because it wasn't "[promoted](marketing.md)" as much (the author no longer desires much attention for the creation). The [development](buzzword.md) of Licar was conducted purely with free software ([GIMP](gimp.md), [Blender](blender.md), [GNU](gnu.md)/[Linux](linux.md), [vim](vim.md), ...) and relatively old computers (mainly Thinkpad X200).
Licar (short for *[libre](libre.md) car*), also known as *the best racing game ever made*, is a fully [public domain](public_domain.md), [free software](free_software.md) and [free culture](free_culture.md) 3D racing [game](game.md) by [drummyfish](drummyfish.md), inspired mostly by the proprietary game [Trackmania](trackmania.md). Licar was made in similar fashion to [Anarch](anarch.md) (another major game by the same guy) but is a little more [bloated](bloat.md): it is a fully [3D game](3d_rendering.md) made with [small3dlib](small3dlib.md) and [tinyphysicsengine](tinyphysicsengine.md) and although it's not the most [minimalist](minimalism.md) piece of [software](sw.md) under the sun, it is still very much [KISS](kiss.md), extremely [portable](portability.md), not using any third party [libraries](library.md) etc. The [git](git.md) repo is currently at http://git.coom.tech/drummyfish/Licar; version 1.0 of the game was released on 25.06.2025 after 329 commits and didn't immediately receive as much Internet attention as Anarch because it wasn't "[promoted](marketing.md)" as much (the author no longer desires much attention for the creation, he feels he already has enough eyes on him). The [development](buzzword.md) of Licar was conducted purely with free software ([GIMP](gimp.md), [Blender](blender.md), [GNU](gnu.md)/[Linux](linux.md), [vim](vim.md), ...) and relatively old [computers](computer.md) (mainly Thinkpad X200).
The game's features include a fully 3D, completely [deterministic](determinism.md) physics, lovely soulful [software rendering](sw_rendering.md), replays, ghost cars and custom maps (written in a plain [ASCII](ascii.md) text format). In the base package there are 5 standard, 5 tiny and 2 bonus maps. There are now also mods, such as one for making [tool assisted runs](tas.md).
The game's features include a fully 3D, completely [deterministic](determinism.md) physics, lovely soulful [software rendering](sw_rendering.md), replays, ghost cars and custom maps (written in a plain [ASCII](ascii.md) text format). The base package comes with 5 standard, 5 tiny and 2 bonus maps. There are now also mods, such as one for making [tool assisted runs](tas.md). Like Trackmania, the game is built purely around the concept of a time attack run, there are no opponents on the track (except for a potential collisionless ghost), no car damage or upgrades, just pure driving skill and ticking clock.
Drummyfish made Licar to fulfill one of his long held dreams of creating a Trackmania [clone](clone.md), for he used to love the game but had to abandon it once he started abstaining from [proprietary](proprietary.md) software. The [project](project.md) also offered an opportunity to showcase drummyfish's major libraries and to demonstrate some of the [LRS](lrs.md) principles on a bigger project -- although the game isn't truly an LRS ideal, it still shows how powerful minimalism can be, even when applied to a relatively mainstream vision of what a video game is. By this it can potentially and hopefully reach more [normies](npc.md).
Licar is the fulfillment of drummyfish's long held dream of one day making a Trackmania [clone](clone.md), for he used to love the game but had to abandon it due to abstinence from [proprietary](proprietary.md) software. The [project](project.md) also offered an opportunity to showcase drummyfish's major libraries and to demonstrate some of the [LRS](lrs.md) principles on a bigger project -- although the game isn't truly an LRS ideal, it still shows how powerful minimalism can be, even when applied to a relatively mainstream vision of what a video game is. By this it can potentially and hopefully reach more [normies](npc.md).
Just like Anarch, Licar adheres to basic LRS [programming](programming.md) practices, for example it is fully written in [C99](c.md), is completely public domain under [CC0](CC0.md), uses no build system, no third party libraries, doesn't rely on standard library, doesn't use [floating point](float.md) and embeds its configuration and assets right in the source code (except for optional [music](music.md) and external data file). The whole game was made completely from scratch, including all assets, the text font, recording own musical samples for custom sound font for the soundtrack etc. The whole code has around 25 thousand [lines of code](loc.md). Needless to say the game is very portable end efficient as a result: the compiled binary (including embedded assets) usually weights around 300 kB, the program runs with less than 500 kB [RAM](ram.md) on [CPUs](cpu.md) clocking even around 100 MHz. It was even run on [Pokitto](pokitto.md), albeit in an extremely limited way.
@ -22,6 +22,10 @@ No [floating point](float.md) is ever used in the source code, everything (inclu
And finally for some more uncategorized details. Maps are written in a plain text mini-language that specifies where to place individual map blocks, what material and transformation they shall have etc. The process of loading a map includes reading the text format and transforming it into the internal binary representation wherein blocks are [sorted](sorting.md) so as to make block lookups fast via binary search (this is crucial for resolving collisions as we need to quickly check the car's nearest blocks). Replays are similarly stored in a plain text format -- each replay record takes up 16 bits and stores a change in input along with ticks since the last record (if the bits don't suffice to encode the ticks, a redundant no-change record is simply inserted). All these text data (i.e. mainly maps and replays) are stored in a virtual *data file* -- behind the scenes this files consists of the *internal data file* (one containing the basic maps, compiled right in the binary) and an optional *external data file*, which on platforms with filesystems is a normal file that can be edited to add more maps etc. Almost everything in the game is optional and can be turned off so that it's possible to play it on any kind of potato -- there can be no sound, texturing, no file system, no color display etc.
## Trivia
TODO
## Postmortem
TODO: some reflections n shit here, when the time comes
@ -29,5 +33,6 @@ TODO: some reflections n shit here, when the time comes
## See Also
- [Anarch](anarch.md)
- [racetrack](racetrack.md)
- [LRS](lrs.md)
- [Trackmania](trackmania.md)