openage: a volunteer project to create a free engine clone of Age of Empires II, primarily aimed at POSIX platforms such as GNU/Linux, comparable in its goals to projects like OpenMW, OpenRA, OpenTTD and OpenRCT2
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).
The foundation of openage:
Technology | Component |
---|---|
C++14 | Engine core |
Python3 | Scripting, media conversion, in-game console, code generation |
Qt5 | Graphical user interface |
Cython | Glue code |
CMake | Build system |
OpenGL2.1 | Rendering, shaders |
SDL2 | Cross-platform Audio/Input/Window handling |
Opus | Audio codec |
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.
-
What features are currently implemented?
- See doc/status.md.
-
What's the plan?
- See doc/milestones.md. We also have a list of crazy xor good ideas.
-
How do I get this to run on my box?
- See doc/building.md.
-
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.
- Execute
-
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 the contact section or the bug tracker.
What does openage development look like in practice?
- extensive synchronization!
- doc/development.md.
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.
Running openage on OS X 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 OS X will make their way into the master branch and occasional breakage will occur.
None of us uses Windows, so a port has low priority.
However, we're using cross-platform libraries wherever possible, so a port should be "pretty easy" to accomplish.
If you want to beat us to it, go for it!
- 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 bugreports 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
- learn git
- fork the repo
- learn python
- learn c++14
- read the code and documentation
- contribute anything to the code
- contact us
cheers, happy hecking.
Most of the developers hang around on our IRC channel (#sfttech
on freenode.net
).
Alternatively, you can join #sfttech:matrix.org
, which is bridged to the IRC channel.
Do not hesitate to ping 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 all interactive chit-chat, use our /r/openage subreddit!
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.