Skip to content

Instantly share code, notes, and snippets.

EMPIRE STATS EXPLANATION

These are per-empire values that are modified by an empire's bonuses. You can give an empire bonuses through heraldic charges, technology, city upgrades, special eras, monster nest rewards and expedition rewards.

This document is best read together with Airships Install Folder/data/EmpireStat/stats.json so you can see the concrete values used.

Calculations and Notes

Time

Time: 1 day = 400 milliseconds

@Zarkonnen
Zarkonnen / all-loadables.java
Last active May 5, 2022 09:26
Moddable data loading code from Airships
// Dump of the data loading code for the game for modders to pick apart.
// Code is for version 1.0.23.10
// See also:
// http://zarkonnen.com/airships/modding_guide
// http://zarkonnen.com/airships/modding_guide/crew_animation
// http://zarkonnen.com/airships/modding_guide/bonusable_values
// Documentation on what the weather/landscape stuff will look like after the landscape update
// https://gist.github.com/Zarkonnen/bf56b5c72b203767cac8ddc264781fc3
// Appearances are used all over the place
@Zarkonnen
Zarkonnen / weather.md
Last active March 26, 2022 15:54
New weather and landscape features documentation

These new features for weather and landscapes are currently available in the "weather" beta branch on Steam. The new data format is backwards-compatible with the old one, so you can e.g still just set "rain": true to get generic rain.

One big change is that instead of having extra fields for a snowy variant of things, there's now a generic "variant" value that can be used to define multiple visual variants of land blocks and backgrounds.

LandscapeType

  • backgroundFlavors - list, which CombatBackgroundFlavors this landscape type supports
  • hills - 0.0 to 1.0, hilliness
  • hasTrees - true/false, whether there are any trees
  • minTreeClusterDistance - Minimum distance between clusters of trees, in blocks.
  • maxTreeClusterDistance - Maximum distance between clusters of trees, in blocks.
@Zarkonnen
Zarkonnen / postmortem.md
Created October 8, 2021 08:26
Postmortem: The Unstable Zone

A rather verbose postmortem of my compo game, The Unstable Zone.

I was really happy to be able to do Ludum Dare outside the house again. I tried doing game jams while isolating at home, and I just can't get into the spirit of it. A jam is a bit of an altered state, and it's hard to get into an altered state if you're sitting on a sofa at home and the dishes need doing. Without resorting to drugs, I mean.

So I did Ludum Dare at the local gamedev incubator thingy I co-founded, Swiss Game Hub. About eight people turned up at various points, working on around five games, rather fewer than before, probably in part because there was a big games event going on at the same time. (And yes, we were all verifiedly vaccinated, that's why we could do it in person again.)

I believe I voted for Unstable in the preliminary round and then against it in the final round, so I had mixed feelings. But that's how jam themes always work: the moment you find out, you are convinced it's the worst possible theme and your brain

@Zarkonnen
Zarkonnen / PersonOfInterestListener.java
Created September 30, 2021 07:39
Java snippet for a story
class PersonOfInterestListener implements StreetEventListener {
final String personOfInterestName;
final GoalOrientedProcess proc;
public PersonOfInterestListener(GoalOrientedProcess proc, String personOfInterestName) {
this.proc = proc;
this.personOfInterestName = personOfInterestName;
}
public void processEvent(StreetEvent e) {
Zerkas
= War =
+ 7 Relative Strength
+ 1 Reputation
Total 8
= Peace =
Total 0
= Non-Aggression Pact =
- 7 Relative Strength
+ 6 Threatening Neighbours
@Zarkonnen
Zarkonnen / aliens.md
Last active July 2, 2021 12:19
aliens

I'm an avid reader of the blog A Collection of Unmitigated Pedantry (ACOUP), a blog about history, economics, material culture, and speculative fiction.

In a recent series of posts about the game Europa Universalis 4, he refers to the concept of interstate anarchy, a way of describing international relations as being about the need to acquire power to guarantee survival. He then references this when describing the situation of a West African ruler having to respond to the introduction of (improved) firearms by European traders:

Even a good-hearted West African ruler (and like all rulers, many were not so good-hearted) was strategically trapped; refuse to trade enslaved people for guns and you would be defeated and traded by those who did.

This connected to another thing I've been thinking about for a long time: alternate models of how the arrival of advanced aliens might look like. In general, the expectation has been either conquest or enlightenment, sometimes a mixture of the two. These tropes have cal

@Zarkonnen
Zarkonnen / catalina.md
Last active October 14, 2019 15:40
Signing and Notarizing for Catalina

Signing and Notarizing for Catalina

Introduction

With the newest version of macOS, Apple has made mandatory some requirements for applications that were previously recommended: 64-bit executables, signing, and notarization. Applications that don't satisfy these requirements will no longer run.

This is intended to make the experience safer for end-users and prevent the spread of malicious programs, but it does also make things more complicated, especially for people who aren't primarily Mac developers but would like to support or keep supporting Macs.

I just went through figuring out how to comply with this for my game, Airships: Conquer the Skies. Airships runs in Java and hence also has to bundle a JVM, but the rest of what I learned should be applicable in general.

So here's what I learned about signing and notarization a Mac app that wasn't directly compiled by Xcode. Please note that this is cobbled-together research to make things work for me and may not be 1

@Zarkonnen
Zarkonnen / stone_desert.json
Created September 25, 2019 08:00
Example LandscapeType that overrides all generation settings
{
"name": "STONE_DESERT",
"backgroundFlavors": [
"mountain", "sea", "plains"
],
"hills": 0.2,
"treeDensity": 0.3,
"largeTreeP": 0.2,
"soil": "STONE_MIDDLE",
"rock": "ROCK",
@Zarkonnen
Zarkonnen / airships_mp.md
Created March 7, 2019 06:40
RUNNING YOUR OWN AIRSHIPS MULTIPLAYER SERVER

RUNNING YOUR OWN AIRSHIPS MULTIPLAYER SERVER

Last edited: Mar 7, 2019

If the Airships multiplayer server is unavailable, you can also set up and run your own. By having bought a copy of Airships: Conquer the Skies you are explicitly permitted to operate your own multiplayer server instances for the game. This is also to ensure that the game can keep on being played in the long term.

Note that you can always create multiplayer matches by using the Host/Join options and connecting directly to another player's IP. But if that is not possible due to NAT, or if you'd like the lobby system that the multiplayer server provides, here is how to set it up:

You will need Java installed on your machine for this.