• Stars
    star
    12,550
  • Rank 2,541 (Top 0.06 %)
  • Language
    Python
  • License
    Other
  • Created almost 11 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Free (as in freedom) open source clone of the Age of Empires II engine 🚀

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, OpenSAGE, 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, AoE II: HD or AoE II: DE installation (via Wine or Steam-Linux).

github stars #sfttech on matrix.org GPL licensed

Contact

Contact Where?
Issue Tracker GitHub SFTtech/openage
Development Blog blog.openage.dev
Subreddit reddit /r/openage
Discussions GitHub Discussions
Matrix Chat matrix #sfttech:matrix.org
Money Sink money sink

Technical foundation

Technology Component
C++20 Engine core
Python3 Scripting, media conversion, in-game console, code generation
Qt6 Graphical user interface
Cython Python/C++ 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

Goals

  • 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...)
  • An easily-moddable content format: nyan yet another notation
  • An integrated Python console and API, comparable to blender
  • AI scripting in Python, you can use machine learning
  • Re-creating free game assets
  • Multiplayer (obviously)
  • Matchmaking and ranking with a haskell masterserver
  • Optionally, improvements over the original game
  • 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

Important notice: At the moment, "gameplay" is basically non-functional. We're implementing the internal game simulation (how units even do anything) with simplicity and extensibility in mind, so we had to get rid of the temporary (but kind of working) previous version. With these changes we can (finally) actually make use of our converted asset packs and our nyan API! We're working day and night to make gameplay return*. If you're interested, we wrote detailed explanations on our blog: Part 1, Part 2.

* may not actually be every day and night

Operating System Build status
Debian Sid Todo: Kevin #11
Ubuntu 22.04 LTS Ubuntu 22.04 build status
macOS macOS build status
Windows Server 2019 Windows Server 2019 build status
Windows Server 2022 Windows Server 2022 build status

Installation Packages

There's many missing parts for an actually working game. So if you "just wanna play", you'll be disappointed, unfortunately.

We strongly recommend to build the program from source to get the latest, greatest and shiniest project state :)

  • For Linux check at repology if your distribution has any packages available. Otherwise you need to build from source. We don't release *.deb, *.rpm, flatpack, snap or AppImage packages yet.

  • For Windows check our release page for the latest installer. Otherwise, you need to build from source.

  • For macOS we currently don't have any packages, you need to build from source.

If you need help, maybe our troubleshooting guide helps you.

Quickstart

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

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

    • Execute ./bin/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 ./bin/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.

Contributing

You might ask yourself now "Yeah, this sounds cool and all, but how do I participate and get famous contribute useful features?".

Fortunately for you, there is a lot to do and we are very grateful for help.

Where do I start?

  • The engine has several core parts that need help. You can look at the project related issues and find something for you, for example:
    • Asset Converter: Converts whatever proprietary format used by a Age of Empires 2 into open formats. Written mostly in Python 3. There are a lot of TODOs and beginner issues available right now, so it's a good place to get your feet wet.
    • Game simulation: Also known as the gameplay implementation. Written in C++, using the Entity-Component-System paradigm in addition to an event-driven simulation.
    • Documentation: We not only document code, but also anything technical about the Genie engine and its games. If you like documenting file formats or thoroughly investigating game mechanics, then this might be the right place to start.
  • Check the issues labelled with good first issues. These are tasks that you can start right away and don't require much previous knowledge.
  • Ask us in the chat. Someone there could need help with something.
  • You can also take the initiative and fix a bug you found, create an issue for discussion or implement a feature that we never though of, but always wanted.

Ok, I found something. What now?

  • Tell us, if you haven't already. Chances are that we have additional information and directions.
  • Read the docs. They will answer most "administrative" questions like what code style is used and how the engine core parts are connected.
  • Read the code and get familiar with the engine component you want to work with.
  • Do not hesitate to ask us for help if you do not understand something.

How do I contribute my features/changes?

  • Read the contributing guide.
  • You can upload work in progress (WIP) versions or drafts of your contribution to get feedback or support.
  • Tell us (again) when you want us to review your work.

I want to help, but I'm not a programmer...

Then openage might be a good reason to become one! We have many issues and tasks for beginners. You just have to ask and we'll find something. Alternatively, lurking is also allowed.


Cheers, happy hecking!

Development Process

What does openage development look like in practice?

How 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 get outdated when code changes.

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.

More Repositories

1

sftdyn

Self-hosted dyndns/dynamic DNS server and updater for bind
Python
250
star
2

nyan

Typesafe hierarchical key-value database with inheritance and dynamic patching 😺
C++
207
star
3

sticker

Some of the stickers might unsettle you. 🔓
134
star
4

abrechnung

Payment tracking and money splitting for groups 💸
TypeScript
124
star
5

kevin

A simple-stupid self-hostable continuous integration service. 🙈
Python
110
star
6

openage-data

Free (as in freedom) media files for openage.
56
star
7

openage-masterserver

Lobby and matchmaking server for openage in Haskell
Haskell
52
star
8

sftmumblebot

Mumble/IRC text chat bridge 🎤 💌
Python
48
star
9

stiefelsystem

Boot your operating system on a different hardware device via network 👢
Python
34
star
10

wirespider

Wireguard Mesh VPN - automatic tunnel and authorization management 🕸
Rust
31
star
11

videoscreen

Play submitted links with mpv on a videowall 🎥
Python
24
star
12

xautocfg

Automatic keyboard repeat rate configuration for new keyboards
C++
17
star
13

sftscrollbugfixer

Fix the Age of Empires II (TC, HD, DE) scroll bug with a DLL injection
C++
13
star
14

ceph-mount

Pure-Python CephFS mount helper
Python
7
star
15

openage-pr

openage website and public relations content
CSS
7
star
16

emacs-elaiza

Chat interface and library for interacting with different LLMs via Emacs.
Emacs Lisp
7
star
17

gentoo-overlay

sftoverlay - Gentoo package overlay for SFT projects and more 🐧
Shell
6
star
18

splash

gtk3 python speedreading program
Python
6
star
19

sftbackup

simple periodic backup tool based on borgbackup and snapper
Python
6
star
20

abrechnung-legacy-2a

payment and debt management tool for semi-enterprise-grade resource planing. superseeded by https://github.com/SFTtech/abrechnung
JavaScript
5
star
21

aiomatrix

Matrix client API for Python asyncio
Python
4
star
22

starlit-emacs

Deep blue and colorful emacs theme like a clear night sky 🌃
Emacs Lisp
4
star
23

openage-data-3dmodels

3d models for openage assets
4
star
24

openage-modding

openage content creation guidelines
Python
4
star
25

cooputils

When working in a shell collaboratively using tmux, this collection of scripts can be used to automatically switch to a 'coop' user and choose a TMUX session.
Python
4
star
26

openage-debian

Debian packaging files for openage
3
star
27

openage-blog

Development blog for openage
CSS
3
star
28

sftmake

simple make system in python
Python
3
star
29

sftkit

Software Development Kit for SFT projects
TypeScript
2
star
30

sftbot

State of the art artificial intelligence to perform various cutting-edge cloud-based enterprise tasks.
2
star
31

openage-webdoc

openage online documentation
HTML
2
star
32

sftutils

shell utilities to complement coreutils, moreutils and beyond
Python
2
star
33

cyberbot

modular matrix chatbot with encryption support
2
star
34

factorioplanner

Web interface for planning factories in factorio
1
star
35

kerbmath

mathematic helper software for kerbal space program
Python
1
star
36

dirtreeflattener

Useful when organizing huge directory structures. Unpacks archives and removes unnecessary subdirectory layers.
Python
1
star
37

kicad-lib

Common KiCAD lib for SFT hardware projects
Python
1
star
38

nyan-vscode

Visual Studio Code extension for creating nyan code
1
star
39

flow3rtron

Tron for the CCC Flow3r
Python
1
star
40

openage-kevin

kevin environment for building openage
1
star
41

kevin-win-setup

Tools to automatically download and prepare a free Windows VM for kevin.
Makefile
1
star