explaingit

sfttech/openage

14,208PythonAudience · developerComplexity · 5/5LicenseSetup · hard

TLDR

Openage is an open source reimplementation of the Age of Empires engine written in C++, but gameplay is currently non-functional due to an ongoing internal redesign, best for contributors, not players.

Mindmap

mindmap
  root((openage))
    What it does
      Recreate Age of Empires engine
      Open source reimplementation
    Tech stack
      C++ 20 engine
      Python scripting
      Qt6 interface
      OpenGL rendering
    Modding
      nyan data format
      Python AI scripting
    Status
      Engine redesign underway
      Gameplay non-functional
    Audience
      C++ contributors
      Game engine researchers
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Contribute to an open source game engine project to learn C++ game and simulation programming

USE CASE 2

Experiment with writing AI opponents in Python for a real-time strategy game engine

USE CASE 3

Use the converter tools to read and work with Age of Empires map and save file formats

USE CASE 4

Study how a large open source C++ project structures a game simulation engine

Tech stack

C++PythonQt6OpenGL

Getting it running

Difficulty · hard Time to first run · 1day+

Requires building from source and owning a copy of Age of Empires or a supported game to provide the game assets.

You can use, modify, and share this code, but any modified version must also be released as open source under the same GPL v3 license.

In plain English

Openage is a volunteer project to recreate the game engine behind Age of Empires, Age of Empires II, and Star Wars: Galactic Battlegrounds as free, open source software. The goal is the same kind of effort that produced open source reimplementations of other classic games, such as the OpenMW project for Morrowind or OpenTTD for Transport Tycoon. Openage does not include any game content: to play, you need to own a copy of one of the original games, whose files the engine can read and convert. The engine is written in C++20, with Python used for scripting, tools, and modding support. The interface uses the Qt6 framework and rendering goes through OpenGL. A custom data format called nyan handles game content and is designed to make modding straightforward. The project also plans to support writing AI opponents in Python, which would allow experimentation with machine learning approaches. An important caveat in the README: as of the time of writing, gameplay is essentially non-functional. The project went through a significant internal redesign of how the game simulation works, which required dismantling the earlier partially-working version. The team describes this as a necessary step to build on a solid foundation, and progress is documented on their development blog. The README notes this plainly and suggests that people who just want to play the game will currently be disappointed. Build instructions exist for Debian, Ubuntu, macOS, and Windows. A Windows installer is available from the releases page. The project is licensed under the GPL v3, which requires any modifications to also be shared as open source. There is no network or binary compatibility with the original games, though a converter for maps and save files is planned.

Copy-paste prompts

Prompt 1
I want to contribute to openage. Walk me through building it on Ubuntu and running the test suite to confirm everything compiles.
Prompt 2
Explain how the nyan data format works in openage for defining game units, and show me how to add a new unit type.
Prompt 3
Help me write a basic Python AI script for openage that moves a single unit toward a target coordinate.
Prompt 4
What is the current state of gameplay in openage and which GitHub issues should I look at to contribute to restoring core game functionality?
Open on GitHub → Explain another repo

← sfttech on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.