• Stars
    star
    205
  • Rank 191,264 (Top 4 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 5 years ago
  • Updated almost 2 years ago

Reviews

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

Repository Details

A free game engine capable of running Age of Empires 2 and Star Wars: Galactic Battlegrounds

freeaoe

screenshot

freeaoe is a project to write a free engine capable of running Age of Empires 2 (and other Genie games like SW:GB eventually).

The project is still in early development. But you can load and play scenarios, show the history screen, move around, attack, build and stuff. There are some screenshots in the doc/ folder.

It (obviously) needs the original data files, but it works with the data files from the trial version (e. g. from Archive.org).

Star Warsโ„ข: Galactic Battlegrounds WIP

swgb screenshot

Windows

Automated Windows builds can be downloaded from AppVeyor.

There is no installation, it's just a zip file with a standalone .exe that you run.

NB: If Appveyor says there's no artifact available it's probably because it's building the latest version, just give it a few moments (or click around in AppVeyor to find the older versions).

Caveat emptor; I don't have any Windows installation to test with, but it works fine in Wine.

Running

If you have AoE2 installed it should automatically detect where it is installed and load the data files automatically (looking up in the Windows registry). If that doesn't work for some reason it will pop up a dialog where you can point it to the files manually.

If you don't have it installed there's a nice button in that dialog which opens an URL where you can download the trial version of AoC. It doesn't have the higher resolution graphics e. g. for the UI, though, so I highly recommend getting an original CD with the full version.

On Linux it parses the Wine registry file to try to find the installation, otherwise you get the same dialog (but with a handy button to go directly to the .wine folder). Be aware that it respects WINEPREFIX, so make sure that is set correctly if you use it.

Dependencies

  • SFML
  • Modern C++ compiler

To build

  • Clone with --recurse-submodules (e. g. git clone --recurse-submodules https://github.com/sandsmark/freeaoe.git)
  • mkdir build && cd build
  • cmake .. && make
  • ./freeaoe

I can't get it to build on macOS (and I don't have any Apple machines), so if you manage to get it to build please open a PR. It seems like Apple ships a really outdated version of Clang that doesn't support modern C++.

Legal

Preface: I am not a lawyer (nor a native english speaker), this is just based on my interpretation of local laws to show that everything is done in good faith. If you believe I am infringing on any of your rights please open an issue and I will seek to rectify it as soon as possible.

I am in no way affiliated with Microsoft, Linus Torvalds nor anyone else who own any trademarks that may appear here. Any display of trademarks here is purely to indicate the purpose of this project and in accordance with good business practice, as permitted by relevant laws.

There are no copyrighted works distributed here, nor works derived from copyrighted works, except works with a free and open source license permitting distribution.

In no part of the creation of this is reverse engineering involved. All insight used is based on publicly available knowledge and playing of the game.

My right to gather insight into the functioning and principles of individiual parts of a copyrighted computer program by means of execution, observation, investigation and testing is protected by norwegian law.

Although I also have some rights to reverse engineer works I have the right to use it's more fun to figure out how to do something myself. In addition I'm not familiar enough with the laws governing reverse engineering that Github is subject to, and I don't want to be nuked from Github.

In general I work on this this because it's fun to create a strategy game, I already paid for and own a license to the games. I do not receive nor do I intend to receive any form of compensation for this. I have no incentive or intention to do anything that would infringe on anyones copyright, trademarks or other rights.

Misc

This is mostly a single-person pet project, so if you want a more serious project, try openage.

It uses the same library as AGE (Advanced Genie Editor), so it should be able to handle anything that can be edited by that (and therefore basically all community content created for AoE2). Because of this it doesn't need to unpack or convert anything, all data files are used as is.

This repo is originally a fork of https://github.com/apreiml/freeaoe, but because a lot of stuff doesn't like working on forked repos it is now created as a separate repo.

TODO (this is probably going to get outdated)

  • Proper victory screen.
  • Unit grouping/formations.
  • Patrolling.
  • Campaign cinematics (mainly just parse the .mm files).
  • Random map RMS script parsing and generating.
  • Performance (especially the path finding).
  • Various refactoring (move VisibilityMap out into separate file, rendering of units out from UnitManager, etc.)
  • Fix edges of walls when dragging.
  • Rest of AI script actions and conditions:
    • town-under-attack
    • cc-players-unit-type-count (AI cheat)
    • game-time
    • timer-triggered
    • difficulty
    • dropsite-min-distance
    • resource-found
    • players-stance
  • Angle of arrows
  • Arrows stuck in the ground
  • Upscale shaders (WIP in the martin/lolshaders branch)
  • Video support, intro videos etc. (WIP in the martin/video branch)

Wishlist/low priority:

  • Proper support for new terrain graphics (Rise of the Rajas stopped shipping the old ones).
  • Map analysis stuff (for RMS and AI).

Done

Not exhaustive list, mostly in addition to "normal" RTS things, or things not available in other re-implementations.

Compared 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.

  • HD Support.
  • Scenarios:
    • Loading and parsing old and new scenario files (.scn and .scx)
    • Loading and parsing old and new campaign files (.cpn and .cpx)
    • All scenario trigger conditions and effects necessary to play the William Wallace tutorial scenario.
  • Villagers:
    • Automatic switching between builders, lumberjacks, etc.
    • Carrying resource tracking.
  • Units:
    • Dying animations.
    • Creating corpses on death.
    • Decaying corpses.
    • Visibility tracking.
    • Default actions on right click.
    • Garrisoning.
    • Ungarrisoning.
  • Buildings:
    • Construction of buildings.
    • Training units.
    • Dragging wall construction.
  • Actions types:
    • Melee attacks.
    • Ranged attacks.
    • Building (buildings).
    • Moving (on land and arrows/missiles).
    • Gathering, with automatic dropoff.
    • Construction.
    • Flying (birds).
  • Technology:
    • Research.
    • Automatic research of implicit technologies.
    • Unique technologies.
    • Ages with list of techs.
  • Actions:
    • Automatic actions (attacking nearby etc.)
    • Fetching actions for the action panel at the bottom from data files.
    • Queueing.
  • Terrain rendering:
    • Slopes/hills.
    • Blending terrain between tiles.
    • Fog of war.
  • Unit rendering:
    • Animations.
    • Angles.
    • Unit outline when behind buildings (needs improvement).
    • Health bar.
    • Selection outline.
    • Player colors.
    • Construction available/unavailable graphics.
    • Shadows.
    • Fog of war shading.
    • Dopplegangers (i. e. persist last seen buildings. etc in fog of war).
  • Sound:
    • Sound on selection.
    • Sound when attacking.
    • Sound when dying.
    • Sound when training units.
    • Positional.
    • Streaming sound (scenario voices, music, etc.).
    • MIDI support, for music in the trial versions.
  • Civilizations:
    • Starting resources.
    • Different UI interface graphics.
    • Names.
  • Players:
    • Civs.
    • Colors.
    • Ages.
    • Techs.
    • Alliances.
    • Per player visibility.
  • Game assets:
    • Graphics.
    • Palettes.
    • Sounds.
    • Campaign files.
    • Scenario files.
    • Terrain blending files.
    • Terrain hill shape/lightning files.
    • UI interface files.
    • Fog of war graphics.
    • AI script parsing.
    • Support for loading basically everything.
    • Use only original files, don't convert.
  • Game data files:
    • Graphic info.
    • Sound info (randomness of sounds etc.)
    • Unit tasks.
    • Player colors.
    • Techs.
    • Terrain info.
    • Maps.
    • Civilizations.
    • UI info files (button colors etc.)
    • Random map files (not .rms).
    • Automatic location of game files if installed (Windows and Linux).
  • UI interface:
    • Unit info panel.
    • Unit actions panel.
    • Resource info labels.
    • In game buttons/menu.
    • Home screen.
    • History screen.
    • Dialog when starting to find game data.
  • Minimap:
    • Terrain colors.
    • Unit colors.
    • Unit outline types (rectangles vs. diamonds etc.)
    • Unit outline sizes.
    • Fog of war.
    • Camera moving.
  • AI scripts (partial)
    • Can fully parse scripts, with all tokens recognised.
    • Most conditions implemented.
    • Most actions implemented.

More Repositories

1

QuasselDroid

Quasselclient for Android
Java
150
star
2

polkit-dumb-agent

a polkit agent in 145 lines of code, because polkit is dumb and none of the other agents worked
C++
101
star
3

QSsh

Qt-based library for SSH and SFTP.
C++
76
star
4

selectdefaultapplication

an ugly hack to be able to select default applications in linux in a better way
C++
64
star
5

recrossable

crossword game with simplistic handwriting recognition and automatic generation of crosswords
C++
50
star
6

slaq

slack client
C++
39
star
7

borderlands3-save-editor

got tired trying to beat the katagawa ball^W^Wempowered scholar, and no accessible in-game console, so here we are
C++
38
star
8

replicode

constructivist AI language and runtime
C++
32
star
9

genieutils

A library for reading and writing the file formats used in the Genie engine (AoE, AoC, SWGB, etc.)
C++
24
star
10

kgtk

qt5/kf5 port
C
17
star
11

aicompo-tg17

Ghostly: Code for the AI compo case at The Gathering 2017
C++
16
star
12

unfuckify

makes c++ code using `auto` readable, i. e. unfucks it. I think this is what the kids call "opinionated"
C++
16
star
13

epubreader

a simple epub reader using qt
C++
16
star
14

qeh

feh, but better
C++
14
star
15

linux-vr-player-or-something

Very simple VR video player using libmpv and openhmd.
C++
14
star
16

kart

Compocase for the AI programming competition at The Gathering 2015
C
14
star
17

scp-wiki

Mirror of the scp wiki, approx. 20 million words. If you just want the text for e. g. training some version of GPT download the latest release (half the size without the git history).
12
star
18

anti-anti-devtools

dumb hack to defuse the dumbest tricks to detect devtools being open -- and now a bunch of other stuff (killing fingerprinting, including semi-offensively breaking fingerprint2.js/pro, their backend returns errors)
JavaScript
12
star
19

revncable

C++
10
star
20

vapoursynth-editor

vapoursynth editor with fakevim
C++
9
star
21

sponsoryeet

Minimalistic auto youtube sponsor skipper for chromecast
C++
9
star
22

Spokify

Spotify client using KDE libraries, here with scrobbling, visualizer and starred playlist
C++
9
star
23

pdfium

C++
8
star
24

qiwd

Qt based GUI for iwd (in progress)
C++
8
star
25

dropdabass

Compocase for the AI programming competition at The Gathering 2014
C++
8
star
26

ktamaga

This is a Tamagotchi emulator (you know, that silly LCD game from Ban Dai).
Makefile
8
star
27

droidbattles

A programming game, where you program bots in assembly.
C++
7
star
28

shortcut-satan

Global hotkey daemon.
C++
7
star
29

kdeconnect-minimal

kdeconnect without so many big required dependencies
C++
7
star
30

sandsmark-notificationd

simple notification daemon because everything else sucks
C++
6
star
31

remarkable-memtest

Updated memtest version with proper ARM support, ripped out from lima-memtester
C
6
star
32

ircfuzz

fuzzer for irc clients, mirrored here because it is impossible to find
C
6
star
33

vlc-chromecast-subtitles

mirror of the vlc tree with the subtitles for chromecast branch, I'll need to find some time to fix my mail setup to upstream them
C
5
star
34

dmsdos

linux utilities to handle dos/win95 doublespace/drivespace/stacker
C
5
star
35

sphero-and-mousr-qt-controller

Desktop application for controlling the Mousr cat toys and Sphero robots
C++
5
star
36

homefilesharing

encrypted file sharing on a local lan
C++
5
star
37

jantu

LIDA artifical consciousness framework + Starcraft Broodwar = master thesis
Java
4
star
38

sandsmark-screenshot

trivial application to take screenshots and put them on the clipboard
C++
4
star
39

xdg-autostart-launcher

automatically launches all applications in the XDG autostart folders
C++
4
star
40

repliqode

a GUI interface to replicode stuff
C++
3
star
41

loom

source for the humanobs project, imported to git from SVN
C++
3
star
42

impd

ITK's mpd
C++
3
star
43

qml-touchscreen-joystick

Simple "joystick" for "touchscreens", but not a joystick and not for touchscreens.
QML
3
star
44

qpitch

instrument tuner
C++
3
star
45

chrome-extension-unconfidential

Allows you to select and copy text from "confidential" emails in gmail. Security by idiocy.
JavaScript
3
star
46

quassel-web

THIS DOESN'T WORK! clone of quassel to work on a web ui
C++
3
star
47

bluefish

snapchat for jolla
C++
3
star
48

filelight

[OUTDATED REPO]ย Filelight is a lightweight and elegant way to find out where your disk space is going.
C++
3
star
49

qtcreator-minimap

OUTDATED qtcreator with minimap support. I suggest you use the next version of KDevelop instead: http://i.imgur.com/dI7NV.png
C++
3
star
50

aicompo-tg16

Turn On Me: Code for the AI compo case at The Gathering 2016
C++
3
star
51

kcmlaptop

power management for kde1
C++
2
star
52

krename

krename ported to kf5
C++
2
star
53

dotfiles

yay dotfiles bleh
Vim Script
2
star
54

quassel-proxy

a proxy between the quassel protocol and json
C++
2
star
55

promptprint

bash prompt
C
2
star
56

kfontview-standalone

kde font viewer without the whole of plasma-desktop (and some fixes)
Perl
2
star
57

decision-tree-learning

Implementation of decision-tree learning algorithms in C++ for the course TDT4171 Artificial Intelligence Methods
C++
2
star
58

dcd-extractor

A very simple tool to extract the Device Configuration Data from a uboot binary with an IMX header
C
2
star
59

pebble

Picaxe Electronic Bread Board Layout Emulator, except the picaxe part
JavaScript
2
star
60

bincalc

a dumb binary calculator
C
2
star
61

oyarsa

writing a kernel woo
C
2
star
62

konsole-launcher

Very simple command line application to open new windows in Konsole as quickly as possible.
C
2
star
63

awg

Awesome WarGame - first year project at NTNU
Java
1
star
64

qhiveplot

An implementation of hive plots in qt
C++
1
star
65

trysterobiff

simple imap checker
C++
1
star
66

mBrane

high performance communications library
C++
1
star
67

extra-imageformats-qt

bpg, pgf and fuif support for Qt
C++
1
star
68

fuckdos

testing some dos stuff
C
1
star
69

pastenotifier

a simple thing to show the contents of the clipboard when it changes, to avoid embarassing or dangerous mistakes
C++
1
star
70

link-grammar-norwegian

work on norwegian data files for link-grammar based on the official norwegian word bank
Python
1
star
71

ini-editor

a simple ini-file editor written in Qt
C++
1
star
72

zlib-qpm

C
1
star
73

kwoodhammer

All-in-one shell for all kinds of data encryption
Shell
1
star
74

chrome-no-cohort

Disables the new google fingerprinting things
JavaScript
1
star
75

tg18ai

Never used, because I couldn't get a properly working Windows build in time, so I ended up using droidbattles instead.
C++
1
star
76

sigscan

signature scanner, mirrored here because it is impossible to find
C
1
star
77

reddit-notifier

A Reddit notifier for Plasma.
Shell
1
star
78

lolcats

lolcat image thingy
PHP
1
star
79

sigp

a tiny visualization made for Samfundets Interne Grandprix 2010
C++
1
star
80

Rawk

simple cloud music thingy
JavaScript
1
star
81

guitar-effects

cuz jack sucks, and by extension therefore also guitarix
C++
1
star
82

update-mime-database-light

because for some reason update-mime-database from shared-mime-info uses glib2 and is extremely slow.
C++
1
star
83

vlc-kio

a repository to work on a KIO access plugin for VLC
C
1
star
84

phonon-visualization-gsoc

git repo used for visualization gsoc stuff, only interesting for hysterical reasons
C++
1
star
85

owncloud

web services under your control, hysterical repo
PHP
1
star
86

simpleplayer

Simplistic audio player using Phonon, nice for debugging Phonon and visualizations using phonon. Contains a single widget displaying bouncing bars to match the music.
C++
1
star
87

8bit-programmer

extremely simple assembler
C++
1
star
88

qbyteview

simple binary viewer thing showing entropy
C++
1
star
89

kdev-control-flow-graph

porting kdev-control-flow-graph to kf5
C++
1
star
90

spacetrader

The start of a port (mostly rewrite so far) of SpaceTrader to C++/Qt.
C++
1
star
91

quasselpwdumper

a simple tool to dump the db password from quassel if you've forgotten it
IDL
1
star
92

jnibwapi

JNI-bindings for BWAPI
Java
1
star
93

yzis

A vi implementation using Qt
C++
1
star
94

akode

akode
C++
1
star
95

scp-new

New mirroring attempt of scp with images (hopefully) and more robust scraper (so hopefully complete). In progress, wikidot is slow.
1
star
96

vapoursynth-movit

seemed like a good idea for an hour
C++
1
star
97

cloudsync

A tiny, simple application to synchronize folders, using KIO. To replace for example Ubuntu One or Dropbox. *Not usable yet.*
C++
1
star
98

playbak

C++
1
star
99

quazzer

beginning of a quassel fuzzer
C
1
star
100

paqerduty

A simple tray application to notify about Pagerduty events
C++
1
star