====== 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://kalretro.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 [[yunhe:artwork|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.