Skip to content

OpenSE4 0.14.0

Pre-release
Pre-release

Choose a tag to compare

@lowlevelmetal lowlevelmetal released this 14 Oct 20:24
· 132 commits to main since this release

OpenSE4 is an open-source engine for Space Empires IV Deluxe. It plays the classic game on your own installed copy of Space Empires IV Deluxe and contains nothing from the original game.

OpenSE4 is not affiliated with, endorsed by or sponsored by the game's publishers.

What changed since 0.13.0

This release fixes the reports a player filed on GitHub after 0.12.0 (issues #11 to #18, and a follow-up on #5). Each one was first checked against the original game.

While checking #18 we found that the tool we use to read the original's code had been cutting part of many routines off. With a complete reading, we checked again every rule in our notes that said the original never does something, and corrected the ones that were wrong.

From the players' reports

  • Movement after a battle (#13). A ship that loses engines has its movement for the turn cut to its new maximum at once, in battle or otherwise, whoever's turn it is. A damaged ship told to move now goes straight away with what it has left. Before, the report could show more movement than the maximum (4 / 3), and the ship could then lose all of it.
  • Claim every system we colonize (#18). This Empire Option now works as in SE4: founding a colony with it on claims the colony's system, for computer players too. The systems of every starting planet are claimed when a game begins.
  • Seekers keep a battle going (#17). As in the original, a battle goes on while any missile is still flying, even when its launcher is gone, and a missile goes when its target does. No stray dot is left on the Strategic Combat map. The map draws ships and missiles as small squares and planets as outlines, as SE4 does.
  • Right-click on an empire's flag (#15) in a ship, base, planet or unit report opens that empire's Race Report. Its first page now shows what the original's does: treaty, trade and mood, then age, culture, demeanor and home world.
  • Damage counts components (#16). The Ship Report's Damage line, the Comps page and the Ships window show destroyed components out of the design's total, with the original's red and green bar. Repair counts the same way. Pointing at the line still shows the structure lost.
  • A taller designer (#14). On screens of 1024x768 and up, the Ship Design and Unit Design window is as tall as the list windows, and the extra room goes to Warnings and Component Details. A component's whole report, damage by range included, fits without scrolling. At 800x600 the window keeps its old size.
  • What research brings (#11). A right-click on a research project or an area opens the area's report (since 0.13.0). The report now also lists what each later level brings, so you can see when the next kind of armor comes.
  • Units' Amount list (#12). It was checked at every text size and layout, and all its choices show.
  • Only Latest and Upgrade (#5). These still group parts as the original does, by the family number in the data. In the stock data, Phased Shield Generators share a family with Shield Generators, and Small Emissive Armor shares one with Small Armor. Untick Only Latest to see them all.

Rules corrected against the complete reading

  • A colony taken in ground combat keeps its slow (emergency) mode. Its queue is emptied as in a treaty transfer.
  • Subjugated computer players refuse any trade or gift that holds a treaty.
  • Computer players start with their own strategy list from the AI files, not with the default list.
  • The original's command line. opense4 GAMEFILE PASSWORD [PLAYER [MODFOLDER]] hosts a play-by-e-mail turn with the host password, or opens player N's turn after checking the data files, as in SE4. See README.md and docs/MULTIPLAYER.md.
    • A shortcut that passed only a mod folder this way now needs --mod=.
  • Formation slots: the formation report no longer shows a leader's design type, which the original never uses.

The rules are written in docs/spec/. What OpenSE4 still does differently on purpose is listed in docs/PARITY_GAPS.md.

Compatibility

0.14.0 does not play with 0.13.0. Network and e-mail games need everyone on 0.14.0 (protocol 9), because rules that each computer applies changed. 0.14.0 loads 0.13.0's saves (save format 10), and older ones back to 0.7.0. Games continued from a save play by the new rules from then on. The computer players play somewhat differently. Every player in a network game must have the same game-changing mods.

Downloads

File For
OpenSE4-0.14.0-windows-x86_64-setup.exe 64-bit Windows 7 SP1 to 11: the installer
OpenSE4-0.14.0-windows-x86_64.zip 64-bit Windows 7 SP1 to 11: the same programs to run from any folder
OpenSE4-0.14.0-linux-x86_64.tar.gz 64-bit Linux on PCs with glibc 2.34 or later (Ubuntu 22.04, Debian 12, Fedora 35, SteamOS 3 and newer)
OpenSE4-0.14.0-linux-aarch64.tar.gz 64-bit ARM Linux with glibc 2.34 or later (Raspberry Pi OS 64-bit, Asahi, Ubuntu and Debian on ARM)
OpenSE4-0.14.0-linux-armhf.tar.gz 32-bit ARM Linux (ARMv7 with NEON) with glibc 2.34 or later (Raspberry Pi OS 32-bit)
OpenSE4-0.14.0-SHA256SUMS.txt SHA-256 checksums of the downloads

Every download holds five programs:

  • the game (opense4);
  • the dedicated server for network and play-by-e-mail games (opense4-server);
  • a data checker (opense4-datacheck);
  • the saved-game converter (opense4-convert);
  • the modding tool (opense4-sdk).

It also holds the Hegemon mod (mods/; turn it on in the Mods window), the modder's documents and examples (sdk/) and, in the zip and tarballs, PORTABLE-README.txt. Libraries, our own fonts, the manual and the lessons are built in.

Running it

  • Windows: run the installer, then start OpenSE4 from the Start menu, or unpack the zip and run opense4.exe. Neither is code-signed yet, so Windows SmartScreen may warn the first time ("More info", then "Run anyway").
  • Linux, on a PC or on ARM: unpack and run ./opense4, or run ./install-desktop-entry.sh once to start it from your desktop's application list. On ARM boards without a Steam install, copy the game's files from another computer (see docs/SETUP.md).

The game looks for a Steam install of Space Empires IV Deluxe. See README.md for other locations and command-line options (opense4 --help). Modders start with sdk/docs/README.md.

Known limitations

  • This is still an early build, marked as a pre-release.

  • Details still being checked: where the original's behaviour couldn't be pinned down, OpenSE4 makes a stated choice. These choices are listed as open questions in docs/spec/, for example how the original treats a mine group chosen in battle, or the default names past the tenth fleet.

  • Original .map files: reading them has only been tested with maps OpenSE4 wrote, since no map file from the original was at hand. Reports with real map files are welcome.

  • Not yet tested on real hardware:

    • Windows 7: only under Wine, with each program's imports checked against what Windows 7 provides.
    • ARM: only through emulation and native ARM test runners; the game window hasn't been opened on a real ARM graphics chip yet.

    Reports are welcome.

  • Scripts run on MicroPython: in-game scripts use a built-in, sandboxed Python (MicroPython with additions), so libraries such as numpy are only available to external bots.

  • Rules mods near their time limit: a rules mod that runs very close to its per-turn time limit could, rarely, replay a turn slightly differently.

  • Hegemon rarely finishes off an empire within 150 turns; it wins by growing far ahead.

  • Following warps: the view follows your ships through warp points in local, hotseat and e-mail games, but not yet for players who join someone else's network game.

  • In network and e-mail games, every battle is resolved strategically, as in the original.

License

OpenSE4 is free software under the GNU General Public License, version 3 or later. The Noto Sans fonts are under the SIL Open Font License. THIRD_PARTY_NOTICES.txt in each download lists the bundled libraries and their licences, among them MicroPython and miniz.