Add bonus map

This commit is contained in:
Miloslav Ciz 2025-04-03 16:13:09 +02:00
parent d84c23b9b7
commit cf6a38c96b
3 changed files with 67 additions and 131 deletions

View file

@ -1,24 +1,22 @@
# HIGH WORK IN PROGRESS, NOT USABLE YET
But looks nice already, feel free to experiment and have fun.
But looks nice already, feel free to experiment and have fun, potentially even send me a feedback.
The following is a draft of readme that will eventually be published, it may contain information that is not yet true but is expected to become true once the project is finished.
# Licar
*free and selfless KISS racing game*
![](assets/logo.png)
WIP racing game
**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.
For more detail see also the games [manual](media/manual.txt).
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.
The goal in this game is to finish a 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 -- 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 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.
Some of the **gameplay features** include:
@ -28,24 +26,32 @@ Some of the **gameplay features** include:
- **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.
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 :)
**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.
## 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**.
- 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 fixed 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.
- It is **extremely 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:
- TODO
- It is **extremely 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 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 and similar nonsense**.
- **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.
- This game has **PURE SOUL**. No Unity or Unreal, no "retro" imitation shaders, no assets from a store. This isn't an immitation of a 90s game, this IS a 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
By now I can't possibly summarize my views and life philosophy satisfyingly in a few paragraphs. If you're interested, kindly follow the rabbithole leading to my [website](http://www.tastyfish.cz) etc.
At this point I can't possibly summarize my views and life philosophy satisfyingly in a few paragraphs. If you're interested, kindly follow the rabbithole leading to my [website](http://www.tastyfish.cz) etc. If you're easily triggered and offended, rather avoid it.
## Legal "Rights"
TODO

View file

@ -6,7 +6,6 @@
inbetween world space and model space.
- Consider better input handling in SDL? Currently it just detects presses on
the exact frame, so a press can be missed. But how tho?
- Try to mess with car weight?
- FPS logging for optim
- try to add distance fog?
- use 332 in SDL with potato?
@ -77,6 +76,7 @@
=========== HANDLED ==============
- MAP4: one triangle in top section is missing!
- Try to mess with car weight? (has no effect without any joint-joint coll.)
- add ifdefs that change car color?
- Try progressively slower steering?
- compile time option to choose how many maps to include (for platforms with

164
data
View file

@ -1,125 +1,55 @@
#Maaaaa;4321 0
:*217I
#MLCbonus1;4321 0
overall structure
ovaerall structure
:=h0h :fl1v :fm51
:=000 :f53a
:x111 :f424
:x116 :f323
biggest building
:=m1o :fb78 :xn1p :f976 :=n1u :f371
:=m0p1 :fb16
:=o0p2 :f512 :f216
:Vs1u :f311
:xo1u :f222 :xr1o :f271
:Aq1u :f171 :\q1pJ| :f171 :\t1pL :f171
:)115L :)315J :)125L- :)325J- :x215 :f121 start door
:-031 :fa19 :<031 :fa11 :<039I :fa11 :<621I- :f411 start roof
:A&0hI| :f171 :v&7h| :^Z7hI :f211 :^@6hJ- :xZ1h :m371 big gate
:=p1A :f367 :=p5A2 :f317 small building 1
:=u1A :f367 :=u5A2 :f317 small building 2
:=500 :fz16 :f51k
:=D01 :fp16
:_X07 :-X02 :f41m
:=X0u :f51q
:=00y :f51p
:=30W :fT14
:=U0T :f414
:=W0S :f414 :=W0X :=T0V
:=h1H :fk24
:^a05- :ft11
sloped roads
:<h1D :f411 :'h1E :f411 :=h1F :f412 :<h2F :f411 :'h2G :f411
:<x1D :f411 :'x1E :f411 :=x1F :f412 :<x2F :f411 :'x2G :f411
:<X1n :f411 :<Y1uI :f311 :=X0n :f411 :'X0m :f411 jump ramps
bottom section
:=a05 :fu21 :^a25I :fu11 :'v03J :f112 :'s15L :'t15J
:,q242- :;q233 :-n03 :f812 :-q041 :f311 :-n031 :f211 :mh53
:;41ZJ :fR21 long wall top
:;91WL :fJ21 long wall top bottom
:xr1V :fa37
:n31W :f121 :=31X :f123 :=01W :f321 corner top left
diagonal corner top left
:=30U :f413 :=70V :=50T
:A50S :f131 :A60T :f131
:A70U :f131 :A80V :f131
:A41SI :f121 :A51TI :f121
:A61UI :f121 :A71VI :f121
:\81WJ| :f121
top section
:\w1ZL :f131 :\x1YI| :f131L
:nw4Y1L :f121
:;w1&J :f421 :f151
:=w3Z2 :^w3@2I- :^w4@2 :=w4&2
:=w0Y :f514
:AA0&L :f131 :AB0@L :f131 :AA1@J :f121 :\B1ZJ :f121
:=w0Y :f141 :m664
small house top
:-J3Y :f411 :<J3ZI :f411 :,K1Z2J :f211 :^J0ZI :f311
:=M1Z2 :f121 :=J0Y1 :m443 :=I0X2 :=J0Y3
:x514 :f426
:=D06 :fk21 :nD06I :f121 :=D01 :fp21 :nD11I walls bottom
:=W06 :f12b :=&01 :f12g
top right corners
:AV0ZL :f131 :AW0YL :f131 :AX0XL :f131
:AY0WL :f131 :AZ0VL :f131 :A@0UL :f131
:A&0TL :f131 :AV1YJ :f121 :AW1XJ :f121
:AX1WJ :f121 :AY1VJ :f121 :AZ1UJ :f121
:A@1TJ :f121 :AS0VJ :f131 :AT0UJ :f131
:AU0TJ :f131 :AV0SJ :f131 :AW0RJ :f131
:AT1VL :f121 :AU1UL :f121 :AV1TL :f121
:AW1SL :f121 :AX1RL :f121
:=U1Z :f121 :\S1WL :f121
:=X0C2 :f13f :f21f :=&0C2 :f13h :=@0C2 :f11f right walls
left section
:=01P :f127 :=41P :f123 :\01O|L :f121 :\41OJ :f121
:\22L|I :m111 :\42G|I :m111 :\22C|I :m111
:~11G2
:=50y :f212 :A00yJ :A50AL :A60zL :A70yL
bowl
:'60rJ :f117 :^70rL- :f117 :^71rJ :f117 :|72rJ- :f117
:|82rL :f117 :|81rL- :f117 :'50rL :f117 :m437
walls
:=h0o :f188
:=g0x :f187 :f16f
:=g0L :fb61
:=u0L :f471 :f172 :f751
:=x0M :f171
:=E0v :f156
:=B0v :f471 :=B0v1 :f315
:=B0o :f178
:AE0AL :f171 :AE0v :f171
:=C0h :f157
:=B0A :f371 :f176 :f15c
:AC0oL :f171
:=l0h :f471 :Al0g :f171 :Ao0g| :f171
:=t0h :f471 :At0g :f171 :Aw0g| :f171
:;r0L2L :f341
:Ag0wJ :f181 :Ah1wL :f171
:Aq0MI :f161
:Au0NL :f171 :Ax0NI :f171
:;h1i :f146
:;p1hL :f441
details
:;y031J :f311 :;y021L :f311 hole
:^3212L :^3112L- :-2212 :-2112- arrow
:=410 :f222
:]X1uL :f118
:]&1uJ :f118
:>F01 :f316
:>00D :f513
:=b0W3 :fa14
:'W02L :f114
:=60I2 :f236 :^62IJ :f116 :^73IJ :f116 spectator seats
:|01z2L :f11e border left
:\Q121L :f121 :\P121|J :f121 :\Q151|L :f121 :\P151IJ :f121
:\Q261L :\P261|J :\Q211|L :\P211IJ
:=915 :f12f wall
:n915J :f121 :n415 :f121
:-6323 :f212
:!612 :f212 :+W1V :+21Q :+D13
#RLC4;00LC4;46e97a3d 0000974:0011:0119:0131:0173:0041:00a9:0031:0383:0021:00a9:0021:02c3:0021:0129:0041:0049:0031:0069:0031:0029:00d1:0073:0051:0103:0021:00d3:0011:0293:0021:0083:0031:0079:0041:0083:0031:01e9:0081:0083:0021:0049:00c1:0063:00e1:0043:0051:0049:00b1:0043:00a1:0049:0081:00a3:0031:0049:0031:0073:0041:0073:0031:0033:0031:0073:0031:0059:0041:00c9:0031:00e3:0051:0059:0041:0039:0031:0059:0041:0039:0021:0069:0031:0039:00a1:0043:0071:0049:0061:0010:00d4:0036:0054:005c:0044:00e0:0041:00b0:0054:0160:0031:0059:0091:00c0:0062:0091:00b3:0071:00c9:0041:0099:0041:0089:0041:0303:0041:0053:0031
#BLC4;
#RLCtiny1;00LCtiny1;7e39e006 0000387:0251:02b9:0031:0169:0031:0149:0061:0059:0051:0019:0031:0099:0021:00d3:0041:0073:0041:0073:00a1:0033:0027:0016:0042:0046:00a2:00a3:0082:0073:0032:0033:0052:0043:0021:00f9:0031:0109:0011:00b5:0021:0039:0041:0139:0021:0109:0031:00c9:0011:0053:0031
#BLCtiny1;
#RLC3;00LC3;29bfc2bc 0000697:0011:0169:0021:0130:0014:01c1:01e3:00b1:0073:0041:0073:0031:0063:0031:0053:0051:0163:0031:0053:0031:0053:0051:0079:0101:0033:0081:00c9:0031:0113:0041:00f3:0061:0033:0061:00a3:0041:0063:0021:0023:0021:0079:0071:0033:0051:0043:00c1:00d3:0121:0059:0031:00d9:0050:0038:001c:00c0:0012:0023:0111:0020:0018:003c:0100:0012:0043:0141:0050:004c:0110:0022:0023:0131:0059:00b1:0023:00c1:0099:0021:0225:0041:0290:0034:0080:0041
#BLC3;
:=l0C1 :f117 :|l1C2L :f115
:;s1B2 :^t1E2
:(w7BJ
:;h1q2 :f123
:<n3n3 :f311 :In1n2 :f121 :Ip1n2| :f121
:,x5qJ :f411
:|B2j3J :|B2l3J
:.B1w1J :f112
:=h0h2 :fl12 :f11o :=B0i2 :f11m :=m0n2 :fb12
:*n1EI :!n1F :+p1r :+y1l :+y3I :+k1l