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

Thursday, September 26, 2013

Second attempt at Beeminder

Bee Antena! by Danny Perez Photography from flickr (CC-NC-ND)

I decided to give beeminder another try, and this time making all goals I reasonably can public (as public as I can). Wish me luck. Any feedback very much appreciated.

Tuesday, September 10, 2013

Total War: Rome II or why professional game reviews are all worthless

A few years back I was really annoyed by how overhyped Empire Total War was:



In case you had some hopes they got better:

It doesn't surprise me that another Total War game is a disaster at release time - I hope they'll fix the worst issues over the next year, and I'll take a look at it then. But are these reviews intentional ad-driven dishonesty or just pure incompetence?

Friday, September 06, 2013

TTL CPU files now on github

~Cookiecat at Computer~ by ~Sage~ from flickr (CC-NC-ND)

Once upon a time I made an attempt at building a TTL CPU.

I never managed to finish it, but now I put all the files for it on github for your enjoyment.

Python 3 Unicode apparently no longer sucks

Hunted by kaibara87 from flickr (CC-BY)


I wrote jrpg as a Python 2 game that uses Unicode a lot everywhere, and I really hated Python 2's extremely shitty Unicode support. The following program:

#!/usr/bin/python
# -*- coding: utf-8 -*-
print u"Hello, 東京"

Printed everything fine if you ran it on a terminal - but instantly crashed with retarded UnicodeEncodeError: 'ascii' codec can't encode characters in position 7-8: ordinal not in range(128) exception if you tried to pipe its output into any file or command.

I'm happy to say that Python 3 no longer suffers from this problem. The following program works fine in all contexts, and no longer even needs the silly annotations.


#!/usr/bin/python3
print("Hello, 東京")

If only all other problems fixed themselves while I wasn't looking...

Sunday, September 01, 2013

Sandbox mod for Europa Universalis 4

Play time! by JPGR1965 from flickr (CC-NC)

I complain a lot about things I don't like, but I also do something about them. Here's the followup to my EU4 review which complained that it's too railroaded.

I did just these two major changes:
  • Deleting Burgundy succession crisis event that made France and Austria instantly superpowers
  • Minimum manpower recovery speed increased from 100/month to 250/month. This has absolutely drastic effect of slowing down every single blob in game. A coalition of OPMs is no longer a total pushover. You get faster than 250/month recovery only if your total manpower is over 30k, so you need to be pretty big to get more manpower recovery than an OPM, but mid and big sized countries still get all other benefits (like better generals, higher force limits, bigger manpower reserve pools).
And these relatively minor ones, since they annoyed me a bit too much:


  • All culture unions deleted. If you want to accept cultures, work on it. (I'm totally fine with some decision that restores culture unions at admin level 20 or something, feel free to send me the code). In practice France accepts Cosmopolitaine and Occitain but no minor cultures, Spain accepts Castilian, Catalan, and Andalusian, but not Galician (or Basque obviously), Italy will probably accept all its 3 cultures. etc. Germany is probably most screwed by this decision, but then it was already really overpowered anyway.
  • That probably makes the least difference but I reduced minimum culture % to become accepted from 20% to 15% to help multicultural mid-sized countries a bit. It loses accepted when it goes under 10% just like in vanilla.
The mod is for 1.1.1c, but it should work with more recent versions as well hopefully (if not, I'll release an update soon).

I ran one game in observe mode until 1500 with this mod, with no lucky nations or other bonuses. There was very little blobbing.
  • Hundred Years War continues every time truce breaks, with either side winning a province sometimes.
  • Everyone ganged up upon Burgundy - France, England, Emperor, variety of HRE minors (who are now stronger), and Dutch rebels - until it disappeared completely in 1490s. Maybe it should become part of HRE like in EU3? 
  • If keeping it alive long term was the goal, then it still failed, but at least without any scripted events.
  • Poland got into (random, but likely) scripted union with Lithuania and they expanded a bit, but nothing extreme.
  • Ottomans got beaten by Orthodox minors somehow almost completely out of Europe, with Byzantine Greece recovering (probably mostly thanks to rebels).
  • Vijayanagar is the closest to good old blob, I don't really know how it compared to vanilla EU4 since I never played in India.
  • France, Castille, and England are doing pretty well. Not superblob well, but they're very formidable. The mod didn't break any major country (other than Burgundy).
  • Timurids blobbed, then half of their lands seceded via rebels.
  • Many one-two province minors became mid-sized powers, especially in HRE.
  • Some big countries like France, England, and Denmark are close to being tech leaders, but others like Castile and Austria fell behind, so I'm not sure what exactly is going on here.
Overall I'm pretty happy with this, and I'll give it a try in a real campaign.

Anyway, here's download link.

Feel free to do anything you want with the code, my changes are pretty trivial. If you have any other ideas how enhance the sandbox spirit of EU3 in EU4, please comment or message me.

Review of Europa Universalis 4: the Big Blue Railroad

Japan 2009 — Japanese Railroads  59 by dugspr — Home for Good from flickr (CC-NC)

I have a rule I've been following with all games, especially strategy games (and Total War series in particular) - never play until at least six months after release. This saves me trouble with all the inevitable bugs and balance issues which are inevitable in highly complex games - and I don't think I'll ever catch up with everything I ever wanted to play, so I don't lose much by the way (it also doesn't hurt the game will probably be half the price by then).

With Europa Universalis 4 I took my chances. I liked a lot of what I've seen, and I have no doubts that it will be an amazing game after a few patches, and once modders start messing with it, but it sure has some major issues now.

The Big Blue Railroad

There's a handful of minor things I'll mention later, but let's just get to the core of the problem - EU3 and CK2 were sandbox games were player could shape the history in any way they wished. EU4 has some of that, but it pushes a lot harder than before to achieve certain predetermined historical outcomes, and I really don't like this shift.

First, and most infuriating of all - the game contains big scripted events to help France, Austria (and to lesser extent Castille blob) - like France and Austria dividing Burgundy between each other by event, every single campaign - even worse, with instant free cores everywhere, accepted culture, and everything. Triangle of power of France, England, and Burgundy led to very interesting balancing dynamics in EU3, now you only have Big Blue Blob.

And of course the third part of the triangle - England - is basically scripted to lose the Hundred Years War, and it has scripts (Scottish Highlanders) working against it. Speed bumps against blobbing I don't mind as much as scripted blobbing, but the outcome here is total collapse of triangle of power and France dominating Western Europe almost immediately every single time. At 0% overextension, and 100% accepted cultures.

If you absolutely have to make someone inherit Burgundy, make it some random countries. If France wants that, it will have to conquer and core them all, but I'd simply remove this nonsense.

And speaking of France - unlike every other nation in game it starts as culture union nation ("All French cultures view France as their own nation, thus giving no penalties"). A few other countries can achieve similar outcome by undergoing more or less difficult unification - but France starts as one. This is historically ridiculous before at least 19th century, and in terms of gameplay just adds to the Big Blue Railroad. I'm totally fine with nations being able to unlock this as some mid-game decision, or at some tech level, or an idea or whatnot, but they shouldn't start with that, especially not France. This mechanic isn't new, but culture penalties are much worse in EU4 than in EU3 (something I'm totally fine with, especially since culture shifting is so much easier).

To continue with railroading blobs (and not just France this time), EU3 had a lot of speed bumps against blobbing, and EU4 just drops them. Instead of infamy which hurt big countries a lot, and for small ones it didn't matter much there's aggressive expansion penalty, which is only as strong as the coalition people can gather against you.

If you're France, then Burgundy instantly collapses, England gets kicked off the continent (and even if England had any armies worth talking about, AI sucks hard at naval invasions), Castille (who is pushed pretty hard to unite Spain) has little chance of joining anybody else's troops and can be crushed separately, so maybe, depending on situation within HRE, the emperor can be a problem. Usually from what I've seen the Empire has constant internal wars and is too weak to challenge France, at least early game.

And speaking of coalitions against someone - even if you somehow managed to gather a coalition against a blob, that's usually still of no use, since you have no way to coordinate with your coalition partners, or for that matter your vassals. Blob's doomstacks will just roam the country unchallenged while your allies just sit around doing nothing. What's most annoying about it is that they solved this problem is CK2 already in two ways - first you could control your vassals' troops during a war, second you could link your troops to other allied troops in the same province, so they could put their troops under your command or you under theirs - and this would let you gather enough troops to face a doomstack. It's really annoying how EU4 just ignores all that and we're back to situation where blobs always win.

Another speed bump - most important of all actually - was war exhaustion. In EU3 it was proportional to number of troops you lost, so waging a successful war against a big blob like France, crushing all their armies, forcing them to release a bunch of states, would doom them to decades of fighting rebels and desperately trying to rebuild their armies, and kick them out of big politics for a long while. Usually by the time they could recover their neighbours like Burgundy (did I mention how much I hate EU4 scripting Burgundy out of existence?) or Castille or even Savoy would eat deeply into their territory, so a single war could change balance of power forever.

Meanwhile war exhaustion didn't matter at all against a small country - unlike big blobs small countries had very little trouble coming back up after being completely occupied and having all their armies destroyed.

Now it's the opposite - war exhaustion depends on army size, so big blobs have zero trouble with it, but small countries are completely buried under it.

But let's forget about all these minor problems - the biggest railroad is the game, and one thing that completely screws game balance, and really needs to be patched or modded away, or the game is doomed is the new manpower mechanic.

In EU3 manpower regenerated fully every 2 years and it was pretty close irrelevant unless you started as a non-European OPM. It made perfect sense to either make it matter, or just scrap it completely. Unfortunately switching to 10 years regeneration is the biggest pro-blobbing mechanic of them all.

If you're a small country, even if you somehow manage to defeat a blob, your manpower will be crushed forever without any hopes of recovery - meanwhile the blob will get theirs back real fast. And if you actually lose a war, it will take far more than 10 years to rebuild your armies since manpower is usually a lot less than your force limit. Not long enough until the blob attacks you again.

And as if it wasn't enough, blobs invariably have more monarch power than you, so they'll have better tech, better generals, more ideas and so on. Back in EU3 small trading powers were tech leaders. Now it's the Big Blue Blob (which is of course exempt from cost of coring and culture shifting things in takes).

Unlike bugs which are mostly minor annoyances and will likely be fixed in patches anyway, the railroading problem (especially with manpower and Burgundy event) is one are are which seems like a consciously made horrible design decision, and it hurt the game to the point where I want to wait for mods (or mod it myself) rather than suffer from vanilla. It's basically EU4 equivalent of gavelkind. Nothing else I'm going to mention is anywhere near as bad as this.

Oh, and it's something I don't care about, but others do - if you want achievement, now you have to play with lucky nations set to historical - as if France really needed any more railroading than it already gets. They could let people choose random or none, but they sure want to see the blob train.

Tama — Station Master of Kishi Station 1 by dugspr — Home for Good from flickr (CC-NC)

Diplomacy and war goal system

EU4 changes to a completely new war goal system inspired by some aspects of EU3's and CK2's. It is quite interesting, and I think diplomacy and war goal systems are both huge improvement over what was there in the previous games.

However, it's still either bugged as hell or just really non-intuitive, whichever way you prefer to look at it.

Even if you don't let war leader negotiate for you, war leader can still negotiate for your vassals.  Austria was the war leader. I was their ally Brandenburg, and I had Teutonic Order as a vassal (who held Hinterpommern on which Pomerania had a core). Of course I disabled their ability to negotiate for me - but they still gave Hinterpommern to Pomerania in the peace deal. No enemy troops got anywhere near me or Teutonic Order at any time, so it sure as hell wasn't occupied or anything.

A big rule of the war goal system is that except returning cores (which by the way should result in a very high positive relationship modifier if you're just gifting territory to someone who's not even a party to the war, not just +10 for doubling their territory) - only country actually controlling a territory can get it in a peace deal.

This sounds fine, but when the primary goal is of the war is your claim for some province like Hinterpommern, and your Polish allies are first to reach and siege it, you can still only ask for it to go to Poland, not to you. So much for your claim.

Even more bizzarely, Poland started a war to subjugate Teutonic Order, where I joined hoping to get that damn Hinterpommern in a separate peace deal. I ignored enemy armies and rushed to siege everything Teutonic Order had - then the moment war ticker reached 100% Poland pressed subjugation option, and Teutonic Order ended up as my vassal, not theirs. I couldn't even vassalize them in a separate peace since for me that was 198% war score, but since Poland had a discount due to CB, they could vassalize them under me.

I think there should either be exception for war goals so they can always be pressed for the right party, or sieging a territory with a claim should make it go to the claimant not to the besieger (at least when the claimant is the war leader), or something like that, otherwise a lot of silliness will ensue. This isn't really game-breaking but it's sure extremely nonintuitive.

Right now the proper way to act in any wars where you have allies is to ignore enemy armies (since even winning means extremely painful manpower losses) and just siege everything (regardless of who's the war leader, besieger gets everything). I don't think that's such a great design.

Another issue is that when you are attacked by OPM who's a coalition member, that OPM remains coalition leader. This means a single siege gets the war score to 100% and you can force other coalition members to give you huge unearned concessions. This is much less of a deal than other problems here.

Overall, I think the new war goal system needs a bit of polishing, but it's a huge improvement over what was there in the past - and EU4 diplomacy is just a lot better than in any previous game.

User Interface Issues

I'm really really happy with interface improvements - CK2 was already a huge improvement over EU3, and EU4 makes it even better.

There are finally hotkeys for most things, map modes are really well designed, and the game looks really pretty.

There are a few things that could be improved, but they're pretty small:
  • Alt-mouse drag to select all ships like in recent CK2 patches would be nice (but not a big deal, since you have far fewer armies than in CK2)
  • Diplomacy view mod (or some other mod) really needs to show coalition members against you.
  • Some kind of casus belli / truce map mode would be nice.
  • Tooltip showing diplomatic relations should maybe show how fast "improved relationship" is changing, right now that's only in diplomacy view.
  • Diplomacy screen really needs to be larger. Fortunately there's already a mod for that.
  • Ledger page showing charts with culture seems to be broken and shows them all (or maybe all from the same culture group?) as same color without even any dividing lines.
  • There doesn't seem to be any explanation of technology "neighbor bonus" and it sure doesn't work like EU3. I had a few theories on how it might be calculated, but none of them fits very well. Anybody has an idea?
  • Micromanaging diplomats is really annoying. Worst of all you need a free diplomat to even view your options (like CBs you have), not just to send an offer. They really should let you view such things even if you can't act on them at a moment. AI for sure knows all that itself, so it's just user interface pain, not any real game mechanic. (I still prefer that to EU3 diplomats system, which was just unbearable and I modded it away every single time I played)
  • It would be nice to be able to see this big war summary dialog for all wars, not just ones you're in. Most of this information is already available, just scattered over many places.

And assorted minor issues

I really like how they replaced one random mission with a choice of 3 missions - unfortunately very often all 3 are totally generic and none of them are things you want to do, or have much chance doing. That's one area where just throwing more content at the game can really improve it.

Military expansion within HRE feels about the right level of difficulty - people will dislike you for it, but not ridiculously so (in EU3 you'd get 4 infamy for taking a province, then 12.5 ticking infamy before it cored - very few provinces were even close to being worth that).

It feels like money is a much bigger problem than in EU3, and everyone is pretty much forced into trading, not just trading powers. This was another thing where small countries used to have advantage over blobs, but now blobs dominate trading just like they dominate everything else, and trading is now a lot more important than it used to be, so help blobs even more.

As a small country you'll be starved of monarch points - you won't have enough money to buy any decent advisors (who by the way are totally all free for AI, AI also suffers no naval attrition, has no fog of war and cheats in a few other ways), while big blobs won't have such problem at all.

Anyway, to summarize this review - EU4 has huge potential and I'm pretty sure some modder will turn it into a game it deserves to be - a fun sandbox, not the big blue railroad it currently is.

EDIT: I wrote a minimod for EU4 1.1.1c to reduce railroading a little. It hasn't been tested too much.

Friday, August 30, 2013

Fallen Empires Draft Strategy


Mohan doing acrobatics! by Tambako the Jaguar from flickr (CC-ND)

Dark Sphere LGS in London recently started running unusual formats every Wednesday. What was meant to happen this week was a Homelands draft - and I simply had to go, given how famously awful Homelands is.

It turned out they accidentally misordered the box, and instead of Homelands we got to play Fallen Empires. It was an interesting challenge, since I've never even seen any of its cards (I briefly looked at Homelands cards to get some idea, but I knew nothing whatsoever about Fallen Empires), and the set wasn't designed for drafting in the first place.

Since boosters back then contained just 8 cards, instead of opening one 15-card booster at a time, you open 2x8-card boosters simultaneously (for a total of 6 boosters).

There are a few major differences between drafting such ancient sets and drafting anything recent. First, since sets were really small you'll be seeing multiples of the same common a lot. Second, since it was before the New World Order, commons are often extremely impactful. Add these two together, and you can make a deck unlike anything you could do these days.

If you compare Constructed now and back then, creatures got a lot better - but the difference is not that huge in case of Limited. I'm not sure if that's specific to Fallen Empires, or if it was more common, but cards seem to require far greater color commitment than now. They also had a lot more really brutal hosers than recent sets, but I never took advantage of it (I had one anti-blue and one anti-black hoser, but even against a white/black deck it seemed like not worth siding)

Oh, and by the way - level of respect for the color pie in the entire set is pretty much nonexistent - green and white both got burn effects and at common.

Anyway, after making these observations while looking at cards I just opened, I drafted monogreen Thallid deck and went undefeated with it:

  • 16 Forest
  • 1 Fungal Bloom
  • 1 Thallid Devourer
  • 2 Elvish Hunter
  • 4 Spore Flower
  • 3 Thallid
  • 2 Feral Thallid
  • 9 Thorn Thallid
  • 2 Thelonite Druid

There are a few interesting things about it:

  • 3x Spore Flower is infinite fog
  • 1x Spore Flower + 1x Fungal Bloom is another way to achieve infinite fog
  • 9x Thorn Thallid - they are fairly bad pingers, but they are pingers and they can repeatedly murder everything. It's a pretty ridiculous draft that I was able to get 9 of them, and sometimes had as many as 5 on the field at once.
  • Feral Thallids and Thelonite Druid were meant as wincon (I never got to play with Thelonite Druids)
  • Elvish Hunter works surprisingly well as a bad pacifism (I had two more sideboard, but it's not a card I terribly want a multiple of due to heavy mana requirements)
  • one land cut because monocolor deck doesn't have to worry about color screw, and I can theoretically achieve full fog lock with just 2 Forests

Generally the format is very slow, and it's very easy to stabilize. As far as I can tell, monogreen Thallid is the best control archetype in the format.

Neither red nor green really has any good fast aggro, blue doesn't have enough evasion and seemingly none of the usual archetypes really does much.

The only archetype that seems fast enough to possibly kill before Thallids can stabilize seems to be white/black based around creatures that are hard to block like Farrel's Zealot and Necrite with a lot of backup from various damage prevention and pump creatures, with a bit of backup of Icatian Javelineers to kill any remaining utility creatures. I faced such deck in the finals and it felt like a lot of early pressure, but it was still a turn or two too slow.

Anyway, I'm looking forward to drafting other ridiculous formats, and if anything interesting happens I'll keep you informed.

Wednesday, August 14, 2013

Google is the new Yahoo

Mirror cat by crsan from flickr (CC-BY)

Over the last couple of years the only times Google bothered spending significant effort at doing anything new was when they felt they existence was threatened. They made Google+ because they were afraid of Facebook, and Android because they were afraid of Apple. In both cases execution was poor to put it mildly. Google's strategy was not even to create great products - it was to make good enough products and to be there when Apple or Facebook screws up somehow.

In Android's case, it might even work since Apple prioritizes profits over market share, so Android was given low and mid end markets without much fight, and other companies like Samsung are doing much better job at competing with Apple at high end than Google ever did.

In case of Google+, the odds look much worse. Not only it is still losing in popularity, it is becoming actively worse for microblogging with each iteration. Even if Facebook ended up screwing up bad enough to cause mass exodus, it's not so clear Google+ would be where the masses would go.

And whenever Google doesn't feel existentially threatened, its mode of operation recently has been forcing horrible UI at users (Google+, Youtube, now Gmail), forcing Google+ integration and its horrible "real name policy" (Youtube), crippling them (Google Reader, Google Talk), or shutting them down outright (Google Reader again).

What was the last time you've heard any good news from Google? It was awesome once. They kept releasing great new things one after another. Now just about any time Google does anything is to make something actively worse.

Today they completely screwed Gmail usability for writing email. Now instead of being able to focus on what you write there's extremely distracting visual clutter everywhere. I'm sure some browser extension to hide all that crap is going to come sometimes soon, making Gmail not horrible again.

The problem is not this horrible decision or another. The problem is that every decision Google makes these days is like that.

Google became the new Yahoo. Could someone become the new Google please? Amazon?

Friday, August 02, 2013

Tampermonkey/Greasemonkey exercises

Marmoset by @Doug88888 from flickr (CC-NC-SA)
A few weeks ago I ran some tutorial sessions for Tampermonkey (and all that knowledge is transferable to Greasemonkey).

You can check them in this git repository.

There are three sets of exercises:
  • beginner - 5 exercises with extremely detailed hints, appropriate even for people with no Javascript knowledge
  • intermediate - same 5 exercises, except without all the hints, appropriate for people with some Javascript/DOM skills who want to learn Tampermonkey
  • advanced - some more complicated ideas if you need inspiration for more
I'm not sure how useful it is without 5 minute introduction on how to install and use Tampermonkey, but give it a try.

Sunday, July 28, 2013

SwiftKey for Android review

Solea's Time... by ERIO from flickr (CC-NC-SA)

One of the reasons I've been reluctant to get a smartphone in the past is that it's pretty difficult to type on touchscreens. Input method was always my priority when it came to phone choice - I never got anywhere near keypad typing, and by previous phones all had either stylus-based virtual keyboard (which is actually fine since stylus tip is tiny compared with a finger), or an actual physical keyboard.

So even after I gave in and got myself a Galaxy S4 the first thing I looked for was better input methods.

Good things about SwiftKey

SwiftKey is a paid app, but it comes with a month trial period - reasonably long to learn if it works for you or not.

Unlike with all the predictive text methods (and for that matter all spellchecking) I saw, it can support multiple languages (English and Polish) without switching between them in menu all the time. It just tries to figure out the language from context and is pretty happy to switch it in the middle of text if you need it.

This was always hugely annoying and it's a proof that Americans with their massive single language bias should stay the hell away from designing any software having to do with languages. The world differs from Murica not in people using a single non-English language - it differs in people using multiple languages. I know, shocking, right? (SwiftKey is London based - in UK people are more aware that non-English languages exist).

At least for English it's pretty reasonable most of the time, and it's very easy to fall back to manually fixing the word if it doesn't get it right.

SwiftKey also doesn't try to censor every ducking thing you write, unlike some other predictive text systems I won't mention.

Bad things about SwitfKey

One very bad but easily fixable thing is long touch delay for punctuation. If you need some punctuation like "://" you long press the letter key on virtual keyboard corresponding to particular symbol - but defaults are just insanely slow. Yes, it's easy to fix it, but then if that excuse worked we'd all be using Emacs, right?

A more annoying problem is that it's not very context aware. For example if you try to type URL it will likely contain whole words. So you type one word, then second word, then ".com" and done, right? Well, not so much because SwiftKey "helpfully" inserted spaces between the words for you and now you need to go back and fix them. It really needs some concept of contexts where spaces should not be included.

And second big problem is quality of Polish language support. Unlike with English where it has decent success rate, Polish support barely even gets half the words right - and when it doesn't it's very difficult to correct it yourself with proper Polish diacritical characters.

Overall, it's a 4/5 for English, 3/5 for Polish. Much better than I expected from touchscreen devices (I expected regretting ever buying a touchscreen phone), but it's still nowhere near good enough level.