Skip to content

Instantly share code, notes, and snippets.

View heinezen's full-sized avatar
Khajiit has code, if you have coin

Christoph Heine heinezen

Khajiit has code, if you have coin
  • Germany
  • 23:18 (UTC +02:00)
View GitHub Profile
heinezen /
Created August 20, 2017 18:35
Chit chat about AoC networking stuff



Sample (first move)

0000   82 b2 45 00 00 00 00 00 3e 02 00 00 56 06 00 00
0010   e1 0e 00 00 03 01 00 00 ff ff ff ff 0b 00 00 00
0020   ab b2 3e 43 00 a0 17 42 17 12 00 00 16 12 00 00
0030   1b 12 00 00 19 12 00 00 18 12 00 00 1a 12 00 00
0040 14 12 00 00 1c 12 00 00 1e 12 00 00 1d 12 00 00
heinezen /
Last active December 26, 2017 02:57
Modding format (and general file structure I guess).

Attributes that our modpack format should have:

  • Easy to understand (For modders and for users)
  • Very flexible
  • Powerful, but yet resilient to changes

Fixed vs. non-fixed structure

Non-fixed structure

Nyan Quickstart Guide for AoE2 modders

The data definition we use for openage is vastly different from the system used in Age of Empires and the Genie Engine. For describing our game data we utilize nyan. nyan allows extensive moddability while still being understandable for humans. If you are familiar with YAML or JSON, you will probably spot many similarities. But even if you don't, there's no need to worry just yet. This guide will teach you the basics of nyan and the underlying principles.


Nyan manages the configuration of our game entities. For that purpose it provides the following features:

Human-readable plain-text modding: Everything in the game data files is editable without the need for binary extraction. You just require a text editor. For those of you who are scared of text editors, additional helper tools will be made available.

heinezen /
Last active March 29, 2018 05:05
Converting SLP terrain files to flat texture
#!/usr/bin/env python3
# Copyright 2018-2018 the openage authors. See for legal info.
Transforms the dimetric tiles converted from SLP files to cartesian format.
import math
import argparse


GOMS (which stands for Goals, Operators, Methods, Selection Rules) is a technique to break down a user task into its individual steps. In the GOMS model, goals are achieved by completing a set of operations (method). There can be multiple methods available to they user of which they choose one based on the selection rules. For more complex tasks, goals are allowed to be divided into several subgoals.

GOMS elements (The concepts behind a GOMS model and their relationships, Olli Savolainen, licensed CC-BY-SA 3.0)

GOMS are very useful for analyzing the complexity of a task and the potential hurdles users have to face. However, GOMS does not account for errors and inexperience, making it only applicable to the average user. Another drawback of "standard" GOMS (called CMN-GOMS) is that multitasking is not consid

heinezen /
Last active April 13, 2019 19:48
Documentation about the possible menu entries in the OpenAge Settings.

Settings Menu Entries for OpenAge

Bold: Options from HD, UserPatch and Voobly

Italic: Options that will likely be in OpenAge

Normal: Nice-to-have features

General Game Settings


This is a test


Openage Data files

nyan file hierarchy for mods

|-/data    <-- everything that's part of the nyan tree


(Fill meeeeeeeeeeeee)




(Fill meeeeeeeeeeeee)


    payment_mode : PaymentMode