Open-source project
daid/EmptyEpsilon avatar
daid/EmptyEpsilon

EmptyEpsilon: the Artemis bridge simulator that grew its own rules

Open source bridge simulator. Build with the SeriousProton engine.

871 stars225 forksLuaGPL-2.0

At a glance

What is it?
EmptyEpsilon began as a cross-platform open source take on Artemis Spaceship Bridge Simulator and has since diverged with a Game Master mode and multiple AI factions, built on the author's SeriousProton engine with SDL2 doing the heavy lifting. The interesting parts for a reader are the version-locking requirement for multiplayer, the scripting model that ships with the archive, and the project's unusual stance on contributions.
Who is it for?
Use EmptyEpsilon if you want to run a bridge simulator you control, either for a community game night or to script your own scenarios, since it ships official builds for Windows, Linux and Android and includes a script reference in each archive.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 8 days ago.
What is it written in?
Mainly Lua, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What it is and where it came from

EmptyEpsilon started as a cross-platform, open source clone of Artemis Spaceship Bridge Simulator, and the README is careful about the word. It says the project has already deviated from Artemis with new features and gameplay, including a Game Master mode and multiple AI factions. That distinction matters because a bridge simulator is a specific genre. Players each crew one station on a starship, and the ship is in trouble, and the crew has to talk to each other and act on incomplete information. The Artemis implementation made that a commercial product with a large scenario library, and the deviation means EmptyEpsilon is a different game with the same premise rather than a reimplementation of the same one. The project states the goal of working on several platforms, with Windows, Linux and Android fully supported.

The engine underneath is the author's own

The game is written in C++ with the SeriousProton engine and uses SDL2 for most of the heavy lifting. That is the structural choice that shapes everything else. A general purpose engine would have been the easier path, and the author instead maintains a purpose-built one, which means the renderer, the input handling and the platform layers are all in the same repository tree rather than pulled from a framework. The topics on the repository list both cpp and lua, which reflects the split between the engine and the game logic: the primary language field says Lua, and the root listing includes artemis_mission_convert_template.lua alongside scripts and script_docs directories. The consequence for a reader is that the scripting layer is where the game is actually configured, and the C++ is where the game is actually rendered.

Installs are three different kinds of artefact

Official releases for Windows, Linux as a deb package, and Android at beta quality are available from the project website or the GitHub releases. The three formats are not equivalent and the differences are the practical part. Windows releases are self-contained ZIP archives that need no installation, so you expand the archive and launch EmptyEpsilon directly from the expanded folder. The deb package requires freetype and SDL2 to be installed on your distribution. The Android APK is built for the armeabi-v7a ABI and should launch on most Android phones and tablets with ARM processors, with the wiki covering ARM v8 and x86 builds, and the official ARM APK will not install on Intel x86 or x86_64 Android devices but does work on Android Emulator images that support ARM ABIs. There is a desktop entry file and a metainfo file in the repository root, which is the packaging metadata for a Linux desktop entry.

The version number has to match on every machine

One line in the download section is the operational rule for anyone running a public game: make sure the host and all players run the same version number of EmptyEpsilon, otherwise players will not be able to connect. That is a hard constraint on how you deploy. It means you cannot roll a new build onto the host while players are on the old one, it means a public session has a version window, and it means contributors who build from source need to agree on which build they are using. The consequence for an organisation running regular sessions is that the version is a deployment artefact rather than a detail, and the documentation points at the website for information on the Discord and forum communities and for regularly planned hosted game sessions.

Options, scripting and the per-version reference

Settings live in an options.ini file, located either in the .emptyepsilon directory of your user home or in the same directory as the EmptyEpsilon launcher, and the wiki has a preferences file page for the details. Scripting is where the game earns its keep, and the documentation is unusually specific about where to find it: the website has a mission scripting guide, and the scripting API reference is the script_reference.html file included in your version's downloaded archive, which is specific to that version of EmptyEpsilon. That detail is the practical reason the version lock matters twice over. A scenario written against one version's reference may not behave the same on another, so a scenario library is pinned to a build. The website also carries stations profiles for learning the gameplay fundamentals, and the game has a built-in tutorial mode from the main menu that covers each crew member's interface and responsibilities.

Headless servers, HTTP API and the wiki surface

The wiki covers a wide operational range, and the topics listed give a sense of the surface a host has to learn: the preferences file and command line options, hardware and DMX support, more complex internet play configurations like headless and proxy servers, enabling and using the HTTP API server, and adding ship templates and models. The HTTP API server is worth calling out because it is what turns the simulator into something a script can drive, and the proxy server configuration is what lets a game sit behind a network that is not directly reachable. There is a netboot directory in the repository, a docker directory, a packs directory for downloadable content, a scripts directory and a www directory for the web side, plus a discordBot directory that suggests the community tooling is integrated into the same tree.

The contribution rules are stated bluntly

The contributing section is unusually direct, and it is part of what the project is. The general rules start with the line that this project is a dictatorship: yes, it is open source, but the maintainers would rather spend time building what they like than argue with people. The second rule asks for precise issues, explaining why you posted the issue, what you expect, what is happening, why the feature is worth the development time, and which operating system is affected, with unclear issues subject to the first rule. The third rule softens it, saying that input, feedback and suggestions from players are valued, and that ideas or beer donations are welcome. The code-specific guidance adds that the code is an undocumented mess at this point and that the work is on fixing that, and it sets naming conventions: member values with underscores between words, classes in HighCamelCase and functions in lowCamelCase. One pull request changes one thing.

Where EmptyEpsilon is the wrong choice

Four limits apply. It is a game, not a library or a service, so the code is arranged around a game loop and a rendering engine rather than around a reusable API, and the README says plainly that the code is an undocumented mess. The multiplayer model constrains deployment hard, because every participant must run the same version and the Android build is described as beta quality, which narrows the audience for a community game considerably. The scenario content is a real dependency for a good session, and the project says it wants contributions of models, sound effects and music rather than code, with donations going toward buying better assets, which means the content library depends on a maintainer with a budget rather than on the community. And the project has no formal design direction, which the README states as a feature: there is no clear goal where the game is going, so you are joining something whose direction is a matter of taste and a matter of who is around.

Editorial conclusion

Use EmptyEpsilon if you want to run a bridge simulator you control, either for a community game night or to script your own scenarios, since it ships official builds for Windows, Linux and Android and includes a script reference in each archive. Do not expect a drop-in replacement for Artemis, because the project says it has already deviated with new features and gameplay, and the multiplayer requirement that host and players run the same version number means a fork and an upstream release cannot share a session. Verify first which version every participant will run, that your platform has a matching build, with Windows as a self-contained archive, Linux as a deb needing freetype and SDL2, and Android described as beta quality, and that you read the options.ini location rules before assuming your settings will be found.

Frequently asked questions

What is EmptyEpsilon and how does it relate to Artemis?

It started as a cross-platform open source clone of Artemis Spaceship Bridge Simulator, but the README says it has already deviated from Artemis with new features and gameplay, including a Game Master mode and multiple AI factions. The game is written in C++ with the SeriousProton engine and uses SDL2 for most of the heavy lifting.

How do I install EmptyEpsilon?

Official releases are available for Windows, Linux as a deb package and Android at beta quality. Windows builds are self-contained ZIP archives that need no installation, the deb requires freetype and SDL2, and the Android APK targets the armeabi-v7a ABI.

Why do all players need the same version of EmptyEpsilon?

The README states that the host and all players must run the same version number, otherwise players will not be able to connect. That makes the version a deployment decision for anyone running public games.

Where is the scripting API reference?

The script_reference.html file included in the archive for your version of EmptyEpsilon, which is specific to that version. The project website also carries a mission scripting guide for learning to write scenarios.

What licence is EmptyEpsilon released under?

GPL-2.0, with the LICENSE file at the repository root. The most recent releases are tagged EE-2026.09.22PR from 2026-09-22 and EE-2025.06.27PR from 2025-06-27, and the last push to the repository was on 2026-10-15.

Official sources

  1. daid/EmptyEpsilon on GitHub
  2. License: GPL-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/daid-emptyepsilon.svg)](https://hysenlabs.com/projects/daid-emptyepsilon)

Was this useful?