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
  • 14:40 (UTC +02:00)
View GitHub Profile
@heinezen
heinezen / settings_menu_entries.md
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

@heinezen
heinezen / networking.md
Created August 20, 2017 18:35
Chit chat about AoC networking stuff

Networking

Movement

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
heinezen / openage_mod_format.md
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.

Overview

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
heinezen / terrain_convert.py
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 copying.md for legal info.
"""
Transforms the dimetric tiles converted from SLP files to cartesian format.
"""
import math
import argparse

Decentralized multiplayer ranking

Motivation

With unlimited modding capabilities there are inevitably unlimited possibilities for arguments over which mods destroy the game's balance and which mods are harmless. A prime example of this is the Advanced Idle Pointer mod for Age of Empires 2 by Gallas and linetyreborn. While it is inherently useful for new players, it might be considered just too useful by purists. In a centralized ranking system these disagreements can ultimately lead to a community split.

image

Idle Pointers: Genius idea or the downfall of civilization?

Openage Data files

nyan file hierarchy for mods

/$modname
|-/data    <-- everything that's part of the nyan tree
  |-/auxiliary
    |-/effect_types
 |-/attributes

Introduction

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

Test

This is a test

Example

Reference

(Fill meeeeeeeeeeeee)

aux.progress_type.ProgressType

ProgressType(Entity):