{"id":13395427,"url":"https://github.com/SFTtech/openage","last_synced_at":"2025-03-13T20:32:14.014Z","repository":{"id":37251546,"uuid":"14095175","full_name":"SFTtech/openage","owner":"SFTtech","description":"Free (as in freedom) open source clone of the Age of Empires II engine 🚀 ","archived":false,"fork":false,"pushed_at":"2024-10-18T05:01:50.000Z","size":17260,"stargazers_count":12735,"open_issues_count":224,"forks_count":1124,"subscribers_count":400,"default_branch":"master","last_synced_at":"2024-10-29T10:17:54.749Z","etag":null,"topics":["age-of-empires","c-plus-plus","cmake","cpp","cpp20","engine","entity-component-system","game","game-development","game-engine","hacktoberfest","linux","multiplayer","nyan","openage","opengl","python","qt","rts-engine"],"latest_commit_sha":null,"homepage":"http://openage.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SFTtech.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"copying.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"liberapay":"SFTtech"}},"created_at":"2013-11-03T22:35:23.000Z","updated_at":"2024-10-29T07:34:36.000Z","dependencies_parsed_at":"2024-01-07T01:20:20.462Z","dependency_job_id":"08a7b7ac-073f-47ac-b477-1ccf19a23d2b","html_url":"https://github.com/SFTtech/openage","commit_stats":{"total_commits":4614,"total_committers":210,"mean_commits":21.97142857142857,"dds":0.6068487212830516,"last_synced_commit":"66098cea4d799634d66b0e9b9691fdf715a7118d"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fopenage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fopenage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fopenage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SFTtech%2Fopenage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SFTtech","download_url":"https://codeload.github.com/SFTtech/openage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243478462,"owners_count":20297265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["age-of-empires","c-plus-plus","cmake","cpp","cpp20","engine","entity-component-system","game","game-development","game-engine","hacktoberfest","linux","multiplayer","nyan","openage","opengl","python","qt","rts-engine"],"created_at":"2024-07-30T17:01:58.072Z","updated_at":"2025-03-13T20:32:14.008Z","avatar_url":"https://github.com/SFTtech.png","language":"Python","readme":"[![openage](/assets/logo/banner.svg)](http://openage.dev)\n=========================================================\n\n**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](https://openmw.org/), [OpenRA](http://openra.net/),  [OpenSAGE](https://github.com/OpenSAGE/OpenSAGE/), [OpenTTD](https://openttd.org/) and [OpenRCT2](https://openrct2.org/).\n\nopenage uses the original game assets (such as sounds and graphics), but (for obvious reasons) doesn't ship them.\nTo play, you require *[any of the original games (AoE1, AoE2)](/doc/media_convert.md)* or their *Definitive Edition* releases.\n\n[![github stars](https://img.shields.io/github/stars/SFTtech/openage.svg)](https://github.com/SFTtech/openage/stargazers)\n[![#sfttech on matrix.org](/assets/doc/matrixroom.svg)](https://matrix.to/#/#sfttech:matrix.org)\n[![GPL licensed](/assets/doc/license.svg)](/legal/GPLv3)\n\n\nContact\n-------\n| Contact          | Where?                                                                                             |\n| ---------------- | -------------------------------------------------------------------------------------------------- |\n| Issue Tracker    | [GitHub SFTtech/openage]                                                                           |\n| Development Blog | [blog.openage.dev]                                                                                 |\n| Subreddit        | [![reddit](/assets/doc/reddit.svg) /r/openage](https://www.reddit.com/r/openage/)                  |\n| Discussions      | [GitHub Discussions]                                                                               |\n| Matrix Chat      | [![matrix](/assets/doc/matrix.svg) `#sfttech:matrix.org`](https://matrix.to/#/#sfttech:matrix.org) |\n| Money Sink       | [![money sink](/assets/doc/liberapay.svg)](https://liberapay.com/SFTtech)                          |\n\n[GitHub SFTtech/openage]: https://github.com/SFTtech/openage/issues\n[blog.openage.dev]: https://blog.openage.dev\n[GitHub Discussions]: https://github.com/SFTtech/openage/discussions\n\nTechnical foundation\n--------------------\n\n| Technology   | Component                                                     |\n| ------------ | ------------------------------------------------------------- |\n| **C++20**    | Engine core                                                   |\n| **Python3**  | Scripting, media conversion, in-game console, code generation |\n| [**Cython**] | Python/C++ Glue code                                          |\n| [**Qt6**]    | Graphical user interface                                      |\n| [**CMake**]  | Build system                                                  |\n| [**OpenGL**] | Rendering, shaders                                            |\n| [**Opus**]   | Audio codec                                                   |\n| [**nyan**]   | Content Configuration and Modding                             |\n| [**Humans**] | Mixing together all of the above                              |\n\n[**Cython**]: https://cython.org/\n[**Qt6**]: https://contribute.qt-project.org/\n[**CMake**]: https://cmake.org/\n[**OpenGL**]: https://www.opengl.org/\n[**Opus**]: https://opus-codec.org/\n[**nyan**]: https://github.com/SFTtech/nyan\n[**Humans**]: https://www.youtube.com/watch?v=fQGbXmkSArs\u0026t=18s\n\nGoals\n-----\n\n* Fully authentic look and feel\n    * This can only be approximated since the behavior of the original game is mostly undocumented,\n    and guessing/experimenting can only get you this close\n    * We will not implement useless artificial limitations (max 30 selectable units...)\n* An easily-moddable content format: [**nyan** yet another notation](https://github.com/SFTtech/nyan)\n* An integrated Python console and API, comparable to [blender](https://www.blender.org/)\n* AI scripting in Python, you can use [machine learning](http://scikit-learn.org/stable/)\n    * here is some [additional literature](http://www.deeplearningbook.org/)\n* Re-creating [free game assets](https://github.com/SFTtech/openage-data)\n* Multiplayer (obviously)\n* Matchmaking and ranking with a [haskell masterserver](https://github.com/SFTtech/openage-masterserver)\n* Optionally, [improvements](/doc/ideas/) over the original game\n* Awesome infrastructure such as our own [Kevin CI service](https://github.com/SFTtech/kevin)\n\nBut beware, for sanity reasons:\n\n* No network compatibility with the original game.\n  You really wanna have the same problems again?\n* No binary compatibility with the original game.\n  A one-way script to convert maps/savegames/missions to openage is planned though.\n\n\nCurrent State of the Project\n----------------------------\n\n**Important notice**: At the moment, \"gameplay\" is basically non-functional.\nWe'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.\nWith these changes, we can (finally) actually make use of our converted asset packs and our nyan API!\nWe're working day and night to make gameplay return\\*.\nIf you're interested, we wrote detailed explanations on our blog: [Part 1](https://blog.openage.dev/new-gamestate-2020.html), [Part 2](https://blog.openage.dev/engine-core-modules.html), [Monthly Devlog](https://blog.openage.dev/tag/news.html).\n\n*\\* may not actually be every day and night*\n\n|  Operating System   |                                                                                                       Build status                                                                                                        |\n| :-----------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|     Debian Sid      | [![Kevin CI status](https://cidata.sft.lol/openage/branches/master/status.svg)](/kevinfile) |\n|  Ubuntu 24.04 LTS   |           [![Ubuntu 24.04 build status](https://github.com/SFTTech/openage/actions/workflows/ubuntu-24.04.yml/badge.svg?branch=master)](https://github.com/SFTtech/openage/actions/workflows/ubuntu-24.04.yml)            |\n|        macOS        |                              [![macOS build status](https://github.com/SFTtech/openage/workflows/macOS-CI/badge.svg)](https://github.com/SFTtech/openage/actions?query=workflow%3AmacOS-CI)                               |\n| Windows Server 2019 | [![Windows Server 2019 build status](https://github.com/SFTtech/openage/actions/workflows/windows-server-2019.yml/badge.svg?branch=master)](https://github.com/SFTtech/openage/actions/workflows/windows-server-2019.yml) |\n| Windows Server 2022 | [![Windows Server 2022 build status](https://github.com/SFTtech/openage/actions/workflows/windows-server-2022.yml/badge.svg?branch=master)](https://github.com/SFTtech/openage/actions/workflows/windows-server-2022.yml) |\n\n[Todo: Kevin #11]: https://github.com/SFTtech/kevin/issues/11\n\n\nInstallation Packages\n---------------------\n\nThere are many missing parts for an actually working game.\nSo if you \"just wanna play\", [you'll be disappointed](#current-state-of-the-project), unfortunately.\n\nWe strongly recommend building the program from source to get the latest, greatest, and shiniest project state :)\n\n\n* For **Linux** check at [repology](https://repology.org/project/openage/versions) if your distribution has any packages available. Otherwise, you need to build from source.\n  We don't release `*.deb`, `*.rpm`, Flatpak, snap or AppImage packages yet.\n* For **Windows** check our [release page](https://github.com/SFTtech/openage/releases) for the latest installer.\n  Otherwise, you need to build from the source.\n\n* For **macOS** we currently don't have any packages, you need to build from source.\n\nIf you need help, maybe our [troubleshooting guide](/doc/troubleshooting.md) helps you.\n\n\nQuickstart\n----------\n\n* **How do I get this to run on my box?**\n    1. [Clone](https://docs.github.com/repositories/creating-and-managing-repositories/cloning-a-repository) the repo.\n    2. Install dependencies. See [doc/building.md](/doc/building.md#dependency-installation) to get instructions for your favorite platform.\n    3. Build the project:\n   ```\n   ./configure --download-nyan\n   make\n   ```\n\n* **I compiled everything. Now how do I run it?**\n    * Execute `cd bin \u0026\u0026 ./run main`.\n    * [The convert script](/doc/media_convert.md) will transform original assets into openage formats, which are a lot saner and more moddable.\n    * Use your brain and react to the things you'll see.\n\n* **Waaaaaah! It...**\n    * segfaults\n    * prints error messages I don't want to read\n    * ate my dog\n\nAll of those are features, not bugs.\n\nTo turn them off, use `./bin/run --dont-segfault --no-errors --dont-eat-dog`.\n\n\nIf this still does not help, try our [troubleshooting guide](/doc/troubleshooting.md), the [contact section](#contact)\nor the [bug tracker](https://github.com/SFTtech/openage/issues).\n\n\nContributing\n============\n\nYou might ask yourself now \"Sounds cool, but how do I participate\nand ~~get famous~~ contribute useful features?\".\n\nFortunately for you, there is a lot to do and we are very grateful for your help.\n\n## Where do I start?\n\n* **Check the issues** [labelled with `good first issue`](https://github.com/SFTtech/openage/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). These are tasks that you can start right away and don't require much previous knowledge.\n* **Ask us** in the [chat](https://matrix.to/#/#sfttech:matrix.org). Someone there could need\n  help with something.\n* You can also **take the initiative** and fix a bug you found, create an issue for discussion or\n  implement a feature that we never thought of, but always wanted.\n\n\n## Ok, I found something. What now?\n\n* **[Tell us](#contact)**, if you haven't already. Chances are that we have additional information\n  and directions.\n* **[Read the docs](/doc)**. They will answer most \"administrative\"\n  questions like what code style is used and how the engine core parts are connected.\n* **Read the code** and get familiar with the engine component you want to work with.\n* Do not hesitate to **[ask us for help](#contact)** if you do not understand something.\n\n\n## How do I contribute my features/changes?\n\n* Read the **[contributing guide](/doc/contributing.md)**.\n* You can upload work-in-progress (WIP) versions or drafts of your contribution to get feedback or support.\n* Tell us (again) when you want us to review your work.\n\n## I want to help, but I'm not a programmer...\n\nThen openage might be a good reason to become one! We have many issues and tasks for beginners. You\njust have to ask and we'll find something. Alternatively, lurking is also allowed.\n\n----\n\nCheers, happy hecking!\n\n\nDevelopment Process\n-------------------\n\nWhat does openage development look like in practice?\n\n* extensive [synchronization](#contact)!\n* [doc/development.md](/doc/development.md).\n\nHow can I help?\n\n* [doc/contributing.md](/doc/contributing.md).\n\nAll documentation is also in this repo:\n\n* Code documentation is embedded in the sources for Doxygen (see [doc readme](/doc/README.md)).\n* Have a look at the [doc directory](/doc/). This folder tends to get outdated when code changes.\n\n\nLicense\n-------\n\n**GNU GPLv3** or later; see [copying.md](copying.md) and [legal/GPLv3](/legal/GPLv3).\n\nI know that probably nobody is ever gonna look at the `copying.md` file,\nbut if you want to contribute code to openage, please take the time to\nskim through it and add yourself to the authors list.\n","funding_links":["https://liberapay.com/SFTtech"],"categories":["Python","TODO scan for Android support in followings","C++","Applications","其他","Strategy","Native","Engines","好玩项目"],"sub_categories":["Games","网络服务_其他","Strategy","开源游戏"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSFTtech%2Fopenage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSFTtech%2Fopenage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSFTtech%2Fopenage/lists"}