diff --git a/README.md b/README.md index 9dfefd9..27d479c 100644 --- a/README.md +++ b/README.md @@ -14,38 +14,46 @@ For more detail see also the [game manual](media/manual.txt). ## 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. - **custom maps**: players can create their own maps using a simple plaintext format. - **ghosts**: players may race against ghost (collisionless) opponents. -- **great many settings**: basically everything is modifyable. -- Zero price, no ads, no subscriptions, great performance, small size, no DRM and any other "modern" bullshit you will typically see in "modern" games. +- **great many settings**: basically everything is modifiable. +- **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 -- **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 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 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, 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 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**. - 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. -- 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: + - GNU/Linux, possible backends: SDL2, CSFML, X11 + - OpenBSD + - web browser JavaScript (via emscripten) - 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 "modern" bullshit such as OOP, meme design patterns, scripting, sandboxes, "memory safety" and similar nonsense**. -- 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. +- **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-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. ## Manifesto diff --git a/make.sh b/make.sh index edc6592..081a906 100755 --- a/make.sh +++ b/make.sh @@ -9,8 +9,7 @@ clear echo "making Licar" -#OPTIM="-O3" - OPTIM="-O1" # temporary +OPTIM="-O3" C_FLAGS="-std=c99 -Wall -Wextra -pedantic $OPTIM -Wno-unused-parameter -Wno-missing-field-initializers -o licar" COMPILER="g++" PLATFORM="sdl" diff --git a/media/manual.txt b/media/manual.txt index ec586d3..d0b34b2 100644 --- a/media/manual.txt +++ b/media/manual.txt @@ -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 whatsoever), gratis (free of cost) and its focus lies in being well programmed 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, 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 @@ -51,22 +51,22 @@ game and immediately load a map, which is handy when creating new maps. ~~~~~ GAMEPLAY ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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 -track with you. There is an option to race against a replay ghost, but that +time attacks, i.e. you only race against the clock with no physical opponents on +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 -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. 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) 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 -achieved the goal, your replay is automatically saved and your new time becomes -the next target time. +achieved the main goal, your replay is automatically saved and your new time +becomes the next target time. -On the map there can be several different kinds of surfaces with different -physics properties: concrete, grass, dirt and ice. Furthermore there are two -special kind of sufaces: an accelerator (a bright yellow/orange one), which +On the map you can find several different kinds of surfaces with different +physics properties: concrete, grass, dirt and ice. Additionally there are two +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. 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. - 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 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 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 - longer way but more speed at the end, which usually makes up for it). - Sometimes there exist very crazy shortcuts that the map author overlooked, - always look for them. + longer path but more speed at the exit, which usually makes up for the longer + path). Sometimes there exist very crazy shortcuts that the map author + overlooked, always look for them. - 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 speed.