Liberate your games from platform-dependent bundled dependencies. Maximize platform compatibility and longevity.
Many games are built in a way that allows more platforms than advertised.
Free your games from these artificial restraints and preserve your games across many different platforms. IndieRunner provides a universal CLI launcher for a variety of independent games built with frameworks like FNA, XNA, LWJGL, LibGDX, HashLink, GZDoom, ScummVM, Love2D. It selects a runtime, configures it as needed, and takes care of outdated or incompatible bundled libraries.
Stop worrying about bundled dependencies and maximize the portability and longevity of your project, without sacrificing the ability to commercialize the core of your creation.
While not ready yet, we are working on offering mentoring and infrastructure for indie game developers to make use of this project to maximize their reach on open source platforms.
- many platforms, even some that haven't been invented
- many architectures, even not-yet invented architectures can be leveraged
- preservation - as your project doesn't depend on the good will of a company to maintain a proprietary library, your application can be run far into the future, as long as there is someone willing and able to maintain the libraries and runtime that drive it
- You don't have to choose between going all-out opensource, losing control over the proliferation of your software, and the closed-source proprietary way that loses portability and longevity. Look at some examples and explanations below to see what may suit your project to leverage both.
The following selection of high profile games have been working with IndieRunner (and still are to the best of my knowledge);
- Balatro
- Brotato
- Dead Cells
- Deepest Chamber: Resurrection
- Gravity Circuit
- Northgard
- Nuclear Blaze
- Owlboy
- Salt and Sanctuary
- Slay the Spire
- Terraria
"Indie" has 2 meanings in this project:
- Run games (other software?) in a more platform-independent way.
- The primary use is for engines primarily used in the indie game space (FNA, HashLink, etc.)
If you want to propose adding a new "Engine" module, please check out Adding-Engine-Modules.md and make sure you have accurate answers to the questions therein.
- ( ) You're not limited in your engine design
- (-) Can't use proprietary engines (Unity, Unreal, GameMaker)
Examples:
- Barony
- idTech (gzdoom)
- Wolfire Games (Lugaru, Overgrowth)
Examples:
- FNA
- MonoGame
- Java, LWJGL, libGDX
- Godot (ideally GDScript)
- Love2D
Any of the above will lose the portability options if closed-source libraries get involved. Examples include:
- FMOD (Celeste, Bastion, ...)
- Wwise (SOR4, WarTales, ...)
- hard dependency on Steam library (workarounds exist for many cases)
- OpenBSD
- FreeBSD (planned)
- NetBSD?
- Haiku?
- Linux?
For prerequisite Perl modules, see PREREQ_PM
in Makefile.PL.
Other (non-Perl) programs and libraries used:
- 7z from p7zip (modules Java, LibGDX, LWJGL2, LWJGL3)
- CSteamworks (module FNA)
- FAudio (modules FNA, XNA)
- ffmpeg (module XNA)
- FNA (modules FNA, XNA)
- godot (module Godot)
- goldberg_emulator, if no native support for libsteam_api.so
- gzdoom (module GZDoom)
- hashlink (module HashLink)
- hlsteam (module HashLink)
- Java JDK 1.8, 11, 17 (modules Java, LibGDX, LWJGL2, LWJGL3)
- LibGDX - different versions, depending on the game
- libstubborn (modules FNA, XNA)
- libtheora, libtheorafile, libtheoraplay (modules FNA, XNA)
- love (module Love2D)
- luasteam (some Love2D games)
- LWJGL, LWJGL3
- mono (modules Mono, FNA, XNA, MonoGame)
- OpenAL (module LibGDX)
- rigg (optional, as alternative runtime for selected engines to apply unveil(2))
- ScummVM (module ScummVM)
- SDL2 (modules FNA, XNA, HashLink)
- SDL2-image
- SDL2-mixer
- steamworks4j (some Java modules)
- steamworks-nosteam (modules FNA, XNA)
Install them all with:
# pkg_add faudio ffmpeg fna godot gzdoom hashlink hlsteam jdk libgdx libstubborn libtheora{,file,play} love lwjgl{,3} mono openal p7zip sdl2-image sdl2-mixer
- interpreter for IndieRunner
- runtimes (mono, hashlink, java, love)
- libraries (SDL, freetype, libstubborn, ...)
- tools: ffmpeg (for conversion of XNA media files)
Problems:
- dotnet Core crossplatform support is incomplete. Use mono instead!
- fnaify
- Luxtorpeda
- published source code that requires a proprietary, closed-source engine to run isn't really opensource
- not available on OpenBSD
- hassle
- performance
- no performant option on OpenBSD
- hassle
- mono abandoned MONO_IOMAP with version 6, which has rendered games using Windows pathnames with '\' largely unplayable.
- no Steam client on OpenBSD
- other platforms requiring wine to run Steam client
- libjpeg has had breaking API changes that break the game MidBoss which is expecting old API.