Document solutions

This commit is contained in:
Wuzzy 2024-10-21 23:52:31 +02:00
parent 20763600de
commit cf12ef5c21

View File

@ -102,15 +102,15 @@ This is a list of special fields for node definitions that Lazarr! recognizes:
See `GROUPS.md` for a reference of item groups used in this game. See `GROUPS.md` for a reference of item groups used in this game.
## Development mode and laser debug ## Debug Mode
There is a hidden development/debugging mode in this game. It is used There is a hidden Debug Mode in this game. It is used to
to debug the behavior of lasers. The most useful tool is the enable several debugging and testing features of the game.
laser stepper, which is like single-step debugging, but for
lasers.
To enable the hidden debug mode, set the hidden setting `lzr_debug` to To enable the hidden debug mode, set the hidden setting `lzr_debug` to
`true` in `minetest.conf`. This will unlock laser debug features: `true` in `minetest.conf`. This will unlock the following features:
### Laser debug
* Chat commands: * Chat commands:
* `/set_freeze_lasers`: Enable/disable laser updates on map change * `/set_freeze_lasers`: Enable/disable laser updates on map change
@ -125,8 +125,43 @@ To enable the hidden debug mode, set the hidden setting `lzr_debug` to
### Development mode ### Development mode
Additionally, `lzr_debug` will also unlock the development mode. It can Development mode can be accessed with the `/devmode` command. In this mode,
be accessed with the `/devmode` command. In this mode, the world can be the world can be altered more freely without the game getting in the way.
altered more freely without the game getting in the way. Lasers are always Lasers are always frozen in development mode. You can also get all items
frozen in development mode. You can also get all items in the inventory. in the inventory. This mode was created to test out stuff more easily.
This mode was created to test out stuff more easily.
### Solutions recording and testing
You can record solutions for levels and replay them. Solutions record
player interactions in a level in order to replay them for testing
the levels for regressions. The solution system is limited, however,
it only records interactions with nodes but not player movement.
This feature is EXPERIMENTAL and has some rough edges, so
use with care! The main use case for this feature is to record
solutions in the core levels.
This feature is useful to test and verify if the levels are still solvable
in a later update in case the behavior of a laser block was accidentally
changed in a compatibility-breaking manner. Passing the test does
NOT guarantee the level is error-free. In particular, if the player
would have to move to a place that is unreachable, the test won't
detect that.
Commands:
* `/record_solution`: Start record a solution for the current level.
You MUST call this at the beginning of a level, not afterwards.
Try to solve the level with as few node interactions as you can
(the solution doesn't have to be perfect tho).
The recording ends automatically when the level is completed and
a file is saved into the world directory on success.
WARNING: Existing files will be silently overwritten!
* `/replay_solution`: Replay the solution for the current level. This
only works for core levels and only when you're at the beginning
of a level.
* `/test_core_solutions`: Mass-test ALL core levels in sequential
The solution test will halt automatically when any inconsistency was
detected. You can always abort the solution test or a recording by
returning to the ship (e.g. with the `/leave` command).