Kalgoorlie Retro Docs

Documentation for the Kalgoorlie Retro BBS, its games and servers

User Tools

Site Tools


yunhe:building

This is an old revision of the document!


Banners of Yunhe source and licence

Licence

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.

Getting the source

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.

What it is written in

  • TypeScript throughout.
  • 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.

Building

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.

Tests

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.

yunhe/building.1794044771.txt.gz · Last modified: by 127.0.0.1