Copyright (C) 2026 Michael Slater. Banners of Yunhe is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or (at your option) any later version. It comes with no warranty. The full licence is in COPYING in the source and in every desktop download.
banners-of-yunhe-1.1.0-source.tar.gz is on https://retro.theiguru.au/yunhe/, in Heisenbergs Files on the BBS and in the yunhe folder on the anonymous FTP.
src/sim/ is the game itself: the campaign rules, battles, the computer houses and saves. It draws nothing and uses one seeded random number stream, so the same seed and the same orders always give the same game.src/ui/ is the interface, in React, with PixiJS drawing the map and the battlefield. All the artwork is painted by the program at run time; see Adding artwork to replace it with images.data/campaign.json is the starting campaign.electron/ wraps the same build as the desktop edition with Electron.You need Node.js 22 or newer.
npm install npm run dev # development server npm run build # type-check and build the browser edition into dist/ npm run dist:linux # desktop: AppImage and .deb in release/ npm run dist:win # desktop: Windows installer (on Linux this needs wine and makensis)
The built browser edition in dist/ is static files only. It needs no server code or account.
npm test # the rules: acceptance cases and long computer-only campaigns over many seeds npm run test:browser # builds the game and plays it in headless Chrome npm run test:desktop # starts the desktop app and checks it plays
DECISIONS.md in the source records how unclear points in the design were settled.