Repository navigation
0.1.13 adds Bonus Levels, CE Settings and Help & Info to the Onslaught CE menu page and a Photo Mode row to the pause menu, and changes aimed at a Windows player's reports: the pause-menu mouse, the game clock after Alt-Tab, and the system cursor in fullscreen. Those three have not yet been seen on a real Windows PC.
Getting 0.1.13
If you have 0.1.8, 0.1.9, 0.1.10, 0.1.11 or 0.1.12: start Onslaught CE as usual. It finds this update, checks its signature and asks you; say yes and
it installs 0.1.13 inside its own folder and restarts. The update leaves your careers and settings where they are, and running the launcher with --rollback
(how) takes you back to the version you had if you need it. (On Linux the update check needs the system curl.)
We ran this update on Linux from 0.1.12, with the real 0.1.12 launcher and a copy of the signed 0.1.13 update files, before publication: it checked the signature, asked, and installed 0.1.13 inside its own folder; the next start was 0.1.13; --rollback brought 0.1.12 back; and every file in the user folder (the career, the settings and the options) was byte for byte the same after the update and after the rollback, apart from the launcher's own log files and its update folder. Updates from 0.1.8, 0.1.9, 0.1.10 and 0.1.11 use the same signed feed but were not run for this release, and no update was run on Windows.
On Linux, the 0.1.8 and 0.1.9 launchers can crash before they ask anything when zenity is not installed and the 32-bit libXrandr
is missing: the dialog they fall back to calls into that library without checking that it is there. If yours closes at once, install
zenity (or your distribution's 32-bit libXrandr) and start it again, or set update_check=0 in ce.ini (in your user folder, ~/.local/share/onslaught-ce by default; --no-update-check or
BEA_NO_UPDATE_CHECK=1 does the same) and download 0.1.13 by hand as below. The 0.1.10 to 0.1.13 launchers check first, show their questions on the terminal when no dialog works, and ask before they install anything.
If you have 0.1.0 to 0.1.7: these cannot update themselves, so download 0.1.13 once by hand:
- Close Onslaught CE.
- Locate your launcher and game user-data folders. The default is
$XDG_DATA_HOME/onslaught-ceon Linux (~/.local/share/onslaught-ceif unset or empty) or%APPDATA%\Onslaught CEon Windows. A custom or relativeBEA_USER_DIRcan put the two folders in different places. Follow the manual migration guide, copy each complete data folder to an independent safe location, and verify each backup before proceeding. - Download the 0.1.13 package for your system below.
- Extract it into a new, empty folder.
- Before launching, keep the same default user-data location if you use the default, or follow the migration guide to prepare a separate working copy and set an absolute
BEA_USER_DIRif you used a custom or relative folder. Then runonslaught-ce(Linux) oronslaught-ce.exe(Windows) from the new folder using the same account. Check that your careers and settings appear, keep the verified backups, and point your shortcut at the new folder.
Never run the old launcher again (why). From then on it updates itself.
New players: download the package for your system, extract it into a new empty folder and run it. You need your own PC
copy of Battle Engine Aquila (testing uses the Steam edition); no game files are included.
What's new
- New rows on the Onslaught CE page in the main menu. 0.1.12 already had this page, with Report a Problem, Cheats, Aquila Prototype and Defence A and B. 0.1.13 adds Bonus Levels (one list for Aquila Prototype, Building Defence and Race Challenge 1 to 5), CE Settings and Help & Info (Controls & Tips, What's Coming, Updates & Rollback, About Onslaught CE and Special Thanks); each row has a hint under the list. The Options page is still the original's. What's Coming lists planned features and their limits; its entries do not start those features.
- Bonus Levels. Aquila Prototype (the demo's level 201), Building Defence (a two-player map for one PC in split screen, as in the original's multiplayer, level 856; player 2 uses the second key set or a second gamepad; the original ships it twice, as levels 856 and 858, which we treat as the same map, so there is one entry) and Race Challenge 1 to 5 (the original's five one-player time trials, levels 901 to 905). None of them advances career progress. A bonus level started here comes back to this list with its row highlighted. Settings can still be saved during play. In our Linux check, saving inside a bonus level and jumping levels from the console left the career file's bytes unchanged; with the guard taken out and a test write standing in for progress made inside the level, two bytes of the file changed. In the Windows 11 virtual-machine check, four of the seven were started from the Bonus Levels list on the exact package: Aquila Prototype, Building Defence, Race Challenge 1 and Race Challenge 3. In each, the level loaded and ran, the pause menu opened and the level was left through it, the list came back with that level's row highlighted, and the career file was byte for byte the same afterwards (same size, same contents, same save time, and nothing added beside it). Race Challenge 2, 4 and 5 were not started on Windows. The Linux release-candidate checks did not start a bonus level; the Linux sentence above about saving and jumping levels comes from a separate check of the career guard on the independently audited tree.
- Photo Mode in the pause menu. In a single-player level the pause menu has a Photo Mode row, so photo mode can be reached from a gamepad; choosing the row closes the menu and turns photo mode on, as F11 does, and the row itself writes nothing (F12 inside photo mode saves a picture, as before). While it is on the row reads End Photo Mode. In the Windows 11 virtual machine F11 hid and restored the HUD, and the pause menu's row read Photo Mode, then End Photo Mode, and did the same (5 of 5 checks). The gamepad route was run with scripted pad input; no physical gamepad was used.
- The pause-menu mouse (fix). The in-game menus now read the mouse inside the centred picture, so the highlight and the items under the pointer agree in the window sizes we tried (1920x1080 and 1024x768, on Linux). A click is judged where it was made: it lands on the row under the pointer even when you click without moving the mouse first, and a late small movement behind the release no longer moves the click to another row. A Windows player reported that the mouse did not work in the pause menu (a bug since 0.1.0). Checked on Linux, with the Windows build under Wine, and in a Windows 11 virtual machine on the exact package: there the highlight followed the pointer in the pause menu and a click chose the row under it, in a window and in fullscreen (11 of 11 checks passed), while the published 0.1.12 failed 8 of the same 11 in the same machine (the highlight stayed on Continue and a click did nothing). The virtual machine's pointer is a virtual tablet and its graphics are drawn by software. Not yet seen on a real Windows PC with a real mouse, or in fullscreen on a real display.
- Alt-Tab and minimizing (change). CE holds the game clock while it waits for a minimized window, which avoids the fast-forward when you come back (the original can do that on a fast PC;
BEA_PORT_MINIMIZED_CLOCK=runbrings that back for comparison). It is off during recordings and replays. CE holds the clock only while the game waits for a minimized window, which is what a fullscreen Alt-Tab does on Windows; an Alt-Tab that does not minimize the window (a windowed game, or Linux's borderless fullscreen) never makes the game wait, so there is nothing to hold. Measured once on Linux, with a simulated 10-second minimize. In our one Windows 11 virtual-machine run of 0.1.12 the original did not catch up either, so the virtual machine cannot show whether this change helps. In the virtual machine the exact package was minimized and restored: the game stopped drawing while the window was away and drew again after it came back (3 of 3 checks passed). The published 0.1.12 passed the same three, so this check cannot tell the two apart, and it cannot read the game's clock, so it cannot show whether a fast-forward is prevented. Not tested on a real PC. - Fullscreen cursor (Windows fix). In fullscreen the pause menu shows the game's own cursor only, as the original does; the system arrow no longer appears next to it, and it returns on the desktop and in windowed mode. The same change covers every menu while the game is fullscreen, including the front end's mission list a Windows player reported this morning (the virtual machine's check looked at that page too); in a window the Windows arrow still shows, as in 0.1.12. This is Windows-only behaviour, so it cannot be seen on Linux. In the Windows 11 virtual machine, on the exact package, in fullscreen the pause menu and the mission list showed the game's own cursor and no Windows arrow, the arrow was back on the desktop, and in a window the Windows arrow and the game's own cursor both showed at the pointer (5 of 5 checks passed); the published 0.1.12 showed both cursors together in fullscreen in the same machine (3 of the 5 checks failed). Not yet seen on a real PC.
- The HUD sits in the screen's corners on wide screens in single-player play (it kept the 4:3 columns before). Put
hud_anchor=0ince.inito keep the columns. Off in multiplayer, recordings and replays. Looked at on Linux, offscreen, at 1920x1080, 2560x1440 and 3840x2160 (16:9), 2560x1080 (21:9) and 1920x1200 (16:10); not looked at: 32:9, screens under 1080 lines, split screen (unchanged), any real display and any picture of the corners on Windows. In the Windows 11 virtual machine the screen is 1280 x 800, so the 1920 x 1080 and 2560 x 1080 windows are larger than it and the corner groups cannot be seen in its pictures: there the game's own layout line confirmed that the groups sit in the screen's corners at both sizes, and, withhud_anchor=0, in the 4:3 columns shifted in from the corners at 2560 x 1080; a 640 x 480 window showed the whole original layout. The corner pictures are from Linux. - Sharper text is off by default again. 0.1.11 made it the default; it looked out of place beside the original's soft art. Put
sharp_ui=1ince.inito turn it on. - Commander map (experimental, off by default).
commander=1ince.ini; press M in a single-player level for a map where you give squads Move, Advance, Hold and Fall back orders. Run only on Linux so far; there is no gamepad control for it, and no Windows run has switched it on. The Windows 11 virtual-machine check of the exact package looked at the default instead: with it off, pressing M in a level does nothing and Esc opens the ordinary pause menu. - Music worker. A finished music worker's thread handle is now closed (a small handle leak on Windows). It is not shown to be the cause of any reported stutter.
- A new line in the log for sound problems. Before each
summary:line the log now has anaudio-obs:line of 17 numbers that count what the music path did: how many music streams played at once, how many times a piece of the music was played again without being refilled, how late the music worker was, and gaps in the sound device's callbacks, plus the device numbers Windows granted (never its name). It adds counters and one clock read in the sound code, and recorded game runs are identical to before; whether it changes what you hear on a real device was not tested. On Linux (dummy audio), three starts of the game without the music fix showed two music streams at once and seven starts with it showed one; in four of the five with-fix starts that print the new counters every counter that flags a problem was zero (a longer run showed one overwritten half); the Windows 11 virtual machine's game logs carry the line too (its numbers there were not analysed). It cannot tell you what you heard, so say what you heard and when when you report a problem.
In the faithful modes (recordings, replays and the checks below) gameplay is the port as before. The changes above, the corner HUD on wide screens, the clock while minimized, the pause-menu mouse and the new menu rows, are Onslaught CE additions on top.
Fixes
- Documents. The project README names every case in which mods are switched off (a deterministic clock, input tapes, probes, recordings, pilots and autopilot, and network host, join or handoff), so a test that should load a mod knows it must run live on the real clock. The package
README.txtand the release pages were brought up to date, including the migration steps for a custom or relativeBEA_USER_DIR.
Downloads
- Linux i686 package
- Windows i686 package
- Stable latest links: Linux, Windows
ce-update-v2.jsonand its.sigare the signed update feed the launcher reads; you don't need to download them.
Linux needs the documented 32-bit Vulkan driver and system libraries. The Windows executable is unsigned, so SmartScreen may warn you (More info, then Run anyway).
Validation and limits
-
What changed since the independently audited tree, checked by a reviewer who did not write it: the pause-menu click fix, the audio observation counters, and text; no other game or port code changed. At object level, 6 of 395 Linux objects and 6 of 393 Windows objects differ from the audited build's and every other object is byte-identical, compared with the same version label on both sides so that only the sources differ (one of the six only includes a changed header and differs in debug information alone). Eight recorded comparisons (five pause-menu tapes, levels 100 and 221, and the win-and-retry recording) and the front end's 19 recorded frames are identical to the audited build's. This compares builds and recorded runs on Linux; it ran nothing on Windows.
-
The recorded win-and-retry run, compared with the original game's own run (a Linux run of the packaged game; it is not a Windows result): every scalar row (the random-number state, score, life, position, level and events among them) equals the original's at every Present where the original recorded one (17 rows are unavailable in its recording). The battle engine's object differs from the original in 263,220 bytes, all of them inside 32 padding fields, which the original itself leaves different from run to run (two runs of the original differ from each other in 628 bytes of the same fields); the other two compared objects are equal. Pointer values are not compared (834,626 pointer observations unverified). Against the capture of the 0.1.12 release candidate (whose packages became the 0.1.12 release) every scalar row is identical. [Source: the independent reviewer's receipt and review, retail32-receipt-0.1.13.json and win1-retail32-review-0.1.13.md.]
-
Two clean builds. The packages were built from the public export twice, at different paths in clean home folders, with the dependencies built from scratch by the pinned toolchains. Both builds' Linux tarball and Windows zip are byte-identical, and the bounded scan for the one excluded source block found no match (0 of 34 windows in each program; it is not a general proof that no original-game bytes exist).
-
Gameplay against the original, on these exact packages (Linux; recorded keyboard and mouse tapes; offscreen and silent): levels 100, 200, 221, 322, 400, 431, 512, 521, 611, 800 and 860 are equal to the original's on every available reference row (
RC-REPORT.txtgives the row counts, including rows the original's reference does not have). The Windows package ran under Wine on Linux for level 100 (equal to the original to Present 3000) and for the launcher (to Present 600). A wide-screen run (level 100 requested at 1280 x 720, twice to Present 3000; the display mode was not observed) repeats exactly; wide modes are not compared with the original by design. -
Saves and user folders. With no
BEA_USER_DIRand an isolated home, the Linux and Windows packages each saved a career in their default user folder, and the two careers are byte-identical (10,004 bytes). In the Windows 11 virtual machine the exact Windows package also made a new career from a recorded session, byte-identical to the Linux one. -
Update feed.
ce-update-v2.jsondescribes exactly these packages, verifies with the launcher's public key, and there is nolatest.json. -
Test suites on the exact source (Linux; no original-game data and no running game): all 130 test files of the source tree this release is exported from (84 of them are in this repository) were run on the release commit; 128 pass as designed and the other two are not unit suites (a historical witness that needs the old launcher's source as an argument, and a game-run driver that needs a level name and a game folder); 1,378 tests were counted.
-
Clean rebuild from the public repository. A clean clone of the public repository at the release commit, built from scratch, produced both packages byte for byte as the release candidate's (the Linux tarball and the Windows zip; all 35 Linux and 25 Windows comparison lines identical). It shows that the public source builds these packages; it ran no game.
-
Windows 11 virtual machine, exact zip. The exact Windows zip was installed and run in a Windows 11 virtual machine with software graphics, a virtual pointer and no internet connection, and all 30 of its checks passed: it started and quit cleanly; the game's log file was written, and a session was recorded and replayed twice with identical results; the opening film played, also while the window was minimized; the file-system checks (non-English folder names and case-sensitive folders among them) passed; level 110 loaded, played and closed; the pause-menu mouse, minimizing and the fullscreen cursor behaved as described above; four Bonus Levels started and left the career file untouched; saving over an existing career asked first, Yes replaced it and No left it alone; a new career made from a recorded session equalled the Linux one byte for byte; the HUD sat in the corners (by the game's own line); and the Photo Mode row, the sharper-text setting and the commander key behaved as described. Four earlier full runs of these checks stopped early. In three of them, one check's game window did not get the keyboard focus while a Windows notification was on the test machine's screen, or had been just before (in the third, the test tool recorded that the notification's own window held the foreground throughout); in the fourth, the minimize-and-restore check logged its minimize 45 seconds late, with no notification in its pictures. The test tool was changed after the second run to stop a check within about ten seconds if the game does not report having the keyboard and to record which program holds it (that is how the third run's stop was seen), and after the third to look for such a notification before each check and close it when it is on the screen. The fourth run's tool also pressed the Alt key before starting each program, which no other run did; we do not know whether that mattered. The fifth full run, on the same package, did not press it and passed all 30 checks; the notification was closed once in it.
-
Migration. A 0.1.13 install in a new empty folder beside a 0.1.12 install whose user folder held four stand-in career files left the old install and those files unchanged and listed all four in Load Game; the update check found no feed (the machine has no network), and
--applywas refused as documented. It was run from 0.1.12 only; from 0.1.11 and older it was not run. -
After publishing. On Linux, the published 0.1.12 launcher found the signed feed at the release's latest-download address, verified its signature and offered 0.1.13 (a 6.9 MB download) in its update prompt, which the test answered on a private X display; it then downloaded the package the feed names and installed it beside itself (the installed copy then reported V0.1.13), and
--rollbackreturned it to V0.1.12. Apart from the launcher's own log files and its update folder, the user folder was byte for byte the same after the update and after the rollback, and the launcher contacted only the release's three addresses (the feed, its signature and the package).
Not tested: a real Windows PC of any kind (Windows was run only under Wine and in a Windows 11 virtual machine with software graphics, a virtual pointer and no internet connection), a real mouse on Windows, Alt-Tab and minimizing on a real PC, fullscreen on a real display, Windows versions other than Windows 11, non-Steam editions of the game, physical gamepads (including a real second gamepad for Building Defence), flight sticks and rumble motors, physical AMD, NVIDIA or Intel graphics on Windows (including the player's multi-monitor AMD PC), 32:9 screens and screens under 1080 lines (for the corner HUD), other Linux distributions with these packages, audible sound on a real device, updating from 0.1.8, 0.1.9, 0.1.10 and 0.1.11, the Wayland-only and X11 window paths, the folder-picker and message-box dialogs on a real desktop, opening a browser from Report a Problem, old Linux distributions with these exact packages (only an earlier candidate was run there), the release binaries' own update prompt (it can only be tried when a newer release exists), a real GitHub redirect on Windows and native Windows updating, the virtual machine's check that the launcher leaves <install>.old-*, <install>.download-* and <install>.unpack-* folders and files beside the install alone (the test tool could not start that check there; the launcher's source code is unchanged from 0.1.12), and any Internet play (there is none in this release). RC-REPORT.txt, attached to this release, lists what the release candidate's runs did not exercise.
If a problem occurs, choose Onslaught CE > Report a Problem (or open an issue on the Issues page), say what happened and roughly when, and attach onslaught-ce.log from your CE user folder (details). Look the log over before sharing it.
Related work: Companion, Godot rebuild, decompilation, preservation documentation.