Tuesday, June 30, 2015

Let's Play Darkest of Days

I decided to add 3rd let's play series to my ongoing  Puzzle Quest as wizard Saneko (every day, 8:00 London time) and Civilization V as Korea (every day, 10:00 London time) series.

Enjoy Darkest of Days - time traveling first person shooter. Release schedule is one episode a day, 12:00 London time.

In the game we'll me traveling to both World Wars, American Civil War, ancient Rome, distant future, and many other times. Enjoy.

Sunday, June 28, 2015

Design patterns for Ruby file format converters

Baby tiger by Diego Cambiaso from flickr (CC-SA)

It's common to write scripts to convert files from one format to another. Everybody wrote tons of utilities with interface like water_to_wine_converter source.water target.wine or somesuch. That's the easy part. Pretty much every time the next step is immediately - well, what if I want to convert whole directory of those?

I keep running into this problem over and over, and the solutions I end up writing converged to fairly similar form every time, so I thought I'll write about it.

Well, first, we're going to require pathname library. Once upon a time I used to just use Strings for file paths, but the more I use Pathname the more I like it. It lacks a bunch of methods I need often, and could definitely get better, but it's still a big improvement over using raw Strings.

I'll assume for simplicity we don't need any fancy command line argument processing, but if you do, it doesn't change the rest of the pattern.

require "pathname"

class WaterToWineConverter
  def initialize(input_path, output_path)
    @input_path  = input_path
    @output_path = output_path
  end

  # Actual code
end

unless ARGV.size == 2
  STDERR.puts "Converts water to wine format"
  STDERR.puts "Usage #{$0} deck.water deck.wine"
  STDERR.puts "   or #{$0} water_folder/ wine_folder/"
  exit 1
end

input_path = Pathname(ARGV[0]) output_path = Pathname(ARGV[1])
WaterToWineConverter.new(input_path, output_path).run!

So far so good. Alternatively we could pass raw Strings to constructor, and convert them to Pathname there:

require "pathname"

class WaterToWineConverter
  def initialize(input_path, output_path)
    @input_path  = Pathname(input_path)
    @output_path = Pathname(output_path)
  end

  # Actual code
end

unless ARGV.size == 2
  STDERR.puts "Converts water to wine format"
  STDERR.puts "Usage #{$0} deck.water deck.wine"
  STDERR.puts "   or #{$0} water_folder/ wine_folder/"
  exit 1
end

WaterToWineConverter.new(ARGV[0], ARGV[1]).run!

You might even do both just for extra robustness - passing Pathname object to Pathname() constructor works just fine.

Use of Pathname is usually a matter of preference, but in this case it's part of the pattern.

Well, let's write the #run! method:

class WaterToWineConverter
  def run!
    if @input_path.directory?
      @input_path.find do |source_path|
        next if source_path.directory?
        target_path = map_path(source_path)
        next if target_path.exist?
        target_path.parent.mkpath
        convert!(source_path, target_path)
      end
    else
      convert!(@input_path, @output_path)
    end
  end
end


That's some nice code. If input path is a file, we just call convert! method.
If it's a directory, we use #find to find all files in input directory, use map_path to decide where the file goes, create folder to put that file if it doesn't exist yet. target_path.parent.mkpath is an extremely common pattern that frees you from ever worrying about directories existing or not. Just do that before you open any file for writing and you're good to go.
In this example we decided to next if target already exists - this is common if you're trying to synchronize two directories, let's say converting your .epubs to .mobis, and you don't want to redo this work. But just as well we could decide to overwrite or raise exception or print warning or whatever makes most sense.
convert!(source_path, target_path) is just a straightforward method that doesn't need to care about any of that - it already knows if target is safe to write, that directory to create target in has been created and so on.
Now the last remaining part of the pattern is to write #map_path(path) method. If both source and target use the same extension, it's really simple thanks to the power of Pathname:
class WaterToWineConverter
  def map_path(path)
    @output_path + path.relative_path_from(@input_path)
  end
end

Unfortunately there's no such easy way if we need to change extension as well. I feel like they should add a few methods to Pathname, especially for file extension manipulation, but we'll avoid monkeypatching and do it the hard way.

Fortunately it's not too messy if we're only working with one extension type, and the somewhat ugly bit is encapsulated in one method:

class WaterToWineConverter
  def map_path(path)
    @output_path +
      path.relative_path_from(@input_path).dirname +
      "#{path.basename(".water")}.wine"
  end
end


And that's it. It's fairly short, elegant (except for that extension changing part), and robust code that's easy to adapt to pretty much every converter's needs.

Thursday, June 25, 2015

This is now a let's play channel

I decided to get a bit more serious about let's plays. I feel going a bit deeper into something is better way to experience it.

So far I finished two series:

  • Let's Play series - Civilization 5 as Shoshone - as my first series this invariably ran into endless technical problems, and audio quality for the first 7 episodes is pretty bad, then it gets better, but I guess not that many people want to watch from the middle.
  • Let's Play Puzzle Quest as Melniel - it started fine, then I got a disk crash after two episodes, and even though I managed to get old save game file from it, reinstalled game would not accept it. Still could be somewhat entertaining, so if you run out of things to watch, why not.
And of course I ran into all kinds of silly issues, like forgetting to charge my headphones, not testing mod compatibility before starting the game, mid-game hacks, random environmental sounds, completely random publication schedule and so on. That was all fine, it was planned as experimental series.

I never got audio quality to studio quality I'd like to have, but it's decent, and video quality is very consistent 1080p with no glitches.

So now I'm starting some new series, and lessons learned, I'm going to do them much better. First two series are:
  • Let's Play Puzzle Quest as Saneko. After her older sister died in a tragic hard drive crash, Saneko continues the quest to save Bartonia from undead monsters. Scheduled for publication one episode a day, 8am London time.
  • Let's Play Civilization 5 as Korea. This is my first game at Emperor difficulty, so could be some challenging fun. Links to all mods used in description under each video. Scheduled for publication one episode a day, 10am London time.
I'm trying to have enough recorded and uploaded about one week ahead, so it never skips any episodes even if I'm too busy to record for a few days or there are issues with my internet connection. 

I want to add a couple more series to this. I'm not sure if I'm going to continue everything at one episode a day pace, or try a different schedule. I definitely don't want to go under 2 episodes a day for the rest of the year, each episode generally aiming at about 25 minutes.

I don't have any definite plans, but I'd like to record at least one series in Polish - most will obviously be in English. I'll probably make some non-gaming videos too at some point - gaming is just the most obvious thing to start with, but the video medium can be used for so many other things.

I thought about streaming, but I can't get any internet with decent upload here (2015, London, zone 3, still no way to get fibre optic, come on...), so it would be pretty awful quality - probably not even 720p. There are some games for which it's fine, but mostly I'll just record.

I don't plan to put any facecams into gameplay videos, I find them rather distracting, and there's no good place to put them anyway, as most games use all corners of the screen for relevant UI elements.

Here's the first episode of Let's Play Civilization 5 as Korea:
And the first episode of Let's Play Puzzle Quest as Saneko:

Feedback always welcome. Let's do some playing.

Monday, June 22, 2015

Let's Play Puzzle Quest: Challenge of the Warlords

I quite enjoy let's plays, so I decided to start a second series after my civilization V campaign finished.

This time it's the classic game Puzzle Quest: Challenge of the Warlords.

I only recorded two episodes (full playlist here). I wanted to continue playing, but due to hardware failure I'm not sure if I'll be able to recover save files.

This series definitely has much higher silliness to gameplay ratio than Civilization V.

Regardless of my success with save game recovery, I'll definitely make more let's play videos. It's really a lot of fun, even if very few people are watching.

Another day, another hardware failure

Ziva the Maine Coon by Nicholas Erwin from flickr (CC-NC-ND)

Well, things were going far too well with just one computer death so far this year, so my gaming computer's motherboard decided to go hostile towards my SSD, -200 desiring all its provinces.

I still have no idea what the fuck. The motherboard works just fine - replacing that disk with another one worked just fine. And the disk works just fine hoo - I can literally hotswap it back where it was before after I boot any operating system, it's just that when it's plugged in during computer startup it now freezes during POST. It's crazy. I went through BIOS flashing and all the usual rituals, with no change whatsoever.

Amazingly, it's another crash with no significant data loss, just wasting a whole Sunday on trying to figure out what the fuck is going on (my expectations of disk failure would be disk not being detected, so it was pretty low on my list of hypotheses to try) and reinstalling everything. Fortunately I always keep notes of how to reinstall various operating systems, like this one here for Windows 7, which is still 90% up to date. I've seen Windows 8/8.1 and I want it about as much as I'd want a free Windows Phone.

Speaking of data loss, getting data from that old disk is still a bit awkward as I'd need to go through boot from livecd, hotswap disk, dump to some USB disk mess. It's mostly low value stuff like save games that I didn't include in backups for a good reason, but I was in the middle of some games, and it's mildly annoying.

There's also tons of software configuration that was lost - I hate how hard it is to sync Windows software configuration with cloud, except for Chrome. On Unix 90% of software can be configured with dotfiles, which are committed to git repository and then symlinked whenever I setup a new machine. I don't really have a good solution for Windows - or for that matter for the handful of Unix programs that don't use nice dotfiles. I could just keep text files with notes, or backup all their user data (including tons of irrelevant junk), or build some sophisticated configuration scripts trying to separate the relevant from irrelevant. The most annoying one that I lost is Open Broadcaster Software configuration that took a ton of tweaking to get right, and I have no recollection which numbers should go where now, with the rest I more or less remember what I need.

Saturday, June 20, 2015

As a customer I'm disappointed by how Amazon is changing

Snowball With Teeth by Property#1 from flickr (CC-NC-ND)

I'm usually a fan of Amazon, but I'm really disappointed by some of their recent changes.

Amazon UK used to have free slow delivery - which of course wasn't actually free, just included in average price. Then they increased minimum spend to £10, and recently to £20. This really interferes with my ability to go to Amazon, and press buy button for whichever gadget I need, and get it the next week or so, without thinking about it.

What's worse - that £20 spend is not on anything on the website, only on items dispatched by Amazon directly (and presumably not even all of them), so it's hard to pad the order by "well, I guess I also need some X, I might as well order it now", as for many Xs they're actually dispatched by some 3rd party.

All this is of course blatant attempt at making Amazon Prime more appealing. But I don't want Amazon Prime. It bundles:
  • something I want that used to be included in price (free slow shipping)
  • something that's a nice to have, but I really don't care about it terribly much (free next day shipping), and presumably only on items from Amazon, so I'll still be paying for shipping on half of stuff I order from Amazon website
  • Amazon Prime Instant Video service, which is just a painfully bad player with painfully limited selection of painfully low video quality - and of the few things they have almost everything needs to be paid for separately anyway. Most ridiculously after paying for Prime subscription and the video you need to pay the third time to watch it in HD. And to just rub it in, you can't download any of that to watch it on a train, or in a better video player. It's just hopeless crap.
  • There's some kind of Kindle library, which I haven't tried, but I presume selection is just as ridiculously low as for instant video. Not that it matters much, stacks of books I sort of want to read somehow keep growing endlessly anyway, I shouldn't be adding more.
  • Oh and now it includes "unlimited photo storage". Like I don't have all the photos in multiple more convenient to use clouds already.
That's not nice, Amazon. If you want to just increase prices, you can do that without doing this delivery fee nonsense. And stop trying to make Amazon Instant Video happen, it's not going to happen.

Friday, June 19, 2015

Medieval 2 Total War Concentrated Vanilla compatibility update

Pussy by tripleigrek from flickr (CC-SA)
A while ago Steam decided to do Medieval 2 update, which broke compatibility with a lot of existing mods, including Concentrated Vanilla.

It took me a while to figure out what the hell - mostly because Steam decided to simultaneously screw up my Medieval 2 installation, and only full reinstall of both the game and Steam itself, followed by then fixing the mod would work.

Fortunately it's all done now. Just grab latest zip from github. It probably won't work with non-Steam retail version - if you have that, just get older version.

And one more thing - if you try to run concentrated_vanilla.bat while Steam is off, it will run unmodded game. Make sure Steam is running before you run concentrated_vanilla.bat. Nothing I can do about that.

Enjoy the game.

Pictures from Paleo Week

As I said before, this is now a food blog. [*]

After "great success" of Vegan Week [**], I decided to go strict paleo for a week. What is paleo? Well, not even paleo people entirely agree, so I went with fairly strict version of it.

Other than massive headaches by first evening due to huge reduction in caffeine intake, it was actually surprisingly OK.

You can see all the pictures with annotations on this flickr stream. Here are just some highlights.

([*] it is not actually a food block)
([**] where by "great success" I mean "no stray dogs were harmed")

Meat with fruit

During my first "pics or never happened" times, I tried meat with rice and clementines in place of usual vegetables. I don't even remember why I did it, but I never looked back. Distinction between fruit and vegetables is an illusion that keeps humanity enslaved to the Matrix, or something like that.

Now, paleos can't agree if white rice is paleo or not, but for purpose of experiment I decided to be fairly strict. 

It's actually pretty good, with grapes:
Oranges and bananas:
Later I even tried it with strawberries, and it was also pretty decent. Don't believe fruit and vegetables are different in any way.

Mean with vegetables


I didn't want to eat fruit with every meal, so I also had meat with steamed vegetables:

 It's really pretty good:

And raw salad style vegetables:
 And salads with both fruit (apples) and vegetables:

Eggs


I didn't eat just meat, I ate loads of eggs as well. Both scrambled:
 And in a salad:

Fruit


I had some kind of fruit with about half of the meals, either on its own or with something else.

I really like how nowadays it's possible to buy precut mixed fruit in any supermarket:
 Or just grab random fruit and eat it:

Nuts


I didn't feel that raisins would fit strict paleo, but nuts, almonds, and honey should, so I had some of that as well:

Coffee with honey


Plain green tea is generally considered paleo, so I had a lot of that, but every now and then one needs something stronger.

Milk is definitely banned in paleo (well, I guess human milk would be allowed, but let's not get there), and most fakemilks are probably as well - not to mention when I tried drinking coffee with almond fakemilk it was really disgusting.

Fortunately coffee with honey was tolerable enough.

The end

The week was quite fun, and it didn't have any serious side effects. I didn't feel like I had to have chocolate or ice cream or whatever else was not allowed, the way I really missed meat while trying the vegan thing.

The food was somewhat more boring than I'd normally eat, and trying strict paleo for longer I'd probably miss it, but a week was just fine.

I'm sure I'll try other things for a week in the future.

EU4 Casual Dutch Trade Game AAR

Post 1 - Originally published on Google+ on 2015-06-15 14:24:56 UTC


Casual Dutch Trade Game: Part 01: 1444-1451

I keep claiming every time that this game will be totally casual, but that never happens, I always end up accidentally blobbing like crazy. Let's give it another go - starting as 2 province minor under PU of one of the biggest blobs in Europe - Holland. With abysmally bad Dutch ideas.

The goal of the campaign is becoming king of Netherlands and getting dominant position in English Channel end node, maybe playing a bit with El Dorado and Protestant stuff.

If I end up conquering India, having 5+ CNs and every province in every end node, that will be a definite proof that I can't play this casually.

Well, first order of business sending a diplomat to claim Antwerpen, and getting support for our independence from Burgundy's rivals - France, England, and Austria. That gave our country 231% liberty desire, sadly capped at 100% for display reasons as it would be funnier to leave it like that.

Burgundy got allies of Brittany, and Trier. I had to pull the trigger as soon as possible even with silly 2k army as otherwise Burgundy would get more allies, and it would be just a lot more painful.

I peaced out Brittany for separately for some petty cash, then in main peace deal I got independence, money, and all lands of Flanders. And wow, the points are real. With one claim that's 159 bird mana in peace deal and 525 paper mana to core.

England was instantly -76 butthurt that they didn't get Picardie in this. Not only is this number absolutely ridiculous, I'd paying bird mana cost if I gave it to them instead of taking land for myself.

I thought about going to some pointless war so emperor would not bother me about illegal HRE land (not sure if they changed it), but pope attacked Tuscany, and Austria called me into war anyway. That's good. War won, Austria and France - who are best buddies forever this time - both went from defensive to friendly.

I got some silly allies like Pomerania and Cleves just for early protection, and Pomerania decided to attack Brandenburg, allied with Poland/Lithuania. Yeah, bad idea, but I'll join. Obviously they lost.

I got coalition against me of Utrecht, Oldenburg, Baden, Nassau, and Hansa. I think I got more AE from just fabricating a bunch of claims than I got from taking all of Flanders. Did they change that recently?

Well, time to break the coalition. Let's say by attacking Friesland, allied with Hansa. Friesland got vassalized and humiliated, Hansa is paying me reparations, Oldenburg left coalition on their own. And now I'm at +66 PP, so the points are rolling in!

It's been fun times, and my truce with Burgundy expired. Sadly I don't have CB against Burgundy, only against thein junion PU partner Brabant, so no free PP from declaring that war, and France which turned defensive might not join. It's still a good idea to attack them right away to prevent them from joining any coalitions.

As for patch features:

Movement lock is as fucking infuriating as I expected it to be. Of course not possible to mod the hell out of the game. If army is movement locked, and then gets into battle in province it was trying to leave, it will keep trying to leave the province after the battle as well.

There's a bug that breaks popup and pause when fleet arrives - you get that every time your fleet patrolling trade goes anywhere. That will make fighting naval wars take much more micro.

Achievements this episode:

• That's a Grand Army
• Until death do us apart
• Victorious!
• That is mine!
• Brothers in Arms
 #eu4

Let's get this going.


Casual trade game as 2 province minor






Post 2 - Originally published on Google+ on 2015-06-16 00:29:38 UTC


Casual Dutch Trade Game: Part 02: 1451-1465

I won a quick war against Burgandy and friends, but with coalition against me getting ridiculous already, I just got tons of PP (146 before cap) and a bunch of gold.

Even then I was target of coalition of Alsace, Provence, Aachen, Baden, Brandenburg, Frankfurt, Hesse, Mecklenburg, Munster (German), Oldenburg, Trier, Savoy, Gelre, Liege, Utrecht, and the Hansa.

16 countries are too many, so I went over my relations limit to get alliances with: Austria, France, England, Poland, Milan, Pomerania, Cleves, Pope, and vassal Friesland to counter that, and tried to improve relations with more peripheral coalition members.

I actually pressed development button a few times - I had three development 19 provinces, so I spent a bunch of sword mana to get them to 20 while gaining manpower, and building slot in each. Then I built some temples with all the money I got from my wars. Then emperor passed first reform giving -5% discount on build cost and development cost, so I could have saved like 25 gold and 7 sword mana if I just waited a bit longer.

Cleves called me into hopeless defensive war, which I of course accepted, as some coalition members were allied with enemy, and truces are always nice. And instantly there was infestation of enemy stacks. Two forts I had did absolutely nothing - enemies could directly access my every province even if they couldn't go from one to another always. The whole system is just crap.

AI was amazingly incompetent. I was just chilling in my territory, and it had siege of Cleves nearly won multiple times, and every single time it abandoned it to go join some silly battle. Of course I couldn't counterattack as we had 25k vs theirs 40k, which are decent odds except AI wouldn't attach to me, and my own army of 12k was just nowhere near enough.

I got regency for 5 year old princess, so there's no chance of any expansion until 1569 or so. And sadly Austria lost imperial throne to Bohemia, so my alliance here got a lot weaker - and with me taking side of Bohemia's two rivals Poland and Austria there was no point trying to get another with Bohemia, it's a miracle that France and England somehow managed not to go to war yet.

Well, let's continue Cleves's dumb war. Enemy AI was dumb as fuck, it wouldn't let me white peace out, and it wouldn't take sit long enough in Cleves to take it. It had 0 warscore against me, which by rules of the game as applied to me means they can't request any concessions, but AI cheats, so it asked for reparations, which I was not willing to give. And they apparently removed Concede Defeat option, which was a decent workaround for AI stubbornness.

AI eventually took Antwerpen, and started spamming me stability reducing offers, which I cancelled by consoled because it's dumb nonsense with separate rules for AI and for players.

This retarded war ended up with Cleves paying Mainz reparations, and me losing nothing, just as I asked for over and over before (and what AI agreed to with all AI participants like Gelre just fine, beacuse they were at 0 individual warscore for years). Too bad, because I almost sieged through Mainz's capital, and I'd have 100% warscore against them. Warscore system, dumb at is always was, got huge deal worse in this patch somehow.

Anyway, coalition against me more or less fell apart, but there's still quite a bit of AE left so it could resume if I start expanding again.

I took exploration ideas and just recruited my first explorer. With my luck I won't have anything colonizable in range. Maybe no-CB Norway as soon as Denmark's PU over them ends due to negative prestige? The same would happen with Burgundy's PU over Brabant as well, assuming I don't take Brabant for myself first.

My princess Jakoba is still 12, so a few more years without any wars. Then I might take over some Burgundian territory, or just beat them for more PP and money.

I was in top 10 countries with highest income for a while, but I fell to #14 as war reparations stopped coming (these are only known countries, in reality Ming etc. are probably way richer than that).

Achievements this episode:

• The Princess is in this Castle
 #eu4



Post 3 - Originally published on Google+ on 2015-06-16 02:56:45 UTC


Casual Dutch Trade Game: Part 03: 1465-1476

It turns out absolutely nothing was in exploration range, so the whole rush was pointless.

I noticed that Brunswich got reduced to 5 development OPM with 33 development worth of cores. Well, at least one country has good sense to accept becoming my vassal. 2 relations over limit, like I care.

Cleves got into another defensive, this time against my rival German Munster, and I accepted again. This one we were actually winning, but I white peaced as soon as my duchess came of age and attacked Gelre instead.

Gelre taken for Friesland without any serious troubles. Sadly Burgundy got allied with Castile, Venice, Hansa, and generally impressive list of countries, so it was easier to attack Anhalt for Brunswick's cores, even thought it got Bohemia into the war.

Reconquest CB is just as bugged as ever, costing far more bird mana and AE than it's supposed to, so I had to wait at 100% warscore for bird mana to refill to get provinces which were supposed to cost 0 mana.

Next order of business was taking Utrecht. They were protected by The Hansa, which blobbed quite a bit, and by (German) Munster, whom I could beat up a bit for easy PP. It wasn't too bad, except for my war exhaustion going over 8 from all the attrition. That got increased by a lot this patch apparently.

Once I integrate Friesland, I'll have all the Dutch cores necessary except Breda.

I hope Bohemia passes second reform (one that gives -2 unrest now) before reformation happens - it will probably not be possible later.

I want to move my capital from Holland to much better Antwerp, but that's outside HRE, and I need +100 relations with emperor to add it. I should have done that back when Austria was the emperor, Bohemia is not too fond of me.

As I'm a duchy I'm eligible to become emperor, however with 22 year old duchess in charge, and only Austria having events that enable female emperors, that's probably not going to happen.

Poland lost its PU over Lithuania due to negative prestige. Rulers of Denmark and Burgundy are sadly still alive, as I'd just love for Brabant to become independent.

I'll probably keep diplovassalizing random OPMs. I mostly want English channel trade node, where I currently can't expand at all as its held by overly strong countries, and CoTs in nearby nodes like Bremen, Cologne, Lubeck etc. to feed my end node. And I need to unify all lands of Dutch, Flemish, and Walloon cultures. Beyond that, I'll need to blob a bit in the region just for sake of manpower and forcelimit, but i don't have any major expansion plans - Brunswick was just pure opportunism.

Achievements this episode:

• Seriously?!
 #eu4



Always ally baguette


Post 4 - Originally published on Google+ on 2015-06-16 19:12:23 UTC


Casual Dutch Trade Game: Part 04: 1476-1487

Idea groups I want the most now are diplomatic and maybe trade, but I'm suffering from severe shortages of bird mana, and relative abundance of paper mana, and I'll want religious by the time reformation hits anyway, so that's going to be the next group. Sword mana is going to be used mostly for development.

So the plan is probably exploration, religious, diplomatic, expansion, trade, humanist - or something like that. Before they split diplomatic/influence and religious/humanist, it was actually reasonable to take some military ideas, nowadays it's just silly.

I got into another war with Burgundy. Forcing them to braek relations with Castile, Venice, and Hansa and to give me Breda.

Next target was my somehow-still-rival (German) Munster. I really need to setup my keyboard so it has umlauts, it's annoying to switch layouts just to type it, but then if I remove them from the map that will also solve this problem.

The game eventually figured out that my rivals are a bit silly, and I had to switch to Burgundy, Scotland, and the Hansa.

I got Waldensian rebels twice my force limit... That was really painful, as they stick together and reinforce now, and I don't have infinite time if I don't want my provinces to randomly fall to rebels.

With half my army dead, I decided to attack Burgundy again anyway, taking just two provinces, but a coalition already started as soon as I lost half my army to rebels.

Coalition ended up being: Alsace, Baden, Frankfurt, Oldenburg, Wurttemberg, the Hansa, Hesse, (German) Munster, Aachen.

It wasn't just AE, I tried to keep relations with other HRE members reasonably high so they wouldn't join even at fairly high AE, but "Unlawful Territory" and "Annexed a member of the Holy Roman Empire" penalties on top of AE. It was not too great.

By the way I find it really silly that "Annexed a member of the Holy Roman Empire" is a massive penalty you get for diploannexing HRE member, but for annexing by force? Who cares.

But none of that HRE stuff is terribly important. Northern part of Burgundy, half of Hansa, and a few OPMs to connect all that is about the extent of my territorial ambitions in HRE, and it's not that urgent.

I finally got bird tech 7, so I can send my explorer a bit further away than before. None of that is likely to end in my range, so I'll probably need to beat Denmark and Norway for a few provinces.

France is -90 butthurt that they didn't get their claims in peace. This modifier is ridiculously large, especially when these are just claims not cores. With base decay -1/year and no time limit France will remain butthurt over this until 1562 or so. It was already stupid high, and they probably forgot to rescale it when changing from base tax to development. England is still -24 butthurt over not getting Picardie in my independence war - that's totally ridiculous.

I really need to tone this nonsense down a good bit.

Hopefully Bohemia will pass 2nd reform and then lose elections to Austria or someone before IA starts going down due to reformation and loss of Italy by events.

Achievements this episode:

• For the Glory
• True Catholic
 #eu4

Anti-coalition units


Netherlands nearly unified


Post 5 - Originally published on Google+ on 2015-06-16 21:40:55 UTC


Casual Dutch Trade Game: Part 05: 1487-1497

I modded "Not given occupied cores and claims in the peace" modifier to reasonable levels, but it doesn't apply retroactively, so if France decided to break our alliance based on that, well, happens. It's still a miracle that I more or less single handedly ensured peace between France and England in the Hundred Years War by keeping them both busy fighting Burgundy every 5 years or so.

Bohemia passed second reform, which is more or less how far I want them to go. Reforms 3-4 are I don't care if they pass or not - they are positive, but bonuses are much smaller than for the first two. Reforms 5+ cannot be allowed to happen of course. Right after that kingdom of Italy left HRE by magic event.

I finally discovered some colonizable land - if you can call Greenland colonizable - but it was outside my range, so it was time to start some hopping. Denmark got reduced to OPM with almost no development, so I took it. That's pretty much useless land and not closer to the new world, but at least I can fabricate on Norway from there.

Milan called me into its offensive war againsh Savoy, which I accepted and even helped them with some of Savoy's OPM allies, but then right after the war they broke our alliance. Seriously AI? I hope France conquers you now that you're no longer in HRE. I allied Hungary instead.

I got into another quick war against Burgundy - just returning cores for my vassal Hainaut. I need such small wars just to make sure potential coalition doesn't expire their truces all at once.

Then I got into much more important business - war with Norway. They were allied with (Irish) Munster, which I conquered in this war (not cobeligerent, they were allied with Castile etc.). I also took land in Norway, and all the North Sae islands I could get. With all that, I have a chance to finally colonize something.

It's really nice that I don't have to siege random islands with no castles any more. Unfortunately from what I've seen in AI only games, AI will spam top level forts on completely worthless islands and bankrupt itself rather than just let this mechanic work.

My heir died in a hunting accident, so game thretens me with PU under France. That would be bad, as France is still much stronger than me, and I don't think many countries would help me with this. Then I got another Jakoba von Genf female heir by event. Is this like the only Dutch female name in game files? That's exactly what my previous duchess was named. The current ruler is duke Eberhard. All that pretty definitely tells me I shouldn't be even trying to get HRE throne.

I sent a conquistador to look for 7 cities of gold, he got murdered by first event, and all my troops exiled, so I had to send ships to unexile them. The second one is still ongoing - and my first colony on St. Martin is finally about to get established.

I think it's time to turn away from the HRE - I just need to complete the mission to take the rest of Dutch lands from Burgundy. Afterwards I'd like to force vassalize Scotland, which will put me on inevitable collision course against England. If I could convince France that they can take Gascony and Normandy while I take Britain, that would be sweet. There's of course this inconvenient problem that England has much stronger army and navy than me, but if I make ticking wargoal something like Calais, England will won't be able to do anything about it.

A few things really keep me in HRE: I still want north Burgundy (and they're in HRE), I even more want Hansa's CoT provinces, and I don't mind bonuses from first two reforms. I'll be able to press the button to leave HRE and form kingdom of Netherlands by paper tech 10, in a bit over 20 years. I probably won't do that right away.

And there's still the issue of league wars. This clusterfuck is going to be more entertaining from within than from the outside.

Achievements this episode:

• Cold War
 #eu4

Political situation


Inevitable loss of England as ally is going to hurt


Just some explorers, conquistadors, and location of future colony


Post 6 - Originally published on Google+ on 2015-06-17 19:29:34 UTC


Casual Dutch Trade Game: Part 06: 1497-1506

So I did some off-campaign testing how new force limits work, and the conclusions are:

• tooltip lies (wow, really?)
• tooltip claims local autonomy doesn't affect force limit - but it definitely does
• local autonomy affects force limit from buildings and province modifiers (like center of trade)
• and even that doesn't add up, and number is 1 lower than it should be sometimes. It's most likely bad floating point calculations, followed by rounding down, so 10 is miscalculated as 9.999999, then rounded down to 9.

That makes my plan to just spam force limit buildings in worthless provinces I got from Norway not work, and I wouldn't mind some extra naval force limit .

Weirdly after patch all other building types giving tax, production, and manpower bonuses ignore local autonomy, as their bonuses are additive. It's just the reverso of how it used to be. These bonuses are proportional to development, so in low development high autonomy provinces it's pointless to build anything.

The only building that sort of works in such provinces are shipyards, but even additive +75% slower shipbuilding added to -50% faster shipbuilding is just not very good compared with just building some ships in your core provinces.

And all that is relevant, as I'd like to challenge England on sea without having to spam heavy ships.

I got into another war with Burgundy, and it's really annoying to not be able to just take whichever territory I want - all of North Burgundy would fit 100% warscore, but it would create coaliton up to Aragon and Venice, and probably antagonize both England and France.

In theory this means that AE is probably decently calibrated, as it feels somewhat excessive for small HRE state, and small HRE states have all AE penalties stacked against them. So presumably for everybody else on the map it's more or less OK.

Well, there's land a lot more interesting than HRE - Great Britain. Sadly England did not join - they had "-250 accepting would destabilize England" penalty, probably because they offered military access to Scotland, which is all nonsense but what can I do.

Of course England instantly went into hater mode and broke our alliance. Fortunately that at least made France like me a bit more, and England did not have enough AE to join the damn coalition.

Coalition is somewhat nasty: Alsace, Burgundy, Aachen, Frankfurt, Hesse, Cologne, Luneburg, Mainz, (German) Munster, Oldenburg, the Palatinate, Trier, Ulm, Wurttemberg, Nuremberg, Memmingen, and the Hansa. And there's a lot more countries that might join in the future - there are like three countries in HRE with less than -30 AE against me. If I stop expanding now, and keep max prestige, PP, and better relations over time advisor, all that AE should disappear by 1547. How cool is that?

I decided to leave my colony unprotected, choosing trade option, which supposedly reduced native attacks by a lot, but that was just bullshit, I got two attack almost immediately one after another. I mostly hate how AI cheats that and there's no way to turn off thin cheating.

I've built some castles - in Friesland and Artesiƫ (I need to figure out how to English all names, there's option for that in menu but it's a lie), in addition to castles in Utrecht, Limburg, and Antwerpen. The one in my capital Holland is useless, but I can't delete it as long as that's my capital, and I can't get my relations with emperor to +100 to add Antwerpen to HRE and move my capital there.

HRE electors are split between Bohemia and Saxony about evenly. My best buddies Austria are sadly not in this competition. Catholicism reform desire is at just 69.3%, which seems slower than usual.

I'm tempted to just attack England under some flimsy pretext like Scottish claim to Ulster, then take London without a claim.

I just got to 301 development - actually I pressed development button a lot more times than I expected, every time with sword mana of course, so I could become a king even without my special decision. I still want a few things in HRE:

• North parts of Burgundy, but that's a bad idea as it would antagonize France, and after loss of England I can't afford that
• Hansa's CoT provinces, but there's whole coalition protecting them, and if I took that it would be all of Europe versus me
• A few random provinces like Oldenburg and Meppen for neater borders

Another question is - are kingdom rank and some special events worth losing -2 unrest, -5% build cost, and -5% development cost I get from membership?

By the way, I did a bit more off-campaign testing, and warfare got definitely dumbed down by a ton since 1.11. Since nobody can maneuver any more, and it's a lot faster to siege through enemy territory, big dumb stacks tend to win.

No achievements this episode.
 #eu4

Such tactics. Wow.




I had two uprisings in a row here


My alliances are well positioned against the coalition, but awkward against England




Post 7 - Originally published on Google+ on 2015-06-17 23:44:31 UTC


Casual Dutch Trade Game: Part 07: 1506-1516

The priorities were getting coalition down in size (starting at 17 members, but a lot more countries at risk of joining) and making sure France loves me forever.

I was trying to chill, but Pope backed by France attacked Milan, allied with Austria and Hungary, so I had to lose some allies. I decided to drop the pope. That made me seriously tempted to pass statute in restraint of appeals, but that -60 to relations with my Catholic neighbours... Well, France mostly. I had the same problem with "long pig" event where I spent 100 bird mana to avoid -50 hit to relations with my neighbours, that is again France. I'm not sure any of these decisions were correct.

I diplovassalized what was left of Norway, and that was very little.

After waiting 5 years for coalition to hopefully fall apart (it didn't), I decided to ally Castile, going over relations limit, and declared war on England after all for Ulster. Unfortunately Austria and Hungary did not join due to -60 attitude towards enemies. I really dislike this modifier, I want Austria to keep Venice (their rival and enemy) busy, not to fight England.

Dumb Scotland could sit in their capital while English troops were sieging Lothian, but of course they decided to attack 7k vs 34k. It wasn't going too well, Portugal and Aragon together decided to ambush Castile - showing once more how worthless fort system is. Castile's forts are in Galicia, Granada, Cordoba, Castilla Le Vieja and Toledo, so that costs they 5 gold per months and yet everybody from every single direction including from the sea can go straight for their capital.

Of course none of that matters, Scotland has properly setup border fort in Lothian, and they still charge English troops for no reason.

In big naval battle against England my 1 heavy (captured from Scotland), 34 lights, and 10 transports defeated English fleet of 8 heavies 10 lights and 12 transports. Unfortunately only 19 lights and 6 tranports survived on my side, while they got still 5 heavies left afterwards. Sure, it's a victory, but not a pretty one, and with Venice, Aragon, Genoa, and Aragon on English side that wouldn't even come close to ensuring naval supremacy. At least Teutonic fleet sunk politely.

The level of AI dumb was far beyond the usual incompetent. Poland had Teutonic capital at 49%, which would kick Teutonic Order out of the war, and likely with reparations, but they decidedto break the siege to chase 1k stack five provinces away. Fuck that.

And of course I have no idea where zones or control apply and why. France successfully sieged castle in Bearn, which was sieged by Aragon/Venice doomstack. Half of that doomstack freely crossed into France, because ignoring zones of control. And then when then halfstack decided to attack my army sieging Labourd, the rest of the stack crossed directly into Labourd as well to join them. Like what's even the point of the system?

Let's be serious here - the game would be better off back to previous system. It's fucked up to the point of unplayability far beyond the usual shitty QA. If they want to try doing that properly for the next game, more power to them, but this is not even remotely acceptable.

And it's absolutely infuriating that there's no longer any option to concede defeat to separate peace random minors - like Teutons who lost their army to Poland, lost their navy to me, and were almost sieged to death except Poland broke that last moment, all other provinces automatically got unsieged, and that counted as technically 0%.

I finally got to white peace Aragon, Teutons, Genoa. Mostly because of their war exhaustion. I can't imagine how annoying vanilla must be where. Sweden returned some tiny bits of worthless land to Norway, leaving just England, with troops stuck in Ireland and my armies sieging their homeland.

That didn't quite solve the problem, as wargoal was Ulster, and England still had 39k doomstack in Ireland and no intention of disbanding that.

I moved my armies to Ireland, taking Ulster and having 97% warscore, but England would magically not allow me to take it because I didn't occupy fort in Meath. This mechanic is total bullshit.

Oh and game bugged out and wouldn't let me take Scottish claims (which were the damn wargoal) without bird mana, and I didn't have any left, and call for peace was ticking already, so I just added myself bugfix amounts of mana. Oh and I got London.

In HRE Saxony became the emperor for 6 months, then it got back to Bohemia.

Achievements this episode:

• Blockader

Anyway, the game is just a fucking mess. I have fairly low tolerance for bugs and such crap, especially for things that used to work before. I think it will be more sensible to just stop it here, just as I ended by Great Britain Extended Timeline campaign. At least that was mod that changed everything about the game, so gamebreaking bugs in that are somewhat excusable. What's going on here? I just don't care about this game any more.

The really need to fix this shit. It was buggy many times in the past, but never that much. And of course the most broken things are all impossible to mod out of the game.

The same is true about CK2 nowadays, more or less since patch 2.0 when it started getting much worse real fast, with levy nerfs, temporary rebel titles, and ridiculously winter attrition AI has no idea how to handle. And these are just basic game features, I'm not even talking about more borderline issues like non-Norse tribal gameplay, removal of assassinate button and so on.

As for other stuff, El Dorado events were fairly uninspired, cost of bleeding 1 sword mana / month for search which takes forever and barely does anything is just too much. I don't mind a bit extra fluff, but it's fluff that costs mana.

Mana is much more limited. Before the patch rest of the world was low on mana, but HRE minors were just bursting in it. Now with no more -10% tech cost for being in HRE, -5% for university (which not everybody has, but many countries do), no more +1 relation slot from embassy, a lot more bird and paper mana for expansion. Costs could really use some toning down. It's not crazy high, but it's on high end of what's still reasonable. Same with AE, it's a bit too much, and it fails a bit too slow - and now with dumbed down wars and ridiculously high bonuses for independent countries there's no good way to counter enemy numbers with better tactics.

I'll repeat it once more - with fort system in state it is, the game is just unplayable. If you want more examples - England has castle in the Marches. I'm sieging Marches. I can land from ships in St George's Channel to Glamorgan next to Marches to take the province. Armies from Marches can't go left (Gwynedd) or right (Leicestershire). It's a bit silly that sieged castle somehow magically enforces zone of control, but I'll run with it. The really dumb thing is that I can't even go back to ships which are now in Irish Sea. No, ships need to go back to St George's Channel so the troops can embark there. Like, seriously?

So unlike with every zone of control system for every game in history, this one is history-dependent. Armies in particular province can move in some directions or not depending on where they came from. And of course there's no indication whatsoever which army came from where.

And don't even get me started on that halfway through movement lock and how many dumb problems that leads to.

I hope they fix this game in future patches, and it will require some serious redesign not just a few hotfixes with tweaked numbers and a bunch of bugfixes. Right now it's just straight downgrade from 1.11.

I've done my best fixing previous problems with EU4 with mods, but I just can't do anything with this mess.
 #eu4

Political map




My colonies

Sunday, June 14, 2015

Fun and Balance mod for EU4 1.12.1

Baby Fox by StarfireRayne from flickr (CC-NC-ND)
Fun and Balance, the one true way to play Europa Universalis IV, is now available for 1.12.1.

1.12 expansion balance math

There's been surprising amount of backlash about coring cost changes and a few other issues in latest patch. Before explaining what Fun and Balance does about it, here's some math.

In vanilla 1.11 to core 100 base tax you needed 2000 admin points, but realistically you'd have claims on that all reducing it all to 1500. 

In vanilla 1.12 on average 100 base tax worth of provinces turned into 268 development (exact numbers vary from place to place on the map). Coring that costs 2680 admin or 34% higher than before, however claims reduce it only 10% not 25% so actual cost is closer to 2412, or 61% higher than before.

Diploannexing same amount of territory changed from 1000 diplomatic points to 2144 points, or 114% more.

However now administrative efficiency applies to coring and diploannexation costs, up to -50% late game, so eventually costs are meant to go down to 1206 for coring with claims. It actually goes down even further to 1072 as efficiency is applied additively instead of multiplicatively as it was presumably meant to, which is nice for claims and coring cost reduction bonuses, but nasty for hostile coring cost increases. In either case you pay more early game, less late game, and have less need to carpet claim.

With diploannexation cost eventually goes down to 1074, just 7% higher than before.

These changes were definitely meant to slow things down, but under assumptions that players generally play the game 1444 to 1821 (or play shorter campaigns but starting from different bookmarks every time), they aren't that drastic. 

Except of course we know this assumption to be false, and as any survey will tell you vast majority of the players tend to start at earliest possible bookmark, and very rarely play all the way through. So people experience early game cost increases, never get to late game cost reductions, and are left very unhappy if this doesn't agree with their playstyle.

Note that none of this applies to Extended Timeline, where people starts at all possible bookmarks from Roman times up to present day, and there are no time limits, so slowing down the game doesn't really cause any problems.

Fun and Balance expansion balance changes

Fun and Balance leaves base coring costs as they are. Administrative efficiency is moved so you get +10% every 5 technologies - 7, 12, 17, 22, 27 instead of 25% at 23 and 27.

Development efficiency (not relevant to this discussion) is similarly spaced with +10% upgrades at 8, 13, 18, 23, 28 instead of 25% and 24 and 28.

It is similar to changes Extended Timeline already does, which needs to spread these upgrades throughout 2000 year timeline, so there are more smaller upgrades instead of just two big bonuses. Developers discussed doing in future versions of vanilla as well. (pretty much every patch a bunch of things Fun and Balance did before appears in vanilla as well - you're sort of playing future patches here)

These are minor changes. Much more important change is that Fun and Balance doubles relations limit, and goes as close to making diploannexations not cost points as it can, just as it used to. Unfortunately that's not moddable, so it does its best with 1point/development - and to make best simulation of annexations taking longer you can only start them after 20 years of vassalage, not 10.

Monarch points are also slightly easier to get in Fun and Balance as well, as it fixes a bunch of problems with rival system, which frequently prevented you from having enough rivals or flickered rivals on and off. Unfortunately there's only so much mods can do about rival system, so these fixes aren't always enough.

As result of such changes expansion in Fun and Balance should be easier in terms of monarch points impact, but more difficult due to denser defensive alliance chains. 1.12 patch's +50% extra AE for taking land from non-cobeligerents makes it even more difficult to use cheesy tactics to bypass enemy's alliance networks, making these alliance networks even stronger defensively.

Other major changes

There are now holy sites for more religions, generally based on CK2. For organized New World religions they include London and Paris if you want to play Sunset Invasion game. Holy sites are now visible as province modifiers. Extended Timeline religions corresponding to vanilla religions got holy sites too, the remaining ones will probably get them eventually as well whenever it makes sense. (the whole holy site system can be disabled from in game menu).

Achievements. The game won't allow you to get achievements in modded game, but if you feel so inclined you can enable them from in-game menu and you'll get an in-game achievement popup at next monthly tick after fulfilling achievement criteria. You can check available achievements in triggered modifiers dialog. If you want to use Steam Achievement Manager to make them "official" or turn it into a drinking game, have fun. It is disabled by default. As console and save scumming are available while playing mods, it's up to you how "legitimately" you get those popups.

You can press your subjects' holy wars and cleansing of heresy CBs without direct border to target if both you and subject have Deus Vult. You must be same religion for Cleansing of Heresy CB, but it's enough to be same religious group for Holy War CB - so for example Catholic Poland can use its march Moldavia's border with Sunni Ottomans to Holy War them. It is only fair as Ottomans could have always used Holy War CB against Poland due to their border with Moldavia.

EU3 style partial westernization feature (worse than Muslim tech to Muslim tech) mod used to have disabled by default. It can be reenabled from in game menu. I found that with Goa core event and all alternative ways to westernization it's no longer necessary, and it causes some issues mid to late game.

Other balance issues

Patch 1.12 did a lot other things like splitting Burgundy and adding very high fort costs.

For now I kept Burgundy's capital in HRE, as it used to be in older versions of Fun and Balance, as this led to better gameplay. I'm not sure if that's still true in new patch, but it seemed like a safer way, and was more historically accurate, which isn't top priority, but a decent tiebreaker in ambiguous cases.

Fort prices are kept at their vanilla values, even though evidence from AI-only games shows that they're far too high for AI which frequently spams high level forts everywhere and ends up in permanent crippling debt, with nothing left for expenses like advisors. I'm avoiding any significant tweaking, as next few patches will probably try to rebalance that. The problem doesn't seem to be fort upkeep itself - its' mainly how many useless forts AI tends to build, or keep in conquered territory.

AI would probably be better off if it got an event every now and then for any fort next to another fort asking if it wants to delete it. Such duplicate forts not at the border, or at the border but next to 2 or more other forts are really just a pointless drag on AI economics. I don't think AI ever deletes buildings normally, as before 1.12 there was never any reason to, so event like that might help a lot, but it requires more testing.

It's hard to create balance with forts which simultaneously provides interesting tradeoffs for the player (as current system mostly seems to aim for), can be competently managed by AI (which current system fails at), and doesn't involve blatant AI cheating.

Everything is optional

Changes the mod does are as independent from each other as I could make them, so it should be easy to customize the mod by selectively disabling or modifying it to get game experience you want. A few are exposed from in game menu, but don't be afraid of text editor.

Enjoy the game. Happy blobbing. Or happy not blobbing. Whichever way you want to play.

Oh, and one small thing. If anybody feels like making a nice logo for the mod for Steam Workshop, that would be nice :-)

Thursday, June 11, 2015

Ruby 3 should merge Strings and Symbols

my_pic211 by takenzen from flickr (CC-NC-ND)

It seems that every programming language has idiosyncratic ways to divide what everybody else considers one data type into a bunch of variants. Python has lists and tuples, Java splits everything into primitive/object versions, C++ has like a billion versions of what are essentially String and Array, every database ever made has at least twenty timestamp types, and even Ruby does that with String and Symbol.

The excuse is usually some low level optimization or finer points of semantics every other language somehow manages without, but let's be honest - pretty much none of such distinctions are worth added complexity, and somehow other languages never "see the light" and rush to copy such subtypes.

In Ruby 1.x strings were just String objects. Sure, it exposed this Symbol kinda-string thing, because Ruby generally exposes a ton of stuff it doesn't really need to, but it was just internal interpreter stuff only people who wrote C extensions needed to know about. Even metaprogramming API used String objects only. #methods and friends returned String list, #define_method could take either String or Symbol and most people just passed regular String objects. It was good.

Then suddenly people noticed Ruby has two string types, and started using both, without much logic to it. Ruby 1.9 changed some low level APIs from returning String to Symbol, which was reasonable enough, but you can still pass either just fine.

Unfortunately it only got worse as people decided that Symbol is totally awesome to be used for internal identifiers in their programs, not just for interfacing Ruby interpreter - and Ruby enabled this behaviour by adding JSON-style hash syntax (later also used for keyword arguments) - even though in JSON foo: "bar" really just means "foo" => "bar" not :foo => "bar".

That of course instantly led to memory leaks, DoS attacks, and so on, as Symbol type was never meant for anything like that. In ended up with Ruby being hacked to GC Symbols - data type originally just for low level stuff that lived forever, not for any kind of user data.

Look at any Ruby significant codebase today and you see to_s and to_sym scattered everywhere, nasty nonsense like HashWithIndifferentAccess and friends, and endless tests that miserably fail to match live behaviour because saving objects to database or JSON or whatever and loading them back (something tests often don't bother to do) transparently converts things from Symbols to Strings and they are equivalent in some contexts but not others.

Let's just stop this. As long as easy foo: "bar" syntax exists people will keep using Symbols where Strings would be more appropriate, and I'm aware you can only pry this syntax from people's cold dead hands, so this can't realistically be changed by better practices.

The only way this can be fixed is if Ruby just unifies both data types. Just like Ruby 2 made ?x mean "x", which caused some temporary issues but was great simplification, Ruby 3 should just make :foo mean "foo".freeze.

This seemingly radical unification would be surprisingly backwards compatible - String#to_sym can just return frozen copy (or itself if already frozen), and String#to_s can mean "#{self}" in all contexts. It will probably take a few performance hacks here and there to cache some kind of unique key or hash on frozen String so comparing two frozen Strings is fast, but it's conceptually simple problem, and such strings tend to be very small anyway so it's no big deal if unique key sometimes misses forcing fallback to slower comparison routine.

Only the code that relied on distinction between Strings and Symbols for things like sentinel values would be affected, but so many libraries magically convert from one string type to the other or back that I'd not recommend doing that anyway. Just bite the bullet and use sentinel objects. In any case that's like 1% of uses of Symbols.

I know status quo bias will make many people dislike this idea, but let's reverse this - if it was already working like I describe, would any sane person suggest introducing Symbol type? Of course not.

Oh and while we're on the subject of Ruby 3 wishlist, it could really get some kind of #deep_frozen_copy and #deep_unfrozen_copy, with whichever names people end up using. This however is a subject for another post.

Wednesday, June 10, 2015

Let's Play Civilization V as Shoshone - post-campaign retrospective

So I finished my first Let's Play campaign and I thought it's good time to have a retrospective on mods I used. It's not yet all uploaded, at my upload speeds it will take until next era for that to happen.
  • 3rd Unique Component and 4th Unique Component: Adds extra unique components to each civilization — I liked that. 3UC/4UC seem to be on fairly low power level, so there's nothing crazy, but they made civilizations a bit different. Definitely yes.
  • Capture+: Allows capturing all civilian units — I really liked how early game it hugely increased stakes with capturing settlers. Capturing great generals on the other hand, that's a bit silly. Probably yes, or something similar.
  • Caravansary Trade Routes: Adds extra trade route for each caravansery built — It makes wide empires somewhat better, it added too much busywork with trade routes for my taste. There's probably some strategy to exploit those extra trade routes hard, I just used them in most straightforward way. Probably no.
  • Civilization 5 Diplomacy Values: Displays numeric values of diplomatic modifiers — I'm not terribly familiar with how much AI cares about different things, so I definitely like that. Definitely yes.
  • Ethnic Units: Extra civilization specific textures for units — It doesn't matter, but it looked nice. Definitely yes.
  • InfoAddict: Displays more statistics — It was extremely useful, it's silly how base game. Definitely yes.
  • Less Warmonger Hate: Reduces warmonger penalties and makes them decay faster — Other civs seemed to hate me just fine in the end, and it felt reasonable mid game before I went on warmongering spree. Vanilla warmonger hate gets pretty extreme sometimes. Probably yes.
  • More Luxuries: Adds more unique luxury types — The biggest technical failure of the campaign, as I really needed this one, and it didn't actually work due to conflicts with Natural Wonder Overhaul. Definitely yes.
  • Natural Wonder Overhaul: Adds more natural wonders — It's a good idea, but it conflicts with much more important More Luxuries. Definitely no.
  • New Beliefs Pack: Adds more beliefs. — That made religion game much more interesting at no downside. Definitely yes.
  • PolicyPlus+: Rebalances social policies. — It's straight difficulty increase, as you no longer have easy access to overpowered policies, but it also makes weak policies more viable, so it's more interesting. Probably yes.
  • Promotion Melee Ranged Correction: Bugfix for some UU promotion upgrades — That applies to just a few UUs, and a few more 3UC/4UC UUs. I didn't play as any of them, so it didn't really matter, but I can't see why not. Definitely yes.
  • Scouts Ignore Borders: Lets scout units ignore borders — It was good for scouts and embarked scouts, and felt really silly for pathfinder I upgraded to composite bowmen in a goodie hut. On the other hand, how many such goodie huts you're going to find each campaign, 0-2? Quality of life is totally worth it. Probably yes.
  • Separate Great People Counters: Makes getting one kind of great person not screw up other great people. — Interface for it is really awkward, but it feels like a bugfix. Probably yes.
  • XP From forts: Units can get some XP while sitting in forts and citadels (up to cap) — I used it exactly zero times. I guess that's something I could use spare great generals for, especially to train donated city state units. It is annoyingly nerfed on epic speed (not like I used it), which I consider a mistake as such speeds are specifically for more military action, and this is already very weak. Probably yes.
  • Extended User Interface: So many UI fixes — I care about UI even more than Arumba. I should maybe make some videos for Paradox too. For Firaxis modders are doing just fine. Definitely yes.
  • Warlord happiness on higher difficulty levels — that's one thing I modded mid-game when I realized More Luxuries mod was not working. I feel it goes a bit too far maybe. I probably won't do it next time, but I might do something milder like +1 happiness for extra copy of each luxury resource beyond first.
Making this Let's Play series was a fun experience. Mistakes were made, but life is the real ironman mode. Audio quality started horrible as I tried various settings none of which worked for first 7 episodes, and ended up tolerable from episode 8 onwards, but still not quite as good as I'd like it to be.

I'm not sure yet what I'm going to let's play next, but that's definitely not my last series. If I revisit Civilization V again, I'll probably try higher difficulty level, and slightly different combination of mods.

Thanks for reading, and see you next time.

Saturday, June 06, 2015

Let's Play Civilization V as Shoshone - my first experience with Let's Plays

I've been watching tons of Let's Plays, and eventually I decided I'm going to give it a try as well.

The first series I've made is Civilization V as Shoshone. It's 25 episodes in (a few still uploading as I'm writing this), and will probably end up at 40-something.

Recording setup

I thought about streaming, but my upload speed is so awful (at most expensive BT option available) that I don't think I'd even be able to do 720p, and I really dislike watching console quality 720p, so I'm not going to inflict that on anybody else.

I tried a few things, and Open Broadcaster Software seems to be working well enough - I had to increase bitrate a lot from its default low quality settings, but video quality was very good from episode one.

Audio was a much bigger problem. I tried to record a few videos with headset microphone, and it was just awful. So instead I got this Auna MIC-900 USB microphone. And it took a lot of tweaking to get the setup right, audio quality in the first 7 or so episodes is fairly poor - first I had microphone sensitivity too high, so there was constant background noise, then volumes between microphone and different parts of in-game audio (especially ambient sounds like cows mooing etc.) were misaligned, so it was difficult to hear me at times.

I think from episode 8 onwards audio quality is fine as well. It's not super amazing, as there's some background noise like computer fans, and a few times you can hear random sounds like Hangouts message incoming beep (which I eventually figured how to turn off on all devices) or courier buzzing.

One thing I definitely don't want is any kind of facecam. I always found them horribly distracting, and usually there's not even any good place to put them, as all of screen is used for game interface.

The game

Civilization V is a game I have mixed feelings about. Then again, my feelings about games range from outride hatred to ambivalence, so that's probably good :-). I like so much of what they've done, but I was never happy about its happiness system, and how everybody felt depressed if you play anything except very tall game while prioritizing happiness over everything. There's also a bunch of minor things I wanted to change, like balancing social policy trees, and making civilizations more distinct from each other.

Fortunately Civilization V has Steam Workshop support, so it's very easy to install a bunch of mods, and I thought they'd fix all my problems. Unfortunately it turns out the mod I wanted most of all - extra luxury resources - conflicted with another mod I added, and in the end we're back to vanilla happiness mechanics I loathe. So I did what I always do, and modded the game halfway through by setting Warlord level happiness in otherwise King difficulty game. I'm not entirely sure if that was sensible or not.

Publishing videos

I haven't given that much thought. I just use my normal Youtube account (liked with my Google account), I made one playlist, and I just add videos to it as they get uploaded.

They get pretty straightforward titles, one line description, and autosuggested tags.

One thing everybody else is doing that I haven't figured out how yet is to upload a bunch of videos in advance and automatically release them once a day or so - it's really not practical for recording and publication to be in sync, especially if I want to watch the videos before publishing them.

I just use Youtube upload feature on its website, nothing fancy. Due to my horribly upload speeds, it's taking forever, but I'm not going to downgrade to 720p or do anything awful like that.

Future plans

I hope this Let's Play series is entertaining, but it's really mostly just a test to figure out all technical details. I'm not sure where to go from there. I'll definitely record a few more games - just not CK2/EU4, that takes forever, and a lot of time would be spent on alt-tabbing to spreadsheets and such.

I might record a few videos in Polish - it's weird how little I actually speak Polish these days.

One obvious thing to do is record some programming videos, but that would require a different setup, as I really don't want to program on Windows 7 machine I do gaming and recording on.

In any case, it's been tons of fun so far. I doubt any of the videos I make will ever be popular, but as long as I'm entertained and a few people watching them are entertained, it's all good.

Content ID bullshit


Oh yeah, and I already got into Content ID bullshit. Apparently 32 seconds of one 27 minute episode matches "Light Wave - Abaji" playing in the background, and that makes youtube put ads on that episode, with money to be paid to APM Music.

There's similar automatic claim on 3 other episodes for "Blackfoot Nights - Global Journey".

Fuck Youtube for this kind of bullshit. There's not one shred of proportionality here. Sadly they have sort of monopoly on internet video. Imagine if some site like let's say imgur had similar level of power over internet images, and Content ID'd them and then put ads on the images. It's not anywhere remotely reasonable, but monopoly is monopoly and we can't do anything about it, other than turn off all in-game music (which is already paid for when purchasing the game).