Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Engine docs update #1525

Merged
merged 49 commits into from
Sep 5, 2023
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
52cbd6b
doc: New component doc drafts.
heinezen Jul 22, 2023
60071d4
doc: More drafts for other engine parts.
heinezen Jul 25, 2023
ae2f671
refactor: Remove redundant includes.
heinezen Jul 25, 2023
125aa31
refactor: Move time type and logic to dedicated subfolder.
heinezen Jul 25, 2023
6e977ce
refactor: Separate time classes/types into time namespace.
heinezen Jul 25, 2023
dee4ab3
refactor: Include suggestions from iwyu.
heinezen Jul 26, 2023
3064802
doc: Simulation time.
heinezen Jul 26, 2023
6fe3126
doc: Add TOCs for old docs.
heinezen Jul 27, 2023
36ca609
doc: Event system.
heinezen Jul 27, 2023
c122d0a
doc: Curves.
heinezen Jul 29, 2023
96c4b71
curve: Align name of 'sync' for curve and keyframe container.
heinezen Jul 29, 2023
2fa6663
doc: Game Entity.
heinezen Jul 30, 2023
c4f280a
doc: Components reference.
heinezen Jul 30, 2023
b63a62a
doc: Add missing text.
heinezen Jul 30, 2023
1623711
doc: Systems reference.
heinezen Jul 31, 2023
0d82a28
doc: Activity reference.
heinezen Jul 31, 2023
fd5b376
doc: Game simulation.
heinezen Aug 2, 2023
a8bfb07
doc: Add 'versionstr' field to modpack info format.
heinezen Aug 2, 2023
e7aaa40
doc: Remove obslete docs.
heinezen Aug 3, 2023
36095c4
doc: Rework release guide.
heinezen Aug 3, 2023
2ad779b
doc: Update project structure.
heinezen Aug 3, 2023
d478458
doc: Describe openage nyan API layer.
heinezen Aug 3, 2023
e666227
doc: Refactor nyan docs.
heinezen Aug 3, 2023
f9409ae
doc: Refactor conversion docs.
heinezen Aug 3, 2023
19eaa60
doc: Add UML images.
heinezen Aug 3, 2023
8390123
doc: Curve type visualization.
heinezen Aug 4, 2023
163ad2c
doc: Add image sources.
heinezen Aug 4, 2023
d5007e2
doc: Fix unclear instructions and broken links.
heinezen Aug 5, 2023
77c5b17
doc: Create a doc for the different Python start subsystems.
heinezen Aug 5, 2023
5f210e4
doc: Engine architecture rewrite.
heinezen Aug 5, 2023
966a4bc
engine: Fix import stop_token in llvm.
heinezen Aug 10, 2023
e15eca9
renderer: Enforce float sqrt calculation.
heinezen Aug 10, 2023
54f936f
coord: Use math constants from engine typedefs.
heinezen Aug 10, 2023
75c9f37
util: Remove unused header.
heinezen Aug 10, 2023
7884e07
error: Fix Windows complaints about sighandler_t.
heinezen Aug 10, 2023
70560a2
engine: Fix llvm problems with jthread.
heinezen Aug 10, 2023
a638632
gui: Include additional Windows GL headers.
heinezen Aug 10, 2023
55eb1c5
make: Run start commands from build directory.
heinezen Aug 10, 2023
9a311ce
gamestate: Don't inline component type getters.
heinezen Aug 10, 2023
02c32a8
main: Fix Python-C++ glue code on Windows.
heinezen Aug 10, 2023
6725ab7
doc: Update README links.
heinezen Aug 23, 2023
b81eb2e
doc: Rephrase architecture/curve/event documentation.
heinezen Aug 23, 2023
4f9f44c
doc: Renderer uniform ID usage.
heinezen Aug 30, 2023
5dacafd
doc: Code optimization.
heinezen Sep 2, 2023
ada2157
doc: Bring AI ideas up-to-date.
heinezen Sep 4, 2023
84bfc24
engine: Add pre-processor error for llvm jthread.
heinezen Sep 4, 2023
6874025
doc: Add a list of alternative profilers.
heinezen Sep 4, 2023
90c7fa0
doc: Mention valgrind suppression file.
heinezen Sep 4, 2023
16f5f9a
doc: Clarify event targeting.
heinezen Sep 4, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ install: $(BUILDDIR)

.PHONY: run
run: build
$(BUILDDIR)/run game
cd $(BUILDDIR) && ./run game

.PHONY: test
test: tests checkfast

.PHONY: tests
tests: build
$(BUILDDIR)/run test -a
cd $(BUILDDIR) && ./run test -a

.PHONY: build
build: $(BUILDDIR)
Expand Down
112 changes: 54 additions & 58 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[![openage](/assets/logo/banner.svg)](http://openage.dev)
=========================================================

**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/). 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**: 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/).

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](http://store.steampowered.com/app/221380/)* or [AoE II: DE](https://store.steampowered.com/app/813780) installation (via [Wine](https://www.winehq.org/) or [Steam-Linux](doc/media_convert.md)).
To play, you require *[any of the original games (AoE1, AoE2)](/doc/media_convert.md)* or their *Definitive Edition* releases.

[![github stars](https://img.shields.io/github/stars/SFTtech/openage.svg)](https://github.com/SFTtech/openage/stargazers)
[![#sfttech on matrix.org](/assets/doc/matrixroom.svg)](https://matrix.to/#/#sfttech:matrix.org)
Expand All @@ -13,32 +13,41 @@ To play, you require *an original AoE II: TC, [AoE II: HD](http://store.steampow

Contact
-------
Contact | Where?
-----------------|-------
Issue Tracker | [GitHub SFTtech/openage](https://github.com/SFTtech/openage/issues)
Development Blog | [blog.openage.dev](https://blog.openage.dev)
Subreddit | [![reddit](/assets/doc/reddit.svg) /r/openage](https://www.reddit.com/r/openage/)
Discussions | [GitHub Discussions](https://github.com/SFTtech/openage/discussions)
Matrix Chat | [![matrix](/assets/doc/matrix.svg) `#sfttech:matrix.org`](https://matrix.to/#/#sfttech:matrix.org)
Money Sink | [![money sink](/assets/doc/liberapay.svg)](https://liberapay.com/SFTtech)

| Contact | Where? |
| ---------------- | -------------------------------------------------------------------------------------------------- |
| Issue Tracker | [GitHub SFTtech/openage] |
| Development Blog | [blog.openage.dev] |
| Subreddit | [![reddit](/assets/doc/reddit.svg) /r/openage](https://www.reddit.com/r/openage/) |
| Discussions | [GitHub Discussions] |
| Matrix Chat | [![matrix](/assets/doc/matrix.svg) `#sfttech:matrix.org`](https://matrix.to/#/#sfttech:matrix.org) |
| Money Sink | [![money sink](/assets/doc/liberapay.svg)](https://liberapay.com/SFTtech) |

[GitHub SFTtech/openage]: https://github.com/SFTtech/openage/issues
[blog.openage.dev]: https://blog.openage.dev
[GitHub Discussions]: https://github.com/SFTtech/openage/discussions

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**](https://github.com/SFTtech/nyan) | Content Configuration and Modding
**Humans** | Mixing together all of the above

| Technology | Component |
| ------------ | ------------------------------------------------------------- |
| **C++20** | Engine core |
| **Python3** | Scripting, media conversion, in-game console, code generation |
| [**Cython**] | Python/C++ Glue code |
| [**Qt6**] | Graphical user interface |
| [**CMake**] | Build system |
| [**OpenGL**] | Rendering, shaders |
| [**Opus**] | Audio codec |
| [**nyan**] | Content Configuration and Modding |
| [**Humans**] | Mixing together all of the above |

[**Cython**]: https://cython.org/
[**Qt6**]: https://contribute.qt-project.org/
[**CMake**]: https://cmake.org/
[**OpenGL**]: https://www.opengl.org/
[**Opus**]: https://opus-codec.org/
[**nyan**]: https://github.com/SFTtech/nyan
[**Humans**]: https://www.youtube.com/watch?v=fQGbXmkSArs&t=20s

Goals
-----
Expand Down Expand Up @@ -72,26 +81,19 @@ Current State of the Project
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](https://blog.openage.dev/new-gamestate-2020.html), [Part 2](https://blog.openage.dev/engine-core-modules.html).
If 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).

*\* may not actually be every day and night*

Operating System | Build status
:------------------:|:--------------:
Debian Sid | [Todo: Kevin #11](https://github.com/SFTtech/kevin/issues/11)
Ubuntu 22.04 LTS | [![Ubuntu 22.04 build status](https://github.com/SFTTech/openage/actions/workflows/ubuntu-22.04.yml/badge.svg?branch=master)](https://github.com/SFTtech/openage/actions/workflows/ubuntu-22.04.yml)
macOS | [![macOS build status](https://github.com/SFTtech/openage/workflows/macOS-CI/badge.svg)](https://github.com/SFTtech/openage/actions?query=workflow%3AmacOS-CI)
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)
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)

* Which **platforms** are supported?
* Linux (primary), Windows & macOS (at least we try :)

* What **features** are currently implemented?
* See [status page](https://github.com/SFTtech/openage/projects).
| Operating System | Build status |
| :-----------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
| Debian Sid | [Todo: Kevin #11] |
| Ubuntu 22.04 LTS | [![Ubuntu 22.04 build status](https://github.com/SFTTech/openage/actions/workflows/ubuntu-22.04.yml/badge.svg?branch=master)](https://github.com/SFTtech/openage/actions/workflows/ubuntu-22.04.yml) |
| macOS | [![macOS build status](https://github.com/SFTtech/openage/workflows/macOS-CI/badge.svg)](https://github.com/SFTtech/openage/actions?query=workflow%3AmacOS-CI) |
| 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) |
| 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) |

* What's the **plan**?
* See [doc/milestones.md](/doc/milestones.md). We also have [lists of crazy xor good ideas](/doc/ideas) and a [technical overview for requested features](/doc/ideas/fr_technical_overview.md).
[Todo: Kevin #11]: https://github.com/SFTtech/kevin/issues/11


Installation Packages
Expand All @@ -116,15 +118,21 @@ If you need help, maybe our [troubleshooting guide](/doc/troubleshooting.md) hel
Quickstart
----------

* How do I get this to run on my box?
* See [doc/building.md](/doc/building.md).
* **How do I get this to run on my box?**
1. [Clone](https://docs.github.com/repositories/creating-and-managing-repositories/cloning-a-repository) the repo.
2. Install dependencies. See [doc/building.md](/doc/building.md#dependency-installation) to get instructions for your favorite platform.
3. Build the project:
```
./configure --download-nyan
make
```

* I compiled everything. Now how do I run it?
* **I compiled everything. Now how do I run it?**
* Execute `./bin/run`.
* [The convert script](/doc/media_convert.md) 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
* **Waaaaaah! It...**
* segfaults
* prints error messages I don't want to read
* ate my dog
Expand All @@ -141,26 +149,14 @@ or the [bug tracker](https://github.com/SFTtech/openage/issues).
Contributing
============

You might ask yourself now "Yeah, this sounds cool and all, but how do *I* participate
You might ask yourself now "Sounds cool, 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](https://github.com/SFTtech/openage/projects) 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](/doc/media)
or thoroughly investigating [game mechanics](/doc/reverse_engineering),
then this might be the right place to start.
* **Check the issues** [labelled with good first issues](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.
* **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.
* **Ask us** in the [chat](https://matrix.to/#/#sfttech:matrix.org). 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
Expand Down
93 changes: 0 additions & 93 deletions doc/ai/interface.md

This file was deleted.

74 changes: 0 additions & 74 deletions doc/architecture.md

This file was deleted.