Skip to content
Ludens Ludens Ludens 0.4.0

Shared Configuration

Shared configuration properties are managed through ludens.properties in the project root. These settings affect the core application logic and the user interface across all platforms.

Ludens uses presets to simplify the initial configuration. You can choose from several built-in presets or use the custom name to define your own behavior.

Edit your ludens.properties:

# Selects the active preset
ludens.settings.presetName=recommended

The following property is configured under the ludens.settings.* prefix:

PropertyDefaultValuesDescription
presetNamerecommendedrecommended, noactions, nocontrols, minimalist, customSelects the active preset logic.
NameBehavior
recommended(Default) Balanced setup with on-screen controls and quick actions enabled.
noactionsDisables the quick actions panel but keeps on-screen controls.
nocontrolsDisables on-screen controls but keeps the quick actions panel for navigation.
minimalistMaximum screen space: disables both controls and quick actions by default.
customIgnores built-in logic and uses the custom preset properties defined below.

The following properties are only consumed when ludens.settings.presetName is set to custom. They allow you to fine-tune the game’s default state:

# Custom preset overrides
ludens.settings.preset.toolMuted=false
ludens.settings.preset.toolShowFps=false
ludens.settings.preset.toolUseWebgl=false
ludens.settings.preset.controlEnabled=true
ludens.settings.preset.controlAlpha=0.4
ludens.settings.preset.actionEnabled=false
ludens.settings.preset.actionItems=settings
ludens.settings.preset.systemTheme=system
ludens.settings.preset.systemLanguage=system

These properties use the ludens.settings.preset.* prefix:

PropertyTypeDefaultValues / Description
toolMutedBooleanfalseDefault audio mute state (true, false).
toolShowFpsBooleanfalseDefault visibility for the FPS counter.
toolUseWebglBooleanfalseDefault WebGL switch state (MV only).
controlEnabledBooleantrueDefault state for the virtual controls overlay.
controlAlphaFloat0.4Virtual control opacity (0.0 to 1.0).
actionEnabledBooleanfalseDefault visibility for the quick actions panel.
actionItemsListsettingsComma-separated items: settings, controls, mute, fps, webgl.
systemThemeStringsystemDefault theme: system, light, dark.
systemLanguageStringsystemDefault language fallback: system, en, es, zh, ja, pt-rBR, ru.

Ludens supports multiple languages for its wrapper client UI.

By default, the compilation includes all languages found in the project’s assets. If your game is only intended for a single language or a specific set of languages, you can restrict the options shown in the wrapper’s settings menu by modifying ludens.properties:

# ----- Languages -----
# Which languages to include in the build.
# "*" means all discovered from project/assets/languages/ (Default).
# List only the tags you need to limit the build (e.g. en,es).
ludens.languages.available=en,es
PropertyTypeDefaultDescription
ludens.languages.availableList/String*Comma-separated list of ISO language tags to include in the build (e.g., en,es,zh,ja).

To add translation keys for a language not provided by default, see the Localization guide in the BUILD docs.


Ludens uses Compose Multiplatform’s resource system to manage typography.

  • Source Folder: Place your custom .ttf or .otf font files in project/assets/fonts/.
  • System Fonts: The default display font is Plus Jakarta Sans and the body font is Inter.

You can configure global default fonts or specify language-specific font fallbacks in ludens.properties:

# ----- Fonts -----
# Base fonts (always included, change only if you customize the .ttf files)
# ludens.fonts.display=plusjakartasans.ttf
# ludens.fonts.body=inter.ttf
# Language-specific font fallbacks
ludens.fonts.language.ja.body=notosans_sc.ttf
ludens.fonts.language.ja.display=notosans_sc.ttf
ludens.fonts.language.zh.body=notosans_sc.ttf
ludens.fonts.language.zh.display=notosans_sc.ttf

These properties use the ludens.fonts.* prefix:

PropertyTypeDescription
displayStringDefault font for heading elements (titles, buttons).
bodyStringDefault font for body/paragraph elements.
language.<lang_tag>.displayStringHeading font fallback specifically for <lang_tag> locale.
language.<lang_tag>.bodyStringBody font fallback specifically for <lang_tag> locale.