station/CHANGELOG.md

5.6 KiB

Changelog

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

[Unreleased]

Changed

  • Breaking: export [DIR] writes a ready-to-use Tiled project directory (world.tmx, station.tiled-project, the Station extensions and relative tileset image copies) instead of a single map file; import accepts that directory or a map file.
  • Tiled exports and newly created conversion layers place Objects above Ground Items, Triggers, Wiring/Plumbing and Floors, with Floors and Wiring/Plumbing hidden by default in the editor without affecting gameplay.

Added

  • Map > Station: Convert All Project Maps in Tiled converts painted gameplay tiles in every map of the opened project at once.
  • A Station Object Brush in Tiled with per-tile brush property settings and independently editable wall/floor objects, drag previews and stroke undo. Open the bundled assets/station.tiled-project to load Station extensions without installing them globally (Tiled requests permission on first use).
  • cargo xtask watch --serve serves the packaging output with directory listings and downloads at http://127.0.0.1:9932/, including while rebuilds are paused.
  • 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 and import 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.