{"id":13731310,"url":"https://github.com/sandsmark/freeaoe","last_synced_at":"2025-08-20T08:32:23.668Z","repository":{"id":39649469,"uuid":"220293899","full_name":"sandsmark/freeaoe","owner":"sandsmark","description":"A free game engine capable of running Age of Empires 2 and Star Wars: Galactic Battlegrounds","archived":false,"fork":false,"pushed_at":"2022-12-08T17:01:42.000Z","size":23200,"stargazers_count":204,"open_issues_count":7,"forks_count":20,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-12-07T15:11:56.233Z","etag":null,"topics":["2d-game-engine","age","age-of-conquerors","age-of-empires","ageofempires","ageofempires2","aoc","aoe2","cpp17","cpp20","engine","genie-engine","isometric","rts","rts-engine","rts-game","star-wars","star-wars-galactic-battlegrounds","starwars","swgb"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandsmark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-07T17:35:53.000Z","updated_at":"2024-11-25T08:18:24.000Z","dependencies_parsed_at":"2022-08-28T10:01:05.959Z","dependency_job_id":null,"html_url":"https://github.com/sandsmark/freeaoe","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ffreeaoe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ffreeaoe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ffreeaoe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandsmark%2Ffreeaoe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandsmark","download_url":"https://codeload.github.com/sandsmark/freeaoe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230408170,"owners_count":18220974,"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":["2d-game-engine","age","age-of-conquerors","age-of-empires","ageofempires","ageofempires2","aoc","aoe2","cpp17","cpp20","engine","genie-engine","isometric","rts","rts-engine","rts-game","star-wars","star-wars-galactic-battlegrounds","starwars","swgb"],"created_at":"2024-08-03T02:01:27.162Z","updated_at":"2024-12-19T09:07:17.792Z","avatar_url":"https://github.com/sandsmark.png","language":"C++","readme":"freeaoe\n=======\n\n[![screenshot](/doc/screenshot-small.png)](/doc/screenshot.png)\n\nfreeaoe is a project to write a free engine capable of running Age of Empires 2\n(and other Genie games like SW:GB eventually).\n\nThe project is still in early development. But you can load and play scenarios,\nshow the history screen, move around, attack, build and stuff.  There are some\nscreenshots in the [doc/](doc/) folder.\n\nIt (obviously) needs the original data files, but it works with the data\nfiles from the trial version (e. g. from Archive.org).\n\n### Star Wars™: Galactic Battlegrounds WIP\n\n[![swgb screenshot](/doc/swgb-small.png)](/doc/swgb.png)\n\n\nWindows\n-------\nAutomated Windows builds can be [downloaded from AppVeyor](https://ci.appveyor.com/project/sandsmark/freeaoe/build/artifacts).\n\nThere is no installation, it's just a zip file with a standalone .exe that you\nrun.\n\nNB: If Appveyor says there's no artifact available it's probably because it's\nbuilding the latest version, just give it a few moments (or click around in\nAppVeyor to find the older versions).\n\nCaveat emptor; I don't have any Windows installation to test with, but it\nworks fine in Wine.\n\n\nRunning\n-------\n\nIf you have AoE2 installed it should automatically detect where it is installed\nand load the data files automatically (looking up in the Windows registry). If\nthat doesn't work for some reason it will pop up a dialog where you can point\nit to the files manually.\n\nIf you don't have it installed there's a nice button in that dialog which opens\n[an URL](https://archive.org/details/AgeOfEmpiresIiTheConquerorsDemo) where you\ncan download the trial version of AoC. It doesn't have the higher resolution\ngraphics e. g. for the UI, though, so I highly recommend getting an original CD\nwith the full version.\n\nOn Linux it parses the Wine registry file to try to find the installation,\notherwise you get the same dialog (but with a handy button to go directly to\nthe .wine folder). Be aware that it respects WINEPREFIX, so make sure that is\nset correctly if you use it.\n\n\nDependencies\n------------\n - SFML\n - Modern C++ compiler\n\nTo build\n--------\n - Clone with --recurse-submodules (e. g. `git clone --recurse-submodules https://github.com/sandsmark/freeaoe.git`)\n - `mkdir build \u0026\u0026 cd build`\n - `cmake .. \u0026\u0026 make`\n - `./freeaoe`\n\nI can't get it to build on macOS (and I don't have any Apple machines), so if\nyou manage to get it to build please open a PR. It seems like Apple ships a\nreally outdated version of Clang that doesn't support modern C++.\n\n\nLegal\n-----\nPreface: I am not a lawyer (nor a native english speaker), this is just based\non my interpretation of local laws to show that everything is done in good\nfaith. If you believe I am infringing on any of your rights please open an\nissue and I will seek to rectify it as soon as possible.\n\n\nI am in no way affiliated with Microsoft, Linus Torvalds nor anyone else who own\nany trademarks that may appear here. Any display of trademarks here is purely\nto indicate the purpose of this project and in accordance with good business\npractice, as permitted by relevant laws.\n\nThere are no copyrighted works distributed here, nor works derived from\ncopyrighted works, except works with a free and open source license permitting\ndistribution.\n\n*In no part of the creation of this is reverse engineering involved*. All\ninsight used is based on publicly available knowledge and playing of the game.\n\nMy right to gather insight into the functioning and principles of individiual\nparts of a copyrighted computer program by means of execution, observation,\ninvestigation and testing is [protected by norwegian law](https://lovdata.no/lov/2018-06-15-40/§41).\n\nAlthough I also have some rights to reverse engineer works I have the right to\nuse it's more fun to figure out how to do something myself. In addition I'm\nnot familiar enough with the laws governing reverse engineering that Github is\nsubject to, and I don't want to be nuked from Github.\n\n\nIn general I work on this this because it's fun to create a strategy game, I\nalready paid for and own a license to the games. I do not receive nor do I\nintend to receive any form of compensation for this. I have no incentive or\nintention to do anything that would infringe on anyones copyright, trademarks\nor other rights.\n\n\nMisc\n----\n\nThis is mostly a single-person pet project, so if you want a more serious project,\ntry [openage](https://openage.sft.mx/).\n\nIt uses the same [library](https://github.com/sandsmark/genieutils) as [AGE\n(Advanced Genie Editor)](https://github.com/sandsmark/AGE), so it should be able to\nhandle anything that can be edited by that (and therefore basically all\ncommunity content created for AoE2). Because of this it doesn't need to unpack\nor convert anything, all data files are used as is.\n\nThis repo is originally a fork of https://github.com/apreiml/freeaoe, but\nbecause a lot of stuff doesn't like working on forked repos it is now created\nas a separate repo.\n\n\nTODO (this is probably going to get outdated)\n----\n - Proper victory screen.\n - Unit grouping/formations.\n - Patrolling.\n - Campaign cinematics (mainly just parse the .mm files).\n - Random map RMS script parsing and generating.\n - Performance (especially the path finding).\n - Various refactoring (move VisibilityMap out into separate file, rendering of units out from UnitManager, etc.)\n - Fix edges of walls when dragging.\n - Rest of AI script actions and conditions:\n    - town-under-attack\n    - cc-players-unit-type-count (AI cheat)\n    - game-time\n    - timer-triggered\n    - difficulty\n    - dropsite-min-distance\n    - resource-found\n    - players-stance\n - Angle of arrows\n - Arrows stuck in the ground\n - Upscale shaders (WIP in the `martin/lolshaders` branch)\n - Video support, intro videos etc. (WIP in the `martin/video` branch)\n\nWishlist/low priority:\n - Proper support for new terrain graphics (Rise of the Rajas stopped shipping the old ones).\n - Map analysis stuff (for RMS and AI).\n\nDone\n----\nNot exhaustive list, mostly in addition to \"normal\" RTS things, or things not available in other re-implementations.\n\nCompared to other reimplementations as much as possible is fetched from the data files as well, and I try to avoid hardcoding anything, though some is hardcoded in the original game.\n\n * HD Support.\n * Scenarios:\n    * Loading and parsing old and new scenario files (.scn and .scx)\n    * Loading and parsing old and new campaign files (.cpn and .cpx)\n    * All scenario trigger conditions and effects necessary to play the William Wallace tutorial scenario.\n * Villagers:\n    * Automatic switching between builders, lumberjacks, etc.\n    * Carrying resource tracking.\n * Units:\n    * Dying animations.\n    * Creating corpses on death.\n    * Decaying corpses.\n    * Visibility tracking.\n    * Default actions on right click.\n    * Garrisoning.\n    * Ungarrisoning.\n * Buildings:\n    * Construction of buildings.\n    * Training units.\n    * Dragging wall construction.\n * Actions types:\n    * Melee attacks.\n    * Ranged attacks.\n    * Building (buildings).\n    * Moving (on land and arrows/missiles).\n    * Gathering, with automatic dropoff.\n    * Construction.\n    * Flying (birds).\n * Technology:\n    * Research.\n    * Automatic research of implicit technologies.\n    * Unique technologies.\n    * Ages with list of techs.\n * Actions:\n    * Automatic actions (attacking nearby etc.)\n    * Fetching actions for the action panel at the bottom from data files.\n    * Queueing.\n * Terrain rendering:\n    * Slopes/hills.\n    * Blending terrain between tiles.\n    * Fog of war.\n * Unit rendering:\n    * Animations.\n    * Angles.\n    * Unit outline when behind buildings (needs improvement).\n    * Health bar.\n    * Selection outline.\n    * Player colors.\n    * Construction available/unavailable graphics.\n    * Shadows.\n    * Fog of war shading.\n    * Dopplegangers (i. e. persist last seen buildings. etc in fog of war).\n * Sound:\n    * Sound on selection.\n    * Sound when attacking.\n    * Sound when dying.\n    * Sound when training units.\n    * Positional.\n    * Streaming sound (scenario voices, music, etc.).\n    * MIDI support, for music in the trial versions.\n * Civilizations:\n    * Starting resources.\n    * Different UI interface graphics.\n    * Names.\n * Players:\n    * Civs.\n    * Colors.\n    * Ages.\n    * Techs.\n    * Alliances.\n    * Per player visibility.\n * Game assets:\n    * Graphics.\n    * Palettes.\n    * Sounds.\n    * Campaign files.\n    * Scenario files.\n    * Terrain blending files.\n    * Terrain hill shape/lightning files.\n    * UI interface files.\n    * Fog of war graphics.\n    * AI script parsing.\n    * Support for loading basically everything.\n    * Use only original files, don't convert.\n * Game data files:\n    * Graphic info.\n    * Sound info (randomness of sounds etc.)\n    * Unit tasks.\n    * Player colors.\n    * Techs.\n    * Terrain info.\n    * Maps.\n    * Civilizations.\n    * UI info files (button colors etc.)\n    * Random map files (not .rms).\n    * Automatic location of game files if installed (Windows and Linux).\n * UI interface:\n    * Unit info panel.\n    * Unit actions panel.\n    * Resource info labels.\n    * In game buttons/menu.\n    * Home screen.\n    * History screen.\n    * Dialog when starting to find game data.\n * Minimap:\n    * Terrain colors.\n    * Unit colors.\n    * Unit outline types (rectangles vs. diamonds etc.)\n    * Unit outline sizes.\n    * Fog of war.\n    * Camera moving.\n * AI scripts (partial)\n   * Can fully parse scripts, with all tokens recognised.\n   * Most conditions implemented.\n   * Most actions implemented.\n\n","funding_links":[],"categories":["History","Engines"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandsmark%2Ffreeaoe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandsmark%2Ffreeaoe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandsmark%2Ffreeaoe/lists"}