The best kittens, technology, and video games blog in the world.

Friday, July 19, 2019

Some Thoughts on Stepmania

The Dancing XiaoChou 3 by qchen from flickr (CC-NC-ND)

Back in 2009 I even wrote a rant about Stepmania, and here's another one.

In my younger days I did a lot of Dance Dance Revolution, and every now and then I come back to it.

I'd like to play with some modern songs. Supposedly official games exist, but they have like 50 songs per game, plus a few "$5 for 3 songs" DLCs, and mostly only work on some weird-ass consoles.

Basically the only option for it is using Stepmania, and downloading some user-made songpacks.

So what's wrong with all this

The first problem is that music is totally free online on youtube and such, but Big Copyright would never allow a healthy ecosystem of dance games, because they just love the whale exploitation model of "$5 for 3 songs", and the market is too small for someone to force them to be reasonable.

Stepmania tries to avoid any direct entanglements with all those copyright issues, and unfortunately that means it avoids actually trying to solve the problems.

User-made song packs have mixed quality

So I got a bunch of random songpacks, basically keyword matching artists I might like.

The songpacks are basically whatever the author decided to throw there, so I'm generally only interested in very small portion of each, but let's say I keep them all, as at this stage I don't know if those songs are any good or not.

Most of user-made content is decent enough, but it's far too common that there's bullshit songs with ratings like 12-20, which are presumably meant for the keyboard, or maybe arcade machines with safety rail, since it would be unsafe to even try on a soft dance mat, regardless of one's skill level.

There's plenty of songs which are poorly synced. There's plenty of songs which have very questionable ratings, and are actually a lot harder than other songs at same ratings.

This wouldn't be a huge deal if there was a way to filter that out easily, but there isn't.

Stepmania UI is atrocious, especially when you have a lot of songs

All right let's say I have a few thousand songs now. Stepmania will take forever to actually start, like literally over 15 minutes. It seems latest version and SSD finally made it tolerable, but seriously, just checking that a few thousand tiny files didn't change shouldn't take this kind of crazy time.

The next problem is how to actually choose those songs. Stepmania decided to copy dance mat only UI from arcade machines, without any keyboard backup. So instead of taking 1 second to type song title or artist name, it takes literal minutes to scroll through thousands of songs to get there, even at highest speed.

The UI has other issues - like it seems that I end up triggering song options about 1 in 10 times when trying to just start a song, and it registers it as Start button being pressed twice for whichever reason.

There's a lot of weird combos to control the UI, but other than "difficulty up", "difficulty down", and "change sort order" I have no idea what they are, and there's nothing intuitive about it. There should just be goddamn menus and keyboard controls for those rarely used functionality.

Once song starts playing it's pretty much fine.

Ideas for solutions

So it seems I have the same complaints today I had a decade ago.

Anyway, let's talk possible solutions.

These days it's just easier to write cross-platform games in something civilized, with Electron or whatever. Stepmania isn't really a terribly complicated program, so if anyone felt like it, they'd probably have something kinda working in a few days, and it would probably have better performance and usability even at such early point.

Much more interesting is automated step files filtering and analysis. Step files are literally asking for a neural network analysis to flag broken ones, figure out correct difficulty, and so on. Prototypes to just generate step files outright exist, and filtering/analysis should be a lot easier. It just needs to be takes out of research paper and given to users.

A far more interesting idea is just taking songs from youtube or whenever, and doing everything automatically from that point, but that's quite questionable. Stepmania songs are generally ~100s remixes of ~200s songs, so that would already be a major difference. The whole step file process might be too computationally expensive.

How would it work in practice

I feel first step would be writing some parsers to take step files in variety of kinda documented custom formats and export them as some json. It's probably going to be quite tedious, but nothing difficult.

Then figuring out how to interact with dance mats. Most of them are just USB HID devices, so it shouldn't be too hard. In principle Electron supports WebUSB, so dance mat support should be quite straightforward, at least when everything goes right.

With these two, getting simple Stepmania-like program with Electron shouldn't be hard, and that could be a platform for all those crazy ideas.

I'm not hating here

Stepmania is still one of the most successful Open Source games ever. I just think something much better is possible.

EDIT - USB APIs in browser

Well, I tried to use WebUSB API and Gamepad API in Chrome, both supposedly supported, and they don't see my dance mat on Windows or on OSX.

It's possible I'd have more luck with Electron.

EDIT - Stepmania keyboard shortcuts

And it turns out Stepmania actually added some keyboard navigation recently. So if I have songs sorted by artist I can press Control-M to go to M etc. That's fine to reach Katy Perry, maybe less so for Avril Lavigne. Still, even that little change cuts scrolling time by more than half.

Saturday, July 13, 2019

Eric Swalwell is wrong and Nancy Pelosi is right

donkey tuft by Tarnie from flickr (CC-NC-ND)

I bet you did not see this one coming.

Eric Swalwell was one of 20 candidates for Democratic presidential nomination. The only notable moment of his whole candidacy was the "pass the torch" moment during debates, where he used Joe Biden's own words to basically attack Joe Biden for being too old. I strongly believe that there should be mandatory retirement age for politicians, so he had a point there.

Anyway, Eric Swalwell's campaign was going nowhere, he gave up before even second round of debates, and after giving up he gave exit interview to 538 politics podcast, and that's what this is about.

Extremist Drift

Debates were notorious for how far left most candidates went compared with mainstream Democrats of just a few years ago, like Barrack Obama, Hillary Clinton, or Nancy Pelosi. Positions like abolition of borders, free healthcare for illegal immigrants, abolition of private health insurance, forced busing, racial reparations and other extremist positions had far more support that one would have guessed.

In a way the winner of the debates was Donald Trump. His approval rate improved after Democratic debates, and is currently at -7.5%. It's still negative, but it's far better than his the usual -10% to -20% range, and if this extremist drift continues, Democrats might manage to scare off all potential moderate voters.

Swalwell's Argument

During exit interview, Eric Swallwell was asked about that.

His response was that the most important feature of a candidate is "authenticity", and that going "far to the left" is absolutely fine, and no risk whatsoever in general election.
Democrats tiptoe around the issues that are perceived as unpopular, whereas Republicans have no problem leading with very unpopular issues [...] and they don't pay a price at the ballot box.
He believes that Trump's victory proves it.

He also openly advocates violating the Constitution in the same statement, but let's not get there.

It's bullshit

US economy is doing better than it did in living memory. Unemployment rate is as low as it last was in the 1960s.
Inflation has been low and stable. Stock market is at unprecedented heights.
Tax cuts mean most working people have a lot of extra money personally (except for rich people in high tax states). All the secondary metrics like wages growth, gas prices, healthcare access, and so on are doing just fine.

In foreign policy, no new wars were started, for the first time in it's hard to tell how many presidencies. ISIS which spread during Obama's term and overran multiple countries was swiftly crushed. There weren't any major terrorist attacks, or other foreign disasters.

Fundamentals models don't have an amazing track record at predicting elections, but it's a pretty safe prediction that with everything an average person cares about going so much better than basically ever, whoever presides over that should be super popular and crush any challenges 1984 style, right?

Well, that's what would have happened if president Marco Rubio or Mitt Romney was presiding over it.

It's Trump specifically being such a turd that makes these elections a 50:50 thing.

How Trump won

Trump was the most unpopular presidential candidate in recorded history. Fotunately for him, it just so happened that his opponent Hillary Clinton was the second most unpopular presidential candidate in recorder history. She was so unpopular she lost to a totally unknown black half-Kenyan guy with name "Barrack Hussein Obama", in spite of DNC establishment doing all they could to force her though. She was so unpopular she nearly lost to a senile openly socialist Jew who wasn't even in the party, and only managed to somehow got through thanks to DNC establishment forcing her candidacy even harder. She was so unpopular she lost to Donald Trump.

In such Giant Douche vs Turd Sandwich elections Trump just so happened to have better ran campaigns, and barely squeezed the victory.

He did not become any more popular since then. As an aside, Hillary Clinton is now even more unpopular than Trump, but fortunately for Democrats she's not running for the third time.

Trump only managed to win in 2016 because his opponent was so unpopular, and the economy was still only slowly recovering.

In 2020 he has far easier job - no sitting president could ever lose with fundamentals doing so well, unless he's literally a Turd Sandwich.

Why bother with Eric Swalwell?

Eric Swalwell might be out, but other candidates for Democratic nomination seem to think the same way as him. They're trying to score points with extremists in party base, and hope that somehow it will work out.

It could work against Turd Sandwich, but not if they end up picking a Giant Douche again.

The idea that extremist will somehow increase turnout among the base is total nonsense - highly politicized people will vote anyway, and you're far more likely to increase turnout of opponent's base this way - as Trump did during 2018 midterm, with his shittiness really motivating Democrats to go vote, regardless of who was their local candidate.

It's not like this is a novel strategy. Nancy Pelosi, the most successful Democratic politician, has been successfully doing just that - marginalizing the extremists in her party while pushing hard for what's realistically achievable. Especially in country whose political system is designed for gridlock, focusing on popular parts of your party's agenda in alliance with moderates is the only way you can actually achieve anything.

The successful strategy is attacking your opponents where they're weak, not responding to Trump's Wall with abolishing ICE, abolishing borders, and free citizenship to anyone who jumps where the border used to be.

It is still 50:50

Many things can happen before the elections. The economy could crash. Trump could start WW3. One of many Trump scandals might end up discovering some real evidence of crimes resulting in impeachment, not decades old hearsay that convince only partisans. Any of those would shift elections far more than Democratic debates.

If none of that happens, and the elections is still 50:50, it will really matter if Democratic Party follows Nancy Pelosi, and picks a successful moderate, or follows Eric Swalwell and tries to outdo itself in extremist appeals and chooses a Giant Douche while handing over second term to the Turd Sandwich.

Far Left is losing everywhere

It's not US specific issue. Traditional center left parties (more or less analogous to the US Democratic Party) got weakened by the Great Recession, resulting in brief resurgence of the far left.

This resurgence is crashing now. UK Labour was lost every elections since it went extremist, and in some polls is now 4th with 18% support. In two countries worst affected by the crisis where far left actually got power it already lost it, Podemos completely crashed in Spain. Syriza more narrowly lost in Greece.

In most other Western countries, all this bickering on the left just weakened it, and let either center right or populist right take over. Many Western countries like Poland and Israel nowadays have 50 Shades of Right elections.

Seriously guys, just listen to Nancy, she knows what's best for you.

Monday, July 01, 2019

What's wrong with all music streaming services

DSCN3865 by wiccahwang from flickr (CC-BY)

Music streaming service has three jobs:
  • be available
  • play music
  • discover new music

Be available

First music streaming service that offered decent recommendations was Audiogalaxy It was shut down by the Big Copyright.

A while later, Pandora came out, and it had mindblowingly good music discovery, but Big Copyright forced them to lock out everyone outside US. There's probably some way to access it with VPNs, but the hassle is just too great.

Play music

You'd think this would be trivial, but it's not. As a consequence of watching videos and listening to podcasts at high speed, my baseline speed changed, and I just don't enjoy any media below 140% speed.

That shouldn't be a problem, as browsers can inherently play audio and video at any speed, and there are browser extensions to add speed controls to sites without them.

Unfortunately services like Spotify and Deezer go out of their way to disable that, so I'd be locked to 100% speed at which all the music feels slowed down.

Sure I'm in tiny minority here, but who isn't in tiny minority one way or another when it comes to music?

As far as I know, this leaves me with just two options:
  • Download the songs and play them locally
  • Youtube

Downloading songs with tcpflow

Downloading songs lets me play whichever way I want, but there's not one shred of discovery there. The easiest way to download songs these days is youtube-dl, but you can use basically any source.

So funny story time! Once upon a time I wrote a music downloader that tapped into network traffic to get music from Pandora by tcpflow network intercepts. The music was just in MP3 files. Some minor complications was metadata being int separate XML HTTP requests, and songs being out of order for buffering purposes.

The whole thing was about 300 lines of ruby, it figured out which song and which metadata match, and then saved and organized all that.

It didn't mass download songs, and it didn't even interact with the website in any way, it was 100% passive and undetectable, it just saved everything I listened to in regular browser.

I needed those files to put them on a hardware MP3 player, as there was no way to listen to internet radio without the internet obviously.

I never mentioned it back then, as I would be way too much hassle for most people to setup, and if it got public they might change the API to make it more difficult somehow.

So I might have been the only person who got their music with tcpflow ever.

I have no idea if that still works. It's unlikely, as everything is routinely encrypted these days, so you'd need either a MITM proxy to strip the SSL, or capture music from a browser plugin, or something like chromedriver.

Youtube

As far as I know, all that leaves Youtube as the only option to me. It is available. It has more music than anything else thanks to all the covers. It plays music at any speed. It even has convenient downloads.

The problem is music discovery. It's not great. For ages it kept suggesting absolute garbage all the time. For example one thing I absolutely can't stand is male vocalists, but it kept doing this to me.

Now it seems it has given up and just plays same songs I already know, and occasionally some new mainstream hit.

Then again, what did I expect? It can't even consistently figure that after Part 4 of some let's play comes Part 5, and not Part 17.

For all the claims about imminent AI takeover, this is miserable. Maybe all those drivers who will lose their jobs to self-driving cars can get new jobs as music recommenders.

Discovering new music

So the last option is separating music discovery from music play.

There's plenty of sites where you put your favorite artists and they recommend some other artists. I don't think recommending based on artists is even a sensible thing, most artists create a range of different music, and good recommendations for someone who really likes this song would be really different from good recommendations for someone who really likes this one.

Of the services I tried, most are overwhelmingly awful. Sage is actually kinda OKish. Like 10% of what it recommends is actually good, and the UI of "click here to go to youtube search for the artist" is not the worst.

So overall I'm not too happy with all this, but it's not like it's possible to just fix it with some code, as Big Copyright would probably ban anything that improved the situation.

Wednesday, June 05, 2019

Into The Breach - Best Roguelike Ever

A screenshot from the game showing a mission where 4 Vek conveniently lined up for a single laser attack to kill them. Also Spider Boss keeps spawning a lot of spiders eggs each turn, and 3 more Vek are trying to get out of the ground. Best of luck defending that tower.

It's a very information-rich interface.

I wrote the explanation what's a Roguelike and what isn't for a reason. That reason is Into The Breach - possibly the best game I found this year. By the way for some other great game recommendations, check this out.

Overview of a Playthrough

Each playthrough represents a timeline of a fight between humans and Vek (insect aliens).

You start with a time-traveler pilot and a squad of 3 mechs, getting some upgrades on the way. There are 4 corporate islands you try to liberate in whichever order you choose. After liberating 2-4 of them, you can attack the final hive volcano island.

Every corporate island is 4 randomly generated battles (you have a bit of choice which battles to take), and 1 slightly less random final battle. Hive volcano islands is a 2-part special battle.

In other words, it's a Roguelike dungeon of 12-22 levels.

Difficulty is adjusted sensibly, so whichever island you pick first will be easiest, and difficulty of the final hive volcano fight increases based on how long you waited to fight it. You get upgrades (pilot xp, new time traveler pilots, extra mech reactors, new weapons) at about the rate aliens get their upgrades, but it depends on your squad and on how well you play if game gets a bit easier or a bit harder as it progresses.

The whole playthrough takes about 1h (for 2 islands) to 2h (for 4 islands), but it depends on how long you spend thinking. There's no time pressure, except for one achievement.

Metacampaign

Playthroughs are short, but there's a lot of metagame. There's 18 time traveler pilots each with special skill. There's 8 squads of 3 mechs each. You can also play as a random squad (you can reroll any number of times before pressing start), and you can make a custom squad of your choice from unlocked mechs.

You start with just 1 pilot and 1 squad unlocked. There's 3 achievements each for every one of 10 squads, and 25 achievements you can get as anyone. Achievements are currency you can use to unlock more squads. Pilots are unlocked by meeting them in the game - either rescuing them from a time pod, or getting them as a reward for perfectly finishing a corporate island.

Achievements, especially squad specific achievements, are generally great at guiding you towards interesting things you can do, and don't feel like stupid gimmicks or puns at all.

Once you finish, by winning or losing, all surviving pilots time travel to different timelines, and you can follow one of them. In such case, you'll start next campaign with a levelled up pilot. Or you can pick up any other pilot but they'll start at lowest level.

There's also Secret Squad you can get if you get every achievement.

Arguably your starting pilot is the worst of all pilots, but your starting squad is probably second best, so nothing ever feels like "grinding".

Defensive Game

So far it probably sounds pretty whatever, but here it gets interesting. Battles don't need you to kill the Vek. What you need to do is protect buildings connected to the power grid. You can have at most 7 power, and any time a building gets damaged, your power grid takes 1 or 2 hits. If you survive 5 turns all remaining Vek run away.

Each mission has some other objectives too, and you get a bonus for every objective fulfilled. A lot of objectives are also defensive in nature - including the infamous train defence, generally considered the most difficult mission of all, but which mission is easy or hard depends on your squad a lot.

I think that's the first game I've seen which focuses on defence this way. Usually your goal is destroying all enemies, and usually timers go against you, not for you.

Any damaged mechs get automatically repaired for next battle, so taking hits to save buildings or other objectives is expected. If mech gets fully wrecked, it also kills the pilot, so next battle it will start without any of the pilot bonuses, but it's not a huge deal, and you can find replacement pilots as you go.

Fully Deterministic Game

Beyond defensive game, Into The Breach does something even more unique. Your turn is (almost) completely deterministic. Structure of each turn is:

  • Vek move and prepare their attacks
  • you move and attack with your mechs
  • Vek attack and environmental effects happen in predefined order
  • more Vek spawn

There's no RNG for movement or attacks - you know exactly how much damage will happen. This leads to some amazing gameplay, as you know where Vek is trying to attack, but many of your attacks push instead (or in addition to) of damaging. So you can push Vek out of the way so it attacks empty space, or other Vek, getting some ridiculous blowouts.

A small exception is that buildings have small random chance of resisting damage. Authors say this was added to avoid player paralysis, as without it pressing "End Turn" sometimes means unavoidable loss, so players would spend forever on their losing turn. The chance is very low (starts at 15%, gets into about 25%-ish eventually), and I'd recommend not relying on it, but maybe it's the only way.

While your one turn is nearly deterministic, the whole battle is not. For most missions, you know where Vek will spawn each turn, but you don't know which kind exactly (every island has a bunch of possible types by some procedural generation). You don't know where Vek are going to move and what they'll try to attack. You have to respond to such challenges a few times in each battle.

Difficulty Level

The game is pretty good at not throwing "RNG says fuck you, so now you lose" moments at you like many other Roguelikes (including FTL by same authors).

If your playthrough is going well, you get more upgrades, so it gets a bit easier. If you barely squeeze by, you get fewer upgrades, and it gets a bit harder. The difference isn't huge - early losses do not generally snowball.

In each battle, if you eliminate Vek very quickly, more Vek will spawn, and if you do it slowly, fewer Vek will spawn. This is pretty much necessary to balance squads which try to kill Vek with squads which try to just get them out of the way.

Game has huge number of mechanics with complex interactions, huge diversity of enemies, a lot of mission types, a lot of different mechs, weapons, and special pilot skills. It's going to take a long time to master this. It's quite good at explaining everything in-game, but even 80h+ in I kept discovering unexpected interactions.

There's "normal" difficulty, which I strongly recommend not playing at. Play on "easy" at least until you get decent and unlock all squads. There's also "hard", which I played once to get that achievement, and barely managed to win. You can unlock all achievements playing on easy on your own pace just fine. Exceptions are achievements for winning campaign on hard, and one for winning two corporate islands with Blitzkrieg squad in under 30 minutes, which were my last two achievements to get.

AI

The Vek are pretty dumb by design. Each of them does something totally reasonable individually, at least it would be if you could just stand still for a moment. They don't coordinate in any way whatsoever, and they like attacking buildings (which you generally need to save) and your mechs (which can often move out of the way) about equally.

Basically if you have 3 mechs, and there's 3 Vek attacking building or other objectives, dealing with them is usually straightforward enough. There will usually be more than 3 Vek at time, and often more than 3 attacking buildings - it's bigger challenge to have one mech deal with more than one Vek with one move. Or sometimes a Vek immobilizes a mech somehow, usually with a web, complicating your life too.

The challenge is mainly in the numbers. Now this is just vague estimate, but let's say Normal has about 1 extra Vek at each time compared with Easy, and Hard has 1 extra Vek compared with Normal. That doesn't look like much, but 3 vs 3 is usually straightforward, while every further Vek requires more and more complex strategy, so difficulty ramps up a lot, and you have lower margin for mistakes.

Graphics

It's all nice retro pixel art. The interface is really good at showing everything that's going on, even when there's a lot going on. There's a few minor issues like tiles affected by multiple effects often show just one (you can mouseover for others), but these are very rare.

tl;dr

10/10 Must Play

It's a strategy with reasonable playthrough time. It's a roguelike without bullshit RNG. It became a classic the moment it got released.

You can get it for £11.39 or regional equivalent.

Tuesday, June 04, 2019

Vanquish - the game Doom tried to be

This picture of armored dude shooting while sliding on rocket boots is very representative of what kind of game Vanquish is

I finally have a bit of free time to play games from my list. Most of the games are fairly whatever, but sometimes I find a real gem.

One such really fun game is Vanquish. To be fair, I might be biased, as I absolutely love first person shooters (and third person shooters are almost first person shooters), but Vanquish has very positive reception everywhere.

So it's a shooter, but instead of tactically running from cover to cover, it's just stupid fun all the way. You get rocket shoes, slow motion mode which triggers automatically when you're screwed, good deal of armor, nice variety of overpowered weapons, and a lot of enemies to kill. There's good variety of enemies, and a lot of bosses on the way. Controls are a bit nonstandard (you don't have to skip the tutorial), but movement feels really smooth.

Apparently this game was released on consoles back in 2010, but who cares, amirite? Graphics aren't anything amazing, as can be expected from a port from previous generation consoles, but everything is fast paced enough it doesn't matter all that much.

Doom tried to be this game

There was a fairly similar game, the rebooted Doom. It also tried to move away from cover based shooters, and get something more close and personal. In my opinion Doom failed miserably at it, while Vanquish utterly succeeds.

So combat in Doom and Vanquish is a lot of fun, no question about it. The difference is that Vanquish goes from combat to combat, with just a bit of breathing room and some mild cutscenes, while Doom would force the player to waste half an hour of their life wandering around the damn dungeon looking for some key card, or turn into a damn platformer. I'm pretty sure I died more often to fall damage than to enemies, and had to alt tab to find where those damn key cards were quite a few times before dropping Doom in disappointment.

The idea was probably to introduce some breaks between combat, but what Doom introduced weren't short breathers, it was pointless frustration and waste of time. By the time next combat happened I was more likely to be fed up with the game than excited.

Games are not movies

Anyway, even disregarding awful execution, the whole idea of breaks between fun sections is bad. Movies have them, because they last 3 hours without breaks, and watching action into action without any breaks gets tedious after a while. Participating in action does not - people often play games for whole nights.

Players also are far more in control than movie watchers. If you need a break for a snack, bathroom, cigarette, or whatever, just pause anytime, then get back to the action. Need a longer break? Quit or alt tab, and come back to it next day. It's nothing like the passive cinema experience. You don't have to play the whole game in one sitting.

Forced boredom sections in games are just a horrible idea. Stop treating games like movies.

And actually, while Vanquish doesn't have long breaks away from actions, it has so much diversity in kinds of action, with just the right amount of short breaks and short cutscenes, that it never feels monotonous.

tl;dr

Vanquish - 8/10
Doom (2016 reboot) - 4/10

You can get it from Steam for £15 or regional equivalent.

Friday, May 31, 2019

What is a Roguelike?

Mini Garfield by Neticola from flickr (CC-ND)


Every gaming blog is required by Laws of the Internet to attempt answering this question, so here I am fulfilling my duty.

The Wrongest Answer

The totally wrongest answer is called "Berlin Interpretation", and it's just a completely unfocused list of features early Roguelikes shared. Half of that list is just limitations of computers from early days, nothing to do with game design. It's the worst. Let's just get it out of the way.

The Wrong Answer

So my first idea was that Roguelike is Procedural Generation plus Permadeath. This definition is a trap. Minecraft on Hardcore mode is not a Roguelike.

Procedural Generation

Procedural Generation is a spectrum, and there are very few games with fully fixed content. Even Tetris gives you random tiles. And no game is completely random, whatever that might mean - there's generally some fixed outline, which is filled by some combination of fixed content (often initial or final parts), random selection of handmade elements, actual procedurally generated content, and purely random events during the game.

For games where "map" is a meaningful concept, a reasonable dividing line is having procedurally generated map.

So Skyrim (completely fixed map, mostly fixed quests, some random encounters, random quest variants) is definitely out. Minecraft (random map) is definitely in, at least by this criterion.

So what about a game like XCOM: Enemy Within? It's a series of battles, each on a randomly selected handmade map, and with procedurally chosen aliens. If we see the whole XCOM campaign as a map, and each battle as like a dungeon level, it feels like it's mostly in. XCOM 2 went with even more procedural generation, and so it feels even more Roguelike than XCOM 1.

This criterion gets a bit fuzzy, with most games being in between, but it's a fine part of any definition of a Roguelike.

Permadeath

So what about Permadeath? It has absolutely nothing to do with being a Roguelike or not, other than very indirectly.

Minecraft definitely has procedural generation. It has Hardcore mode with permadeath. Is it Roguelike? What if Civ5 had ironman mode like Paradox games? Nowadays all kinds of games have optional permadeath mode, since it appeals to a subset of players, and takes very little effort to add.

It's pointless to argue that permadeath only counts if it's not optional, or that these games were not "designed" to be played in permadeath mode, like author's intent can be meaningfully known. Saying Minecraft on Hardcore or Civ5 on Ironman counts as a Roguelike, while Minecraft or Civ5 on Normal don't just shows how badly this attempt at a definition fail.

Permadeath is a dead end.

Tactics Based

Before I get to what to consider instead of permadeath, we need one extra criterion. Roguelike must be primarily tactics based, not dexterity based.

There's no amount of procedural generation that's going to make a game like Modern Warfare, or Super Mario a "Roguelike".

So games like Rogue Legacy are not even remotely Roguelike.

I'm not being arbitrary here. Tactics-based games usually have partial or full procedural generation, and dexterity based games often have extremely fixed content. Different genres have different requirements.

I'm using very broad phrasing here. Turn based systems totally work, but "Real Time with Pause" systems like Total War or FTL are just as fine.

This is of course also a spectrum, as games like Factorio are overwhelmingly tactics based, but they still have minor dexterity based combat system. Which by the way should be removed from the game completely, and it can when starting a new game.

Short Playthrough Time

So now that we killed permadeath as a possible criterion, let's see what we can use instead.

Why would Civ 5 on Ironman mode not be considered a Roguelike? Mostly because it's intended to be played in long campaigns.

The key characteristic of a Roguelike is that it's meant to be replayed over and over. Short playthrough time is key to this. You can't just "start over" a 20h XCOM campaign or a 100h EU4 campaign.

Because playthrough time is short, permadeath by default is reasonable. I find Paradox idea of forcing ironman mode on games with very long campaigns like EU4 and CK2 totally idiotic. Bad RNG, misclick, or game bug destroying a run that takes 30 minutes anyway is totally reasonable. Bad RNG, misclick, or game bug destroying a campaign that takes 100h to completely is just shitty game design - especially since longer campaigns give far more opportunity to game breaking bugs to happen.

And yes, if you took a Roguelike game, lowered difficulty (so permadeath can happen but it wouldn't be a common occurrence), and extended its dungeons to 10x current size, at some point it would stop being a Roguelike.

On the other hand, if you took a not-really-Roguelike game, and just made a short mode out of it, it'd probably become Roguelike. Like let's say if XCOM had a mode where you do just 5 random battles on procedurally generated maps, it would be basically a Roguelike.

And if you took a Roguelike, and added a save game system, it would still be a Roguelike.

Into the Breach is another interesting case. It's as Roguelike as Roguelikes get, but it doesn't have total permadeath. You get one time reversal per battle (two per battle with one of unlocked pilots). You're playing time travelers, so it makes perfect sense, it's a highly controlled feature, and removing it would just make game more frustrating pointlessly.

Links Between Runs

This also answers the mystery why pretty much every Roguelike nowadays have some ways to keep a bit of stuff from previous runs in your new runs.

This definitely goes against the idea of permadeath, but it makes so much sense when you realize that short playthrough time is the key. Letting you keep an unlock or a small bonus from previous run simply incentivizes starting over.

Examples

Of games mentioned:
  • DoomRL - Roguelike
  • FTL - Roguelike
  • Into the Breach - Roguelike
  • XCOM - not a Roguelike (but could maybe have a Roguelike mode)
  • Civ5 - not a Roguelike
  • Diablo - not a Roguelike
  • Factorio - not a Roguelike
  • Rogue Legacy - not a Roguelike
  • Skyrim - not a Roguelike

Full Definition

Roguelike is a tactics-based game with mostly procedurally generated content, meant to be replayed over and over thanks to its short playthrough time.

It frequently features permadeath, and there's often some links between runs, but these aren't essential features.

Why any of that matters?

You might be puzzled why so much has been written on this subject. Game design is still in very early stages, and even when we make a game that works, it's mostly by accident, and even best games are still full of design fails.

Having more clarity on which features go or don't go together and why can only improve this sorry situation.

And of course there will be games that break any established rules, but it's really helpful to understand why those rules exist in the first place.

Having no clue and just blindly borrowing features from mismatching genres just got us to design failures like ironman mode in EU4, and dexterity based combat in Factorio - otherwise great games.

Saturday, May 04, 2019

Total War: Rome II Review

An embarrassment to all feral kind... Tom cats all over the world are shaking their head in disgust.... by praline3001 from flickr (CC-NC-ND)

I'm really late to the party, but this game had such awful launch, I delayed it a bit, and then I was busy, so here I am, reviewing a 6 year old game.

It is not Rome I

At first I tried to play it like it's basically Rome I with better graphics and weird settlement system, and that really doesn't work.

Battles work more or less like in previous Total War games, but on campaign level it's definitely not so. The biggest difference is that you literally can't have any troops not attached to a general, and limit on number of armies you're allowed to have is quite low.

This breaks a lot of common patterns like recruiting more units and sending them to frontlines, leaving some units behind as extra garrison, or to protect settlement from rebels, splitting big army in half to clean up multiple leftover AI troops, or separating a single unit to send it ahead to scout.

There's a new system of provinces made out of (usually) 3-4 settlements. This really cuts on micromanagement. A very interesting thing they did is that province's capital settlement has walls, but none of its minor settlements do. This completely avoids the problem Medieval 2 had, where 80% of battles were assaults on walled settlements, which might have been historically accurate, but not terribly exciting.

Autoresolve all the things

A surprising and very welcome change is autoresolve not being ridiculously biased against the player, like it was in all previous Total War games. In Empire I'd sometimes try to autoresolve a trivial fight where I had 10:1 advantage and I'd likely wipe out the enemy completely without a single casualty, only to be told that my army lost. None of that here.

Even if win was guaranteed, manually fighting all trivial battles was necessary because reinforcing required getting back to high level settlement (in Rome I and Medieval 2), or paying ridiculous amounts of money (Empire).

Here, army losses are surprisingly inconsequential. Armies reinforce for free, and quite fast, so as long as none of the units in your army get completely wiped out. This was introduced back in Napoleon, but together with reasonable autoresolve, it means there's no point in fighting most one-sided battles. You'd mostly fight close battles, which are far more interesting.

Female generals drama

For my first campaign I took the obvious choice of Ptolemaic Egypt. I don't really give much shit about Western Rome, Constantinople the only true Rome etc. Back in Rome I, Egypt was infamous for being ridiculously ahistorical, with bronze age armies thousand years out of their time. In fact "Egypt" by that time was a Greek kingdom, with the usual Hellenistic armies of heavy phalanx supported by skirmishers and light cavalry.

Now Egypt has a reasonable unit roster. Except all the generals I can hire are female. I was quite baffled by that, and thought that maybe they're some family members, which would maybe be excusable, but nope, they're just some total unrelated randos. WTF?

So it turns out there was this big drama, about 5 years after release, Rome II silently pushed a patch which added female generals, at ridiculously high spawn rates, to all factions including those which had absolutely no business having them. And then instead of toning it down to reasonable levels, and just to factions where it would make some sense, or at least making this silliness optional, devs went full "fuck you all, don't like it, don't play the game" mode. They got very well deserved Steam review bombing for it, but did not learn their lesson.

It's shockingly different from how well a game like Crusader Kings 2 handles gender. Playing a king is quite different from playing a queen, different cultures and religions handle status of women differently, and when you start a new game you can choose a few options to expand state of women. Or if you reform a religion.

Immersion failures continue

One really annoying thing about historical Total War games is that they start by hiding the whole map except your country and its immediate neighbours. It's good that I remember what the map looked like, so I can play based on that. And it turns out Rome II map has very little to do with actual history. Seleucids are really tiny!

In 272 BCE Seleucids were basically half the map, a mega-Persia stretching from Western Anatolia through Mesopotamia, Persia, all the way to a chunk of Central Asia and Afghanistan and Western India. Instead they have 6 settlements on Syrian coast and a bunch of vassals. Wat?

Let's talk immersion. People play historical games for the same reason they watch 22nd Avengers movie. They have connection with historical countries or established characters. I've heard Shogun 2 is a good game, but I've never played it because I don't give a fuck about all the Shimazus, Takedas, and Uesugis. Who is that even? EU4 has about 400 countries, but it turns out over 60% of games are just top 15 nations. Only half of these are even that strong.

It's just so much more fun to immerse yourself in all those historical conflicts. Playing Byzantium in EU4 is borderline masochistic, and yet 1 in 40 of all games is someone trying to stop the kebab menace and restore the glory of Constantinople. People even make mods for restoring Byzantium in HoI4. It's great to also have Hins Kayfa and Tannu Tuva for people who are looking for their 100th campaign, but even these campaign feature mostly well known countries as key antagonists and NPCs.

What does it have to do with it all? When you start with historical setting, or established fictional setting for that matter, you have a budget for how much you can change before people go "fuck this shit, it's not the Harry Potter I love". And many things already demand a chunk of this budget. Better gameplay or technical issues will require breaks with history. Tiny Seleucids might very well be good for the game. Being historically inaccurate to increase the coolness factor is good use for the budget. Being true to people's perception of history rather than actual history (like Rome I Egypt) is fine use of the budget. Every MCU movie needs to spend some time introducing new characters viewers don't care for yet, that uses up part of that budget.

Go too far, and break immersion stupidly, and you get backlash. Even most beloved universes like Star Wars and Harry Potter have breaking point. For historical games this budget is a lot lower. Blowing up a big chunk of immersion budget on something as stupid as forcing female generals on Greek and Roman factions is just so fucking dumb. Not listening to the players is even dumber.

Interface prioritizing minimalistic style over functionality

Anyway, back to the game. Older Total War games had big interfaces where all relevant information was always easily accessible. Rome II instead uses minimalistic highly stylized interface, with completely meaningless icons without text, and where information is hidden behind multiple layers of tooltips, or requires alt tabbing to a wiki. Like, how do I know which buildings I can build in a settlement once I expand it? As far as I can tell, there's no in-game way at all.

From UX point of view that's just atrocious. If you play a lot and don't mind alt tabbing to wiki, you'll get over it eventually, but your first few campaigns it will be a constant pain.

In older games it was really easy to understand what's going on. When game gave me the choice which building to construct, or which unit to recruit, all relevant information was there. In Rome II it's just not there. What's the difference between those two units? Here's 10 sliders, have fun figuring out what they mean. How much money will this building generate compared to that other building? Can anyone even figure this out without alt tabbing to Excel?

This complexity doesn't make game deeper. On the contrary, without any clear information what which choice does, players will either pick at random, or just read somewhere what's the optimal choice, and in either case they'll make no meaningful choices during gameplay.

One interface issue that is highly problematic every single time is that routing units are basically invisible during battles, and chasing them is very important. Giving them white flags like in previous games would be such an obvious improvement.

Bugs 6 years after release

It really did not help my first impression of the game that during the first tutorial siege, AI army hit some invisible wall in the settlement, and just stood there stuck. I tried to attack them, but my armies were also staring at invisible wall in the middle of some street. I finally figured out that if I take my troops out of the settlement and walk in from same direction AI took, I can fight them. It was the only bug I encountered so far (not counting Greek female generals, which are arguably a bug), but wow, those were not good first impressions.

Politics stuff

Rome II has whole extra layer of managing politics of your faction, with other families, something like 40 interactions, civil wars, senate, and so on. It's not clear what all of that does, and so far I've been mostly ignoring it, and it seems to be fine to ignore it.

One baffling thing is that I can't find any options for getting my children married. Maybe all the women joined the army, so there's nobody left to marry?

Overall

Battles are great. Maybe comparing your best Medieval 2 battle to best Rome II battle, Medieval II still wins. But thanks to autoresolver and reinforcement changes getting rid of most one-sided battles, much better mix of walled sieges / unwalled sieges / field battles, and how well battles play, I'd say that a median Rome II battle is more fun than median battle in any previous Total War game.

Campaign changes reduce micromanagement, but consequences of the choices are much less clear, so it's a bit mixed.

Interface is just plain bad. It prioritizes style over functionality far more than is reasonable.

Immersion is mostly fine. I'm reasonably tolerant, but I'll get a mod to fix the biggest silliness for my next campaign.

Game performance is so far totally great. It runs better than Rome I on my hardware.

I had horrible first impressions of the game, but mostly positive second impressions.

Tuesday, April 30, 2019

Challenges for April 2019 SecTalks London

O'Malley by Sylvie MM from flickr (CC-NC-ND)

I just keep winning them, and by convention the winner organizes the next one, so I just ran another round of London SecTalks CTF.

There were 10 challenges. The winner got only 6, but each challenge was solved by at least one person during the event. So maybe it was just a bit too much, but it's better to have too many than too few challenges.

Challenge files and code used to generate them are available on github.

There are no answers below, but some serious hints which might make it too easy.

For previous rounds, see posts about September 2017November 2017May 2018July 2018, October 2018, and February 2019 CTFs.

EBCDIC (5 points)

It was a simple challenge for beginners. The flag was encoded using EBCDIC. It could even be done manually.

CSS (10 points)

This was possibly the most original challenge, the flag was encoded in a pure CSS maze, where you'd need to mouseover each correct letter in order to get the challenge.

CSS wasn't too obfuscated, so that was the easiest way to solve it.

CTR (15 points)

A small server which encrypted your message with AES-CTR. There was also encrypted flag.

The problem was that IV was not generated every time, and there's a standard attack for that.

sayflag (20 points)

This was a small MP3 file, encrypted with a XOR key. The file did not have ID3 tag, so there's not enough known plaintext for the usual attack.

The hint suggested one alternative approach: MP3 compression works like JPG, but block artifacts would be fatal, so compressed blocks overlap a bit. To avoid special treatment for the last block, encoders add some silence at the end of the file (also sometimes at the start), so that part usually has very low entropy. No ID3 here.

With this hint it should be fairly easy to adapt the attack.

Rust (25 points)

A simple flag validator, this time written in Rust to make reverse engineering a bit more challenging.

RSA Signatures v1 (30 points)

This was a fun double challenge. The challenge was "textbook RSA" signature server without any padding or hashing. It would verify and sign any "safe" message, and the task was to give it "unsafe" one containing admin=yes.

There were two versions of this challenge, and diffing them revealed some extra checks which were missing from the first version, which could be very easily exploited.

Codage Hexadecimal (35 points)

French plaintext got hex-encoded, but with digits mixed up. It was tiny bit harder than previous English challenge, as there were was a bit of Unicode with accented characters.

from_past_import_flag (40 points)

A program that would generate a flag, but only if you run it in 2005. To avoid being fooled by changing laptop clock it double checks with NTP server, but NTP is completely unsecured, so it's very easy to redirect that traffic to a local NTP server.

Or just attack the file with gdb.

RSA Signatures v2 (45 points)

In the second part of textbook RSA signatures challenge, bounds check issues were fixed, so a proper RSA signature malleability attack was needed.

Chifferment par Substitution (50 points)

Substitution cipher, this time on a French text, and without most punctuation. It's not difficult, it's just fairly time consuming.

Saturday, April 27, 2019

A Guide to 2020 Elections for non-Americans

Ginger Temptation by Bennilover from flickr (CC-ND)


American elections are a great show, but it might be difficult for a non-American to understand what's going on exactly.
To help everyone enjoy it, I wrote this post.

It's a post about politics, but I'm not advocating any political position here. If you're interested in more, I linked a lot of references.

Before I get to the candidates, I need to clarify some background points.

American elections do not matter

American political system is designed to maximize gridlock and inertia, so even the most radical claims made during campaigns rarely translate to much policy change.
Candidates tend to propose sweeping changes, and most of the time either nothing happens, or some extremely watered down compromise bill passes.

Regardless of who wins, government will grow bigger, public debt will keep growing, young people will keep getting screwed by gerontocracy, housing and healthcare will keep getting more expensive, Constitutional rights will keep getting curtailed, and so on.

Most of time something changes suddenly it's due to unelected Supreme Court legislating from the bench and bypassing the whole democratic process.

Two Party System and Primaries

First Past The Post system enforces two big national parties. Sometimes regional parties also emerge (like Bloc Québécois or SNP), but not in US. National "third party" is basically impossible, except when the part system falls apart completely.

This effect is even stronger in the US. On one hand bipartisan gerrymandering lets major parties collude to prevent any minor from emerging. And on the other hand, American parties are far more open than European parties, with "big tent" model.

Even if someone's positions are very far from the mainstream, they should just pick one of the major parties and stand in primaries, it's far more promising than a futile independent run. Donald Trump is an example of this approach succeeding, but many people like Ron Paul and Bernie Sanders attempted this with some success. Of previous presidents under new primary system, Jimmy Carter, Ronald Reagan, Bill Clinton, and Barrack Obama were fairly marginal figures in their parties, and not definitely not their party's establishment first choices.

Similar system exists for Congressional and state elections. It's less so nowadays, but it used to be common to have wide diversity of views on both sides.

How Primaries Work

Parties choose their candidate in "primaries".

Presidents can serve two terms, and sitting president gets de facto automatic nomination from their party. Sometimes there's a token primary opponent, but nobody expect anything to come out of it.
For 2020 elections, Republican Party will nominate president Donald Trump. Democratic Party will hold a proper primary.

During primaries different states vote at different times, which is extremely helpful for candidates with less money. Instead of being forced to get money from big donors for a national campaign, a candidate can just focus on a few early states, and if that appeal is successful, they'd have much easier time fundraising for the rest of the campaign later.

Each state elects some number of delegates. Republican primaries are closer to "winner takes all" model, and Democratic primaries are closer to "proportional" model, but each state's primary is different.

Everybody is horrible. It's by design

Two party system means both parties are vast coalitions including a lot of views. Including many absolutely horrible people.

Even if two parties take fairly similar moderate position on some issue, people with very extreme views will join whichever party is closer to their views. And there's assortment of special interests and people with unusual causes who end up in one party or another.

As it's necessary to keep parties broad to win, candidates and parties cannot reject such people except in most extreme circumstances. This is somewhat moderated by the need to appeal to swing voters.

In primaries extremist tendencies tend to be a lot more pronounced, as candidates are fighting over voters from their own party, not for swing voters. People with extremists views are also much more likely to participate in primaries, contribute money, volunteer, and so on. To a degree, big donors act as a bit of a counter-balance to this extremist bias.

So all successful candidates always pander to people on the fringes, including often some really horrible people. It's mostly cheap talk, and generally very little policy change comes out of it.

Horrible candidates do not help third parties

One would naively think that major parties nominating horrible candidates would help third parties, but the opposite is the case.

Donald Trump and Hillary Clinton in 2016 were the first and second most hated candidates in recorded history, and this only made sure everyone voted for one of them due to hating the other. For what it's worth people who disliked both mostly voted Donald Trump, so basically Donald Trump was disliked by more people overall, but Hillary Clinton was disliked more intensely by swing voters.

Polarization

It's not completely clear why, and there are many interesting theories, but American politics became a lot more polarized over last few decades.

Depending on how you look, it started in the 1990s, and got progressively worse with time. By now it got so bad, huge number of people say they'd have an issue with their child dating a person supporting the other party, a position that would be totally baffling to Americans of the past, or to most of the world today.

A side effect of this polarization is that media generally take sides, and whatever you'll read about the candidates will likely be from highly partisan position. It's difficult to get fair information, but that's what I'm here for.

Anyway, let's get to the candidates. Democratic candidates ordered alphabetically.

Never vote for old people

There needs to be a maximum age for top level positions. Humans at this age are biologically incapable of high level performance, and the system is gerontocratic enough as is. Presidency ages people fast, and people who already start old really can't do it.

Old candidates often claim that they're far healthier than typical person their age, but don't believe any such claims.

It's well documented that White House lied about Ronald Reagan's mental decline. Even more extreme case, for Franklin D. Roosevelt's 4th term press lied about his health so much American people basically elected a corpse. In both cases having mentally incapable president had serious consequences, it was especially bad for Roosevelt, as his government was overran by Soviet agents.

Donald Trump

Current president and presumed Republican nominee. As a political outsider he's awful at being a politician, failing at navigating the process, failing to stay on message, and generally acting as a huge troll. In terms of actual policy, he achieved very little. His old age is definitely not helping.

Democratic-leaning media are frequently described as suffering from a "Trump Derangement Syndrome", greatly exaggerating all issues, and believing conspiracy theories like the Russia collusion theory. It's not that different from treatment president Obama got from Republican-leaning media, with "birtherism". It was also true to lesser degree of Bill Clinton and George W. Bush. As far as I can tell, presidents before Bill Clinton rarely faced this, at least not to this degree.

Also he's 72 years old, so nobody should vote for him for this reason alone.

Amy Klobuchar

Senator from Minnesota, best known for abusing her staff.
She disputes these allegations, but she has highest staff turnover in all Congress so regardless of how correct all the details are, it would be really shocking if the story wasn't basically true.

Andrew Yang

The first serious Asian candidate. Best known for his support of Universal Basic Income (in the most modest opt-in form, so people could get welfare or UBI but not both), and premature worry about technological unemployment.

He was brave enough to go on Joe Rogan to argue his positions, something all other candidates are too cowardly to do.

He seems to be non-horrible. Also one I'd be most interested to see in debates.

Bernie Sanders

In spite of coming second in 2016 Democratic primaries, he still refuses to officially join the Democratic Party. Supports big government as solution to all the world's problems.

People often compare Bernie with Corbyn, but that's unfair, as Bernie actually has some integrity, while Corbyn supports anti-Semites, xenophobia against Central Europeans, Venezuelan dictatorship, Islamic terrorists, and pretty much every evil dictator imaginable. Bernie is same socialism with less hate.

He's 77 years old, so nobody should vote for him for this reason alone.

Beto O'Rourke

Best known for standing on tables, for losing to Ted Cruz, but far more narrowly than any Democrat did in Texas, and for drunk driving.

He fundraises like a tier 1 candidate, but polls like a tier 2 candidate. He's known for taking very "woke" positions.

Cory Booker

Black senator from New Jersey. Liberal but not too extreme. Tries his best to pull off Obama 2.0, but black voters inexplicably seem to prefer white grandpa Joe Biden.

Would be the first vegan president. And you know who else was vegetarian?

Elizabeth Warren

A white woman best known for falsely claiming to be a native American, which DNA test then disproved. It's unclear if she tried to exploit "affirmative action" policies with her fake ancestry claims. She claims not, but evidence is mixed.

In terms of policy positions fairly close to Bernie Sanders, but she's committed to Democratic Party. So far her campaign is getting nowhere, as Bernie Sanders is dominating that lane.

She's also 69 years old, so fairly borderline if she'd be mentally capable of presidency.

Joe Biden

Barrack Obama's vice-president and current front-runner. It's difficult to know what he stands for, as over his long political career he took a lot of different positions. Usually presumed to be "moderate".
He recently became notorious for having a fairly different idea of what's appropriate personal space, making some people feel awkward, but most voters don't seem to care.

He's 76 years old, so nobody should vote for him for this reason alone.

Kamala Harris

A genuine mixed race woman, and former attorney general of California. Most notable for supporting all kinds of police and prosecutorial abuse, doing her best to keep innocent black men in jail. Will black people vote for someone who represents the worst of mass incarceration police state just because she's half black? It's a theory I find seriously insulting to their intelligence.

Also notable for Nate Silver's belief that she's a tier one candidate, contrary to polling and all other data.

Pete Buttigieg

A gay mayor of a minor Indiana town. Most notable for hating on Vice-President Mike Pence instead of the usual hating on Donald Trump.

Also known for learning Norwegian for fun, which shows he questionable priorities in life.

Tulsi Gabbard

Representative from Hawaii. Easily the best designed website.
Best known for being buddies with Syrian dictator and notorious war criminal Bashar al-Assad.

She's far lower tier than anyone else on this list, but come on, that beautiful website...

There's a bunch of others.

According to DNC debate rules, at least 16 candidates qualify to take part in primary debates. In addition to those I mentioned, Jay Inslee, John Delaney, John Hickenlooper, Julian Castro, Kirsten Gillibrand, and Tim Ryan also qualify, and a few more might just make it.

Hopefully this post gave you enough background to grab the popcorn and enjoy primary debates.

Saturday, April 13, 2019

Napoleon Total War review

Empire Total War was the last Total War game I seriously played. Then I got into making modding tools for Empire, but I never played any of the newer games other than a few quick battles.

I didn't get into Napoleon because I much prefer sandbox campaigns to scripted ones, and this is basically one big scripted war. Well, I'm going to ignore this and try to unify Germany as Prussia.

So here's how I played, and towards the end a bit of game review.

Opening moves

So playing Prussia at normal/normal. Started by trading some technologies, and making some trade deals.

There's a huge war between France and various minors vs Great Britain, Austria, Russia, and other minors. Prussia doesn't take part in it yet, but it has oversized army it can barely pay for, so it's time to get some new taxpayers.

So the obvious targets are German minors like Saxony and Mecklenburg.

First battle of the game was one for Saxony, where AI was actually trying to much harder than in Empire. Enemies formed line before charging, then ran forward. Cavalry only tried doing its things when infantry attack was imminent. When attack broke out and Saxony reformed its troops, it did so away from my line (and diagonally, so I had to reposition my artillery), instead of each unit doing separate suicide run into my canister shot. There was still some derping, but improvement is real. Also the battle mini-map is top quality. It was real bad in Medieval 2 and Empire.

Battle of Mecklenburg was even more fun. We both had about 800 regulars, except they also had 1600 firelock armed citizens. Mecklenburg put all its professional troops on one flank, and would not advance. After some feints, I charged my cavalry into the mob like it's Medieval 2 all over. This was sweet, and also probably wouldn't work on higher difficulty levels. 144 horsemen routing 1600 enemies losing just 10, that's some winged hussar tier charge. All this forced them to advance on me. AI still derped, and moved its artillery behind a hill just so it can shoot into it and not into my troops. Well, there's only so many bugs they can fix. Overall 872 vs 2408 battle ended up with just 45 casualties. I really like how they buffed cavalry, it was far too weak in Empire.

Lesser German Unification

I took it slow basically waiting who's going to attack me first, France or the Coalition. France annexed its two German minor allies by event. That's something that existed in Empire too - AI gets those annexation events, but player doesn't. In Empire it was Spain integrating New Spain and Britain integrating Thirteen Colonies.

I took Hesse, getting my general killed, and discovering just how damn expensive they are. I guess it's not such a great idea to use them as cheap cavalry.

Then Oldenburg was the last German minor I could take while staying neutral.

First War with France

It was now the question of which alliance to join. France held Hannover, Holland, Belgium, Bavaria, Baden-Wurttemberg, Alsace, and Tyrol, and it would be fairly clear Western / South-Western front.

Coalition would require fighting in multiple directions while horrible exposed to backstab from France.

I waited a few turns trying to get some diplomatic offers, but nothing came out of it. Well, time to attack France anyway. First turn I took Hannover, Amsterdam, and Baden-Wurttemberg. Another one of my generals died taking Brussels.

After that I wanted to do a quick swing East and take Bavaria and Tyrol, but my spies informed me that somehow Napoleon with a full stack found his way there. Damn. So instead I took Alsace, sacked it, and abandoned it to the locals. I likewise sacked Reims.

I was preparing for a big showdown with Napoleon, but just in case I asked him for peace, and he agreed, letting me keep all the lands, including Alsace and Reims, which were now going to be totally overran by rebels because they got sacked. Oops.

Napoleonic Rebels

In Empire occupying anything automatically looted it and gave -13 unrest for minor settlements, and -30 unrest for majors. What counted as major wasn't totally clear.

In Napoleon you can occupy peacefully which generates about -8 unrest, or loot which seems to generate about -25 unrest, damages a lot of buildings, but gives you lump sum of gold. I'm saying about as these don't seem to be the same between settlements. Or you can release as protectorate OPM, but only certain regions.

If you want to keep settlement, it seems that peaceful occupation is far more profitable. Repairing damaged buildings, town watch cost, loss of tax income from destroyed town wealth, and upkeep cost of troops needed to pacify a region all together are just far more than gold you get from looting.

Rebels in Alsace got absolutely ridiculous units. There was a tiny 3 unit stack I crushed. I didn't even notice that they also spawned second stack - 6 dragoons, 4 12-pound artillery, 10 line infantry, all with 3 experience. Like no country has this kind of units - they had huge advantage in numbers and in quality of infantry, artillery, and cavalry. Oh well, I guess I don't really need Alsace. I might be able to defeat that, but it was just the first wave, and next one would be coming in 3 turns.

In Empire they'd be like 4 Militia 1 shitty artillery 1 Provincial Cavalry.

Rebellion in Reims was much more modest, so I kept that.

French Tyrol fell to rebels and then to Austria. Romania emerged somehow. But the main war between France and Coaliton was rather uneventful. Napoleon just stayed in Munich while Austrians and Russians did basically nothing.

Napoleon in Vienna

I allied Austria because mission gave me 1000 gold for it, and I didn't really have a good reason not to. They bribed me to join their war against Switzerland, and that did not call France into war against we. Wat?

Second Reims rebellion spawned full stack of professional troops, even if not quite as ridiculous as one in Alsace. At this point, it was finally possible to keep it under control, barely.

Napoleon left his entrapped Bavaria with no garrison behind and sacked Vienna. Undefended Bavaria fell to the Austrians, but the war continued.

Well, I didn't have anything better to do so I got best stack I could and assaulted Alsace. I sacked it again just to send the message. Thus ended year 1805, first 24 turns of the game.


Fighting OP stack of Alsace rebels. As usual I deploy to the side with artillery embedded in the line. Skirmishers deployed stakes to protect the left flank, right one is protected by end of the map and by cavalry. When attacked I fell back a bit to better expose the enemy to canister shot fire.
Most important on this screenshot is the glorious minimap.

Second War with France

I had 2.5 stacks, one in Reims, one in Alsace, and half in Switzerland. I got some of that replaced by militia, recruited a few more, until I had one full attack stack in Saxony and another in Switzerland.

I was ready to backstab Austria with that, but instead France declared war on me. Great timing France, you're barely holding to what you have and Great Britain took Brittany.

Well, my Western borders were sort of secure thanks to my two stacks of leftovers in Reims and Alsace.

France held Bavaria, Vienna, and Venice behind my lines. Napoleon did the silly thing and split his forces into three between Vienna, Munich, and his personal stack, so taking them all was easy. I ambushed Napoleon as he was trying to sneak back West. Napoleon is unkillable, but I wounded the bastard, and it will take him a while to respawn.

I tried to very generously offer to return Vienna to the Austrians for Bohemia so I'd have pretty borders and one fewer rebellious province to worry about, but they didn't take it.

After taking Vienna I accepted Russian and British offers of alliance for some petty cash, basically joining the anti-French coalition.

Wounded Napoleon accepted peace treaty.

War with Austria

Germany was basically unified, the only victory condition region left was Bohemia, so I needed to cause a diplomatic incident with Austria. Austria allied Pope without the rest of the coalition getting involved.

So I sent a polite letter to the Pope inviting him to Vienna for my coronation as Holy Roman Emperor. Austria and Naples somehow got involved on Pope's side, but Russia, Britain, Sweden, and Sardinia ignored that. I instantly took Prague, Milan, and Zagreb without a single shot being fired. Then Tyrol and Piedmont with a lot of shots being fired.

And that was exactly 25 regions I was supposed to have, including all regions on the list, which unlike Empire (where I'd need to wait for time to run out) instantly popped Supreme Victory dialog. No Steam achievement for it somehow. Oh well.


AI puts infantry in the middle and splits artillery and cavalry between flanks. This glorious light cavalry charge crushed artillery on one flank, then routed citizens of Munich. It then tried to go behind advanced enemy lines and do the same to other artillery, but it got crushed by enemy cavalry.
Overall great strategy not really possible in Empire, as balance is worse, and AI deployment is too much just tossing everyone at random.

Overall Impressions

This is an expansion pack for Empire, not a real new game. It doesn't fix any of the fundamental issues of Empire, like godawful naval battles, or poor moddability, but it improves it in many small ways.

I liked most of the changes. Battle AI is definitely better. Good battle minimap is great quality of life improvement. Battles are much more enjoyable. Units not requiring any cost for reinforcements, but requiring stay in home province for a while, with rate based on tech, buildings in province, and generals is a great idea. There's even winter attrition, but I'm less sold on that really. Various economic numbers got rebalanced quite hard, and I think new numbers are better overall.

The big downside is that there's basically one big war on a small map, and you can't really play it as a sandbox game. They included a few extra campaigns, but they're even more scripted and less sandboxy.

One big exception to balance changes are Napoleon rebels who are just ridiculously too strong.

If someone managed to have Empire style big map with Napoleon engine enhancements, that would be combination very much worth playing. People did just that for Medieval 2 and Kingdoms (Retrofit Mod). Unfortunately moddability of the game engine is too poor for it. There's a "retrofit" mod for Empire, but that's just for some battle and balance changes, and still runs on the original Engine.

Ironically after praising Napoleon so much, I can see myself coming back to Empire much more than to Napoleon.

I definitely don't hate this game the way LegendofTotalWar does. I don't see that much replay value, but it was enjoyable.

Tuesday, April 09, 2019

Playing Empire Total War as Venice

So after a quick campaign as Russia on normal/normal, I decided to do something a bit more challenging. Playing as tiny Venice long past its prime, on hard/hard.

Using Additional Units Mod, diplomacy fix mod, and no walls mod. Now due to bugs, playing as minors is only possible if I completely disable fog of war over the whole map. Or spend a weekend figuring out how to mod visibility quad trees. No fog of war definitely made the game a bit easier than it would be otherwise, but it wasn't decisive.

Year 1700

Venice is a teensy minor with 2 armies:

  • Venice: General, 1 Provincial Cavalry, 2 Pikemen, 1 Militia
  • Morea: General, 1 Fixed Canons, 1 Pikemen, 1 Militia

Plus a small fleet. So what do we do? Well, first we need to research stuff, build up economy... Who am I kidding, we ally Austria and Spain (just for one turn to call them into our war), and attack Ottoman Empire turn one. They already start at war with Russia.

First army takes Athens against overwhelming force in a two stage battle.

Second army lands in Bosnia, takes that without a fight, then goes to Serbia and against wins against enemy force twice the size.

That unfortunately meant I left behind one unit of Ottoman Line Infantry, and they took Bosnia back. I had 2x 60 Firelock Armed Citizenry against their 1x Line Infantry. This was hopeless, as each citizen has 3 bullets, and can't fight in melee. Thanks to amazing tactics I managed to kill 57/120 of them. They will be missed.

Next turn my army from Serbia came back, ad crushed the remaining Ottoman forces with just 1 man dead. Oh and Austria and Spain both broke our alliance, but since they're at war with Ottomans, it's fine.

So, my main problem is that I don't have any way to recruit good units. Additional Units Mod is not helpful, since it mostly adds units to major and some late game units. If I remember correctly only Prussia gets stupid OP early units in it.

All this reset Bosnia's unrest from -13 to -4, so I only had two regions where rebellions were a problem. Thanks to no fog, I could also see that Austrians were actually fighting Ottomans in some skirmishes, and that prevented early counterattack against my undefended Serbia.

But God, those end of turns take forever that I see every AI unit movement anywhere on the map. After a few such turns I disabled following AI moves. It's a bit bad, as I can miss enemy units walking next to my cities, but it makes end turns bearable.

Liberation of Constantinople

I raided Ottomans ports. And maybe that's what finally convinced them to peace out. Or maybe all the other wars they were at.

Meanwhile rest of the world was at total war already - Austria vs Poland, Austria vs Prussia, Russia vs Sweden, Spain vs Netherlands, France vs Netherlands, Britain vs Poland, Britain vs Prussia, Marathas vs Mughals, Sweden vs Denmark, Ottomans vs everyone I made them fight, and then various German minors and American natives dragged into all this.

Well, I had Serbian and Greek revolts to deal with. Both spawned with armies a bit stronger than what I got. I crushed Serbians, but battle with Greeks was a long distance shootout with fixed artillery, and I withdrew with 0 loses on both sides instead of trying something risky. One of my general died fighting the Greeks.

Ottomans lost Bulgaria to the Austrians, but captured Transylvania instead. Then Transylvania rebelled, so I was pretty happy about how things were going, merged my shitty armies into one stack (1 general, 1 cav, 6 militia, 2 fixed artillery) and declared war on them again, marching on Constantinople.

Damn Pope took this opportunity to attack me. I seriously wish it was possible to go Orthodox in this game, but sadly I need to remain Catholic forever. This meant something horrible - I had to fight a bunch of naval battles to clear route to Venice. And they were just as miserable as I remembered them. I started recruiting second stack, but Pope agreed to peace out after losing some ships.

Meanwhile my first army took Constantinople. Those battles can take seriously forever if AI is not cooperating, and me still only having fixed artillery means AI does not like to cooperate. Once Constantinople fell, I agreed to peace with the Ottomans, as majors' capitals are all 30 turns of unrest. Ottomans still have one holding in Europe somehow - Moldova, I wonder if Austrians or Russians get to it first.

Meanwhile Spain took over Portugal, Sweden took over Denmark, and French blobbed into Belgium and Rhineland a century too early.

Liberation of Rome

I demolished one building in my capital on first turn to build one college, but that's research is really slow, so I've been also stealing and trading techs. I even got a Steam achievement for stealing a lot of techs. When this game get achievements? Well, apparently ages ago as I got some in 2010. A welcome surprise, most are unfortunately either for multiplayer or for playing all the way to the end, so not really seeing myself going for that.

And finally, after liberating Constantinople and nearly single-handedly removing kebab from the European premises against overwhelming odds, I can recruit my first horse-drawn artillery. The very unit I probably should have waited for before starting the first war. I also didn't use any Line Infantry up to this point, but I recruited a bunch to face the Pope. Their first task was to fight Ottoman rebels, who wouldn't accept liberation of Constantinople. Two revolts got nicely crushed, but then election happened, and new government got elected, highly unpopular with the peasants.

I divided my troops into two stacks. One general leading militia and fixed artillery stayed in Constantinople to keep order. The other took line infantry, mobile artillery, and cavalry to Africa. On the way minor stop to take Malta. And that's where I needed to stop as Malta somehow had -30 unrest like capitals of majors. Why? Nobody knows, that's the kind of game Empire is. So now I have two babysitting armies. So much for Africa.

The Pope declared war on me again. And the Ottomans next turn. Ottomans are not a big deal, as they'd have to pass through Constantinople and I'm blockading the straits with a single ship for good measure, but Pope might take Venice. So I recruited some armies in Greece, and together with armies from Malta I landed everyone next to Rome. The key to victory was Pope only having fixed artillery which can't join as reinforcements, so I could fight him without his artillery, and that's decent odds. And Rome is also at -30 unrest. What the hell, seriously. Now I have two stacks and need to babysit three provinces, definitely nothing left over to spare for fighting Ottomans.

Battle for Rome. Good cavalry charge on weaker wing can cause massive chaos in enemy ranks while the artillery keeps shooting, but it backfires occasionally if enemy holds.
That fog is sure annoying, and Total War games would be better without weather effects.

Unification of Italy

There was going to be fun ping pong to get one army to babysit two provinces, but what needs to be done needs to be done. Empire Total War is just so much better at making overextension feel real than EU4. This desperate struggle to keep the expanding country from just falling apart, and done without any bullshit events, just with solid core game mechanics.

I now had three half-stacks - Constantinople, Rome, and Malta. And one from Malta took a quick break to liberate Tunis. Then Genoa attacked me. So many fronts, and I've been mostly giving up naval supremacy because I don't want to spend more time fighting naval battles than necessary, so it's hard to haul troops to the right place.

Fighting on so many frontline is quite hard. At least Austria didn't attack me yet - I allied them like 3 or 4 times already, then they break up but accept alliance next turn anyway. Weird relationship.

So I took Genoa and it's -30 unrest again. If I could figure out which provinces will have -30 and which only -13, that would be nice. I thought it's just capitals of majors, but that doesn't seem to be the case. Is it based on capital of major or anything with a level 4+ government building? That's my best pattern match.

Well, Spain attacked me before I could figure it out. I'm OK with AIs ganging up on me, or with this massive undocumented unrest, but why both? I quickly took Milan, but Spain wouldn't accept any terms. And neither would they after I took Naples. At least that unifies Italy. Not counting Corsica, Sardinia, and I guess Savoy.

I had my relatively speaking bloodiest battle to date when Barbary States sent their stack at me, and did basically melee charge. They even had female unit of Dahomey Amazons, whatever that's based on. At least after that Barbary states peaced out. They lost Algiers to Spain, so they're now just Tripoli.

Meanwhile - Sweden took Moscow but then lost it, Prussia took Warsaw but then lot it, France took Amsterdam but then lost it. It feels like a bit of a pattern, probably -30 unrest together with foreign armies does that. Everybody is at war with everybody else.

Justinian would be proud

Savoy declared war on me just turn later, as my army was standing next to them in Genoa. So I guess my Italy will be a bit bigger than originally planned. Unfortunately Genoans rebelled same turn, but I just barely managed to squeeze both battles with last fraction of movement point.

Spanish Sardinia was undefended, so I seized it too.

Then France attacked me. That's with the mod that fixes diplomacy? Well, at least none of them are pushing me too hard except on sea. Constantinople and North-West Italy are good chokepoints. Places like Tunis and Malta are exposed, but AI doesn't invade by sea too often.

I wanted to take Genoa, but Genoa, France, and Ottomans together successfully navally blockaded me, and I really didn't want to slog through a few hours of naval battles. So instead I took some armies from Constantinople, recruited a few more troops, and landed in Egypt. I took Cairo unopposed, Jerusalem in a small battle, and Damascus in another.

Ottomans could either try to stop my fairly small army there, or they could try to break into Constantinople. In their probably fifth futile one ship attack they failed to break blockade of the straits, and I finally had some savings to upgrade my Constantinople army to a reasonable stack and went to fight in Anatolia.

I finally got an epic battle. On my side 4 cavalry (1 General, 1 Regiment of Horse, 2 Hussars), 6 basic Artillery, 10.1 infantry (5 Line Infantry, 5.1 old Militia).

On Ottoman side 5 cavalry (all Camel Nomads), 3 artillery (1 stronger version of basic, 2 howitzers), 10 melee infantry (3 Swordsmen, 2 Pikemen, 2 Peasants, 3 basically Berserkers), and 1 Mob with firearms. Do they realize which century this is? That's West vs East, the battle which will decide the fate of the Middle East. After that Anatolia got taken and by 1720 my borders are so close to Justinian's borders like I've been actually trying.


Battle for Anatolia, and my usual setup. Artillery in 2-3 batteries between infantry line. Using groups to quickly refocus where they fire. Cavalry in reserve.

Liberation of France

Those armies from the East could now land in Corsica, switching to fresh ships a few times on the sea. I know it's cheesy, but I don't feel like playing legit naval game.

While all those campaign in the East were going on, I recruited some dragoons to keep North Italy in check, somehow randomly got a really good justice minister, and moved straight for Paris. That risks Prussia and Britain attacking me, as seems to be the pattern, but France is wealthy enough to basically pay for upkeep of a full stack.

Paris was defended by some really advanced troops. I put my artillery in 3 groups of 2, with infantry between them, and some cavalry as reserve. The French assaulted everything on my left flank, and managed to break it, fortunately at this point they were spent and my remaining half the army finished the job. French would not negotiate even when reduced to just Alsace and some colonies, but at least without Ottoman and Genoese fleets, I could challenge small French fleet, break blockade of my ports, and finally get some serious trade income.

Spanish and French troops were ravaging French countryside, so I couldn't move against Alsace, but surprisingly my Dutch allies took it, destroying France, and liberating Quebec. How did I get Dutch as allies? French once destroyed them, then they respawned, then they asked to ally me, and I said sure whatever. That was long before I was anywhere near France.

So now my Northern borders are my ally Netherlands, impassable Switzerland, and my ally Austria. To the East there's broken Ottomans and Barbary States leftovers in Tripoli. So just Spain to crush.

Liberation of Spain

My armies shrunk a lot from the peak as I didn't need quite that many stacks and merged some damaged units. Some were left in Paris, Anatolia, and even a few dragoons in Savoy, but there was still plenty left. I landed in Algiers which surrendered without a fight. A bigger force just marched onto Madrid.

Spanish armies were ravaging countyside, so I took some troops, 5 full units against half of enemy unit so about 10:1, tried to autoresolve as it would be completely trivial massacre and then got defeated. Seriously, autoresolve in all old Total War games is just ridiculously biased against the player. When I finally fought them, they didn't even fire a single shot, basically marched, got shot by all my artillery, and died.

Spain was not willing to surrender yet. They attacked Algiers with overwhelming force, and it was a really close fight.

Then I reached Madrid and AI marched halfway there and then derped for 15 minutes trying to figure out if it wants to place its line diagonally left or diagonally right against mine, like some cat trying to get in or out, while getting shot from fairly close range by my artillery. That's how a 1000 vs 1000 battle turns into 1000 died vs 50 dead.

Spanish stack tried to siege Madrid, but then cancelled same turn and went to raid some farms instead. Oh well. Spain still held Lisbon, Gibraltar, Morocco, and good chunk of America, but just a bit later they peaced out.

Peace was achieved, and I basically recreated Roman Empire at its peak. Well, without England, Vienna, and a few peripheral provinces here and there, but it's basically done.

Battle of Madrid. AI artillery really hated this hill, so it fortified itself behind it so the hill is the only thing it could possibly shoot. Empire artillery has very low max gun elevation, that might be historical, but for gameplay it would be better off if they increased max elevation to howitzer levels. AI is completely lost, and it's hard for the player too as even tiny hill might be too big for artillery.

Strategy Retrospective

I really liked the turn one ally Austria invade Ottomans and rush 3 provinces opener. Maybe Serbia was one too far, and I would be better off limiting myself to Bosnia and Athens, but no big deal.

Empire Total War has some amazing opening turns, as you can do diplomacy with anyone - in Medieval 2 it would take forever to get your diplomats anywhere. Instant diplomacy is the biggest improvement Empire did, no question about it. It's really easy to basically "win" the campaign turn 1, for example as Mughals just pay Marathas a bit of gold for peace, this will give you time to move troops South and consolidate, basically removing all the challenge.

Permanent blockade of straits to Constantinople to keep Ottomans stuck in Anatolia, then opening a second front against Egypt was a great way to turn a prolonged stalemate into a victory.

What I feel I did wrong was leaving Venice undefended for so long. AI chain declared on me - Pope, Genoa, Spain, Savoy, France, pretty much turn after turn. If they didn't lollygag and just seized Venice, it would be really awkward. I had relatively safe second homeland in the Balkans I guess, so I would turn into real Eastern Roman Empire there if that happened.

I've been massively handicapping myself economically both campaigns by not sending any trade ships to colonies, but that would mean far too much naval combat. That's another reason why I'm not too keep on playing on very hard campaign difficulty - AI would get too strong economic bonuses, so I'd need to get some colonial trade, and so I'd need to fight all those damn naval battles.

Research stealing and trading was far more successful that expected. I got almost as good research with 1 school as Venice as I did with 4 as Russia previously.

Conclusions

This was quite fun. Playing as a minor on hard/hard made battles a lot more interesting. I was usually facing stronger opponents, so maybe about half the battles were either fun or quick massacre, similar proportion as in Medieval 2. The unfun ones were a lot worse, since they drag on forever. It's always easier to have AI come to me, but in Medieval 2 it's not a huge deal if I have to be on the offensive. In Empire, dragging the artillery across the map just takes forever, and enemies won't just stand somewhere, they'll reshuffle again.

Naval combat was just as miserable as I remembered, every single time. If this game had no ships, just a lot of land bridges, it would be a lot more fun. That's one thing that's worst for my enjoyment of the game. And I can't even autoresolve it, as autoresolve has absolutely ridiculous level of bias against players. New games removed naval combat, and got rid of this crazy autoresolve bias.

As planned, I'll now go on to try the next Total War game - doing some short Napoleon campaigns.

I can totally see myself coming back to Empire later. As long as I'm fighting on land, I'm having fun. So countries like Sweden, Prussia, or Persia could be a lot of fun.

As for optimal difficulty level, hard/hard might be right since:

  • very hard campaign is really hard without doing colonial trading, and that means naval combat, and all its tedium
  • very hard battles gives enemy massive morale buffs, making cavalry basically useless, encouraging uniform art/inf lines, and reducing tactical complexity

I made second blog for gaming content, but it was more Google+ backup, and campaigns that take 50+ episodes to finish. I'm not really sure what to do with it going forward. I think I'll just post everything here unless it really takes a lot of parts.