taw's blog

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

Sunday, November 29, 2015

Let's Play Civilization 5 as Jarad of Golgari Swarm - in Polish

After my fun "Let's Play Civilization 5 as Poland in Polish" series I wanted to do one more series in Polish, and I also wanted to play one more Civ5 game on Ravnica, so I did both those things at once and started a Polish Golgari game.

Here's playlist, and here's the first episode:

As usual schedule is one episode per day, at exactly the same time of day.

There are a few minor changes compared with Izzet campaign:
  • It's in Polish. For now I plan to keep the channel something like 80% English and 20% Polish, and all Polish stuff will be very obviously marked as such - as you can see from flag above.
  • I'm playing on Standard sized map with 8 civilizations, not obvious 10 civilizations on large map as before. 10 guilds is better flavor, but standard game speed is sort of balanced around standard map size, and increasing map size strongly implies bumping game speed to epic speed (or domination becomes really hard), which together would make campaign twice as long. I feel standard map speed/size lead to just better flowing campaign, at least as default.
  • I downgraded EUI to older version. New version unfortunately breaks a lot of mods. For some reason EUI authors don't provide links for downloading previous working version, in spite of new version being known broken, which goes very much against basic etiquette of all things software. I hereby denounce them for that. Fortunately I had old version saved locally.
  • As a result a few mods which were broken in Izzet campaign are working fine now - in particular More Luxuries mod.
  • I removed "Race for Religion" mod, as I'm playing with "New Beliefs Pack" mod, and it was silly to have both.
  • I manually fixed XP From Forts mod so it doesn't have crazy requirement that citizen needs to work citadel/fort tile (like that wasn't underpowered enough) and now I'm playing with it. It's been modestly useful, but nothing crazy.
Here's all guild mods:
Here's all other mods:

Other things I want to do on the channel

Right now the channel is fairly busy with 1 Factorio and 4 Civilization 5 series. Even counting Polish Civilization 5 as something separate, that's still a bit less diversity than I planned. Then again, I really wanted to play more Civilization 5 after that America campaign, and it's like the most recordable game ever.

So I'm planning to do a few more series for games other than Civilization 5, and I also want to do some non-gaming content.

An awkward side effect of this is that it's going to be a huge number of videos being published every day. Initially I just told youtube to autoannounce every video on my twitter, facebook, and google+ feeds, but that's getting a bit silly at this point due to volume of such automated announcements.

On the other hand, it's not like I have a better idea. But you should totally subscribe if you like my videos.

Oh and if anybody has any idea how to get channel art to be something more sensible than my Google profile pic + random landscape, please tell me.

Tuesday, November 24, 2015

Let's Play Civilization 5 on Ravnica as Niv Mizzet of Izzet League

The first time I played Civilization 5 I thought it's OK game, but nothing special. Gradually my attitude changed to something like this:

Yo dawg, I heard you like civ5...

So without waiting for other series to finish getting published, here's another one! Just like my previous series (Poland in Polish, America on Great Plains map, and China on China map) it's just a tiny bit gimmicky: we're playing with all 10 guilds of Ravnica on a large fractal map.

Here's episode one. Episodes will be released one a day at same time.

The playlist where they'll all get published is here. Or you could just follow my channel on youtube.

The goal is to take all 10 guild halls, get voted Supreme Ruler of Ravnica, or build a spaceship to Innistrad or some other plane. Well, technically culture victory is also a possibility, but it never seemed even remotely viable in any of my previous campaigns, so I don't normally give that much thought.

Our guild is Izzet League, led by great dragon Niv-Mizzet. All 10 guilds seem to be extremely powerful, so they're sort of balanced against each other, but would be somewhat overpowered mixed with regular civs.

Our uniques are:

  • All science buildings are upkeep free, give +1 gold, and +2 happiness
  • Izzet Boilerworks - factory replacement which doesn't require coal, and gives +4 science and +50% science
  • Hypersonic Dragon - basically medieval Helicopter Gunship, a Knight replacement with strength 20, movement 5, bonus vs mounted units, and hover. It can't take cities, and doesn't upgrade to anything.
Sounds pretty strong? Just watch the series to see what other guilds get. Their uniques gave me more trouble than I had from uniques in any other campaign (my suffering in America campaign was mostly self-inflicted).

In the campaign I play mostly decently (unlike in that America campaign...). There's a good deal of unwarranted arrogance which sometimes backfires, but I totally blame all that on roleplaying an elder dragon.

The mods for guilds are:
Other mods used:
There were a few issues with these mods:
  • New version of Extended User Interface has some absolutely dreadful default behaviour with dialogs autoclosing, I wanted to roll back to old version but that's extremely unsafe with civ5 mods, and can easily result in corrupted campaign impossible to continue (my Germany campaign was lost this way). Fortunately after the campaign I figured out how to turn off silly behaviour.
  • I have two mods changing religions - Race for Religions, and New Beliefs Pack. I planned to just go for one of them, but somehow I messed it up and it's another campaign with both. It was actually surprisingly good due to some other choices I made, but I'll make sure to pick just one in the future.
  • I used different mod for unit promotions, and I'm still really tempted to just write my own. Unless you know of another I should give a shot first.
  • Units donated by militaristic city states with 0xp feel worthless. Is there any mod that lets them have higher XP? I tried one that was supposed to give units 1xp/turn from just sitting in a citadel (until some maximum based on your tech), but it never worked.
  • Are there any mods which change puppet cities priorities to something more sensible (production focus instead of gold focus would be a good start)?
  • Are there any mods which fix priorities for tile expansions? The algorithm is completely ridiculous choosing featureless ocean tiles and tundra leading nowhere over strategic/luxury resource tiles, which requires a lot of money, but also a lot of tile assignment babysitting, which is not part of the game I enjoy particularly much and prefer to leave automated 90% of the time.
In any case, I had tons of fun, and I'll definitely start another civ5 campaign soon.

Tuesday, November 17, 2015

SQL-based Game of Life from Code Retreat 2015

Maine Coon by George C Slade from flickr (CC-NC-ND)

Last weekend I took part in my second Code Retreat event. The code is supposed to be deleted after the end, but like a good first world anarchist I saved one of them.

So here it is - SQL-based game of life.

Schema and test fixtures

It's all SQLite.

First we need a table to hold our simulations. It will be one table indexed by simulation name, generation number, x, and y listing all live cells.

Grid has no bounds, and can potentially be as big as your database allows.

  simulation string,
  generation int,
  x int,
  y int

To run simulation we feed it initial conditions. Here's some test data. Of course you'll use real data instead:

  ("line", 0, 0, 0),
  ("line", 0, 1, 0),
  ("line", 0, 2, 0);
  ("glider", 0, 1, 0),
  ("glider", 0, 2, 1),
  ("glider", 0, 0, 2),
  ("glider", 0, 1, 2),
  ("glider", 0, 2, 2);

And now we need to code the game.

Counting cell's neighbours

It's tempting to do a double join over x and then y, but it's actually much better to simply create helper table and join that once:

INSERT INTO neighbour_coordinates VALUES (-1,-1), (-1,0), (-1,+1), (0,-1), (0,+1), (+1,-1), (+1,0), (+1, +1);

CREATE VIEW live_neighbours AS
  SELECT simulation, generation, x+dx as xx, y+dy as yy, count(*) as cnt
  FROM life
  JOIN neighbour_coordinates 
  GROUP BY simulation, generation, xx, yy;

Isn't SQL great? We already have neighbour counts for every cell in the simulation with one or more neighbours.


Now it's simple step - for cells which are alive we calculate them as alive if they have 2 or 3 neighbours in previously calculated view - for cells which are dead if they have exactly 3 neighbours. That's a simple JOIN on x and y... Oh wait, we're not joining data, we're joining existence or nonexistence of cell in life table, so we need a special kind of JOIN:

CREATE VIEW current_status AS
    live_neighbours.xx as x,
    live_neighbours.yy as y,
    (life.simulation NOT NULL) as alive
  FROM live_neighbours
    life.x = live_neighbours.xx AND
    life.y = live_neighbours.yy AND
    life.simulation = live_neighbours.simulation AND
    life.generation = live_neighbours.generation;

SQL is friendly and readable, am I right?

What's alive next generation?

Well, that's fairly straightforward:

CREATE VIEW alive_next_generation AS
  SELECT simulation, generation+1 as generation, x, y
  FROM current_status
  WHERE (alive AND (cnt = 2 OR cnt = 3)) OR
        ((NOT alive) AND (cnt = 3));

Where are my stored procedures?

Unfortunately here we ran into a horrible tragedy, as SQLite doesn't support stored procedures, so we needed a tiny Ruby wrapper. Obvious Bobby Tables exploit included as a bonus:

simulation = ARGV[0]
generation = ARGV[1].to_i
sql = "INSERT INTO life SELECT * FROM alive_next_generation WHERE simulation = '%s' AND generation = %d;" % [simulation, generation]
IO.popen("sqlite3 life.db", "w") do |fh|
  fh.puts sql

Querying database

As Ruby code for updating database was ready, Copy&Paste Design Pattern was used to make it also work as data querying, if for some reason you don't want to do so from SQLite console:

simulation = ARGV[0]
generation = ARGV[1].to_i
sql = "SELECT x, y FROM life WHERE simulation = '%s' AND generation = %d;" % [simulation, generation]
IO.popen("sqlite3 life.db", "w") do |fh|
  fh.puts sql

Test driver

Of course everything was driven in a very  TDD way, more or less. Here's test driver Rakefile:

def update(simulation, generations)
  generations.each do |generation|
    system "./update_simulation #{simulation} #{generation}"
def query(simulation, generation)
  `./query_simulation #{simulation} #{generation}`.lines.sort
task "init" do
  system "trash life.db"
  system "sqlite3 life.db <schema.sql
  system "sqlite3 life.db <fixtures.sql
task "test" => ["init"] do
  update("line", 1..2)
  raise "Stayed the same" if query("line", 0) == query("line", 1)
  raise "Not back to original status" if query("line", 0) != query("line", 2)
  update("glider", 1..4)
  glider0 = `echo "select x+1 as x, y+1 as y from life where simulation = 'glider' and generation = 0;" | sqlite3 life.db`.lines.sort
  glider4 = `echo "select x, y from life where simulation = 'glider' and generation = 4;" | sqlite3 life.db`.lines.sort
  raise "Did not glide" unless glider0 == glider4

What's next?

Next step would obviously be ASCII-Artifying output instead of just dumping a list of X/Y coordinates as a table - and possibly similar ASCII-Art reader. Unfortunately 45 minute limit on the round prevented that from happening.

I'd like to thank my coding partner for cooperation in writing this. For understandable reasons I'm not going to do any doxxing.

Sunday, November 15, 2015

Let's Play Civilization 5 as Wu Zetian of China

My first Immortal difficulty campaign as America went to hell fast for self-inflicted reasons.

I thought I can do a lot better so I started another campaign just as I was done with America - their publication will overlap as I want to keep all my series to one episode per day, and I don't particularly want to delay this one.

So here's the new campaign as Wu Zetian of China. We're playing on China map, and I hand-picked three opponents - Sejong of Korea, Oda Nobunaga of Japan, Genghis Khan as Mongolia. Other four opponents are Casimir III of Poland, Montezuma of the Aztecs, Napoleon of France, and Nebuchadnezzar II of Babylon.

That's my second campaign on immortal difficulty, and I'd say it went a lot better than the first one. There were some challenges and minor mistakes, but nothing on the scale of America campaign.

If you want to follow the series, here's the playlist to which episodes will be published, or simply follow my channel.

Mods used are nearly the same:
As for modding changes:
  • This time More Luxuries is working, as it was incompatible with Great Plains Plus map used in America campaign.
  • I wasn't totally convinced about Reform and Rule mod, but I didn't find a good replacement. I'm open to suggestions, but I don't want to go back to vanilla.
  • It turns out Race for Religions massively nerfs religions by moving all the good stuff to reformation beliefs, so religions are pointless if you don't take whole piety tree. I didn't realize that in my America campaign when I had no shot at religion game anyway, but I'm pretty sure I won't be using this mod in the future. Religions are already very weak, they don't deserve more nerfing. And it already overlaps with New Beliefs Pack (which adds more options without nerfing religions), so there's no reason to use both.
  • Promotions Pack - it has really good promotions for mounted units (+1 movement per level), and decent promotions for archers (they can get up to +2 range on very high levels, so by the time Archers become Gatling Guns they remain useful) and siege units (similar to archers, except they rarely get very far with levels), but it's really miserable for all other unit types, especially to Swordsmen-line units who never get anything good, and Pikemen and Tanks who both get far worse upgrades than mounted units. I'm seriously considering writing my own mod here.
Another minor thing - during America campaign I figured out how to make custom thumbnails for youtube videos. So now depending on game I might use that feature a lot. Civ5 really needs it, otherwise youtube just chooses diplomacy pics, which is fairly poor idea.

Wednesday, November 11, 2015

Victoria 2: Victorian America AAR

Post 1 - Originally published on Google+ on 2015-11-09 13:59:24 UTC

Victorian America: Part 01: 1836-1844: Manifest Destiny

So I decided to learn how to Victoria 2, going with very easy mode - playing America, and pre-modding the game to remove all infamy and jingoism restrictions on adding wargoals.

I still remember infamy minimization minigame from EU3 and what pain in the ass it was before I figured out how to sidestep it with proper technique (declaring 5 wars with Remove Kebab CB same day, then get some forward provinces to border as many different kinds of kebab as possible).

If I end up liking this game (and my computer likes running it), I'll probably try playing with infamy and jingoism systems enabled, but first let's have an easy campaign.

Oh and I'm going to use console for everything I don't like.


• resolve any technical issues
• figure out how to mod Victoria 2, because what's the point of playing unmodded games?
• don't lose horribly
• become #1 great power
• annex Canada, and control in one way or another the whole Western hemisphere, and possibly Japan and parts of Africa
• pass social and political reforms including obviously abolition of slavery
• figure out how to industry

So let's start by turning off the music, and getting something nicer on youtube instead. The main downside of recording video games is that I can't play any Christina Perri or Nightcore or anything else good or I'd get the video b& for copyright reasons, fortunately this campaign is not on the video, so I can play something good.

Group armies and navies near Texas, send some settlers, influence random countries we're at good relations with, call new elections, research education tech, encourage clergy, nothing special.

First thing I discovered is that watching Victoria 2 videos and playing a few other Paradox games did not prepare me for figuring out how attrition works in this one. Ships take attrition while docked because they're underfunded? Army "supply weight" is not equal to number of soldiers? What is this all even?

Next question was what the fuck religious policy does? Game doesn't provide any information whatsoever, and wiki is just as worthless.

I had to intervene with Mexico-Texas war on Texas side, admitting it afterwards as free state. Apparently unlike with Europa Universalis, I can't burn colonies in progress of countries I'm at war with, unless that option is somehow hidden somewhere.

Next big problem was my textile factories unable to purchase any dyes - I failed to find them in game. Apparently the only production is in India (not that one), Dutch Moluccas (can I sphere them or something), and Mexico (let's wait for truces to expire first).

I kept calling for new elections every 6 months, but not much actually changes - electoral events affect just one county, not even whole duchy.

After colonization race with Mexico ended I disbanded all my wooden ships as waste of money, and built some steamer transports and commerce raiders instead.

I passed decisions to get cores on Cuba and Western USA under Mexican occupation.

Well, 5 year truce was up (imagine Victoria 3 with 15 year truces...), so it was time to get my cores back - and USCA provided surprisingly much help. By the way, game giving me +5 attack general and +5 attack admiral out of nowhere, what's up with that?

I got 4/5 cores from Mexico. Of cores, I still need Arizona, in addition to Cuba, that one county in New England Canada holds.

My sphere is expanding nicely, with Britain trying to compete for Venezuela, but leaving the rest of Americas to me unopposed. As for industry, capitalists are happily building it, but there never seems to be enough workers (I have interventionism, so I can't build factories, but I can subsidize them).

I admitted all newly acquired states as free states, and there were a lot of them (by colonization, by war, by evolution of existing territories). This resulted in max consciousness of everybody in the South (including African slaves), and zero consciousness of everybody in the North.

I guess it's time to have some fun in Africa while I wait for truce with Mexico to expire?

Still one core, and they're making dyes there on the other side of Rio Grande, so it's like I plan to stop

Way too much Mexico in this start

Sphering a bit

Post 2 - Originally published on Google+ on 2015-11-09 16:41:20 UTC

Victorian America: Part 02: 1844-1852: Warscore nonsense is back

About 1/3 of my armies were Dixie, so I sent them all to Africa, but I had to add some Yankee brigades as well. Since we're playing without silliness like infamy, it was time to bring liberty to everybody in Africa. Once I got some land I packed my army home and recruited some locals to fight future wars.

Meanwhile I discovered some silly things:

• reassigning commanders to different units while at war costs prestige, like WTF?
• I accidentally had a rally point for ships in a county next to one with naval base, not one with naval base. That meant that tons of docked ships just sunk.
• Every elections I get spammed by tons of messages about political issues, the choice is approximately irrelevant.
• Without elections I still get spammed by tons of messages about political issues, the choice is approximately irrelevant.
• Pop consciousness doesn't seem to be doing anything whatsoever
• My population is supposedly huge, but max number of brigades I can support is consistently tiny

Anyway, second Mexican war. I justified war for Chihuahua (as it had dyes and gold), then I wanted my core in Arizona and state of Durango (also with dyes and gold), but that was too much warscore, so I've chosen Sonora instead, which is fairly useless but would at least mean nice borders. Total warscore 98%.

And somehow during the war it increased to 102%. All the horrible memories from EU3 are coming back... EU4 had that happen occasionally, but much less frequently. Well, I can skip Arizona, as it's a fairly worthless land, but it's a fairly bullshit way to lose 10% of my prestige and fall from #2 to #3 greatest power - the only thing holding me there is prestige anyway, my military is mediocre as my pops dislike being soldiers, and my industry is mediocre as my pops dislike being craftsmen.

I'm not sure how I can convince my pops - I could use national focuses, but I'm trying to use them to make people read better.

By the way, this only cost me some prestige, how annoying would it be if it cost me 10 years' worth of infamy as well...

My impressions of the game so far are not amazing. It feels like they had a fun idea, but never polished it properly.

That Arizona-sized hole cost me 10% of my prestige

That Spanish Ethiopia should go if I want to do proper colonization, but my pops don't want to soldier, and Europeans don't want to ally me.

Post 3 - Originally published on Google+ on 2015-11-09 18:11:35 UTC

Victorian America: Part 03: 1852: Debugging Interlude

I wanted to figure out why I'm not getting any soldiers - and the answer is game being stupid. I have 81.89k soldier pops, and that could be tons of brigades - unfortunately instead of using national manpower pool, or even duchy manpower pool, brigades come from individual counties.

Even worse - soldier population in each county is divided into multiple nationality/religion combinations, every one of them having separate manpower pool. So county of Kano has Sunni Hausa, Protestant Hausa, Animist Hausa, and Sunni Fube - all of them to small to support even one brigade.

Spain has 89.03k soldiers, just a bit more than me, but can support 31 vs my 14 brigades because they're in fewer counties and less diverse. Panjab has 77.40k and support for 27 brigades.

This isn't gamebreaking for USA, as they get enough immigration coming, and enough assimilation of weird nationality/religion combination immigrant pops, that eventually their low density countries will be able to support brigades, but it's another example of "game came out without any QA" problem, and causes a lot of brigades not reinforcing or disappearing because their tiny pop base couldn't reinforce them, while most of my soldier pops take wages but don't contribute to anything because they're in manpower pools to tiny to do anything with.

On the other hand, sailors don't use any kind of manpower, so it's much easier to be competitive on the sea.

I'm not sure what would be a good mod fix - it's possible to relocate pops from one county to another by event (Trail of Tears decision relocated all my Cherokees this way), so maybe we should just move all soldier pops from various counties to duchy capital? I'm not sure how much that would mess with promotion/demotion system.

By the way, I'm not sure if I'll ever have civil war at all. It needs John Brown's Raid (prerequisites - high consciousness in free state), Dred Scott Decision (prerequisites - high consciousness in slave state; and it already happened), and 40% liberals in upper house.

As I'm adding free states only, free staters don't give a shit about slavery, so they shouldn't be any raid. As far as I can tell, taking either side consistently will avoid civil war. Unless it can trigger off consciousness in some colonial state, or in New Mexico where there's some unrelated silliness involving natives, or something like that.

Not to mention I don't know why of 4 parties (conservative Democrats, reactionary Southern Democrats, liberal Whigs, recent liberal Free Soil Party), liberals should ever get 40%. I haven't been consistent in values I promote. Whenever there's a popup I try to go:

• Protectionism (which Southern Democrats and Free Soil Party share)
• State capitalism (Southern Democrats only)
• Secularism (none of them)
• Full Citizenship (which both liberal parties share).
• Jingoism (which Democrats and Southern Democrats share)

And yet conservative Democratic Party keeps winning huge majorities regardless of my choices, in spite of universal voting, secret ballots, free press etc. Presumably if someone actually wanted to avoid civil war, it would have been fairly easy.

Not like there's much reason to avoid it - unless CSA somehow suddenly gets allies, it would have same problems I have except a third of my size, not even counting Africans, and no navy. It would probably only be a problem if it happened during some other war or serious crisis.

Another thing - so far I'm not sure game has enough happening for someone located outside Europe.
• I can't seem to be able to affect my country's politics in any way whatsoever in spite of trying my best.
• I can't do any diplomacy as nobody bothers competing for my sphere (even Britain decided it's not worth it), and Europeans won't ally me because I'm too far.
• Industry does what it wants on its own.
• Research is mostly just tied to specific dates, so there don't seem to be any tricky choices here.
• Major events so far were driven by scripted decisions and events.

I guess I could try invading China or something?

Maybe it's a lot more interesting as some minor power or as someone in Europe where the action seems to be.

Post 4 - Originally published on Google+ on 2015-11-10 03:32:19 UTC

Victorian America: Part 04: 1852-1858: Spanish-American War

So I was actually wrong and election events operate on duchy not county level.

I changed Panama / Suez canal decisions to make requirements visible in-game.

I got correct tech to get Establish Protectorate CB, planning to use it against Morocco - turns out requirements were phrased in a dumb way Paradox titles use, as it "has less that 5 states" - key number being 5. Real criterion with sensible wording is "4 or less states".

I need naval bases, so I attacked Oman. That got Egypt into war, which means I can add Sinai as wargoal (assuming I can peace them out separately, otherwise that's over 100%). And that somehow made Spain take over the war? No idea how. They're friendly with Egypt, but Egypt wasn't war target or even war leader (I think...). Oh and they were also allied with Abu Dhabi, but who cares about that.

Of couse game did not consider it reasonable to inform me of it in any way.

OK, I'll just call my sphere allies, they wanted to join my original war, but I didn't call them as it seemed pointless. Oh wait, everyone is at impossible. Why? Nobody knows. For fuck's sake, that's like worst parts of EU3 all over again.

And they even landed in Florida without any kind of hint from the game. Fine, let's see what this mobilize button does and start blockade of Cuba.

Then they landed in Hawaii, but I couldn't reall do much about it. So much for my naval base I'm building there.

I assigned some general to peasant mobs, and cleared Florida invasion, then embarked them on ships and landed on small stack in Cuba. Why are they fighting like shit? Oh, when I said embark, 18/19 peasant brigades decided to embark ships as that's how much space there was, but general stayed with the last one. For fuck's sake game, how much crap like that is there going to be!

Now for some weird reasons I can't separate peace Egypt, but I can separate peace Oman (but that wolud be 85% warscore). So I guess I need to attack Oman first to get them out of the war? Well, Yemen allied with them mid-war, but didn't join the war, and neither Yemen nor Nejd want to let my troops through. I guess I need to attack Yemen so it lets me through? That's going to be a big war.

I sent all the peasants to Arabia, where I annexed Yemen, Oman (including its African ports which were what the war was really about), Abu Dhabi (just because screw them), I got Sinai from Egypt.

During wars I changed research to some army techs - I have tech group which gives bonuses to culture/industry/commerce research and penalties to army/navy research, so I'm mostly prioritizing those, especially since some techs outside army tree also give army bonuses (mostly chemistry group), but that was sort of needed.

Spain was sort of anemic, they mobilized like twice the army I could get even with peasants, but they mostly tried to send 1-2 transports all over the world. That actually worked with Hawaii (and it was not worth trying to recover it without Panama canal - peasants had much shorted way to Egypt), but nowhere else. Their navies were too small, so I could just do whatever I wanted. Well, whatever naval attrition allowed me to do.

Now I have tons of places to build naval bases, which was the point of all this, but I got rather deep in debt with all this.

To build canals I need two more techs - one in industry tree I'm going to do anyway, the other is Iron Steamers which unlock in 1860, so I guess these are going to be the only techs.

So far no signs of John Brown's Raid, so Civil War might very well not trigger (in 1866 slavery debate modifier goes away and I can ban slavery by reform if I understand correctly).

By the way what I did would have cost me:
• up to 10 infamy for Oman (depending on when I'd get caught)
• up to 10 infamy for Yemen (depending on when I'd get caught)
• guarantees 10 infamy for Abu Dhabi
• guaranteed 5 infamy for Sinai
• 0 infamy for Cuba

Which added together is Literally Hitler range, just for this one war.

I can't say I feel this is reasonable. I've been somewhat aggressive, but nothing crazy. The game has this very strict infamy system, and then gives scripted infamy-free CBs, to get very rapid expansion, but only of the approved kind.

For example Prussia into North German Federation into Germany is crazy fast expansion, and it would cost like 10 Hitlers worth of infamy if it didn't have supporting events. Same amount if you tried to get yourself colonial empire by conquest instead of by getting Sokoto/Ethiopia early and rushing colonization spree on the clock in 1870.

Infamy feels like punishment for going off scripted path instead of punishment for rapidly expanding. I can't say I'm fond of this design. Even EU3 did it better.

Post 5 - Originally published on Google+ on 2015-11-10 07:02:44 UTC

Victorian America: Part 05: 1858-1863: Civil War after all

Events that give everybody extra consciousness kept coming and coming at much faster rate, until I actually got John Brown's Raid. Also they're super annoying and spammy as hell. Just ask once, I'm going to answer the same way in every county, probably.

No matter, I have unfinished business with Sokoto and Mexico. I called all my allies to my war with Mexico, all were "very likely" to accept, and not one of them showed up, which presumably means it's another one of those tooltip bugs.

And I got civil war after all - with my stack liberating Mexico fighting each other, unfortunately CSA got teleporting +3 general and somehow they were defenders with +2 terrain and +1 dig-in bonus. And they start at same tech at me. Not that it helped them much in that battle, total stackwipe once my reinforcements from neighbouring province showed up.

This is exactly the situation where civil war is most dangerous - they are big (as Cuba was admitted as slave territory, I can only make it free when it becomes slave, so they got Cuba), I'm in 2 other wars, with 1/3 of my army in Africa, and all my allies are lost because of game bug. Lovely.

Time to press mobilize button for the second time. And after I blockaded their ports there's a decision that gives them a bit of monthly war exhaustion.

In good news, my pacific fleet was blockading all of Mexico's fleets, and they attacked me, 15 on 30. Like I don't know something maybe? Turns out Mexico had reactionary rebels who sieged down just the province where their fleet was hiding.

After Sokoto war ended, my spherelings decided to really me and some were willing to join war against Mexico - turns out allies can't join civil wars, but I could move all my troops to carpet siege CSA - as they would not take a hint otherwise.

During civil war I passed Emancipation Proclamation abolishing slavery, Homestead Act adding +50% immigrant attraction (and again, game stuck prerequisite in wrong block, so I have no idea what the fuck enabled it), and built both Suez and Panama canals.

After finishing war with Mexico in which I got two of their states, but not my Arizona, I disbanded all armies backed by understrength pops, recruited new armies (immigration is crazy fast), and paid Russia 72k for Alaska.

So here's the question - how the hell can I get Canada? I'm #3 in the world, but that's really just prestige, my industry is 6th, military 12th, and probably seriously underteched compared with Europeans. Numbers #1 and #2 are Britain and Germany, and they're best buddies - everybody else in Europe is getting wrecked by their coalition.

Spain and Portugal are allied to Britain, Netherlands are allied to Spain (so by chain to Britain) and France - so I can't really challenge any of them for colonies by force. I guess Ottomans aren't allied with anybody strong.

I think I ran out of scripted content. The only decisions still on potential list are sign Geneva Convention (which seems awful), and restore the academia (which removes my bonuses to culture/industry/commerce techs and penalties to army/navy techs - I might do that late game if I need to catch up and once most techs are unlocked, right now it seems pointless). It's still possible that there's some scripted stuff which will come out of nowhere.

So far I have all political reforms and zero social reforms except trinket minimum wage I started with. Sadly dreadful parties like Republicans (Laissez Faire) and Socialists (Anti Military) seem to have nearly half of the vote.


First battle of the Civil War was fought in Mexico. After that CSA only had peasants.

Arizona-shaped hole in warscore system

Post 6 - Originally published on Google+ on 2015-11-10 15:19:10 UTC

Victorian America: Part 06: 1863-1865: First Chinese War

Weirdly non-military technologies are not in the ledger (unless they're somewhere I can't find them), only army tech, but I was curious how we do compared with other great powers.

Here's in power order, army/navy/commerce/culture/industry:

• Britain - 8/10/13/9/14 - total 54
• Germany - 14/7/7/12/13 - total 53
• USA - 8/8/11/16/12 - total 55
• France - 10/9/12/11/13 - total 55
• Russia - 8/5/8/11/6 - total 38
• Belgium - 8/9/11/10/10 - total 48
• Austria - 9/5/11/9/8 - total 42
• Ottomans -  8/3/5/6/7 - total 29

So unfortunately we don't have any kind of advantage over other top powers.

By the way, I'd say Victoria 2's tech system is by far its best part. It's a gem of amazing game design - just a bit of extra complexity, but it's so transparent and offering so many meaningful player choices without bullshit like EU4's "I need extra military access, I guess my ships will suck now" mana-based research. I don't think I've seen a better tech system in any game.

Oh and since no I have some kind of sensible army pools, it's time to get sensible army composition, which is supposedly 30k stack (operating in pairs if necessary) of:

• 4 infantry + 1 hussar in front
• 4 artillery + 1 engineer in the back

So I got 4 such stacks, and 4 stacks of 10 steam transports + 10 commerce raiders to transport them around. Well, approximately. The game makes it unreasonably hard to figure out what's good army composition, and even harder to balance armies, with every brigade having separate one-pop manpower pool.

Anyway, we can't really overcome European great powers with them with armies, research, or industry. We can win in prestige, that's what keeping us that high in the ranking, immigrant attraction, and thanks to zero infamy mod in rampant expansionism.

Every independent country in Americas other than Mexico is already sphered. They barely put any effort to stop us.

Najd was in Ottoman sphere, but Ottomans were just borderline great power, fell out, so I sphered them instead.

Most of prime colonial lands are already taken. So pack 60k stack, get Brunei and Atjeh on the way, and on to fight Korea - protected by China. We need so much clay for naval bases, and if they make some of the stuff we're currently importing, so much better. With Panama and Suez canals, Asia looks so much closer than before.

Now, war with China without researching much military tech was going to be hard. So step one is to find good generals to lead my armies - and oh god, this is the worst interface they ever made for any game. Well, not really, there's a lot of competition in this category, but it's fucking dreadful.

Of course that's not the end of it - if you reinforce the army, another shittier generals can take over losing you all your defense bonuses because fuck you (fuck that shit, reload, try again etc.).

And you lose prestige if you reassign generals at war, which would be a really fucking dumb idea if interface was actually working, and with this fucking UI mess, quit, mod that fucking shit out of the game, continue.

OK, now that I got this silliness sorted out, and Korea is annexed, I need to figure out how to defeat China. I need to queue at least a few military techs, penalty be damned. After a few experiments it became clear that the best way is to get my +5 attack general (who's somehow still alive), make doomstack, ignore 5% monthly attrition, and wreck them for +10 warscore per battle. It seems battle warscore is scaled by just number of people who died, not relative to their army size - destroying all of CSA armies was like 5 warscore total, and here I get 10 for a battle that doesn't even reduce Chinese manpower by 10%.

Chinese and Korean people just rushed to join my army. I'm actually quite competitive now in terms of manpower. Oh, and I have massive silk shortage - and there's a Chinese state just next to my borders which could help...

So the plan right now is to wreck Mexico and China a few more times while they're still defenseless, sphere a few more countries nobody competes at like Dai Nam, and Persia, and then maybe sphere 4 Northern China substates? It would be helpful if Russia wasn't great power, as it currently sphered some of them, and it's not exactly that high on the list, so if I wrecked them a bit they'd lose their sphere - and even if they regained it later it would be too late.

In terms of industry Britain, Germany, and France are in league of their own at 317-437 range, next are Belgium, Two Sicilies, and me at 98-108, then nobody else has more than 35. Without ability to manually setup what I want to build, I'm at mercy of capitalist AI, so I probably won't have much chance of breaking into top three anytime soon.

In terms of military, if I did another round of Chinese expansion and got a few techs, I'd probably be able to match Britain alone on land, or block Germans from showing up thanks to naval superiority, but they're allied, so they'd dominate on land and sea.

My population is now:

• 40% Beifaren Chinese, 13% Korean, only 17% Yankee
• 53% Mahayana Buddhist, 10% Sunni, only 32% Protestant

Yeah, it just doubled in two years. Every soldier who died fighting in China meant ten new Chinese recruits.

Oh by the way I'm not sphering Japan. Japan gets faster westernization speed if sphered, and when they westernize they'd become great power right away, so sphering them is basically pointless. Maybe I could invade them for some clay instead? It's not like it's far from Korea.

Of course pretty much none of this gameplay would be possible with infamy enabled, even if I reduced infamy to a somewhat more reasonable levels from what base game wants.

For some infamy calculations:

• Prusssia has 15 spherelings
• It needs Saxony, Baden, Wurtemberg, Holstein, at one state each
• It needs Hannover, Bavaria, at two states each
• It needs Alsace from France

To form Germany without game help would take 21 conquests (22 infamy), and 3 acquire state (11 infamy), total of 495. As these CBs take 400 days to fabricate, expected number is something like 80% of that, so let's say 400. During entire game if you're at peace, you'd lose 0.1 infamy a month or 120 per game if you were always at peace.

It's not even close to reasonable to get historical expansion without scripted stuff.

China would actually be dangerous if they were allowed to westernize at full size

Post 7 - Originally published on Google+ on 2015-11-10 19:32:00 UTC

Victorian America: Part 07: 1865-1869: I'll just wait for Victoria 3

I got a bit more clay from Mexico, zero trouble except I ran into even more bugs.

I'm sitting on ridiculous amount of income and manpower. Colonization is starting next year, but getting two states from China is basically already winning the game and I feel it's pointless to continue.

I can support 109 brigades, and this number keeps increasing very rapidly. If I went to second war with China that would be like 160. Germany with all its scripted blobbing gets 64. They have better tech, but not by much, and I could stop bothering with industry/commerce techs and just go for military ones - even setting poor/middle class taxes at half and spamming all infrastructure I can I'm just flooded with money.

As for navies, I'd need to research fancier bases and ships, but once I get there I can afford bigger fleet than all other powers put together. My naval supply limit is now 482, only half of British 954, but it's really just a matter of time to match it, as I have no idea what else to spend all my money on.

So, some conclusions:

• Game feels like I'm playing some early access title. It's supposedly patch 3.03 and I'm not trying to exploit anything, and yet I keep running into new bugs all the time.
• It has some promising aspects. Technology system is just amazingly well designed. Why didn't other Paradox games copy that, I have no idea. CK2 and EU4 could both use something like this.
• There were loads of point systems like research, diplomacy, leadership, influence etc. but none of them felt bad like EU4 mana invariably does. Their inputs were logical, and outputs limited.
• Interface is awful, worse than EU3 somehow, and EU3's interface was pretty bad.
• Gameplay is just dubious. So many parts of the game that don't do anything. Like endless popups that can't be turned off (another province got +50% mining because we have proper tech - you're literally going to pop this up for every single county with a mine? and that's not the only one spam popup).
• It's so infuriating that aspects of the game which could be most interesting like setting up your country's industry are locked out. It's like, who came up with this? This is the kind of area where player could make a difference and come up with some interesting plans (even simple like - I'll build this luxury clothes factory because I'm working on sphering a country producing silk - already way beyond AI capitalists), but nope, you can't do anything. If they want to lock out stuff, they should lockout boring stuff - like a party that prevents me from getting dumb popups. All strategy games have trouble coming up with engaging gameplay during peacetime, and they found something here, and decided to lock it out. I don't even.
• So many bugs... Like generals tooltips showing wrong generals. Or artillery in battle not getting assigned anywhere so only infantry is fighting unsupported, somehow, sometimes. Sadly every single Paradox title has massive failures in design of their battles - they're always overcomplicated for no gain, and as a result have ton of poor interactions between mechanics, and usually tons of bugs as well.
• Fog of war display indeed annoyed me. A bit less than I thought, but it was getting in a way a lot. Why do they fog of war when I'm trying to view what province produces or state borders.
• There's this whole political system, but player's influence is so minimal. I put serious effort into influencing it, but it did absolutely nothing. Same party whole campaign, and they didn't even have majority of voters supporting them.
• I know POP system is the big thing here, but I'm not really convinced it's worth it and if something simpler couldn't work just fine. So many things like soldier manpower pools, elections, weird national focuses etc. don't work well because they're tied to pops, and they'd probably get much better mechanics (national focus - encourage literacy) without pops.
• There are so many unit types, I'm pretty sure game would be better off with half as many. Like why have 4 different cavalry types, just make cavalry upgrade to different cavalry when you unlock some tech or something if that's really needed for flavor reasons. Units change how they look and what their stats are based on tech anyway. Just inf/cav/art system would be fine, with cavalry upgrading to tanks at some tech, and uncivs having irregulars instead of infantry.

I think I'll just wait for Victoria 3, even if the wait is long. Of course there's no guarantee that it will be any good, considering direction EU4 is taking.

This font size really should be bigger

One bug too many. Tooltip based interface, and tooltip displays information for wrong general...

Monday, November 09, 2015

Writing replacement for magiccards.info - syntax improvements

my adorable cat by pinkiwinkitinki from flickr (CC-SA)
A couple years ago I started bitching about how magiccards.info could be improved. Unfortunately that on its own rarely leads anywhere, so a couple of weeks ago I decided to write a replacement for magiccards.info. Since then it turns out that magiccards.info got sort of reactivated, so my project became a lot less urgent, but I got so much cool stuff implemented that I decided to come back and finish it.

All the code is available on github. It has somewhat unpolished Ruby on Rails-based frontend (without any card pictures) as well as command line interface and ruby API.

You can run it locally on just about any OSX machine if you know how to run Rails (git clone, bundle install,  rails s), and it should works on Windows and Linux even somehow if you can run Rails there.

I obviously need to look for some hosting solution so it's usable for average person. It would be relatively easy to add images to it, it's really mostly hosting issue. Frontend links to Gatherer (as well as magiccards.info), so except for a few weirdo cards in mtgjson database but not on Gatherer like International Collector Edition picture is one click away, so I guess I could enable hotlinking for local use, but let's not give WotC's paradoid lawyers any more reasons to go after this.

If anybody has hosting recommendations, I'd love to hear them. Oh and it should probably be called something more unique than magic-search-engine.

The search engine is backwards compatibly with about 90% of magiccards.info syntax, so you won't need to break your habits. Here I'm documenting just major additions and fixes.

Weirdly even some completely undocumented syntax from magiccards.info works the same - like is:reserved and loyalty>=6 work identically on both search engines, even thought I had no idea magiccards.info had that when I added them to my search engine (it's in mtgjson data we both use, so it's not entirely accidental).

Full documentation for all the syntax is available in the frontend.

Automatic data cleanup

Real data is full of silly inconsistencies and it's search engine's job to try to clean them up. The most important such cleanup is completely stripping out reminder text from o: queries, so it's finally possible to search for flying green creatures with straightforward o:flying c:g t:creature - or to correctly have Transguild Courier and Dryad Arbor match is:vanilla for your sweet Muraganda Petroglyphs deck.

Another thing that's not matched because it shouldn't be is foreign names in default mode, so you don't get unrequested silliness like this.

These are the biggest cleanups, but there are some weird things I ran into which I told the search engine to fix as well.  For example would you like to search for planeswalkers with -3 loyalty ability? That would be t:planeswalker o:-3, right? Well, that won't work because on planeswalkers it's a Unicode minus sign (U+2212), not ASCII symbol which your keyboard and all other cards have. Except on DFC's Garruk flip side, where it's ASCII again.

Much better spelling suggestion system

If you try to search for "kolagan command" on magiccards.info, it will helpfully ask if you meant "Kolaghan's Command", which with one more click you can get to. But that works only for full card names - searching "kolagan" will return no cards and no suggestions.

Here it's much better, if search engine can't find precisely what you were looking for, it extends all names which were not in any title of real Magic card to all misspellings. So you can search "kolagan", "purphuros", "tezeret seeker", "joira of githu" and so on.

The engine is smart enough to know not to do that if something is a real magic card, so if you search for "mox f:standard", it will not try to autocorrect it to "ox" and return Standard-legar "Yoked Ox".

Sensible sorting

You can specify how to sort the results as part of the query with  sort:new,  sort:old, sort:name etc.

sort:new / sort:old sensibly treat all supplemental sets as lower priority than every Standard set, so random duel deck reprints won't pollute your results when you're trying to search by actually newest.

Use sort:newall and sort:oldall if you want to treat all sets equally.

Robust handling of multipart cards

This is probably the most complex additional syntax.

On base level search engine operates on individual parts of cards, so "Tear" or "Chandra, Roaring Flame" are what it cares about, not "Wear // Tear" or "Chandra, Fire of Kaladesh // Chandra, Roaring Flame" together. The only exception is color identity (ci:), which is defined by rules to apply on cardboard level (and which is currently broken on magiccards.info).

Of course sometimes you actually care about whole cards, so there's new syntax for that.

A // B will return any card with one part matching A, and the other part matching B. It can be used for title matches like Wear // Tear or Gideon // Kytheon, but queries can be anything like t:human // t:insect, or mana=1r // mana=w.

You don't even need to specify the other side if what you've got is specific enough. c:r t:werewolf // will return all multipart cards which have red Werewolf on one of their parts.

I'd guess this is most useful syntax, but if you want to be more specific you can use other:condition to specify what goes on the other (not returned) side of the card, like with c:w t:creature other:(c:b) returning just Cloistered Youth and Loyal Cathar (but not their black sides).

There's also part:condition syntax for specifying that either side matches, so for example part:t:enchantment matches cards which are either enchantments, or their other sides are.

For vast majority of queries I expect people to just use A // B syntax - which for that matter expands to part:(A other:B) behind the scenes.

To simply query particular type of multipart card you can use is:flip, is:split, is:dfc or particular kinds of them, or is:multipart to get them all.

Searching for multiple card versions

As analogue of part: system you can also query other printings of same card with alt:.

For example to find a card which was printed by both Rebecca Guay and someone who's not Rebecca Guay, ask a:"rebecca guay" alt:(-a:"rebecca guay"). Or to find all cards which stood test of time and were printed in both 1993 and 2015 ask year=1993 alt:year=2015.

Block queries

You want to get all equipment from Mirrodin block? That would be t:equipment (e:A or e:B or e:C) kind of query, if only you could remember set symbols for all its sets - and it doesn't help that Gatherer, magiccards.info, and mtgjson often use different symbols for same sets (for example Alpha can be 1ED, LEA, or AL in different sources).

That has trivial fix in t:equipment b:mirrodin syntax, which matches all equipment in a block. For that matter if you remember symbol of first set in the block, you can use it as a shortcut, so b:rtr t:angel returns you all Angels from Return to Ravnica block. Some sensible logic is used to prevent matches for overlapping blocks, so b:ravnica matches only original Ravnica.

For that matter you have third alternative of using syntax like f:"mirrodin block" t:land for individual block formats, but that's more wordy, and excludes banned cards.

Time travel

You can time travel and search Magic cards as they used to be. So to search Standard as it was during New Phyrexia just ask for time:nph f:standard.

If you time travel it obviously won't show you any printing from the future, and formats will be as they were at that point, with set legality and banned and restricted list.

Historical banned and restricted list should be fully accurate from September 2004 Legacy/Vintage split onwards. Earlier than that best available data is often not fully consistent, so it's only going to be mostly correct. Quite often there's unbanning announcement, but original banning is lost somewhere in depths of rec.games.deckmaster Usenet group. If anybody has better data than what I managed to find (spending far more time on this than is reasonable), I'd love to hear about it.

Search engine doesn't plan to do anything as extreme as getting old version of Oracle text, then again it would be kinda fun.

time: currently moves the entire query to a certain point in the past, so you can't mix multiple times in same query.

Reprint search

Database supports queries like e:ktk firstprint<ktk which would return all cards from Khans of Tarkir which are reprints. You can use either set code or specific date (year or day) and any comparison operator, like let's say print>wwk t:jace (Jaces printed after Worldwake), firstprint=1993 r:mythic (all cards first printed in 1993 which ended up as mythic rares), or lastprint=8e (cards for which last printing was 8th edition) is supported.

Unfortunately technically prerelease promos count as prior printing as prerelease cards are "released" one week before actual set. That might need some changing.

Support for nonstandard card types

By default only "normal" card types are included, but you can explicitly request other kinds by type, like with t:conspiracyt:scheme or even t:dominaria.

You can also request all cards with t:*, presumably followed by more specific criteria.

This is implemented as a special filter - any reference to type of non-standard cards anywhere in the query will switch query from regular mode to everything mode, so for example if you ask for -t:scheme it will expand the query to match Planes, Conspiracies etc.

Tokens are currently not included, but since they're in mtgjson database I might change that.

English only

If English was good enough for Jesus, it ought to be good enough for Jace. Search results are not polluted by fake matches from foreign language cards like they are on magiccards.info.

Foreign card names are still in the database, so it's possible to add a mode to search for it, but it's going to be strictly English only by default.

Really minor improvements

Various information about card frame like layout:leveler (for card layout), w:gruul (for watermarks) is supported in addition to already existing queries like is:black-bordered, is:future etc.

You can use either f:edh or f:commander - they both work.

All is: queries can be negated with not: like not:reserved.

Unhinged fractional power, toughness, and cmc queries like pow=0.5 or cmc=0.5 work, at least mostly.

Split card system supports 5-part cards too, all one of them.

mana= queries check actual mana, not converted mana cost, so mana=0 will nor returns lands and manaless suspend cards, only cards with actual mana cost equal to 0.

mana= queries treat hybrid etc. mana as their own kind, because I couldn't come up with any consistent logic to do otherwise which would fit all special mana types. So Bioshift is mana={u/g}, not mana=g anything like it.

Everything is documented on help page in the application.

Sunday, November 08, 2015

Modern Times mod for Crusader Kings 2 - Congress of Vienna release

Cowboy cat by Infomastern from flickr (CC-SA)

Here's new release of Modern Times mod for Crusader Kings 2 (Steam WorkshopDirect download).

There are two major and a lot of minor features.

Congress of Vienna 1815 bookmark

One big feature is expanding timeline by a few years to Congress of Vienna, which doesn't change much in Europe, but moves India back to times when it was divided between Mughals, Marathas, and British Empire - all marked as interesting characters in the bookmark.

This new date also subtly hints at what might be coming to the mod in the future.

There are no special colonial mechanics yet. In real history Britain got half of India in one quick war, but actually giving them this ability feels ridiculously overpowered. For that matter India was never really part of Britain, it was a patchwork of local rulers under something between tributary and vassal relationship, mixed with some lands directly administered by appointed viceroys.

So for interest of gameplay, whoever wins India will probably need to take a slower route - unless you're able to find some creative exploits to speed things up. Or if you just want your name all over India, a few tributary wars will do that as well.

Peace of Westphalia

The second major feature is properly setting up religious conflict in Western Europe. You already know Catholics from vanilla, so let's introduce the other two branches.

Protestants are now a Catholic heresy with separate religious head for each national church. Priests can marry obviously, but due to game limitations we can't have women priests late game without also allowing them in 19th century where they would be just too silly. As Protestant ruler, you can establish Ecumenical Primate in Rome as global religious head in addition to national primates if you happen to capture Rome and you're pious enough.

Reformed are another Catholic heresy, and don't get any religious head, but get +4 stewardship bonus which you might find quite tempting.

Protestant and Reformed have access to regular holy wars, but not to crusades.

In spite of being heresies, all three religions are in state of truce since Peace of Westphalia, so they can't declare holy wars or crusades against each other and are forced to fight using lesser CBs. However, as an independent ruler of any of these three religions, if you have very high prestige, and your branch's moral authority is at 100%, you can officially and irreversibly renounce Peace of Westphalia and the silly concept of "cuius regio, eius religio", plunging Europe into new era of religious warfare.

It shouldn't be overly difficult to get 100% moral authority as good Catholic, especially if you help the pope win a crusade against Ottomans or two. On Protestant side, the easiest way is establishing pious enough Ecumenical Primate in Rome in addition to taking Jerusalem in a holy war. On Reformed side, it's most difficult, as you start with no holy sites under your control, and no possible religious head, but I'm sure you can think of something.

Not to mention that you can renounce peace of Westphalia, and then change sides...

AI can also use this feature, but I would be surprised if it managed to fulfil the requirements without player's help.

Because Protestant and Reformed are marked as Catholic heresies, a lot of Sons of Abraham and Way of Life decisions and events will create tensions between these branches and lead to characters changing sides. Don't be surprised if your heir turns out a heretic, or returns to Catholicism, complicating your plans.

Historical start changes

Historical start will never be perfect, but here's some improvements in the new release:
  • Ottoman start at ever increasing decadence as bookmarks go, it will take urgent effort to deal with it, especially in late bookmarks.
  • 1945-1991 West Germany downgraded from empire to kingdom. If you want to be empire, you need to unity with the other part of Germany.
  • Mediatized rulers of Bavaria, Saxony, Mecklenburg, Baden, and Wurttemberg in German Empire (1871-1918) get historical monarchs.
  • A lot more historical rulers and various fixes to the database. There's still a large number of countries with automatically generated rulers, but they're a shrinking minority, and mostly less important countries.
  • All historical rulers should now have accurate birth and death times, except for a few where even wikipedia doesn't know
  • Finland and Poland under Russia are vassal kings with local culture and religion for gameplay reasons (with automatically generated rulers)
  • A few tiny border tweaks in partitioned Poland - Prussia loses one county to Russia, and one to Austria-Hungary, so they're under 50% de jure Poland (historical border cut through both counties)
  • Minor culture/religion tweaks in Ukraine area. The mod probably should just introduce a few extra cultures like it did with extra religions (Protestant/Reformed). Especially Ukrainian and Tartar.
  • A few minor tweaks to which provinces should have cities vs castles as capital holding - that means a few extra merchant republics to play as, and Tuscany being a feudal duchy not a pointless inland republic.

Other changes

  • Indian characters have 80% chance of belonging to the right caste, and 10% of belonging to each of two other cards.
  • Automatically generated vassals ages and terms randomized instead of everybody starting at age of 35 and ruling for exactly 15 years
One more note - for Europe we generally have good historical data, and we know which of 5 gavelkinded Anhalts had which villages and on which day it changed hands in a peace deal - the problem is mostly mismatch between historical borders and CK2 province shapes.

For India, available information is of much lower quality, with multiple sources drawing borders differently, and various rulers gradually becoming British vassals often without clear dates in the process. So expanding mod to the past beyond 1818's British victory in Third Maratha War quite inevitably results in a lot of rather dubious historical setup.

On the other hand, how much does it matter if borders are off by a duchy here and there if ten years into the game it will be a total border gore either way? :-p But seriously, bad borders should be reported as bugs.

Thursday, November 05, 2015

Let's Play Civilization 5 as America (in American)

After successful conclusion of my Polish campaign in Polish, I decided to continue the theme and I'm now starting American campaign in American, on America's home map of Great Planes Plus.

Here's campaign playlist, and here's first episode. New episodes of about 25-30 minutes each are going to be published one a day, at same time (11:00 London time).

Oh and quick warning - there's a lot of swearing for like two episodes when shit hits the fan :-p

Campaign difficulty is now on immortal difficulty level, plus some extra difficulty level introduced by a truly spectacular early game mistake. Just joking, America does not make mistakes, everything went just as planned all along.

The campaign uses mostly the same mods as before, with a few changes, mostly Reform and Rule (instead of Policy+) and Promotions Pack (which is really amazing).

Let's Play Civilization 5 as Poland in Polish - series conclusions

And so, in 45 episodes, the let's play series ended in great Polish victory.

The conclusions are mostly:

  • Playing in Polish and using mods are incompatible - I expected that extra stuff added by mods would have English names, but I didn't expect that for stuff that mods changed like social policies, game would display Polish vanilla text over English modded text, so it was totally incorrect, and I needed to have laptop opened next to the game on some forum post explaining how things work in the mod. It was horrible mess.
  • If I even get the idea of doing this again, it shouldn't be too hard to write a script to at least detect this kind of conflicts. There's still be the issue of stuff added by mods having English names, but I can live with that.
  • It was rather straightforward starting fairly early, so I could bump it one difficulty level for next campaign
  • Next Civilization 5 campaign (which just so happens to be starting today) is going to be in English, but I'll record some of the content in Polish in the future.
  • Fractal map was pretty cool. It's probably the best "default" map.

Saturday, October 31, 2015

Music scrobbling and regular expression bias

May 22, 2012 - Music of the Spheres by guidedbycthulhu from flickr (CC-NC)
Once upon a time I used iPod, and I even wrote last.fm scrobbler for it. Of course no hardware lasts forever, and I much prefer Sansa Clip, which unfortunately doesn't record enough date to write similar scrobbler.

Anyway, physical devices are really mostly for outdoor use, and I got most of my music from Streamus before it shared the fate of most music services from as far back as AudioGalaxy of being outright destroyed because of copyright fascism. The only good site that wasn't outright shut down so far was Pandora Radio, which was instead locked to US IP addresses and requires far too much messing with VPNs - from London it's a fate not much different.

So now I'm mostly using youtube as music site. It has this mix feature which initially was dreadful, but after some training it got to be fairly decent. And apparently there's even Chrome extension which records what I listen to on last.fm. Except of course youtube doesn't have ID3 tags, so it just uses a regular expression - apparently very simple regular expression.

I'm mildly annoyed by this. It's fun to record this kind of personal data, and it's fine it's in a random sample and some is missing, but this just has massive bias. Most common title format for youtube music videos is "artist - title", and those get recorded, but some use "artist: title" or "title - artist" or "title by artist" or some other format, and currently they all don't get recorded or get misrecorded.

For example during last hour I apparently listened to song titled "Taylor Davis" by such diverse artists as:
  • Circle of Life on Violin (The Lion King)
  • Let It Go (Disney's Frozen)
  • Doctor Who Theme (Violins)
  • Bolero of Fire (From Zelda OoT) — Violin
  • Duel Of The Fates (From Star Wars) Violin
This unfortunately can't really be solved by a better regexp, but last.fm has crazy big database of artists and songs, so it could just detect that and flip them back to right order maybe? It really just needs API for unstructured titles, in addition to its existing artist/title API, as client can't really do that.

There's also a function to enter artist/album when scrobbler can't guess, but it should seriously at least remember what I entered if I listen to same music again (or even better have some database so if some other person corrected music title, just use that). And seriously, it needs to support Cmd-V to paste the title, it's totally silly that the mini-dialog closes instead of pasting if I press Cmd-V.

And of course there's a lot of other music which doesn't get detected as music at all. So far I haven't seen any cases of non-music getting registered as music - which is probably the wrong direction to err, as it's much easier to correct extra data with delete button than to add data manually.

Well, it seems they released it relatively recently so they might fix it at some point. For now I'm going to be mildly annoyed that data it records about myself is biased (probably in pro-mainstream way, as happens with most bias).

On an off chance this interests anybody else, here's the list.

By the way,  should something like "Taking the Hobbits to Isengard - 10 HOURS" count as one song in the date? I'd think it should count as a lot of separate songs, based on how much one listened to it. This is somewhat niche, but it's just another example how data recording process has pro-mainstream bias.