documentation for level builders: docs index, step-by-step guide, file format reference (wad, geometry, objects, textures, audio, testlevel chapters, engine limits), strat vm and script language with the arena as worked example, tools overview, developer notes; readme rewritten as project front page with screenshots; review notes moved to notes/dev

This commit is contained in:
MineTec committed 2026-11-07 16:14:40 +01:00
1 parent 00b2880d67
commit 624718b893
41 files changed
+2175 -259

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# Lab notes
The project's engineering notebook: what was found in `groove.exe` and the game data, how each part
of LlamaMod works, and what was verified in the game. The notes are detailed and technical (with
addresses, confidence levels and test logs). For a readable introduction start with the
[documentation](../docs/README.md) instead.
Images used by the notes are in [`img/`](img/).
## Formats and engine
| Note | Topic |
|---|---|
| [geometry.md](geometry.md) | TRAK / MAP / STPC models, coordinate spaces, collision, visibility, writing new geometry |
| [objects.md](objects.md) | MAP layout, strat records, waypoints, zones, special objects, the other chunks |
| [textures.md](textures.md) | TEXT chunk |
| [strat-opcodes.md](strat-opcodes.md) | all 434 strat VM opcodes, conventions, sources |
| [strat-language.md](strat-language.md) | LlamaMod's strat assembly, script view and script language |
| [strat_types_table.md](strat_types_table.md) | every object type in every level, with counts |
| [editor-object-schemas.md](editor-object-schemas.md) | parameters of object types, guards, event bits, start camera |
| [testlevel-chapters.md](testlevel-chapters.md) | world 9 chapters and the relocation patch |
| [levelbau.md](levelbau.md) | the Python level builder, measured physics, the exit, the test world |
| [debugviz.md](debugviz.md) | debug view: colour legend, how it is built |
| [testharness.md](testharness.md) | `tools/lamatest.py`, PC controls |
## LlamaMod app and mods
| Note | Topic |
|---|---|
| [llamamod-app.md](llamamod-app.md) | build, CLI, data folder, registry, mod framework, exe patches, save games, `tools/apptest.py` |
| [mod-arena.md](mod-arena.md) | Alligator Arena |
| [mod-testworld.md](mod-testworld.md) | Test World and its gallery |
| [mod-levels.md](mod-levels.md) | level projects as mods |
| [mod-boottolevel.md](mod-boottolevel.md) | Boot to level |
| [mod-introskip.md](mod-introskip.md) | Intro skip |
| [mod-mirror.md](mod-mirror.md) | Mirror mode |
| [mod-practice.md](mod-practice.md) | Practice tools |
| [mod-randomizer.md](mod-randomizer.md) | Randomizer |
| [mod-fog.md](mod-fog.md) | Draw distance |
| [mod-cheats.md](mod-cheats.md) | Built-in cheats |
| [mod-freecam.md](mod-freecam.md) | Free camera & noclip |
## Level editor internals
| Note | Topic |
|---|---|
| [editor-design.md](editor-design.md) | design brief |
| [editor-api.md](editor-api.md) | scene model, commands, IO |
| [editor-format.md](editor-format.md) | the `.llamalevel` project format |
| [editor-render.md](editor-render.md) | OpenGL viewport, coordinate conventions, culling |
| [editor-ui.md](editor-ui.md) | application shell and plugin API |
| [editor-tools-geometry.md](editor-tools-geometry.md) | brushes, tiles, collision, mesh import, library |
| [editor-tools-objects.md](editor-tools-objects.md) | objects, paths, cameras |
| [editor-tools-environment.md](editor-tools-environment.md) | zones, fog, music, lights, visibility, baking |
| [editor-tools-textures.md](editor-tools-textures.md) | texture manager, import, painting, animations |
| [editor-cross-import.md](editor-cross-import.md) | importing object types from other levels, engine limits |
| [editor-playtest.md](editor-playtest.md) | play-test straight into the level |
| [editor-manual.md](editor-manual.md) | the manual window and context help |
| [editor-guide.md](editor-guide.md) | early short user guide (superseded by [docs/manual](../docs/manual/index.md)) |
## Process
[`dev/`](dev/) holds the briefs for the AI agents that worked on the project and the review reports
of the overnight UX and bug reviews (`bug-review-*.md`, `ux-review-*.md`).
File renamed without changes.
@@ -60,7 +60,7 @@ objdump, replay, restore).
After rebasing onto the merged main tree (simp-all + launcher UX changes): orig, all-v, boot-exe, mrf-r
re-run with the final jar: all OK (CDPath `L:\cd-active\`).
![matrix](img/launcher-matrix.jpg)
![matrix](../img/launcher-matrix.jpg)
Screens: all mods in Village (wireframe, mirrored) and the free camera; River with mirror+randomizer+fog;
Test World with all mods; boot-to-level + all exe mods (River loading card); practice restore.
@@ -14,20 +14,20 @@ position) started straight in the level, and Escape in the game returned to the
| Before | After |
|---|---|
| ![](img/editor/ux_llama_before.jpg) | ![](img/editor/ux_llama_after.jpg) |
| ![](../img/editor/ux_llama_before.jpg) | ![](../img/editor/ux_llama_after.jpg) |
| A 1920-wide window: the Inspector is 170 px wide and shows no values at all. Side docks have two rows of tabs. | The docks get their intended widths (290 / 340 px). Side-dock tabs are icons with the active one named. The engine fields of the object type are folded away. |
| ![](img/editor/ux_brush_before.jpg) | ![](img/editor/ux_brush_after.jpg) |
| ![](../img/editor/ux_brush_before.jpg) | ![](../img/editor/ux_brush_after.jpg) |
| The Brush tool's buttons read "Bl…", "Pl…", the texture names "gr…", the numbers show "0,5". | Full labels and a decimal point. |
| ![](img/editor/ux_coin_before.jpg) | ![](img/editor/ux_coin_after.jpg) |
| ![](../img/editor/ux_coin_before.jpg) | ![](../img/editor/ux_coin_after.jpg) |
| The Coin tool's options are cut off: only the top pixels of the fields are visible. | The options are on one line, or wrap to a second row in narrow windows. |
| ![](img/editor/ux_menu_before.jpg) | ![](img/editor/ux_menu_after.jpg) |
| ![](../img/editor/ux_menu_before.jpg) | ![](../img/editor/ux_menu_after.jpg) |
| *Help* comes before *Geometry*, and the shortcuts are German ("Strg", "Umschalt"). | The menus are File … Geometry, Tools, Help, and the keys are named "Ctrl", "Shift". |
| ![](img/editor/ux_orig_before.jpg) | ![](img/editor/ux_orig_after.jpg) |
| ![](../img/editor/ux_orig_before.jpg) | ![](../img/editor/ux_orig_after.jpg) |
| *Open original level*: the description is cut at the right edge, and the selected row's id is grey on orange. | The text wraps and the id is readable. |
| ![](img/editor/ux_small_before.jpg) | ![](img/editor/ux_small_after.jpg) |
| ![](../img/editor/ux_small_before.jpg) | ![](../img/editor/ux_small_after.jpg) |
| A 1280×720 window: the right dock is squeezed to 130 px. Also, Esc did not close the dialog, so it was still open and blocked every key. | The docks keep their sizes and the tool options wrap. Esc closes dialogs. |
![](img/editor/ux_quit_game.jpg)
![](../img/editor/ux_quit_game.jpg)
*New: Play while the game still runs offers to quit it.*
@@ -20,27 +20,27 @@ covered by code review), Windows (the antivirus notice is unchanged there).
| Before | After |
|---|---|
| ![](img/app/ux_start_before.jpg) | ![](img/app/ux_start_after.jpg) |
| ![](../img/app/ux_start_before.jpg) | ![](../img/app/ux_start_after.jpg) |
| The app opens with the mod list scrolled to the end (Visual, Cheats); Levels and Gameplay are out of sight. | The list opens at the top and keeps its place when it is rebuilt (Apply, theme). Short windows get a lower header. |
| ![](img/app/ux_mods_before.jpg) | ![](img/app/ux_mods_after.jpg) |
| ![](../img/app/ux_mods_before.jpg) | ![](../img/app/ux_mods_after.jpg) |
| Options have no explanation unless you hover (Worlds "all"? Checkpoint spacing "10" of what?). Descriptions talk about "far clip plane", "strafe", "rigid object models". | Every option is explained next to it. Mod descriptions say what happens in the game and which keys to press. |
| ![](img/app/ux_wizard_before.jpg) | ![](img/app/ux_wizard_after.jpg) |
| ![](../img/app/ux_wizard_before.jpg) | ![](../img/app/ux_wizard_after.jpg) |
| A text file is "shorter than expected (truncated?)", a wrong folder gets "expected Setup/…/Hd/groove.exe", a half-downloaded ISO is "Game found" and fails only after Set up. | Plain messages that say what to do; an incomplete ISO is caught at once, with both sizes. |
| ![](img/app/ux_exe_before.jpg) | ![](img/app/ux_exe_after.jpg) |
| ![](../img/app/ux_exe_before.jpg) | ![](../img/app/ux_exe_after.jpg) |
| On Linux a missing groove.exe is blamed on antivirus software and explained with Windows Defender menus. After Rebuild you have to click Play again. | Linux gets a short message; **Rebuild** writes the file and starts the game. |
| ![](img/app/ux_saves_before.jpg) | ![](img/app/ux_saves_after.jpg) |
| ![](../img/app/ux_saves_before.jpg) | ![](../img/app/ux_saves_after.jpg) |
| "lowest 4 bits of the coin count", "unknown item flag (bit 0)", "Cursor on", "Revert"; no hint how to restore a backup. | Plain wording, "Opens at", "Undo changes"; **Import…** starts in the backups folder and the hint says so. |
| ![](img/app/ux_settings_before.jpg) | ![](img/app/ux_settings_after.jpg) |
| ![](../img/app/ux_settings_before.jpg) | ![](../img/app/ux_settings_after.jpg) |
| "registry values ScreenW/ScreenH", "wine from PATH"; the mod cache shows 0.0 MB after applying 6 mods (stale). | "Automatic (1920x1052)" shows the real size, plain hints, a note on what *Set up again* keeps; the cache size is current. |
| ![](img/app/ux_dark_before.jpg) | ![](img/app/ux_dark_after.jpg) |
| ![](../img/app/ux_dark_before.jpg) | ![](../img/app/ux_dark_after.jpg) |
| Dark theme: the *modifies groove.exe* badge is dark orange on grey (barely readable). | A lighter badge text in the dark theme. |
| New: quitting a hidden or hung game | New: crash report |
|---|---|
| ![](img/app/ux_quit_after.jpg) | ![](img/app/ux_crash_after.jpg) |
| ![](../img/app/ux_quit_after.jpg) | ![](../img/app/ux_crash_after.jpg) |
| While the game runs, Play becomes **■ Quit game** (neutral colour) with a confirmation. | Shown as soon as Wine reports the crash (the game hides behind Wine's error window until that is closed), with Quit game / Open logs. |
![](img/app/ux_av_linux_before.jpg)
![](../img/app/ux_av_linux_before.jpg)
*Before: on Linux every first Apply of an exe mod showed this Windows Defender notice. Now it is
shown on Windows only.*
+1 -1
View File
@@ -5,7 +5,7 @@ Code: `src/main/java/com/eliasmueller/llamamod/editor/tools/environment/`, tests
`src/test/.../editor/tools/environment/` (`EnvironmentToolsTest` needs `-Dllamamod.cd`; `EnvTour`
= scripted screenshots, `EnvScenarios` = the in-game test projects).
![zones](img/editor/env_zones.jpg)
![zones](img/editor/env_zone.jpg)
## What the user gets