Skip to content

Eldiron v0.9.7

Pre-release
Pre-release

Choose a tag to compare

@markusmoenig markusmoenig released this 26 Apr 02:31

New Features

Creator

  • Added the new brush-based Organic Tool workflow for painting surface detail directly onto map surfaces, replacing the older graph-driven organic authoring direction.
  • Added a dedicated Organic dock with a live brush preview, visual brush-shape presets, and compact controls for Base, Border, Noise, Brush Size, Border Size, Noise Amount, and Opacity.
  • Added Organic toolbar controls for Free / Locked, Clear, and Active / Deactive, plus a 3D brush-footprint preview for organic painting in place of the generic hover marker.
  • Added renderer style and post-processing controls for a less shiny retro RPG look, including style = "clean" | "retro" | "grimy" and post controls for grit, posterize, palette_bias, shadow_lift, and edge_soften.
  • Applied the stylized post-processing controls to Raster 2D as well as Raster 3D, so 2D and 3D views can share the same authored color treatment.

Server

  • Added the ensure_active NPC sequence step so scripted routes can enforce stateful interactions such as opening a door only if needed and closing it again afterward.
  • Added hold_speed for grid-based held movement, so characters can use a fast first-tile speed while keeping sustained held movement smooth and continuous.
  • Added configurable [game] simulation pacing with simulation_mode = "realtime" | "turn_based" | "hybrid" and turn_timeout_ms, so projects can choose between continuous simulation, fully player-driven turns, or Ultima-style idle turn stepping.
  • Added multiple_choice(entity, prompt, choice_attribute) for script-defined choice menus using labels authored as character attributes. Selecting an option sends both {choice_attribute} and {choice_attribute}:{index} back to the offering character.
  • Added the new dialog(entity, node) system for TOML-authored nested dialogs, including node transitions, continue-style choices, choice events, simple if / unless conditions, localization/substitution support, and visual scripting support.

Documentation

  • Added Organic Tool documentation covering the new brush-based workflow, dock layout, toolbar controls, and 3D brush preview behavior.
  • Added configuration docs for the new renderer style and stylized post-processing settings, including their runtime world.post.* / region.post.* override fields.
  • Clarified the say(...) command documentation to show both the default one-argument form and the optional category-color form.
  • Moved new say(...) presentation documentation from global game config to game widget [say] settings.
  • Added documentation for script-defined multiple-choice menus and TOML-authored nested dialogs, including localization-key usage and message-widget filtering.

Bug Fixes

Creator

  • Fixed Organic tool undo / redo and related dock-state restore behavior so brush painting no longer bounces the UI back into the tile picker workflow during restore.
  • Improved Organic brush editing so presets are shape-only, thumbnails reuse the current brush colors, and noise is exposed as an actual adjustable paint contribution instead of only a preview accent.
  • Fixed project render settings sync so loading a project and editing project settings now apply the same renderer/post/daylight defaults instead of changing the visible sun-shadow state after the first settings edit.

Renderer

  • Softened Raster 3D sun-shadow sampling and increased default shadow biasing in the shader to reduce hard shadow acne seams.
  • Fixed two-sided 3D lighting so sun shadows and direct lights use light-facing normals instead of camera-facing normals, preventing surfaces from changing lit state when the iso camera moves.
  • Added exact compile-time layout checks for the Raster 3D uniform block to guard against backend-sensitive WGSL/Rust alignment mismatches.

Server

  • Fixed grid-based player movement so the character speed attribute now actually affects direct tile stepping, instead of being hardcoded to 1.0.
  • Fixed Eldrin compilation of say("Text") so the optional category parameter is truly optional, matching the runtime handler and documentation.

Client

  • Fixed 2D game widgets so say(...) speech bubbles render above characters and items like they already do in 3D views.
  • Game widgets now prefer their own [say] section for speech bubble duration, text colors, and background styling, with legacy global [say] config kept as a fallback.
  • Messages widgets can now use handles = [...] to split regular messages, dialogs, script multiple-choice menus, and inventory offers across different widget placements.
  • Messages widgets can optionally draw sender portraits from portrait_tile_id with portrait = true, portrait_size, and portrait_gap.
  • Fixed bottom-up Messages widget rendering for very long wrapped messages so the newest/lower lines remain visible instead of the message being culled when its first lines overflow above the widget.
Screenshot 2026-04-26 at 09 29 08