Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tools

Role

The tools are layer 5. They link the engine’s data crates (including kerosene-map, which the runtime never does) and produce the compiled content the runtime loads. The runtime binary (apps/kerosene) links no tool code.

The set

ToolDoesSource-engine analogue
chiselLevel editor: brushes, entities, 3D view, buildHammer
cleaveCSG, BSP, portals, leak detectionvbsp
umbraVisibility (PVS)vvis
radianceLighting bakevrad
resonanceAcoustics bakenone
alchemyTextures and materialsnone
forgeModels from OBJ/glTFnone
timbreSound compile and editnone
vaultPack and inspect .vault archivesnone
loupeInspect compiled filesnone
kilnBuild and ship a whole projectnone
kerosene-toolsOne egui app hosting all of the above, plus headless subcommandsnone

kerosene-toolui provides the shared egui theme and widgets.

Design decisions

  • One window, many tools. kerosene-tools hosts the tools as tabs (Home, Assets, Editor, Models, Sound, Build, Archive) with a command palette and an output panel, so a designer does not juggle executables. Each tool also runs headlessly (kerosene-tools cleave <map>) for scripts and CI.
  • A game can ship its editor. The tools feature of the kerosene crate re-exports the tools so a game can build its own tools binary.
  • The editor mirrors Hammer 5’s layout to be familiar to Source mappers.
  • Chisel renders on the GPU, using the same renderer as the runtime; a software rasteriser is kept for tests.
  • Stages are shared. Chisel’s build and Kiln call the same toolchain::MapStages, so there is one definition of “build a map”.
  • Re-invocation over discovery. A tool launches another stage by re-invoking its own executable (toolchain::command), so a subcommand is always present; the runtime is found next to the executable, then on PATH.

See also