Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
Free (as in freedom) open source clone of the Age of Empires II engine 🚀
Branch: master
Clone or download
TheJJ Merge pull request #1100 from TheJJ/codegen-byproducts
codegen: create generated files as byproducts
Latest commit fa81318 Apr 8, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
assets Add logo version optimized for printing. Mar 21, 2019
buildsystem codegen: create generated files as byproducts Apr 7, 2019
cfg Remember previous asset location Oct 25, 2017
dist
doc Change 'easy' to 'good first issue' tag. Mar 25, 2019
etc
legal legal: re-wrote copying.md, added 3rd-party licenses Oct 30, 2014
libopenage Fix mingw build. Feb 6, 2019
openage convert: search for steam-linux Age2HD installation Apr 4, 2019
packaging buildsystem: Windows installer using CPack Sep 16, 2017
.gitignore
.kevin ci: add arch build with clang, enable -Werror Jul 22, 2018
.mailmap
CMakeLists.txt
Makefile buildsystem: link/copy py files to build directory Dec 16, 2018
README.md renderer: level 1 implementation Jul 22, 2018
configure
copying.md Fix mingw build. Feb 6, 2019
openage_version Bumped version number to 0.3.1 May 19, 2016
run.py.in buildsystem: move `run.py` to build directory Feb 27, 2019

README.md

openage

openage: a volunteer project to create a free engine clone of the Genie Engine used by Age of Empires, Age of Empires II (HD) and Star Wars: Galactic Battlegrounds, comparable to projects like OpenMW, OpenRA, OpenTTD and OpenRCT2. At the moment we focus our efforts on the integration of Age of Empires II, while being primarily aimed at POSIX platforms such as GNU/Linux.

openage uses the original game assets (such as sounds and graphics), but (for obvious reasons) doesn't ship them. To play, you require an original AoE II : TC installation or AoE II: HD (installation via Wine or Steam-Linux).

github stars #sfttech on Freenode #sfttech on matrix.org quality badge

Contact Where?
Development Blog blog.openage.sft.mx
Forum reddit /r/openage
Matrix Chat #sfttech:matrix.org
IRC Chat irc.freenode.net #sfttech
Money Sink money sink

The foundation of openage:

Technology Component
C++17 Engine core
Python3 Scripting, media conversion, in-game console, code generation
Qt5 Graphical user interface
Cython Glue code
CMake Build system
OpenGL3.3 Rendering, shaders
SDL2 Cross-platform Audio/Input/Window handling
Opus Audio codec
nyan Content Configuration and Modding
Humans Mixing together all of the above

Our goals include:

  • Fully authentic look and feel
    • This can only be approximated, since the behaviour of the original game is mostly undocumented, and guessing/experimenting can only get you this close
    • We will not implement useless artificial limitations (max 30 selectable units...)
  • Multiplayer (obviously)
  • Matchmaking and ranking with a haskell masterserver
  • Optionally, improvements over the original game
  • AI scripting in Python, you can use machine learning
  • Re-creating free game assets
  • An easily-moddable content format: nyan yet another notation
  • An integrated Python console and API, comparable to blender
  • Awesome infrastructure such as our own Kevin CI service

But beware, for sanity reasons:

  • No network compatibility with the original game. You really wanna have the same problems again?
  • No binary compatibility with the original game. A one-way script to convert maps/savegames/missions to openage is planned though.

Current State of the Project

Dependencies, Building and Running

  • How do I get this to run on my box?

  • I compiled everything. Now how do I run it?

    • Execute ./run.
    • The convert script will transform original assets into openage formats, which are a lot saner and more moddable.
    • Use your brain and react to the things you'll see.
  • Waaaaaah! It

    • segfaults
    • prints error messages I don't want to read
    • ate my dog

All of those are features, not bugs.

To turn them off, use ./run --dont-segfault --no-errors --dont-eat-dog.

If this still does not help, try our troubleshooting guide, the contact section or the bug tracker.

Development Process

What does openage development look like in practice?

Can I help?

All documentation is also in this repo:

  • Code documentation is embedded in the sources for Doxygen (see doc readme).
  • Have a look at the doc directory. This folder tends to outdate when code changes.

macOS Version

Running openage on macOS worked in the past, and might or might not work right now.

Setting up continuous integration for this platform has some complications. Running a hackintosh VM seems to be not so legal, while buying dedicated hardware for it seems to be not so cheap. If you know of a legal and cost-free way of doing so or want to sponsor a semi-recent Mac Mini, please open a ticket in our issue tracker. Until then, PRs untested on macOS will make their way into the master branch and occasional breakage will occur.

Windows Version

The Windows port of openage is under development.

Setting up continuous integration for this platform has problems similar to the OSX version. If you know of a legal and cost-free way of acquiring and running a Windows VM, please open a ticket in our issue tracker. Until then, PRs untested on Windows will make their way into the master branch and occasional breakage will occur.

Contributing

  • Being typical computer science students, we hate people.
  • Please don't contact us.
  • Nobody likes Age of Empires anyway.
  • None of you is interested in making openage more awesome anyway.
  • We don't want a community.
  • Don't even think about trying to help.

Guidelines:

  • No bug reports or feature requests, the game is perfect as is.
  • Don't try to fix any bugs, see above.
  • Don't implement any features, your code is crap.
  • Don't even think about sending a pull request.
  • Please ignore the easy tasks that could just be done.
  • Absolutely never ever participate in this boring community.
  • Don't note the irony, you idiot.

To prevent accidental violation of one of those guidelines, you should never

cheers, happy hecking.

Contact

If you have the desire to perform semi-human interaction, join our Matrix or IRC chatroom!

Do not hesitate to ping and insult us, we might not see your message otherwise.

For all technical discussion (ideas, problems, ...), use the issue tracker! It's like a mailing list.

For other discussions or questions, use our /r/openage subreddit!

License

GNU GPLv3 or later; see copying.md and legal/GPLv3.

I know that probably nobody is ever gonna look at the copying.md file, but if you want to contribute code to openage, please take the time to skim through it and add yourself to the authors list.

You can’t perform that action at this time.