Repository navigation
Releases: tanepiper/unbanished
Release list
Un-Banished 0.3.0: Neighbours
Neighbours: read the story of this release, with pictures and videos, on the Un-Banished blog.
Multiplayer: several players play one town together, on the desktop or in the browser, through
a small relay, while single-player games stay exactly as before. Also mods from banishedinfo.com,
a browser version that installs as an app, and the fix for the first tutorial.
Changed
- Dialogs lay out faster: each element is measured once per frame instead of again for every
level of nesting. The Mods menu with both Browse tabs went from 70 ms to 7 ms a frame. Every
dialog looks exactly as before. - Mod sites in the Mods menu: a Browse tab for each site, shown by default: Nexus Mods and, on
the desktop, banishedinfo.com (it sends no CORS headers, so the browser cannot reach it).
Searching needs no account; installing from Nexus Mods needs your own API key.
Fixed
- The first tutorial (Getting Started) stopped at its first house: clicking the Housing menu
opened it, but the tutorial did not see the click, so the Wood House stayed greyed out (#11).
A click on a toolbar menu button, or its key (F3), now counts. Every earlier version, in the
browser and on the desktop, has this problem. - The browser version: the interface is sharper on high-resolution screens with a fractional
pixel ratio, such as 4K tablets and Samsung DeX: every image and letter now starts on a whole
screen pixel (#12). Full screen works in the game's own tab (Options, Fullscreen), and the
Play page's full-screen frame fills the screen (#14).
Added
- Multiplayer from the main menu: a Multiplayer button opens a window to host a room on a relay
or join one with its code. The host starts the game from one of its saves, and every player
plays the same town; the speed and the pause are shared, and a line at the foot of the screen
shows the players (step 6). The button is not in the original game. - Multiplayer: while the game waits for another player, the camera and the windows keep
working, and the line at the foot of the screen names the player it waits for. A player who
leaves no longer stops the game: the others play on without them. A command given while the
game waited was lost; it now goes into the next turn. - A multiplayer relay,
banished-relay, with room codes, and the game's WebSocket connection to
it, natively and in the browser (banished-net). Native and browser players have played one
game through it and stayed identical (step 5). - Lockstep, the core of multiplayer: several players' games stay identical by
exchanging only their commands.banished --lockstep-testruns players in one process over a
simulated network (step 3). The host compares the players' games every 600 updates and, when
they differ, everybody reloads the host's save and goes on (step 4). - Mods from banishedinfo.com on the desktop: browse, search and install them in the game's
Browse tab, in the mod manager and withbanished-cli banishedinfo. - Mod previews show in the Browse tabs and the mod manager: PNG, JPEG and WebP (Nexus Mods
sends WebP). - The browser version can be installed as an app (Chrome, Edge, Android), and then opens in its
own window and starts without a network (#13). - The browser version's Options choose a resolution for the 3D world (100, 75 or 50 % of the
page) and a frame-rate limit (30 to 120 per second) (#15). Captures can test the resolution
natively with--scene-scale PART. - Recordings:
--record FILEwrites every player command of a game loaded from a save, and
banished --replay SAVE FILEplays it back without a window and checks that the game comes
out the same. Every player action now goes through one command type, with no change to the
game (steps 1 and 2 of docs/MULTIPLAYER-PLAN.md). banished --sim-digest SAVEand the browser build's?digest=run a save without a window
and print digests of the game state, to check that native and browser builds simulate
identically. They do, on the saves tried (docs/CROSS-PLATFORM.md).- Test tools: a
tools/compatscenario that plays through the interface (actions), and
replay.sh,lockstep.sh,network.shandmultiplayer.sh. Captures can press and release
the mouse (--mouse-down,--mouse-up), run in real time (--realtime) and type into an
edit box (--text NAME=TEXT@SECONDS). - The home page montage has titles: it opens on "Un-Banished", names each shot, and ends on a
card.tools/videos.shadds titles with FFmpeg'sdrawtextwhen the installed FFmpeg has it
(see Titles in docs/develop/VIDEOS.md).
Full changelog: https://github.com/tanepiper/unbanished/blob/v0.3.0/CHANGELOG.md
Un-Banished 0.2.0: Boomtown
Boomtown: read the story of this release, with pictures and videos, on the Un-Banished blog.
Boomtown: large towns run about twice as fast and the GPU does half the work, with no change
to the game's results; mods from Nexus Mods and a mod manager; a new loading screen in the
browser; and a blog. The performance work is described in
docs/PERFORMANCE.md.
Changed
- The engine version is now 0.2.0 (shown as
0.2.0-<build>until the release). - No freeze when the town appears after loading: the ambient sounds, the first music track
and the decals are now prepared behind the loading screen (about 0.5 s on a large town). - Faster loading on computers with more than one CPU core (native builds): resources, sounds,
textures, meshes and the terrain's surface image are decoded on all cores. Starting the game,
opening the main menu, starting a new game and loading a save take 20–55 % less time. The
browser build still loads on one thread. - Large towns run about twice as fast. On a town of 1,024 citizens and 28,000 objects at speed
10, a frame took 94 ms and now takes 43 ms; the simulation part fell from 78 to 29 ms. The
game's results are unchanged: saves and frames are identical to before. - The GPU draws about half as much per frame on a large town. Models and terrain tiles that a
pass cannot see (the shadow map, the water reflection or the screen) are no longer drawn.
What is drawn is unchanged. - Rocks and ore further than 50 to 70 units from the camera are drawn with their simpler
model, as in the original. Before, they always used the detailed one. Nothing else in the
picture changes. - The code is reorganised into smaller parts, with no change to the game. The bit-exact
foundations, the terrain and path finding are now their own crates (banished-core,
banished-terrain,banished-path);banished-gameand the game app group their modules
into folders by topic; the largest files (gameplay.rs,town.rs,start.rs,agents.rs,
render.rs,building_ui.rsand the resource readers inbanished-formats) are split by
topic, and large test modules live in their own files.
Added
- A mod manager,
banished-mods: turn mods on and off and set their order before the game
starts, keep named mod lists, install mods from Nexus Mods, and start the game. - Optional Nexus Mods support. With your own Nexus Mods API key, the Mods menu's Browse tab
(the Steam version's Workshop browser) searches and installs Banished mods from Nexus Mods,
andbanished-cli nexusdoes the same from the command line. See "Mods from Nexus Mods" in
the user guide. tools/compat/: build any version in a clean checkout, play a fixed set of scenarios (a new
game, small, medium and large towns, and continuing another version's saves), and check that
two versions produce identical saves and frames. See
docs/COMPATIBILITY.md.- A
speed Ncommand for headless captures, and thesavegame_sameand
savegame_fields_difftools for comparing saves. - Documentation: the website has new Guide, Develop, Topics and Reference sections. There is a
README for every app and crate, with tested examples; guides to tracing, emulating, porting and
verifying; pages on how the game's parts work; and the Rust API documentation at/api/. - The Rust API documentation is written for readers: plain English, every public item
documented except some struct fields, each crate's README as its first page (its examples run
as doc tests), and the website's colours. Each ported item still names its original function
in one last line; offsets and other evidence are in ordinary comments
(tools/triage/doc_comments.pychecks this). - A new loading screen for the browser version: the Un-Banished logo over a scene from the
game, three short steps to load the game files (where to findWinData, a large Choose files
button, mods), a progress line, and links to the setup guide, problem reports and the source
code. - The website's home page shows a 64-second montage of Un-Banished in motion in place of the
logo: a flight down a river, the trader's boat, a fisher, the market, people at work close
up, towns in autumn and winter, and a year of seasons. Un-Banished recorded it itself
(tools/videos.sh SAVE.sav montage), and the site's other videos are recorded at
1920 × 1080 with the highest video settings. - Documentation for changes meant to change the picture: how to predict what will change and
prove withcompare.sh,imgdiffheat maps and close-ups that nothing else did
(docs/develop/VISUAL-CHANGES.md), with example heat maps
and close-ups made bytools/screenshots.sh --visual-change BASE NEW. The tracing guide now
explains how to follow a field to where it is written, and the building guide how to work in a
git worktree. - A blog on the website with release notes told as stories, with pictures and videos:
"First Settlers" (0.1.0) and "Boomtown" (0.2.0). - A cinematic camera for headless captures, separate from the game camera: keyframed paths
(--camera EYE>TARGET@T) and a camera that rides with a citizen, a boat or an animal
(--camera-follow), keeping its view clear of roofs and trees. New videos of people at work,
the trader's boat and a river flight (tools/videos.sh: farmer, labourer, vendor,
fisher-closeup, boat-shoulder, river-flight). The game, the game camera and saves do not
change. - Captures can hold camera keys (
--hold RotateLeft@START-END) and follow a citizen
(select citizen N,select profession NAME N, then--press buttonFollow). New
tools/videos.shmodes:big-town,orbit,follow-citizen,riverandfishing. - Short videos of the game, recorded headlessly with
tools/videos.sh(see
docs/develop/VIDEOS.md), and more screenshots of the game and the
viewer.
Fixed
- Trader boats were not drawn: merchants arrived and traded, but their boat was invisible on
the river. The boat is now drawn with its hull, cargo, oars and merchant. - Headless captures could save on a different frame from run to run, because they waited a
varying number of frames for the save's preview image. They now wait for it, so two runs save
the same state.
Full changelog: https://github.com/tanepiper/unbanished/blob/v0.2.0/CHANGELOG.md
Un-Banished 0.1.0
The first release: the whole game runs, natively and in the browser, on the player's own copy
of Banished 1.0.7.
Added
- Engine. A new engine in Rust with wgpu. It runs natively on Windows, macOS and Linux, and
in web browsers through WebAssembly (WebGPU, or WebGL 2 where WebGPU is missing). It reads the
original.pkgpackages and contains no original code, art, sound or text. - Game files. Readers for the packages, all 170 resource types, meshes, textures, materials,
dialogs, sounds (including a WMA decoder) and save games. - The game. New games and saved games; map generation that matches the original bit for bit;
citizens, households, needs, health and ageing; jobs, professions and production; farming,
orchards, pastures, hunting, fishing and gathering; construction, roads, bridges and tunnels;
trade and nomads; disasters (fire, disease, tornadoes); weather and seasons. - Interface. The original's menus, toolbar, building and citizen windows, utility windows,
event log, notifications, map window, tooltips, options and key bindings. - Saves and mods. The original save format and save folder: towns saved by the original load
in Un-Banished. Autosave. BanishedKit mods (.pkm) through the Mods menu. - Tutorials, scenarios and achievements, as in the original.
- Audio. Music, ambience, positional sound effects and the UI sounds.
- Website. https://tanepiper.github.io/unbanished/, with a setup guide, how the project was
made, and a Play page that runs the game in the browser. - Research and tools. Notes on the original's behaviour in
docs/, with every ported
function cited; an emulator harness that checks the port against the original's own
functions; a frame profiler (BANISHED_PROFILE) and profiling scripts.
Fixed
- A construction site could not be selected (#1), and an orchard could not be selected once its
trees grew (#2). - Changes in building windows did not show while the game was paused (#3).
- After loading a save, citizens who were walking stood still, so workers did not return to a
stopped and restarted workplace (#4). - The browser version ran out of memory in Firefox with WebGL (#7).
- The game paused for about 50 ms every few seconds (#5); per-frame costs and model texture
memory are also lower.
Known issues
- There are no ready-made downloads; you build Un-Banished from source (see the setup guide).
- A few behaviours still differ from the original. They are listed in
docs/DEVIATIONS.md and in the
issues.
The changelog is in CHANGELOG.md. Setup: the setup guide.