Open reimplementation of Might and Magic 6 7 8 game engine
  • C++ 93.8%
  • CMake 1.9%
  • Lua 1.9%
  • C 1.6%
  • GLSL 0.4%
  • Other 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
captainurist 22e3cdf63b
The agent view leaves the mouse to the terminal, Cmd+C copies again (#2684)
The agent view turns on mouse reporting, so the host terminal hands every drag
to Claude rather than selecting text, and Cmd+C then has no selection to copy.
CLAUDE_CODE_DISABLE_MOUSE turns the reporting off. Wheel scrolling goes with it,
which is the cheaper of the two to lose.

TERM_PROGRAM and TERM_PROGRAM_VERSION now cross into the container as well.
Claude reads them to work out which terminal it is talking to, and lacking them
it assumes a generic Linux one. It then advises holding Shift for a native
selection, which is wrong on both Mac terminals - Terminal.app wants Fn and
iTerm2 wants Option.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-01 17:43:01 +01:00
.claude Ask for short pull request descriptions (#2685) 2026-09-01 09:15:08 +01:00
.devcontainer Ship capstone and pefile in the devcontainer (#2679) 2026-08-31 09:18:48 +01:00
.github Make the lua style check actually run (#2682) 2026-09-01 17:41:42 +01:00
android Build only libmain.so on Android (#2339) 2025-12-30 19:23:16 +00:00
CMakeModules Make the lua style check actually run (#2682) 2026-09-01 17:41:42 +01:00
distribution/linux Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03:00
resources Make the lua style check actually run (#2682) 2026-09-01 17:41:42 +01:00
scripts The agent view leaves the mouse to the terminal, Cmd+C copies again (#2684) 2026-09-01 17:43:01 +01:00
src Document BackToHouseMenu as MM6's movie house re-entry hook (#2668) 2026-09-01 09:13:10 +01:00
test Rework the mouse picks into purpose-named functions (#2615) 2026-08-30 21:27:11 +01:00
thirdparty Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03: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 (#2538) 2026-07-17 23:00:52 +01:00
.gitmodules Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03:00
.luarc.json Various luaLS fixes 2024-07-30 00:36:28 +02:00
CMakeLists.txt Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03:00
CMakeSettings.json missing comma (#2246) 2025-09-22 11:01:52 +02:00
CPPLINT.cfg Enforce a 200 column line limit (#2655) 2026-08-24 22:19:54 +01:00
Doxyfile Fix Doxy choking 2025-06-30 11:34:28 +01:00
HACKING.md Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03:00
LICENSE Update LICENSE 2024-04-03 09:27:35 -06:00
README.md Replace backward-cpp with cpptrace (#2643) 2026-08-29 08:49:28 +03: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 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