Open reimplementation of Might and Magic 6 7 8 game engine
  • C++ 93.7%
  • Lua 1.9%
  • CMake 1.9%
  • C 1.6%
  • GLSL 0.4%
  • Other 0.4%
Find a file
pskelton 5b9a4a93c1
fix2520 (#2521)
* fix2520

* style
2026-06-17 22:02:53 +01:00
.claude Updates in HACKING.md and CLAUDE.md (#2376) 2026-03-08 11:27:17 +01:00
.devcontainer Add more exceptions to devcontainer firewall (#2481) 2026-05-08 08:45:24 +01:00
.github Fixing CI failures (#2469) 2026-05-06 15:08:19 +01:00
android Build only libmain.so on Android (#2339) 2025-12-30 19:23:16 +00:00
CMakeModules FindFFmpeg now creates proper cmake targets (#2346) 2026-02-01 18:28:25 +01:00
distribution/linux Switch to newer compilers (#2283) 2025-10-12 10:34:27 +02:00
resources fix debug outlines (#2442) 2026-03-29 23:32:26 +01:00
scripts Fixing CI failures (#2469) 2026-05-06 15:08:19 +01:00
src fix2520 (#2521) 2026-06-17 22:02:53 +01:00
test fix2520 (#2521) 2026-06-17 22:02:53 +01:00
thirdparty stop FMT_CONSTEVAL macro redefinition (#2371) 2026-03-01 00:32:08 +01:00
.editorconfig Change all lua scripts to align to the new guidelines 2024-04-21 20:15:50 +02:00
.gitattributes attributes 2017-01-11 05:34:59 +02:00
.gitignore Updated gitignore, some fixes in devcontainer (#2377) 2026-03-08 17:08:20 +01:00
.gitmodules Imported ztd.text (#2360) 2026-02-17 23:14:19 +01:00
.luarc.json Various luaLS fixes 2024-07-30 00:36:28 +02:00
CMakeLists.txt Don't jump through hoops for ccache on windows (#2348) 2026-02-01 19:03:54 +01:00
CMakeSettings.json missing comma (#2246) 2025-09-22 11:01:52 +02:00
CPPLINT.cfg Update cpplint 2024-04-10 21:30:52 +01:00
Doxyfile Fix Doxy choking 2025-06-30 11:34:28 +01:00
HACKING.md Switch CI to GCC 15 (#2431) 2026-03-27 08:20:36 +00:00
LICENSE Update LICENSE 2024-04-03 09:27:35 -06:00
lls-check.py Fix parsing of lua style check log produced by new version of LLS 2024-05-12 03:14:07 +03:00
README.md Update README: title, platforms, save compatibility, Android, development section (#2450) 2026-04-12 11:59:31 +01:00

OpenEnroth

Windows Linux MacOS Doxygen Style Checker

OpenEnroth is an open-source reimplementation of the Might & Magic VI-VIII game engine, allowing you to play the original games on modern platforms. It uses the original game data, so you will need a copy of the game to play.

Currently only MM7 is playable. MM6 and MM8 support is planned — check the milestones to see where we're at.

Supported platforms: Windows, Linux, macOS, and Android (experimental).

screenshot_main

Download

Prebuilt binaries are available from our releases page.

Currently only nightly builds are available, which may have bugs. A stable release is in progress — see the v0.1 milestone.

Discord

Join our Discord to discuss, track progress, or get involved in development.

Discord channel invite

Getting Started

You will need two things: the OpenEnroth binary and the original Might and Magic VII game data.

Getting the game data

You can buy Might and Magic VII from GOG.com. Copies from other sources (e.g. an original retail disc) should also work.

At the very least, OpenEnroth requires the ANIMS, DATA, MUSIC and SOUNDS directories from the game data.

Non-GOG versions

Install or extract your copy of the game as normal.

GOG Version

Windows

On Windows, run the GOG installer to extract the game data to your computer.

Linux and macOS

The installer cannot be run directly on Linux and macOS, but you can use innoextract to extract its contents.

  • On macOS, install Homebrew if you don't have it already and run brew install innoextract
  • On Linux, the exact command depends on your distribution:
    • Ubuntu or Debian-based (including Linux Mint, Pop!OS, etc): sudo apt install -y innoextract
    • Fedora or other RedHat-based (except "immutable" distributions like Bazzite): sudo dnf install -y innoextract
    • For other systems, Repology lists the package name for most distributions.

Once you have innoextract, run:

innoextract -e -d <new game data directory> <path to GOG installer .exe>

Game Assets Path Override

You can set an environment variable called OPENENROTH_MM7_PATH to point to the location of the game data. If set, OpenEnroth will look for game assets only in that location. You may want to add this to your shell profile (e.g. ~/.profile on Linux or ~/.zshrc on Mac):

export OPENENROTH_MM7_PATH="<path-to-mm7-game-assets>"

Installing OpenEnroth

Windows

  1. Download one of the prebuilt releases and unzip the files.
  2. Copy OpenEnroth.exe and OpenEnroth.pdb to the directory containing the game data.
  3. Run OpenEnroth.exe.

macOS

  1. Move the game data to ~/Library/Application Support/OpenEnroth, creating this directory if needed.
  2. Download one of the prebuilt releases and unzip the files.
  3. Run xattr -rc <extracted-path>/dist/OpenEnroth.app. This clears the quarantine flag — macOS will refuse to launch unsigned binaries without this step.
  4. Run OpenEnroth.app.

Linux (Flatpak)

The Flatpak package is the easiest choice if you aren't using Ubuntu 24.04, or you cannot install system packages on your computer (e.g. on "atomic"/"immutable" distributions like Bazzite or SteamOS).

  1. Check for Flatpak support:
    • Run flatpak --version. If you get a version number, you're ready; otherwise visit https://flatpak.org/setup/ for setup instructions.
  2. Install OpenEnroth:
    • Download the io.github.openenroth.openenroth_*.flatpak package from the releases page.
    • Run flatpak install --user /path/to/io.github.openenroth.openenroth_*.flatpak.
    • Create ~/.var/app/io.github.openenroth.openenroth/data/mm7/data/
    • Move the game data (at least ANIMS, DATA, MUSIC and SOUNDS) into this new directory.
  3. Run OpenEnroth from your application menu or using flatpak run io.github.openenroth.openenroth.

Linux (Loose executable)

The loose executable is better if you want direct access to the binary (e.g. for development), or need full control over install location. Requires Ubuntu 24.04 or a distribution with compatible system libraries.

  1. Install required libraries: sudo apt-get install libdwarf1 libelf++* libgl1 (Ubuntu 24.04). For other distributions, check your package manager for equivalent packages.
  2. Download a prebuilt release and unzip it.
  3. Copy the game data (ANIMS, DATA, MUSIC and SOUNDS) next to the OpenEnroth executable.
  4. Run OpenEnroth (you may need chmod a+x OpenEnroth first).

Android (Experimental)

Android is not actively tested by the dev team — expect issues and be prepared to troubleshoot.

  1. Download openenroth-release.apk from the releases page.
  2. Install the APK on your device (you will need to allow installation from unknown sources in your device settings).
  3. Copy the game data (ANIMS, DATA, MUSIC and SOUNDS) to /sdcard/Android/data/io.github.openenroth.openenroth/files/ on your device.

Development

See HACKING.md for build instructions, code style guidelines, and contribution guidelines.

Screenshots

screenshot_1

screenshot_2

screenshot_3

screenshot_4