Config

Three files, three owners. Do not put game preferences in the engine file, or engine switches in a world save.

FileOwns
Activerse.tomlEngine: logging, fps, fov, vsync, MSAA, render distance, fog, weather, save directory.
settings.iniThis install’s game prefs: look sensitivity, invert, reach, UI scale, key bindings.
saves/<world>/That world: player, inventory, edited chunks, environment.

A writable Activerse.toml in the working directory overrides the copy bundled in src/main/resources. The pause menu writes engine toggles to toml and game toggles to ini.

Engine keys

Defaults below match src/main/resources/Activerse.toml.

KeyDefaultMeaning
fps60Gameplay tick rate. Not the 1 ms body step, and not the display refresh.
vsynctrueWait for the display on swap.
fov70Starting vertical field of view, degrees.
show_debugtrueEngine debug HUD.
dynamicLightingtruePoint lights in the lit shader.
msaa_samples40, 2, 4, 8, or 16.
texture_filternearestnearest or linear.
render_distance8Horizontal chunk radius.
render_distance_y2Vertical chunk radius.
chunk_uploads_per_frame16GPU mesh uploads per frame.
chunk_mesh_jobs6Concurrent CPU mesh jobs.
start_hour10Clock hour when a new world starts.
day_length_seconds1200Real seconds in one full day.
time_scale1Multiplier on the day clock.
loggingtrueMaster log switch. Files go to log_dir (default logs).
save_dirsavesRoot for world folders.

fps changes how often worldAct and Actor.act run. It does not change nowNs or the 1 ms body step. Walk speed in PhysicsSettings is also not a toml key. Set it on the controller.

Game keys

settings.ini in the working directory. Typical entries:

If reload and the weather cycle end up on the same key, the map moves weather back to G. That keeps R as reload.

Saves

Each world folder holds world.json and a readable world.yaml. The snapshot includes the camera, the environment, streaming settings, and whatever the world adds in capturePersistentState. Sandbox adds the player and, when keep_inventory_on_quit is set, the inventory. dispose writes the snapshot on quit and on a world switch. Loading calls applyPersistentState after prepare.

Edited voxel chunks are stored as raw byte arrays keyed by chunk position. Air is 0. Any other byte is BlockType.ordinal() + 1. Append new block types at the end of the enum. Inserting one in the middle changes every saved world.