Neo Angband 0.21.0
Pre-releaseWhat you can download
| Platform | File |
|---|---|
| Windows (installer) | Neo Angband Setup 0.21.0.exe |
| Windows (portable, one file) | Neo Angband-0.21.0-portable.exe |
| macOS | .dmg, or the .zip if you prefer to unpack it yourself |
| Linux | .AppImage (no install), .deb, or .tar.gz |
| Self-hosting | neo-angband-web-0.21.0.zip - static files, any web server |
The portable Windows build and the AppImage need no installer:
download, run, and the game keeps its saves in a folder beside itself.
These builds are not code-signed
There is no Apple Developer identity or Windows certificate behind this
project yet, so your OS blocks the first launch.
Windows is one click: SmartScreen says "Windows protected your PC",
choose More info then Run anyway.
macOS is not one click, and the dialog it shows you does not contain the
way through - it offers only Done and Move to Trash. Do this:
- Drag the app out of the
.dmg, then double-click it and press Done
on the refusal. This step is required: it is what makes the permission
below appear, and it expires about an hour later. - Open System Settings -> Privacy & Security and scroll to
Security, near the bottom. - Press Open Anyway on the line naming Neo Angband, authenticate, and
launch it again.
Or, the same decision in one command:
xattr -d com.apple.quarantine "/Applications/Neo Angband.app"
The old right-click -> Open trick does NOT work: Apple removed that
bypass in macOS 15 Sequoia.
On Apple Silicon take the arm64 build. The x64 one is for Intel Macs,
not a fallback - Apple is withdrawing Rosetta 2, so on a current Mac it is
likelier to refuse to launch than to run slowly.
If that trade is not one you want to make, build it yourself -
docs/INSTALL.md - or play in the browser, which needs no trust decision.
Your save
Saves survive an update. Every save-format change ships the conversion that
reads the version before it, and a save this build cannot open is left
untouched rather than replaced.
Current state of the project at version 0.21.0 - the modding-onboarding
release. Nothing about the game's rules changed; what changed is how much you
have to read before you can modify them.
Added
- A
registry:storediscount-roll seam (StoreBehaviourRegistry.registerDiscountRoll,
StoreFacade.setDiscountRoll), alongside the existing stack-size seam. Lets a mod restore
a store's price-discount roll; core installs no handler, so no store discounts anything
by default. feature-restorationadded to the recommended first-party mods
(mods/registry.json): restores spells and mechanics later Angband
versions quietly dropped, each behind its own opt-in toggle (default off).- Six modding tutorials (docs/modding/tutorials/),
each teaching one idea and ending in a visible result - from changing a single value to
running code behind a player-facing switch. Every tutorial's finished mod is a real folder
undersamples/tutorials/, composed against the shipped game data on every test run and
checked against the game's own mods-folder reader, so a tutorial cannot go quietly stale
and its finished mod cannot stop being installable. Copy any of the six intomods/to
run them without typing anything. - Feature restoration written up as a named
concept: vanilla stays vanilla, and dropped mechanics come back as optional mods - with the
research rules (name the version, respect the modern surrounding system, one switch per
feature, everything off by default) that keep a restoration honest. - The character dump names the enabled mods. A dump is what players hand each other, and
a mod's change is indistinguishable from a core bug in one. Written only when a mod is
enabled, so an unmodded dump is unchanged.
Changed
- The README is rewritten for players rather than engineers. What the project is, why you
might want it, and how to play come first; parity methodology, architecture and provenance
move behind links. A prominent "want to make a mod?" path now leads to a tutorial rather
than to an API reference. AI_POLICY.mdrenamedAI_USAGE_POLICY.md, revised for a clearer disclosure section
and a narrower, engineering-focused correctness claim.- The item and monster tutorials now say what a mod gets for free, and what it does not.
An item you add is eligible for every ego, brand, rune and quality enchantment that applies
to its kind, from the moment the mod is on - a Padded Jerkin of Resist Fire needs nothing
declared. A monster you add carries its own colour but inherits its glyph from its base, and
in a tile set it keeps drawing as a letter until a mod supplies a tile. Both are now written
down where the beginner meets them.
Fixed
- The tutorials' finished mods could not be installed. All six shipped in folders whose
names did not match their manifest ids, and the game refuses such a pack - so the one thing
a reader is most likely to try, dropping the finished article intomods/to compare against
their own, failed. The folders are renamed and the test suite now drives the game's real
mods-folder reader rather than assembling the packs itself. - Two doc claims the code had already outgrown.
docs/MODS.mdand
docs/modding/MOD_REACH.mdstill said a mod installed from disk could supply data only and
that record layering reached 24 of 44 files. Both gates closed some time ago - a mod folder
shipsplugin.jsand reaches the capability registries from wherever it was installed
from, and every record of every shipped file is addressable. The stale passages are marked
as the before-picture rather than deleted, since the reasoning still explains the design.
Known limitations
- A mod cannot add one entry to a list. Field patches can set, merge, add or remove a flag
and do arithmetic, but they cannot append to an array - so putting a new item in a shop's
stock means replacing that shop's whole list, and two mods cannot both do it. Everything
else about an added item composes cleanly with other mods; this does not.
Found something that does not match Angband 4.2.6? Open an issue or come and say so in the Discord.