So about a week ago I had a heart attack, which is not something I can recommend. I'm now recovering reasonably well, but I'm still pretty tired and have to go through physical rehab.
Of course that does mean that the Heroes & Villains DLC will be delayed. But I was intentionally vague with the promised release date, exactly because with a solo dev, random events can cause delays. So the promised release date hasn't changed - it's still sometime in 2023.
In other news, I am happy to report that the next AMD driver update should contain a fix for the problems in Airships from their end as well. If you continue experiencing graphical problems, do let me know.
Also, there's been a report that the antivirus software MalwareBytes might be causing the game to crash. If the game is crashing to desktop with no error message, do check if your antivirus software might be killing it off. False positives do happen on occasion.
Development on Heroes & Villains was going well before the whole heart attack thing. I was working on diplomatic incidents, and there should be about 40 different ones in the game, all of them involving an interaction - a crisis or opportunity - between two empires.
I also plan to write a few dev blog posts soon, about the details of the AMD bug, and about map generation, which should hopefully be interesting.
For now, I leave you with another three hero / villain portraits:
Edit Thank you so much for all your well wishes. I feel loved and appreciated. I'm recovering and starting to feel less tired, taking my meds, doing physiotherapy, etc. So I don't plan to die anytime soon.
If you previously experienced glitches or crashes using an AMD graphics card, this update should fix these. Also, if you set the game to graphics compatibility mode to make it work on your AMD card, you should now be able to turn that off - and turn on lighting effects, and get a faster, prettier game.
Note that this fix is really a workaround for a bug (or multiple bugs) in the AMD driver. I'm talking to AMD as well and hope they'll eventually resolve it on their end.
I am happy to announce the upcoming DLC for Airships - Heroes & Villains:
In Heroes & Villains, you can recruit ship captains and city governors to your cause.
Captains improve your ships' performance, and can use their abilities to turn the tide of battle. You can outflank enemy ships, cripple engines, create smokescreens, and more. Some captains also have unnatural powers that let them control the weather, confuse your enemies, or even raise the dead.
Governors can be assigned to cities to reduce unrest and increase productivity. Some of them can also issue temporary edicts such as declaring martial law, hosting a masked ball, or using the citizens for gruesome experiments. Others can get rid of monsters or pirates for you. All for a price.
Captains and governors react to events and your actions. A peace-loving governor may quit if he sees you commit one too many war crimes, whereas a researcher can gain experience from dissecting the monsters you kill. As time goes on they can change - for better or worse - and a few of them can become famous enough to re-unite the warring city-states, providing a new path to victory.
As for your crew, assuming they don't get killed in battle, they can gain experience, especially if trained by a suitable commander.
Finally, your realm can become entangled in various incidents that require you to determine - or guess at - what your opponents will do. Are they willing to risk war over a trade dispute? Is that charming nobleman an asset or a spy? Is your governor's clever plan going to work? Are you willing to accept the help of heretics?
The character art is created by Samma van Klaarbergen, and the DLC features several new pieces of music by Curtis Schweitzer.
The DLC will cost $8.99, subject to Steam regional pricing. It will release sometime in 2023, and you can wishlist it here now.
Based on requests and ideas from the Discord community, I've added a whole bunch of new heraldic charges to the game. (Heraldic charges are the images of animals and objects and so on that are found in coats of arms.)
I've also added bonuses to eight of them:
+30% armour blast resistance
No maintenance cost for town upgrades
-75% armour HP, double lift
Spies can pursue intrigues, with an increased success rate
Additional unrest from towns and cities, building cost and maintenance is halved
+50% Spy defense
Double research and reputation from universities
Double reputation from sending delegations
Finally, I also added five new heraldry layouts:
DLC Status:
Still not ready to be announced, waiting for key art.
The DLC announcement will be delayed to February because I didn't account for all the things I needed lined up for it, including key artwork. Actual development on the DLC is going well, though, and I will soon be in a position to announce it. Apologies for that.
You can now view the game setup settings during a conquest game, and use cheats to modify them. You can even do things like turn off the diplomacy system halfway through the game!
There's now a setting for reduced visual noise, which gets rid of animations, fragments, background elements, and most particles, to make the game more accessible for people with vision/visual processing issues.
If you are editing a ship in multiplayer, you are no longer forced to watch unrelated intercepts.
Turning off monsters now also turns off starter monsters.
Increased land anemone range.
Flipped around some AI buildings that were pointing the wrong way.
Landships can now cross oceans to friendly ports.
Spy action notices are now shown as normal notices on the left of the screen instead of being a popup.
Ammo overlay no longer shown for weapons that don't need ammo.
Coronation victory setting explains that it also controls final ritual victory.
Torpedo bombers now wait until they have a good shot instead of launching their torpedo as soon as possible.
The game now detects when an incompatible driver is being used and automatically turns on graphics compatibility mode and tells the player, instead of crashing out. This isn't a full solution, but it's at least better. If you have an uncle that works at AMD, let me know.
So I am about to board one of those novel heavier-than-air flying contraptions to travel to the remains of the Old Empire (AKA England), but I wanted to keep you informed of plans for next year.
There'll be a bugfix release in January dealing with some user experience and balance issues, and updating the Chinese translation to an improved one created by players.
And then in late January I'll be announcing an expansion for Airships. The name and topic of which is still under wraps, but I can say that Curtis Schweitzer has once again signed on to create music for it.
Until then!
(Image copyright Roby, CC BY-SA 2.0 be)
Addendum for expectation management: The expansion isn't sea-ships, because I still have some game design problems with sea ships to figure out.
Special eras are one of the features that I introduced in the co-op and conquest update in August. These work by temporarily changing the rules of the game, and may also have a victory condition, where an empire can be rewarded for ending the era early.
Like pretty much everything in the game, these are data-driven, so you can add new ones by modding. Here's how.
(This post assumes that you know how Airships mods work. If you want an introduction to basic modding, check out this article first.)
Play in Airships progresses through a series of eras, which slowly change the game balance, decreasing the unrest from empire size, and increasing base research and the number of spies available. Each era has a chance to be a randomly chosen special era, which accumulates over time, so that while not every era is special, you will definitely get some special ones. You can see this information in StrategicEras in the game data. Of course, you can also mod this, changing the tempo and balance of the overall game if you wish.
Special eras are stored as EraModifiers in the game data. There is also always a bonus of the exact same name, which is active while the era is active. (So whenever you create a new EraModifier, create a Bonus with the same name.)
It's probably a good idea to open eraModifiers.json with your text editor so you can see concrete examples of what this article is about.
You can also download and read the example mod that adds one new EraModifier.
So apart from the name, we want a 16x16 icon for the era, a 400x300 image for the announcement dialog, and a background pattern for the dialog. (The patterns are numbered 0-24 and can be found in data/images/patterns.png. You can also leave out this value, but it's prettier if you have a suitable pattern!)
There are also three strings in en.properties associated with this modifier:
bonus_AGE_OF_PLENTY=Age of Plenty
age_desc_AGE_OF_PLENTY=An age of bountiful harvests.
age_fx_AGE_OF_PLENTY=+15% income\nDouble fleet resupply speed
So that's the name of the era, a prose description of what's happening, and a list of gameplay effects. (\n is a new line character.)
But how does this actually do anything? By being a bonus! As you may know, bonuses can have all kinds of gameplay effects in the game. For example, the AGE_OF_PLENTY bonus is used in the EmpireStat value for city income:
There's a lot of EmpireStats that bonuses can modify - here's a full list. They can also unlock city upgrades, modules, and armour and change their stats.
Here's some examples of what an EraModifier could do via bonuses:
Decrease the reputation required to start coronation to 70.
Double the local defence budget of cities.
Eliminate the reputation cost of breaking truces.
Make fires nigh on impossible to put out.
Double the unrest of cities not connected to the capital.
Unlock a new city upgrade that can only be built during the era.
Make Suspendium Chambers produce double lift.
Allow everyone to train dragon riders.
Unlock a new part of the tech tree.
(Note that unfortunately, two mods that replace the same EmpireStat will conflict with each other, so you have to be a bit careful with that.)
So that's the basics for EraModifiers. But they can also do a lot more, creating what are basically time-limited events for empires to participate in.
Spawning City Upgrades
You can spawn city upgrades at the start of an era, using the following fields:
eraStartSpawnUpgrade - The CityUpgradeType to spawn.
eraStartSpawnNumUpgrades - How many to spawn. The game will try to distribute them evenly.
doNotSpawnUpgradeInEmpiresWithBonus - Empires with this bonus won't get any of the upgrades in their towns or cities.
By default, those upgrades will survive the end of the era, but you can also use an era reward (see below) to remove them.
Spawning a Monster Nest
Using eraStartSpawnNest, you can spawn a single monster nest at the start of the era, which can be used to create a "boss monster", such as the pirate king in the age of piracy.
Expeditions
Expeditions let empires send a group of ships to investigate stuff, gaining a random reward upon return.
To enable expeditions, provide a list of rewards in the field "expeditions". The field is also bonusable, so you can provide different sets of rewards depending on what kind of empire sends the expedition.
To give the player an idea of how large a group of ships they should send to get a good outcome, use the fields expeditionLowRewardsBoundary, expeditionMediumRewardsBoundary, expeditionHighRewardsBoundary, and expeditionVeryHighRewardsBoundary.
So for example, if the total value of the ships sent is between expeditionMediumRewardsBoundary and expeditionHighRewardsBoundary, the tooltip will state "Expedition Potential: Medium".
Rewards
Rewards are used both for expedition outcomes and for what happens when an era ending is triggered. They are the same data structure that is used for monster nests. They should have a name, a title, and an image. And they can also have the following fields:
money - Money gained.
rep - Reputation gained.
research - Research points gained. These are applied to the current research, if one is active. Otherwise they are applied to the next research topic chosen.
bonus - A bonus to permanently grant.
tech - A technology to grant.
supplies - Supplies to give to the fleet that unlocked this reward. (Only meaningful for monster nest rewards.)
specialConstructionName - Name of a ship or landship to give to the fleet that unlocked this reward. These should be placed in a bonusConstructions folder in the mod. (Only meaningful for monster nest and expedition rewards.)
numSpecialConstructions - Number of special constructions to grant, 1 by default.
startEraModifier - Start a new EraModifier.
endsEraModifier - If this is the current era modifier, end it.
destroyAllUpgrades - Destroy all City Upgrades of this name.
There are also some fields that control which reward is picked from a list of possibilities for monster nest and expedition rewards. Note that the game never picks rewards that have no effect, such as ones that grant a bonus that an empire already has. Try to have a fall-back reward that is always valid.
spawnWeight - Relative chance that this reward is chosen.
onceOnly - This reward can only be given once.
requires - Require this bonus.
requireResearch - Research must be possible. So if the tech speed is set to No Research, this reward won't be picked.
requireMonsters - The game must have monsters, so monster nest density must not be set to None.
requireToggle - Require that a specific game feature is toggled on. The names of the available toggles as of this writing are: REPUTATION, DIPLOMACY, CORONATION, ALLIANCE_VICTORY, SUPPLY, and AUTORESOLVE.
minWinningFleetCost - Only used for expedition rewards. The expedition fleet must have at least this total cost.
maxWinningFleetCost - Only used for expedition rewards. The expedition fleet must have at most this total cost.
Using minWinningFleetCost and maxWinningFleetCost you can make it that larger fleets give better rewards.
Since rewards can both grant and require bonuses, you can use this to tell stories that unfold over multiple expeditions. See AGE_OF_MONSTERS for an example.
Bonusable Descriptions and Effects
Normally, the era modifier description and effects are the strings age_desc_X and age_fx_X, but if you want empires with specific bonuses to have different text, you can use the bonusable values "desc" and "effectsDesc" to specify strings. For example, empires with the REVOLUTION bonus get a different text and info for the Age of Unrest:
Last but not least, EraModifiers can have end conditions. When they are met, the era ends. Empires then receive rewards (or punishments) based on who triggered the end condition.
Here are the fields for the possible end conditions:
eraEndsWhenControllingUpgrades - When set to true, the era ends when the upgrades spawned at the start are all controlled by one empire.
eraEndsWhenClearingNest - When set to true, the era ends when the nest spawned at the start are is defeated by an empire.
eraEndsWhenUpgradesBuilt - A CityUpgradeType. The era ends when enough of them have been built, with the empire that built the most being the one that triggers the era end.
eraEndsWhenProportionHasUpgrade - Used to determine how many upgrades need to be built to end the era. The number of upgrades is the number of cities x eraEndsWhenProportionHasUpgrade. (This applies even if the upgrades are town upgrades.)
eraEndsWhenResearched - A technology. The first empire to research it is the era ender.
End Rewards
When an era end condition is triggered, empires receive a reward based on whether they were the one to trigger the end condition, their bonuses, and the bonuses of the empire that triggered the end condition.
A concrete example: Age of Piety spawns three Holy Sites at the start. Once an empire controls all three holy sites, the era ends, but what exactly happens depends on the empire. A normal empire gains 20 reputation. But if it's Cultists, they instead gain the Greater Cult bonus, a massive permanent increase to income and industry, and the holy sites are destroyed:
For the other empires that didn't manage to control the holy sites, there are four distinct outcomes based on whether they are cultists and whether the winner is a cultist:
Note that eraNonEnderReward is a nested bonusable value. The first level is determined by the bonuses of the empire the reward applies to, and the second by the bonuses of the empire that ended the era.
Testing
Once you've added a new EraModifier, you can test it using the "Start Age" cheat option. Note that the game needs to be unpaused for the age to actually start. (And yes, all the cheats in the game started out as tools for testing the game.)
Conclusion and Example Mod
Putting this all together, you can create special game eras that provide variety to gameplay by changing the way the game works and giving the player interim goals. As an example of this, here's a mod that adds an Age of Schism, during which the Trilunar Church breaks into three competing sects you can try to reunite - or destroy, if you're cultists.
As always, if you have any questions about this post, feel free to comment below, and if you need help with modding, hop on the Discord and ask!
Ships withdrawing from a raid can now limp to the nearest safe port.
The game now checks whether you need to declare war when you intercept a fleet.
Halved speed at which the plague spreads.
Fixed post-combat ship stats in conquest.
Fixed waspkiller marine graphics.
The AI should no longer assume that human players want to break beneficial trade treaties.
There is now always a reward for defeating moon disks.
Insults are now properly hidden when the option to hide them is selected.
Fixes to French and German translations.
New cheat option: constant monster nest raids.
You might wonder why you'd want an option to make monster nests constantly attack you. The reason is that all the cheat options in the game are also tools I use for testing the game. And sometimes I need to test something involving a monster nest attack.