Update README
This commit is contained in:
parent
c317f84582
commit
3342a30e1e
3 changed files with 37 additions and 29 deletions
34
README.md
34
README.md
|
@ -14,38 +14,46 @@ For more detail see also the [game manual](media/manual.txt).
|
||||||
|
|
||||||
## What Is This
|
## What Is This
|
||||||
|
|
||||||
This is a libre 3D racing game very much inspired by the proprietary game Trackmania. It is written in a selfless way (it won't try to exploit you in any way, not even indirectly) following a philosophy of high minimalism, excluding any poison and bullshit of so called "modern technology". It was completely made by a single man who is extremely different from all other humans.
|
This is a libre (free as in freedom) 3D racing game very much inspired by the proprietary game Trackmania (but different enough to be legally safe). It is written in a selfless way (it won't try to exploit you in any way, not even indirectly) following a philosophy of high minimalism, excluding any poison and bullshit of so called "modern technology" and self interest. It was made completely from scratch by a single man who is too different (for better or worse) from all other humans.
|
||||||
|
|
||||||
The objective is to finish given track as fast as possible. Unlike in typical racing games there is no live multiplayer: one doesn't race against other players directly, players instead compete by individually trying to finish given track faster, utilizing skill, tricks, shortcuts and potentially -- if they agree on it -- even computer assistance. Players don't even have to compete and may rather collaborate on finding faster solutions, analyzing tracks, looking for faster ways etc. This is therefore a kind of speedrunning game.
|
The game's objective is to finish given track as fast as possible. Unlike in typical racing games there is no live multiplayer: one doesn't race against other players directly, players instead compete in a speedrunning fashion, by individually trying to finish the same track faster, utilizing skill, tricks, shortcuts and potentially -- if they agree on it -- even computer assistance. Players don't even have to compete and may rather collaborate on finding faster solutions, analyzing tracks, looking for faster ways etc.
|
||||||
|
|
||||||
Some of the **gameplay features** include:
|
Licar isn't just a game meant for entertainment, it's also a kind of manifesto, expression of worldview, an engineering art, a tool (for education, research, ...) and possibly much more. It is NOT, on the other hand, a product, brand or franchise.
|
||||||
|
|
||||||
|
Considering just the player's perspective, some highlightable **features** of the game include:
|
||||||
|
|
||||||
- **replays**: small files that record individual runs merely as a sequence of inputs -- this is good for sharing runs, proving records, creating TAS runs etc.
|
- **replays**: small files that record individual runs merely as a sequence of inputs -- this is good for sharing runs, proving records, creating TAS runs etc.
|
||||||
- **custom maps**: players can create their own maps using a simple plaintext format.
|
- **custom maps**: players can create their own maps using a simple plaintext format.
|
||||||
- **ghosts**: players may race against ghost (collisionless) opponents.
|
- **ghosts**: players may race against ghost (collisionless) opponents.
|
||||||
- **great many settings**: basically everything is modifyable.
|
- **great many settings**: basically everything is modifiable.
|
||||||
- Zero price, no ads, no subscriptions, great performance, small size, no DRM and any other "modern" bullshit you will typically see in "modern" games.
|
- **zero price, no ads, no subscriptions, amazing performance, low hardware demands, small size, no DRM** (and similar bullshit nowadays expected in every "modern" game).
|
||||||
|
- **REAL "retro" style**: not just mimicking the look and feel of an old game, but actually BEING what old games were.
|
||||||
|
- **absolute moddability**: absolutely EVERY single aspect of the game can be modified, there exist no "protections" or restriction, legal or technical.
|
||||||
|
|
||||||
Please note the game is realtively simple and **the physics IS shitty at times**, there are no plans to make it flawless, but indeed if you'd like to integrate a more perfect physics engine in your custom fork, you're highly encouraged to :)
|
Please note however the game is still relatively simple and so **the physics IS shitty at times**, just as it used to be in old games, there are no plans to make the physics flawless or more accurate, consider it a feature. If you'd like to integrate a more perfect physics engine in your custom fork, you're welcome to :)
|
||||||
|
|
||||||
**Cheating in this game is allowed.** Just drive and have fun, try to find the best solution to each map in any way you deem entertaining.
|
**Cheating in this game is allowed.** We don't give a shit about drama, serious competition and totalitarian crap, just relax, drive and have fun, search for the best solution to each map by any means you deem entertaining.
|
||||||
|
|
||||||
## Why This Game Is Special
|
## Why This Game Is Special
|
||||||
|
|
||||||
- **Everything is written in KISS/suckless C99 from scratch**. The whole project, including the physics engine, rendering engine, game logic and assets embedded in source code have TODO lines of code in total.
|
- **Everything is written in KISS/suckless C99 from scratch**. The whole project, INCLUDING the 3D physics engine, 3D rendering engine, game logic AND assets embedded in source code easily fit under **under 25 KLOC** in total, even when counting ALL lines of codes and mutually exclusive parts of code (different frontends).
|
||||||
- **Everything is created 100% from scratch** by the author, including code (of the game, physics engine, 3D rendering engine, frontends), textures (created from own photos), 3D models, map, sound effects, music (created using custom sound font made from own recorded samples), font, accompanying materials etcetc. This ensures absolute freedom, there is no shadow of a doubt there is indeed is no 3rd party copyright. Everything was also **created exclusively with free software**.
|
- **Everything is created 100% from scratch** by the author, including code (of the game, physics engine, rendering engine, frontends), textures (created from own photos), 3D models, map, sound effects, music (created using custom sound font made from own recorded samples), font, accompanying materials etcetc. This ensures absolute freedom, there is no shadow of a doubt there is indeed is no 3rd party copyright. Everything was also **created exclusively with free software**.
|
||||||
- It has **custom KISS 3D physics engine** (tinyphysicsengine) written from scratch, implemented in a single header file, using **no GPU or floating point**.
|
- It has **custom KISS 3D physics engine** (tinyphysicsengine) written from scratch, implemented in a single header file, using **no GPU or floating point**.
|
||||||
- It has **custom KISS 3D software rendering engine** (small3dlib) written from scratch, implemented in a single header file, using **no GPU or floating point**.
|
- It has **custom KISS 3D software rendering engine** (small3dlib) written from scratch, implemented in a single header file, using **no GPU or floating point**.
|
||||||
- The whole game **doesn't use floating point at all**, everything is done with **32bit fixed point only**.
|
- The whole game **doesn't use floating point at all**, everything is done with **32bit fixed point only**.
|
||||||
- It **doesn't have any dependency libraries, not even the C standard library** (except for using types from *stdint.h*, which can be trivially replaced with a few *defines*), everything is written from scratch for **maximum portability**. Libraries such as SDL are used for frontends, but they are never an inherent dependency and can be basically drop-in replaced with a similar library that's only required to be able to draw pixels and read keyboard. Almost everything can be turned off, the game can even **run without a file system** as the essential assets are embedded right in the source code -- files are only needed for optional extended functionality like saving replays, adding extra maps etc. Settings are part of the source code too, there are **no config files**.
|
- It **doesn't have any dependency libraries, not even the C standard library** (except for using types from *stdint.h*, which can be trivially replaced with a few *defines*), everything is written from scratch for **maximum portability**. Libraries such as SDL are used for frontends, but they are never an inherent dependency and can be basically drop-in replaced with a similar library that's only required to be able to draw pixels and read keyboard. Almost everything can be turned off, the game can even **run without a file system** as the essential assets are embedded right in the source code -- files are only needed for optional extended functionality like saving replays, adding extra maps etc. Settings are part of the source code too, there are **no config files**.
|
||||||
- **No build system** is used, everything is in a **single compilation unit**, to build the game only a single compiler invocation is needed. This removes another bloat and dependency.
|
- **No build system** is used, everything is in a **single compilation unit**, to build the game only a single compiler invocation is needed. This removes another bloat and dependency.
|
||||||
- The compiled game INCLUDING ASSETS is **extremely small**: TODO.
|
- The compiled game INCLUDING ASSETS is **extremely small** -- depending on platform, game and compilation settings, a playable executable can take only around 128 kB; in normal scenarios it will most likely fit under 400 kB.
|
||||||
- It is **exceptionally portable and future proof** thanks to having no dependencies besides C99 compiler. So far it was ported to:
|
- It is **exceptionally portable and future proof** thanks to having no dependencies besides C99 compiler. So far it was ported to:
|
||||||
|
- GNU/Linux, possible backends: SDL2, CSFML, X11
|
||||||
|
- OpenBSD
|
||||||
|
- web browser JavaScript (via emscripten)
|
||||||
- TODO
|
- TODO
|
||||||
- It is **super moddable and hackable**, the code is relatively simple and well commented, written to encourage hacking. There are no obstacles such as DRM, anti-cheating, obfuscation etc. Cheating and hacking is allowed, do literally what you want.
|
- It also goes without saying the physics is **100% deterministic**, it behaves the same on every platform, independantly of rendering FPS. Besides others this allows for recording and playing back very small replays and creating press forward maps.
|
||||||
|
- It is **super moddable and hackable**, the code is relatively simple and **well commented**, written to encourage hacking. There are no obstacles such as DRM, anti-cheating, obfuscation etc. Cheating and hacking is allowed, do literally what you want.
|
||||||
- **No codes of censorship, flags, furry mascots or similar political bullshit**. This is just a game.
|
- **No codes of censorship, flags, furry mascots or similar political bullshit**. This is just a game.
|
||||||
- **No "modern" bullshit such as OOP, meme design patterns, scripting, sandboxes, "memory safety" and similar nonsense**.
|
- **No "modern" bullshit such as OOP, meme design patterns, scripting, sandboxes, "memory safety" and similar shit**.
|
||||||
- It is **absolutely and completely public domain free software with ZERO conditions on use** under CC0, it is legally more free that most "FOSS" software, there is no copyleft or credit requirement, you can do ABSOLUTELY anything you want with the project. This is a **selfless project aiming for no benefit of the creator** (include any non-finacial benefit as well), this is made purely to bring more good to the world without gaining any advantage for self.
|
- It is **absolutely and completely public domain free software with ZERO conditions on use** under CC0, it is legally more free that most "FOSS" software, there is no copyleft or credit requirement, you can do ABSOLUTELY anything you want with the project. This is a **selfless project aiming for no benefit of the creator** (include any non-financial benefit as well), this is made purely to bring more good to the world without gaining any advantage for self.
|
||||||
- This game has **PURE SOUL** and REAL oldschool graphics in the "PS1" style. No Unity or Unreal, no "retro" imitation shaders, no assets from a store. This isn't a wannabe retro 90s pretender, this IS a real 90s game.
|
- This game has **PURE SOUL** and REAL oldschool graphics in the "PS1" style. No Unity or Unreal, no "retro" imitation shaders, no assets from a store. This isn't a wannabe retro 90s pretender, this IS a real 90s game.
|
||||||
|
|
||||||
## Manifesto
|
## Manifesto
|
||||||
|
|
3
make.sh
3
make.sh
|
@ -9,8 +9,7 @@ clear
|
||||||
|
|
||||||
echo "making Licar"
|
echo "making Licar"
|
||||||
|
|
||||||
#OPTIM="-O3"
|
OPTIM="-O3"
|
||||||
OPTIM="-O1" # temporary
|
|
||||||
C_FLAGS="-std=c99 -Wall -Wextra -pedantic $OPTIM -Wno-unused-parameter -Wno-missing-field-initializers -o licar"
|
C_FLAGS="-std=c99 -Wall -Wextra -pedantic $OPTIM -Wno-unused-parameter -Wno-missing-field-initializers -o licar"
|
||||||
COMPILER="g++"
|
COMPILER="g++"
|
||||||
PLATFORM="sdl"
|
PLATFORM="sdl"
|
||||||
|
|
|
@ -13,7 +13,7 @@ video games (even indie ones), Licar is completely libre, i.e. free as in
|
||||||
freedom (meaning its source code and art assets are available for any use
|
freedom (meaning its source code and art assets are available for any use
|
||||||
whatsoever), gratis (free of cost) and its focus lies in being well programmed
|
whatsoever), gratis (free of cost) and its focus lies in being well programmed
|
||||||
by adhering to minimalism and rejecting harmful "modern" programming practices.
|
by adhering to minimalism and rejecting harmful "modern" programming practices.
|
||||||
The game aims to seflessly bring joy and entertainment to all the people that
|
The game aims to selflessly bring joy and entertainment to all the people that
|
||||||
might enjoy it, even those who aren't able or willing to pay and/or watch ads,
|
might enjoy it, even those who aren't able or willing to pay and/or watch ads,
|
||||||
those owning very old and weak computers and so on. It was made in whole by a
|
those owning very old and weak computers and so on. It was made in whole by a
|
||||||
single man as a completely non-commercial program, the development was driven
|
single man as a completely non-commercial program, the development was driven
|
||||||
|
@ -51,22 +51,22 @@ game and immediately load a map, which is handy when creating new maps.
|
||||||
~~~~~ GAMEPLAY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~ GAMEPLAY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
In Licar, unlike in most other racing games, the player always only attempts
|
In Licar, unlike in most other racing games, the player always only attempts
|
||||||
time attacks, i.e. you only race against time with no physical opponents on the
|
time attacks, i.e. you only race against the clock with no physical opponents on
|
||||||
track with you. There is an option to race against a replay ghost, but that
|
the track with you. There is an option to race against a replay ghost, but that
|
||||||
still cannot collide with your car, so the point remains that your final time
|
still cannot collide with your car, so the point remains that your final time
|
||||||
depends purely on how well you drive, opponents cannot spoil your results by
|
depends solely on how well you drive, opponents cannot spoil your results by
|
||||||
crashing with you or blocking your path.
|
crashing with you or blocking your path.
|
||||||
|
|
||||||
The objective of every map is to drive from start to finish (red octahedron) as
|
The objective of every map is to drive from start to finish (red octahedron) as
|
||||||
fast as possible while collecting all the checkpoints (CP, green octahedron)
|
fast as possible while collecting all the checkpoints (CP, green octahedron)
|
||||||
along the way (in any order). There is always a target time which you're trying
|
along the way (in any order). There is always a target time which you're trying
|
||||||
to beat in the bottom left of the screen. If you beat the time, you have
|
to beat in the bottom left of the screen. If you beat the time, you have
|
||||||
achieved the goal, your replay is automatically saved and your new time becomes
|
achieved the main goal, your replay is automatically saved and your new time
|
||||||
the next target time.
|
becomes the next target time.
|
||||||
|
|
||||||
On the map there can be several different kinds of surfaces with different
|
On the map you can find several different kinds of surfaces with different
|
||||||
physics properties: concrete, grass, dirt and ice. Furthermore there are two
|
physics properties: concrete, grass, dirt and ice. Additionally there are two
|
||||||
special kind of sufaces: an accelerator (a bright yellow/orange one), which
|
special kind of surfaces: an accelerator (a bright yellow/orange one), which
|
||||||
boosts the car's speed, and a fan, which propels the car upwards.
|
boosts the car's speed, and a fan, which propels the car upwards.
|
||||||
|
|
||||||
Your run can be restarted at any time. Typically you will need hundreds of
|
Your run can be restarted at any time. Typically you will need hundreds of
|
||||||
|
@ -89,16 +89,17 @@ Here are some tips:
|
||||||
|
|
||||||
- It's possible to stop the car from rotating mid-air by pressing brake.
|
- It's possible to stop the car from rotating mid-air by pressing brake.
|
||||||
- Similarly, holding down brake in air will slow down the car's horizontal
|
- Similarly, holding down brake in air will slow down the car's horizontal
|
||||||
velocity.
|
velocity in flight. This can help aim for a good landing.
|
||||||
- Tapping brake while steering triggers drifting (if this doesn't work, you may
|
- Tapping brake while steering triggers drifting (if this doesn't work, you may
|
||||||
be experiencing keyboard ghosting: the inability of some keyboards to detect
|
be experiencing keyboard ghosting: the inability of some keyboards to detect
|
||||||
certain simultaneous key presses).
|
certain simultaneous key presses; using different keys or a different
|
||||||
|
keyboard may help).
|
||||||
- Look for unconventional shortcuts and tricks, think outside the box, the
|
- Look for unconventional shortcuts and tricks, think outside the box, the
|
||||||
intended or obvious way is very often not the fastest one. The shortest way
|
intended or obvious way is very often not the fastest one. The shortest way
|
||||||
may also not be the fastest (taking a wider curve, for example, may result in
|
may also not be the fastest (taking a wider curve, for example, may result in
|
||||||
longer way but more speed at the end, which usually makes up for it).
|
longer path but more speed at the exit, which usually makes up for the longer
|
||||||
Sometimes there exist very crazy shortcuts that the map author overlooked,
|
path). Sometimes there exist very crazy shortcuts that the map author
|
||||||
always look for them.
|
overlooked, always look for them.
|
||||||
- Minimizing air time helps, don't jump if you don't have to, maintaining
|
- Minimizing air time helps, don't jump if you don't have to, maintaining
|
||||||
contact with ground allows for acceleration whereas in air you're losing
|
contact with ground allows for acceleration whereas in air you're losing
|
||||||
speed.
|
speed.
|
||||||
|
|
Loading…
Reference in a new issue