station/CHANGELOG.md

89 lines
4.9 KiB
Markdown

# Changelog
All notable changes to this project are documented in this file. The format is
based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Changed
- 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
- `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 [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.