Fix a few bugs

This commit is contained in:
Miloslav Ciz 2025-06-23 20:38:56 +02:00
parent ab70d727b8
commit bc55e84d5b
6 changed files with 48 additions and 32 deletions

View file

@ -103,12 +103,11 @@ Here are some tips for playing:
speed.
- For a more serious grinding it may be good to reduce the initial countdown
(in settings.h), it will save a lot of time over many runs.
- Don't try to drive a perfect run from the start -- to drive a good time you
- Don't try to drive a perfect time right away -- to drive a good time you
first have to drive a bad one. It's best to quickly drive a somewhat decent
run and then race against it as a ghost, beating it and repeating then
repeating this process over and over. This allows for gradual but steady
improvement by spotting exact places where one can gain more speed against
the ghost.
run and then race against its ghost, beating it and then repeating the process
over and over. This allows for a gradual but steady, steap-by-step improvement
by discovering exact places where one can improve against the ghost.
~~~~~ DATA FILE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -123,19 +122,20 @@ with any plain text editor. If you just want to casually play the game, you may
safely ignore the file. You will need to edit the file if you want to add new
maps and replays, or if you want to share your replays and maps with others.
The file consists of data items -- an item represents a map, replay, and
possibly other types of data. The items are separated by the '#' (hash)
character. Each item is stored in plaintext format, there are no binary data.
Each item starts with a magic number, which is a single character ('M' for a
map, 'R' for a replay), then its name follows immediately, terminated by the
';' (semicolon) character, and then the item's data follow. Format of this data
depends on what data it is, so map data of course have a different format than
replay data. For example a map named "mymap" will start with "Mmymap;".
The file consists of data items -- an item represents a map, replay and possibly
other types of data. The items are separated by the '#' (hash) character. Each
item is stored in plaintext ASCII format, there are no binary data. Each item
starts with a magic number, which is a single character ('M' for a map, 'R' for
a replay), then its name follows immediately, terminated by the ';' (semicolon)
character, and then the item's data follow. Format of this data depends on what
kind of data it is, so map data of course have a different format than replay
data. For example a map named "mymap" will start with "Mmymap;". Unknown data
items are ignored, so comments can be added in the file.
~~~~~ CONFIGURATION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The game offers a very high level of configuration and customization, and those
with at least basic programming skill will be able to implement any changes
with at least basic programming skills will be able to implement any changes
imaginable. Very basic settings (such as turning the music off or switching
between windowed and fullscreen mode) are accessible either in the game menu,
or as a commandline flag (run the game with -h flag to see the options). All
@ -154,7 +154,7 @@ space). Replays can also be used to spawn a ghost car to race against. There
are special tabs in the menu to view a replay or race against a replay ghost.
Replays are saved in the data file (see the section about data file for
details).
details). The exact format of replay data is described in the source code.
Whenever a map's target time is beaten, replay is automatically saved. It's also
possible to save a replay manually by opening the menu and selecting
@ -165,7 +165,7 @@ replay you just delete it in the data file.
~~~~~ GHOSTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The game supports ghost cars to race against (note that this may be unsupported
on some weaker platforms). A ghost car is created from a replay and will race in
on some weaker platforms). A ghost car is spawned from a replay and will race in
real time against the player, without being able to collide with him. This is
very useful when attacking someone else's (or one's own) achieved time, to see
where exactly time losses against the opponent occur.
@ -173,17 +173,18 @@ where exactly time losses against the opponent occur.
~~~~~ MAKING CUSTOM MAPS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Maps are stored in the data file. For its simplicity the original game doesn't
come with a user-friendly map editor (perhaps some will be made over time), the
maps are hand-written directly in the text format that's stored in the data
file, however there is a helper file for Blender that facilitates this process.
come with a "user-friendly" GUI map editor (perhaps some will be made over
time), the maps are hand-written directly in the text format that's stored in
the data file, however there is a helper file for Blender that facilitates the
process of designing a map.
In the game a map is represented as a 64x64x64 grid, with each cell one unit in
width, one unit in depth and HALF a unit in height. In the cell blocks can be
placed. There are several types of blocks such as ramps, walls, corners etc. The
map will be made of these blocks.
In the game a map is represented as a 64x64x64 grid of cells, each of which is
one unit in width, one unit in depth and HALF a unit in height. Each cell can
hold a map block. There are several types of blocks such as ramps, walls,
corners etc. The whole map is composed of these blocks.
Each placed block can additionally be transformed: rotated by multiples of 90
degrees along vertical axis and/or flipped horizontally/vertically. Additionally
degrees about vertical axis and/or flipped horizontally/vertically. Additionally
each block also has a material (concrete, grass, ...). Special kinds of blocks
are accelerators and fans. The finish, checkpoints and car start position can
also be seen as a special kind of block. And still, there are yet "more special"
@ -193,7 +194,9 @@ times in a row) -- these only appear in the map's text format; they are not
necessary, but greatly help making maps faster and also keep their code smaller.
The text format of the map is described in the map.h file, refer to it for
details you won't find here. In summary:
details you won't find here. To start with map making it may be useful to check
out some of the existing small maps, for example the LCtiny ones. In summary the
map format is following:
First, if the map is preceded by another data string in the data file, remember
to start it with the `#` character (to separate it from the previous string).