station/CHANGELOG.md

4.5 KiB

Changelog

All notable changes to this project are documented in this file. The format is based on Keep a Changelog.

[Unreleased]

Added

  • cargo xtask watch rebuilds and packs after a resettable 10-second quiet period, with automatic rebuilds paused while dist/NOREBUILD exists.
  • Separate gameplay floor and structure layers, with buildable/removable floors and windows. Marked painted Tiled tiles become stateful gameplay entities; removing floors exposes the map's configurable default terrain.
  • A bundled Tiled extension to convert painted gameplay tiles into editable objects, preserving properties and flips with conflict checks and undo support.
  • Admin export [FILE] and import [FILE] commands for editable Tiled snapshots of terrain, buildings and ground items, including health, script variables, machine contents and processing state. Imports replace the map while preserving characters.
  • Native chat text editing with word navigation, keyboard/mouse selection, system clipboard copy/cut/paste, bounded sent-message history and role-aware command completion.
  • Persistent-world station game with singleplayer, hosting (--host) and joining (--connect), plus a dedicated game-server.
  • Data-driven items, recipes, buildings and skills in assets/data/*.rsn.
  • Rune scripting for item use, building interaction and crafting hooks.
  • Tiled map support (solid tiles/layers; spawn, building and item objects).
  • Saving of the world and characters (autosave, and on exit, Ctrl-C or SIGTERM).
  • Crafting, construction/deconstruction, skills, hunger, health and respawning.
  • Windows client builds for GitHub and Gitea CI; release builds run without a console window.
  • cargo xtask pack builds the client and server and packs them with their assets into a distributable archive; CI publishes these archives.
  • Machines (machines in data files): buildings with input/output slots that process their own timed recipes, with optional custom window layouts and background images. The furnace is now a machine (ore + log fuel), and a new assembler makes tools.
  • GitHub Package workflow builds archives for Windows (zip), Linux and macOS (tar.gz).
  • Worlds are stored with sqlx in SQLite (default) or PostgreSQL, keyed by a world UUID so many worlds can share one database. Singleplayer saves are SQLite files in the platform data directory. Autosaves run in the background. The server has new --database URL and --world NAME|UUID options.
  • The dedicated server is configured by server.toml plus command-line overrides, and it accepts terminal commands for save, shutdown and live config changes.
  • Start menu with new game (optionally hosted), load/delete saved games and join server screens. Running the client without options shows it.
  • Menus and HUD are defined by layout files in assets/ui/ (rsn) with a shared theme, {binding} placeholders, conditional visibility and tooltips.
  • Machine windows: insert and take items from machine slots, using the machine's slot positions and background image, with a progress bar.
  • Chat (Enter/T) with / commands, a pause menu (Esc) and clickable inventory, crafting and build menus.
  • Server passwords, admins, a whitelist, bans, kicks and admin commands in the server terminal and in-game chat. Changes are written to the config file. The player hosting a world is always admin.
  • The client profile (client.toml) stores a player id; characters belong to it instead of to a name.

Changed

  • Tiled exports always use the .tmx extension and separate floors, structures, ground items and spawn points into named object layers, with a reserved wiring/plumbing layer. The Tiled converter uses the same layer organization.
  • Tiled property overrides apply to new-world seeds as well as imported maps. Terrain is persisted with world state and replicated to connected clients. Save databases migrate automatically to schema version 2.
  • Characters move freely instead of tile by tile: diagonal movement, sliding along walls and around corners. Their exact position is saved.
  • Breaking: network protocol version 6. Layered building state and authoritative terrain are replicated, logins carry a player id and password, and movement is sent as a direction vector, so older clients and servers can't connect. Characters saved by name in existing worlds are not carried over to player ids.

Removed

  • The rsn save file format and the --save FILE server option. Existing rsn saves are not migrated.