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

Wednesday, December 25, 2013

Improve your life by thinking marginally

my kitty....... by * K A Z Z I E * from flickr (CC-ND)
Try to answer the following two questions as honestly as you can:
  • If you found yourself with an extra hour a week of free time - what would you do more of?
  • And if you found yourself with an hour a week less of free time - what would you do less of?
If your answers to these questions differ, then you're not doing a good job managing your life, and you should just go ahead and replace things from your second answer with things from your first answer.

The same logic applies to money, energy, and all your other resources. It's easy to fall to status quo bias and other delusions, but according to accepted laws of economics, if your answers are different, it's a really good bet you're either prioritizing a lower value activity (second answer) over a higher value activity (first answer) or you're not honest with yourself about your real priorities.

Exceptions are possible - some things are really all-or-nothing and you can't do "a bit less" or "a bit more" of them, or maybe you're doing something precisely as much of something as you find valuable but every additional minute of that would be a total waste. But most of the time people just don't do a very good job managing limited resources life gives them.

Hopefully this post helped a bit, without taking much of your highly valuable time.

Thursday, December 19, 2013

XCOM: Roguelike

Mochi meow by The Scott from flickr (CC-NC)
OK, so here's an idea I got. I probably won't have time to make it happen, so I'll just write this design draft. Maybe I'll do it someday if I accidentally get a lot of unexpected free time, or maybe it will inspire someone else. So here it goes...

If you take the new XCOM game, remove all strategic element, and just leave it as a sequence of battles, then what you've got is pretty much a roguelike:
  • Random maps - not in XCOM right now, but the game would be a lot better if it had it
  • Permadeath - already there
  • Turn-based - already there
  • Grid-based - already there
  • Non-modal - what I want to streamline away
  • Complexity - already there to an extent, can add more while streamlining campaign mode away
  • Resource management - already there
  • Hack'n'slash / player-vs-world - already there
  • Exploration and discovery - sort of already there, training roulette will be big here as well
And as for "low value factors":
  • Single player character - definitely not, you'll be leading a squad (but not the entire XCOM project)
  • Monsters are similar to players - sort of true already (and definitely true with EXALT)
  • Tactical challenge - definitely so
  • ASCII display - I don't think that's really viable any more, most roguelikes moved beyond that already, some kind of simple and mostly symbolic 2D is modern equivalent of that
  • Dungeons - sort of borderline true already if you use very broad definition of "dungeon"
  • Numbers - already there, the few missing numbers (mobility, XP) need to be added, as some XCOM mods do

Game concept

So here's my idea - you start with a squad of 4 soldiers and face aliens in a battle. After (or maybe during) the battle the soldiers get level ups, new items and so on - and the survivors are up for another battle.

I think a major element of the game needs to be training roulette and going more or less classless. All roles - not just sniper/assault/heavy/support (medic), but also engineer/scientist, and things you get from foundry upgrades, research, gene mods, officer training school will need to be reduced to either items or abilities for training roulette pool.

I see two possible "storylines". Either you're doing a alien base / mothership assault, and you have a classic dungeon with multiple levels - or you're just fighting one open world battle after another.

One of the best things about XCOM is how in-battle challenges integrate with long term goals. Missions are not just about killing the aliens and making sure your soldiers survive - minor objectives like capturing aliens, capturing alien weapons, racing to get the meld, chosen mission rewards, not destroying alien computers/engines etc. make everything a lot more interesting. Details of that need to be redesigned, but some kind of extra rewards should be kept.

Game engine

The most obvious engine for a game like that would probably be a web browser with HTML5 stack. That would also be phone-compatible.

This kind of game doesn't really need keyboard, and would work with touch-based interface just fine.

It's important to have both tile-based cover and edge-based cover, and that wouldn't really be possible with ASCII interface.

I'm not sure if it's better to keep the game simple and 2D, or to have fully 3D maps. 2D might be an acceptable compromise to keep the engine simple (especially since it might be a lot simpler to do AI in 2D).

I'm not sure if there are any sensible cross-platform alternatives to going HTML5.

Minor random issues

  • I feel it should be possible to get new soldiers to your squad as a reward, probably already somewhat leveled-up.
  • I don't really care all that much about details of XCOM universe, their monster types etc. They're perfectly fine, but the game will probably end up remixing many other sources as well.
  • Advanced weapons should generally come from capturing alien artifacts. Money, alien alloys, elerium, and weapon fragments all feel like unnecessary complexity.
  • N-use-per-battle items would probably work better if they simply had cooldowns.
  • Cover and overwatch mechanics are the key to everything and should be expanded upon.
  • Visibility mechanic might need a bit of redesign, especially if it's for a relatively closed spaces of alien base/mothership.
  • It would be great if it was possible to avoid all funny stuff related to triggering alien pods and just have aliens behave like your soldiers.
  • I'd hate it if the best strategy turned out to be really slow turtling with overwatch and triggering one pod at a time, like in most vanilla XCOM: Enemy Unknown maps.
  • The game should be designed to be fair but pretty much unwinnable. I'm sure someone will end up beating it anyway, but that should be a big deal.

Wednesday, December 18, 2013

First Beeminder failure retrospective

Sand cat walking towards me by Tambako the Jaguar from flickr (CC-ND)
So it happened, and after a few months of beeminding I finally derailed on blogging commitment, costing me $5, or some tiny fraction of a bitcoin ;-p

I don't feel it was really akrasia-related in any way - just a lot of things happened that made it more difficult - each one individually was totally possible to overcome, but together they just made it too hard. I didn't adjust my commitment levels downwards early enough, so these levels which were originally fairly conservative became fairly optimistic, and one of the commitments failed.

For that matter I don't even thing there was anything wrong with my commitment level in the long term view, just that it was somewhat risky short term, and that's why it failed.

It's technically a legitimate fail, but it doesn't feel like a vindication of Beeminder's akrasia-centered model at all. Maybe just tracking the goals is more useful than putting money on the line.

Saturday, December 14, 2013

Holiday announcements

Fiodor Extreme by stella_gonzales2003 from flickr (CC-BY)
I'll be in Poland until a bit after the New Year, mostly in Legnica-Wrocław area. If anybody wants to meet during, email me. server which I used to dump all kinds of stuff is going down. Since most of this stuff was for my Open Source projects which now live on github, I'm in the process of migrating the pages to, with any major binaries going to Dropbox - except of course there's less need for tarballs, since Dropbox generates these automatically on request.

The process is going to take a while, since there's something like 200 links to fix just between this blog and the pages, and I want to apply some minimal styling to it at least.

I don't really have any major vision of what all that should be like. I guess I might write some short explanations of what all my other projects on github are, and add kind of some index more sensible than alphabetical listing, but that's about all.

That still leaves a few things without obvious home. There's my MTG sealed app (which I maintained from Avacyn Restored to Gatecrash), which I probably shouldn't put on github since it contains a lot of pictures of Magic cards. If you're interested, contact me. There's also my Perl programming course's website from years ago, which might be worth archiving, but doesn't really fit github. And there's a few even more random things.

Anyway, happy holidays!

Saturday, December 07, 2013

XCOM: Optimal character build or How to design skill trees

XCOM: Enemy Unknown is an amazing game, and this post is about how to choose optimal skill tree for various character classes in XCOM, but really it's just using that as a game design exercise. I'll be explaining what they did right and what they did wrong in designing skill trees, and then I'll summarize design points at the end of the point. It's just much easier to discuss this with a concrete example than on purely theoretical terms.

XCOM character progression

First, the basics in case you never played it. You get a bunch of 0xp soldiers, who don't even have character classes. Then as they get XP they get levels, and on each level they get HP, Aim, and Will bonuses, plus one skill, either mandatory or one of two to choose from.
  • Rookie - no class
  • Squaddie - character gets their randomly assigned class, one class-defining skill
  • Corporal - two skills to choose from
  • Sergeant - two skills to choose from
  • Lieutenant - two skills to choose from
  • Captain - two skills to choose from
  • Major - one skill
  • Colonel - two skills to choose from
All levels also get attribute bonuses depending on class, and they're a bit higher on squaddie and colonel than on other levels.

Even before seeing individual class trees, there's a lot of very interesting design going on here.

Random classes

First - you can't choose class your rookies are going to get, so pushes the player towards a balanced team. It's even more interesting, since classes are random with same chances, except your first four rookies will always all get different classes (if it was left completely up to chance, you'd most likely get some duplicates only 9.375% would be all-different).

Later in the game if you really want to have all-Heavy team you definitely can - either by hiring and training a lot of rookies until you get all the Heavies, or buying an officer school upgrade that makes all new recruits start at squaddie (with a class you want already).

But early game the path of least resistance most new players will take is a balanced team - which happens to be pretty decent strategy (not obvious, in a lot of strategy games spamming one or two unit types is optimal, and some are clearly awful), and get the player to enjoy more game elements than if they had full choice.

This random assignment can also increase frustration. If your only soldier of a class you need gets killed or wounded (and will require long hospital stay), you won't have any replacement easily available. You have ways to deal with this frustration - by training more rookies, or investing in Officers Training School, or going for missions where you get a higher level soldier as a reward, and slightly unbalanced team can still deal with most missions - but this random assignment just keeps on giving.

Fortunately they didn't overdo it - since there are only 4 classes and you have enough outs, you'll eventually be able to get the kind of squad you want. Random game elements are a

Skill trees

Another really neat design gem is with xp levels. Some levels are much more valuable than others - especially getting a Squaddie matters since then the soldier gets their class - and then depending on class different levels might have more or less important skills to choose from. Soldiers mostly get xp for participating in missions and killing aliens - and the way it's tweaked is that one mission participation (60xp) plus one alien killed (30xp, more for some high level aliens) is exactly the amount (90xp) needed to get that first promotion. This makes it really important to get rookies on the front lines, not just keep them behind farming mission participation xp while high level soldiers do all the work - but even without much luck all rookies will get their promotion on the second mission.

And there's a reason why some levels don't give you a choice. Some skills are class-defining - you have to pick them, or other skills dependent on them won't work (see Heavy class for details of that). And some skills are basically must-haves - so powerful it would be stupid to take anything else over them. Unfortunately here XCOM doesn't do a very good job (see Sniper class for details).


I feel Sniper has by far the worst designed skill tree of all classes, so let's start with it.

The difference between Sniper and other classes is that Sniper uses Sniper Rifle (or one of its upgrades based on alien technology) and can't fire it after moving. They can still fire a pistol, but that's a pretty miserable choice.

Skills for the first two levels are:
  • Squaddie - Headshot - fires shot with +30% critical hit and extra damage, 2 turn cooldown
  • Corporal - Snap Shot - can fire after moving with -20 aim penalty
  • Corporal - Squadsight - can fire at anything any ally sees (if there are no walls in the way)
This is just awful. Headshot is a nice to have, not a big deal, so it shouldn't go into mandatory slot.

Squadsight on the other hand is absolutely critical for any Sniper - since you can't shoot anything after moving and you are relatively weak, as a Sniper you should stay behind on high grounds with unblocked view of most of the battlefield and shoot aliens the rest of your squad finds.

Now Snap Shot would be interesting choice, but since Squadsight is a must have, Snap Shot never sees any action! What's worse - Squadsight and Snap Shot have interesting interactions. Sniper with both could move to flank a newly discovered alien, and then shoot it from a direction where they are not covered (low cover gives -20, high cover -40 to aim, so it might be worth Snap Shot penalty - and shooting alien completely in the open also gives huge critical hit %). But of course they're mutually exclusive so that never happens.

What this trees should instead look like is:
  • Squaddie - Squadsight - it's a must-have skill and a class-defining ability
  • Corporal - Snap Shot - nice to have
  • Corporal - Headshot - nice to have (or even more it much further down the skill tree, and put something else here)
In Enemy Within they reduced Snap Shot penalty and nerfed Squadsight a bit - but that still doesn't change the fundamental fact that Squadsight is still a must-have. Reordering these skills would be the only right thing to do, not tweaking stats.

And on top of all the problems with this - Squaddie Sniper with neither Squadsight nor Snap Shot is usually weaker than Rookie in a fight, since they need to stay close to aliens, but can't move then shoot to flank them while staying covered.

Anyway, let's pretend close combat Sniper (Snap Shot instead of Squadsight) is a thing in further discussion, since the skill tree was clearly designed with this assumption in mind, even though that never actually happens in real games.

The tree doesn't get any better later on:
  • Sergeant - Gunslinger - +2 bonus with pistols
  • Sergeant - Damn Good Ground - +10 aim and +10 defence against enemies at lower elevation, in addition to the usual elevation bonuses
Gunslinger is just really awkward here. If you go for Squadsight sniper as you should, you will find yourself using pistols in desperate situations sometimes (when a wall blocks your shot, and someone absolutely has to shoot the enemy this turn), but such situations are hopefully rare, while you'll be at high elevation most of the time. So it's a weak bonus vs strong bonus.

And even if you go for Snap Shot Sniper for some crazy reason - Gunslinger just does almost nothing since you can shoot your sniper rifle after moving just fine. And Damn Good Ground also does almost nothing since you'll mostly be facing nearby aliens at similar elevation. So it's very weak bonus vs weak bonus.

Either way, Gunslinger is always a bad pick.
  • Lieutenant - Disabling Shot - can fire a shot that causes target's primary weapon to malfunction until reloaded, but can't critical hit, 2 turns cooldown.  
  • Lieutenant - Battle Scanner - can throw scanning device that extends your vision for 2 turns, 2 uses per battle
Disabling Shot is just fairly weak - Snipers have high chance of critical hits against most aliens, and if you hit something you usually want to finish it same turn, not let it wander around and fire. There are some aliens who can't be killed in one shot, but this only affects primary weapon, and such aliens often have secondary weapons like grenades or melee attacks. Overall, a very weak skill.

For Squadsight Sniper you usually want to stay behind in safe elevated position, so you can't throw a battle scanner as far as you'd like. For Snap Shot Sniper, I don't even know if they could shoot at aliens revealed by battle scanner since they can't see them directly.

Battle scanners would be awesome for your close combat troops - since you know where aliens are, but they can't see you, why not ambush them? Except that won't really work since the moment you move within their range aliens get a free move to run to cover.

So maybe this should be redesigned by moving battle scanners to Support class instead, and making aliens seen this way not able to run for cover when triggered? For now even awkward battle scanners are still a lot better than nearly useless disabling shot.
  • Captain - Executioner - +10 aim against targets with less than 50% health
  • Captain - Opportunist - eliminates aim penalty for overwatch shots, and allows them to cause critical hits
This is probably the closest Sniper gets to actual skill choice, everything else being autopick. I'd say Opportunist is significantly stronger than Executioner, but Executioner is still a very nice bonus, if it was somewhere else. If this bonus was +20 aim or +10 aim and +10% critical hit, that would be a serious consideration.
  • Major - Low Profile - makes partial cover count as full
And this gets to be a forced pick? For a Squadsight Sniper this is fairly close to completely worthless. Your cover is being too far behind for aliens to be able to see you - and if they somehow ambushed you, you might just as easily have no cover whatsoever rather than partial cover.

For Snap Shot Snipers I can imagine this having some value, but not terribly much.

But you know for whom this bonus would be absolutely awesome? Assault class. Or any class other than Sniper.
  • Colonel - In The Zone - killing a flanked or uncovered target with sniper rifle does not cost an action
  • Colonel - Double Tap - can use both actions for shooting (including Heatshot and Disabling Shot), 1 turn cooldown
This is a Double Tap autopick, but for interesting reasons. Double Tap is a high reward low variance pick - you get to shoot 3 times / 2 turns instead of 2 times / 2 turns - greatly increasing your damage output no matter what.

In The Zone sounds like it could potentially shoot a lot more times than two, but this will rarely happen. Triggered aliens run straight to cover, and they tend to stay in cover - and you can't move to flank them. Melee aliens tend to avoid cover, but they tend to be hard to kill in one shot.

There are some uses - if there's a pack of multiple aliens one of your soldiers could throw a grenade at them, weakening them and destroying their cover. Then an In The Zone Sniper could finish them all off without using an action. I'm sure this happened sometimes, but as a player you should generally go for solid low variance choices (Double Tap) over choices which can occasionally be amazing but most of the time do nothing (In The Zone).

Now this isn't the worst part of the tree, since many players find high variance exciting - check "Timmy" player archetype in this article.


For a much better design let's take a look at Heavy.
  • Squaddie - Fire Rocket - fires a rocket using rocket launcher, cannot be used after moving, can be used once per battle
This is what mandatory skills should be like. Heavies have rocket launcher as a class characteristic, and many skills further down the road enhance either rocket launcher, or all area effects (and that's the only one you have here).
  • Corporal - Bullet Swarm - can use both actions to fire primary weapon
  • Corporal - Holo-Targeting - shooting at or suppressing enemy gives allies +10 aim against that enemy
Anything that doubles damage output is great, especially with no cooldown. The problem here is how fast you'll run out of ammo here. So it looks like they're both viable choices. But once you perform a Muton autopsy and get Ammo Conservation in a Foundry, your ammo will double, and this problem will go away, moving bullet swarm from about as good as Holo-Targeting to way better.
  • Sergeant - Shredder Rocket - fire a rocket that causes all enemies to take +33% damage from all sources for next 4 turns, but has weaker blast
  • Sergeant - Suppression - special shot that makes target suffer -30 aim, and grants free reaction fire against it (and also uses a lot of ammunition)
So many interesting things about this level. Suppression is the only ability that's available for multiple classes - Support Lieutenants also get it - and it's mostly useful for trying to capture aliens. In case you never tried it, the way it usually works is that your Heavy will suppress an alien, your Assaults (with Lightning Reflexes and maybe Resilience to protect against enemy fire) or Supports (with Sprinter for faster movement) will move towards it, and then maybe a Support will throw a Smoke Grenade to give your approaching and exposed soldiers some extra cover. Suppressed alien is likely to just stay under cover and often doesn't even try shooting, since AI prefers to save ammo rather than try shots with very low chance of succeeding.

And Shredder Rocket ability shows why Fire Rocket had to be mandatory. If Fire Rocket was optional, then if you didn't take it then, you couldn't take Shredder Rocket now.

Overall, Suppression is much better here. It's extremely useful for capturing aliens alive, it's somewhat useful in regular battle, and its main downside of going though a lot of ammo goes away with Ammo Conservation. But once you've captured all the aliens you'll ever want, Shredder Rocket is a serious consideration.
  • Lieutenant - HEAT Ammo - +100% damage against robots (nerfed to +50% in Enemy Within)
  • Lieutenant - Rapid Reaction - second reaction shot on overwatch if first one was a hit
Since most of your nastiest enemies are robots - HEAT Ammo is a really really good choice. Interestingly it also combos with a rocket not just primary weapon. After the nerf it's not as clear what's the better choice.

Rapid Reaction is not as good as it sounds early game, since Heavies go through a lot of ammo, and if 
you don't have enough ammo to shoot twice it won't work. Late game you'll have Ammo Conservation, but then you'll also have Cyberdisks and Sectopods trying to murder you.

HEAT Ammo was an interesting design as a safety valve. Balancing everything about the game is pretty much impossible, but you can put some elements like that in it instead. If robotic aliens end up being too powerful, players will pick HEAT Ammo more often making robots less menacing. On the other hand if robotic aliens end up being relatively weak (relative to what player has at that point of the game, other aliens etc.), players will tend to pick Rapid Reaction, and that will make robots stronger in relative terms.

Since robots turned out to be really powerful, HEAT ammo is the way to go.
  • Captain - Grenadier - can carry 2nd grenade in inventory slot
  • Captain - Danger Zone - increases area of effect of rocket attacks and suppression by 2 tiles
From design point of view Grenadier requires specific inventory item to be useful - and that means you won't be carrying any of the alternatives like SCOPE, or Chitin Plating. How good it is depends on how good you think grenades are, and that very strongly depends on difficulty level, aliens you face at that point of the game etc. 

Danger Zone depends on having either rockets (which are mandatory) or suppression (which is a very good pick), so it has synergies with both. I'd usually prefer Danger Zone and SCOPEs on heavies over Grenadier and grenades, but neither choice is an autopick.
  • Major - Will to Survive - reduces normal damage taken by 2 if in cover and not flanked
This is an amazingly useful skill, and I'm happy they made that mandatory. It's a bit funny whenever late game you face early alien types (like in some council missions which occur in random order). Aliens can then hit your Heavy as many times they want and do precisely 0 damage. Unfortunately when they miss they can destroy Heavy's cover, so missing alien is worse than a hitting one.
  • Colonel - Rocketeer - 1 additional rocket per battle
  • Colonel - Mayhem - additional damage for suppression and all area-effects
This shows one thing I really dislike about XCOM. Unlikely most other games XCOM doesn't show you research tree, possible future enemies, possible skills picks past current level etc. This makes sense from story point of view - at least the first time you play, the second time not so much - but it makes it very frustrating to play optimally.

Rocketeer synergizes very nicely with Shredder Rocket, HEAT Ammo, and Danger Zone - but you have to choose those early skills before the game reveals that this late skill exists.

Mayhem is nice, but one thing it synergizes most with is, well, Rocketeer. That is not a great design.

Value of rocket skills (HEAT Ammo, Danger Zone, Rocketeer, and Shredder Rocket too - but that last one is not as great) depends primarily on you having Slingshot DLC installed or not. WTF you're asking? All weapon types can be upgraded, but the only way to upgrade rocket launcher (to something ridiculously overpowered) is to capture an alien battleship and research Fusion Core.  The problem is that without Slingshot DLC you won't see Battleships until very late in the game - in fact you're more likely than not to finish the game before any Battleship mission, since they have the same prerequisite (upgraded aircraft). But with the Slingshot DLC you can capture one quite early, making your Heavies completely overpowered mid game. Either way, I'd pick Rocketeer.

Overall, I'd say Heavy's skill tree is quite well designed, and the only changes I'd make would be some rebalancing. The choice to hide skill tree is probably bad for mechanics, but it makes sense from storyline point of view.

And it might be a good idea to add some mid-game rocket launcher upgrade, since overpowered DLCs are not good for any game.


Assaults are also pretty nicely designed.
  • Squaddie - Run & Gun - allows firing or using overwatch after using both actions for moves, 2 turn cooldown.
This is a class-defining ability for Assaults, and it's extremely good, so it's good that it's mandatory.
  • Corporal - Tactical Sense - +5 defence per enemy is sight (max +20)
  • Corporal - Aggression - +10% critical hit chance per enemy in sight (max +30%)
Both of these are relatively minor bonuses, and I'd normally pick Tactical Sense since when there are enough aliens to worry about them your priority is probably not getting killed.
  • Sergeant - Lightning Reflexes - first reaction shot against the unit always misses
  • Sergeant - Close and Personal - +30% critical shot chance against adjacent targets, bonus declines with distance
Lightning Reflexes is a much better pick since it helps the entire team. You can run in front of overwatching alien with your Assault - possibly Run & Gunning quite far - and the alien will try to shoot and miss, making the movement safe for the entire team. It doesn't work that great if there are multiple aliens on overwatch close to each other.

Close and Personal is a nice bonus for situations where you're already winning and it's safe to get very close to the alien, but in more difficult situations you just don't want to do that.
  • Lieutenant - Flush - fires a shot that causes enemy to run out of cover, it's easier to hit but causes less damage
  • Lieutenant - Rapid Fire - can fire two shots against single target with -15 aim penalty
This is not even close. Flush might or might not be useful sometimes, but Rapid Fire is a must-have since it pretty much doubles your soldier's firepower - and actually increases hit chance since you have two chances to hit not one. Higher ammo use is a concern, but Assaults don't go through their ammo as quickly as Heavies, and you'll get Ammo Conservation eventually.

3 out of 4 classes have some way to shoot twice. Rapid Fire has benefit of taking just one action (unlike Bullet Swarm and Double Tap), so you can fire and shoot twice. With Run&Gun and Rapid Fire you even get to move twice and shoot twice in just one turn. What's better - unlike Double Tap, Rapid fire has no cooldown, and unlike Bullet Swarm Assaults don't run out of ammo that fast. It's pretty amazing. There's rarely any reason to use regular fire once you get Rapid Fire.
  • Captain - Close Combat Specialist - free reaction shot against any enemy which moves within 4 tiles, does not depend on overwatch
  • Captain - Bring 'Em On - 1 damage to critical hits for each enemy the squad can see (up to 5)
Assault will usually be closest to the enemy of all your soldiers, and Close Combat Specialist can fire multiple times a turn, so it's potentially extremely powerful. Bring 'Em On on the other hand is pretty underwhelming.

The only downside of Close Combat Specialist is that there's no way to disable it, so sometimes you'll kill an alien you were hoping to capture. That's a risk I'm willing to live with.
  • Major - Extra Conditioning - health bonus depending on type of armor equipped
  • Colonel - Resilience - immunity to critical hits
  • Colonel - Killer Instinct - activating Run & Gun gives +50% critical damage for the rest of turn
Extra Conditioning is sure nice, but it sounds like something Heavy should be getting. There are good reasons to give Assaults medium armor with high mobility like Skeleton Armor or Ghost Armor rather than heaviest armor possible.

Resilience would be useful on all classes, but Assaults need it the most since they're taking most risk.

From design point of view I'd make Resilience a mandatory pick, and make Colonel level choose between Extra Conditioning (if you want a more heavy Assault) or Killer Instinct (if you want a more mobile Assault). Still, it's a decently designed skill tree with a bit extra rebalancing.


Support class has a very different skill tree - either you go for Field Medic and pick all medic-related abilities, or don't and pick all overwatch/suppression related ones instead. Because of how much synergy there is between medic abilities, it's usually a bad idea to mix&match.

Support also has many abilities that help with capturing aliens, but there are some anti-synergies here.
  • Squaddie - Smoke Grenade - can throw smoke grenade that gives +20 defence bonus to all units under it, lasts through enemy turn
The bonus isn't that big, but it can sometimes save your soldiers' lives.
  • Corporal - Sprinter - can move 3 additional tiles per move
  • Corporal - Covering Fire - allows reaction shots to trigger on enemy attacks, not just movement
Sprinter is useful for many things - for medic, for throwing smoke grenades, for throwing regular grenades, to get to cover or flanking position etc. It's like a smaller version of Run&Gun with no cooldown.

A major downside is that Supports unlike Assaults can't get Lightning Reflexes, so they're totally vulnerable to aliens on overwatch, but they have to run a lot, something Snipers (who stay behind and shoot) and Heavies (who stay in one play and keep shooting until everything dies) don't have to worry about that much.

Covering Fire synergizes with Sentinel later, but if you're going for medic build, Sprinter is a must.
  • Sergeant - Field Medic - can use medkits 3 times per battle rather than just 1
  • Sergeant - Smoke and Mirrors - can use smoke grenades 2 times per battle (3 in Enemy Within) rather than 1
It's very risky not to have Field Medic Support soldier on your team, and that's mandatory choice for such character. You don't really need 2 Field Medics, so you could make a non-Medic Support with Smoke and Mirrors, but one extra grenade is just very weak, so non-Medic Support is pretty underwhelming.

And there are so many anti-synergies here. For capturing aliens sprinter and smoke grenades are both awesome, but one soldier can't both dash and use a smoke grenade on themselves. For non-Medic Support extra smoke grenades are nice - but then they can't use overwatch.

Just like Snap Shot Sniper, I'm not convinced non-Field Medic Support is really good for much.
  • Lieutenant - Revive - critically wounded soldiers recover to 33% of max health rather than just stabilizing
  • Lieutenant - Rifle Suppression - special shot that makes target suffer -30 aim, and grants free reaction fire against it
Revive makes no sense to take unless you're going for a Medic. For Medic it's somewhat underwhelming, since critically wounded soldiers happen relatively rarely (usually they either die, or survive), and one or two times a campaign it happens those few extra points probably won't make a huge difference. Rifle Suppression is just as useful as Heavy's Suppression, so I'd probably go for it, unless you see far more critical wounds than I do.

By the way this is another anti-synergy, since Rifle Suppression is another awesome skill for capturing aliens, but you can't really mix it with Smoke Grenades, or Sprinter. 
  • Captain - Dense Smoke - smoke grenades give extra +20 defence (+40 total) and have increased area of effect
  • Captain - Combat Drugs - smoke grenades give extra +20 will and +10% critical hit chance
I'd just go for Dense Smoke, since there are very few psionic aliens outside very narrow areas like UFO's command bridges, and there you just want maximum firepower, not any extra defence
  • Major - Deep Pockets - additional item slot in inventory (in Enemy Within instead additional use for each single use item)
This is a really nice skill for Field Medic, since slot one gets a medkit - and unfortunately you can't carry two medkits even with this skill. For second slot you can carry Arc Thrower, or grenades, or SCOPE, or whatever you want. That was actually a really nice synergy for capturing aliens, since Sprinter works well with both Arc Thrower and with medkit.

I don't feel that great about Enemy Within replacement bonus.
  • Colonel - Savior - medkits restore 4 more health per use
  • Colonel - Sentinel - two reaction shops during overwatch instead of one
All skills lead to either of these builds. It makes little sense to make a Savior without Field Medic and Sprinter, and it makes little sense to take Sentinel without Covering Fire, Riffle Suppression, and probably Smoke and Mirrors.  

From design point of view there are two subclasses for Support class, and mixing abilities is awkward. Support has by far the least firepower of all classes, so it's difficult to design it well - most people will take one Support Field Medic, and won't even bother with the Sentinel Build since low firepower makes it less useful, and harder to get xp for.

Covering Fire and Sentinel might be better on a Sniper instead, and Battle Scanner on the Support perhaps? Sprinter for that matter would synergize amazingly well with Assault's Lighting Reflexes and Run&Gun. Maybe Flush and Grenadier for the Support instead? It feels like rearranging skill trees could result in something much more interesting and balanced.

How to design skill trees

Here's a summary:
  • Randomness is a very powerful game design element, but don't overdo it.
  • Show whole skill trees, not just currently available portion, so player can look for synergies (problems with Rocketeer, Savior/Sentinel)
  • Not everything has to be balanced. Within reason, it's good when player can figure out that some abilities are more powerful than others - but it's not great when half of abilities never see any use. 
  • Avoid giving the player a choice between a must-have skill and a nice-to-have skill (Squadsight vs Snap Shot).
  • If two skills have interesting synergy, do not make them mutually exclusive (Squadsight + Snapshot).
  • If skills have anti-synergy, put them on separate classes. (mostly done right)
  • Don't make "upgrades" that make the character worse (like Squaddie Sniper).
  • Give player options to deal with potentially unbalanced game elements. At best they won't need them. (like HEAT Ammo).
  • If a skill is necessary for other skills, make it impossible to pick those other skills without picking the prerequisite (Fire Rocket and other rocket-related skills)
  • Some players like high variance game elements, others prefer solid low variance (In The Zone vs Double Tap)

Enemy Within update

This post talks about the base game XCOM: Enemy Unknown. Expansion pack Enemy Within changes a bunch of things, so it actually changes some recommendations. Two important things are gene mods and the now about 3x more powerful Sectopods.

In the base game Squadsight was way better than Snap Shot. It wasn't even close, total no-brainer. So what changes in the expansion after Squadsight gets nerfed and Snap Shot improved? The gulf between them becomes even more ridiculous! From being merely overpowered, the supposedly nerfed Squadsight is now completely and totally broken.

First, you get two neat synergistic gene mods designed for Squadsight - very cheap Depth Perception (+5 aim +5 critical chance if at height advantage) and somewhat more expensive Muscle Fiber Density (can just like thin men - basically somewhat better grapling hooks). That pretty much counters the nerf on its own.

But it gets better. You get Mimetic Skin gene mod, which you can use to make your soldiers pretty much invisible (if they stay in cover and don't shoot - they can use some abilities) - but your Squadsight sniper can still shoot them just fine. Aliens will trigger when shot, but since they see neither your invisible soldier (who didn't shoot) nor your sniper (who's beyond their range of sight), they're completely helpless. So in theory it would be possible to clean up most maps with one invisible soldier, and one low-level Squadsight sniper. Except it doesn't work on Chryssalids, and there are a few maps where you're against timer or have some objective other than surviving, so it's not always an autowin, but pretty close.

And did I mention that Mimetic Skin is pretty much free, since your investment will repay itself immediately since with just 1 or 2 invisible soldiers you can clean up all meld canisters on all maps? There are diminishing returns of course.

All this also makes In The Zone better, since you get the first sniper shot before aliens can run for covers, so now it's a reasonable pick over Double Tap. I'd still take Double Tap because it helps with Sectopods so much, but it's close enough.

One recommendation for Enemy Unknown which I'd now reverse for Enemy Within is Disabling Shot vs Battle Scanner. Battle scanner was always awkward on the Sniper, and you'll be getting something way better with your invisible soldier fairly early, so it becomes a dead pick. On the other hand Sectopods get a lot more powerful, and you won't be able to just double tap critical them and finish with a HEAT rocket like you used to, so Disabling Shot on them is pretty helpful. It's also not completely unreasonable to Disabling Shot your mind controlled soldiers, but then it doesn't happen all that much thanks to rampant invisibility.

All other recommendations still stand.

Monday, November 25, 2013

My favourite subreddits

Eye Protection by Jason A. Samfield from flickr (CC-NC-SA)
Apparently I'm subscribed to over 200 of them. Most of them are probably barely alive, and in any case nothing special.

But here's my list of subreddits that are particularly awesome, which you should totally check out. Very frequently the biggest subreddit for a subject is a pretty shitty place, and smaller higher-quality ones emerge.

Magic: The Gathering

The biggest one is /r/magicTCG and it sure has issues. I've never seen this kind of downvoting to show disagreement on any non-explicitly-circlejerk reddits as I've seen on magicTCG. It's not horrible, but you'll be better off subscribing to smaller subs first.

Meanwhile, smaller reddits are often awesome. Even /r/spikes (for people who are into cutthroat competitive Magic) is a surprisingly polite and quality place somehow.

/r/custommagic is my favourite place on reddit. You can post Magic cards you designed there, and it has two ongoing design competitions with winner of a round judging the following round.

Once upon a time I even started /r/mtgfanservice for various Magic-related cosplay (borderline NSFW). It didn't go very far, but enjoy what got posted.

And if you like Magic but don't have as much time to play in on paper as you'd like, definitely check out /r/Cockatrice.

Video gaming

/r/gaming is a worthless cesspool so let's not even go there. Seriously, don't click. I hate that place more than I hate SRS. The place you're looking for is /r/Games with unsubtle subtitle of "Quality Gaming Content", and it's more or less that.

If you like making games, or in-depth analysis of them, there are also smaller places like text-only /r/truegaming, a pair of /r/gamedev and /r/gamedesign with obvious subject matter.

Whichever games or game genres you like, there's probably one or more subs for them. Some of them are good, some not so much... Just check them out. Often they have some not very obvious names.

And since the only true gaming is PC gaming, there are two subs - /r/pcgaming which is totally serious, and /r/pcmasterrace which can't decide if it's a real sub or a circlejerk. And yet somehow even that circlejerk is better than /r/gaming.


You've probably figured out by now that /r/funny is everything except what it claims to be. (seeing a pattern here? big subreddits sucks with few exceptions). So here are some truly funny subs to check instead:
  • /r/outside - life is one big MMORPG with longest tutorial section ever and no respawn.
  • /r/nottheonion - news you'd expect to be from The Onion, but sadly they're real.
  • /r/Jokes - text-only jokes, 80% of them are older than Roman Empire, but some good stuff comes up from time to time
  • if you like dark humor, /r/toosoon, /r/ImGoingToHellForThis, and /r/MeanJokes sometimes contain funny original stuff. If you don't - well, I warned you.
  • /r/CivPolitics (and equivalent for CK, EUIV, and who knows what else) - comments on current events as if they were taking place in Civilization 5.
  • /r/nocontext - things taken very much out of context. It used to be mostly CK2 players discussing how to murder their wives and marry their children to each other. More variety recently.


Default reddits tend to be very shallow, but if you dig a bit deeper you can find some very high quality content.
  • /r/explainlikeimfive - the place to ask questions and get sensible answers, without fascist modding style of /r/ask* network. (to be fair /r/ask* network is pretty reasonable considering how popular they are)
  • /r/FanTheories - original analysis of fictional universes, some of it is totally crazy, some of it is quite insightful, most of it is interesting to read 
  • /r/changemyview - a place where OP challenges the redditors to change their view, that's the only place on the entire Internet I've ever seen where you'll find consistently civilized discussion on usually the most divisive subjects ever. CMV success rate is not terribly high, but far higher than expected 0%.
  • /r/DepthHub - cherrypicked most insightful comments from entire reddit. I've seen quite a few nutjobs being upvoted there, but that's always the risk with such places.
  • /r/subredditoftheday - discover a new subreddit every day, you might like some of them.
  • /r/TheoryOfReddit - going meta on reddit

Sunday, November 24, 2013

Correction for excessive beeminding

So very lazy by mada299 from flickr (CC-NC)
It seems I overcommitted myself somewhat, with estimated time spent beeminding being about 26h45m a week. I cut things to get it to estimated 20h or so. These numbers are all quite vague of course.

So what got cut (ordered from hardest to easiest task):
  • Pomodoros doing important things. This really isn't going anywhere near as well as I hoped for some reason. 7/week down to 4/week for the time being. At some point I either need to get good at it, or scrap it completely. Lowering the pressure might leave some space for experimenting with this.
  • Blogging. 3 posts/week down to 2.5 posts/week. It's still far more activity that this blog has usually seen.
  • Open Source contributions. 10 commits/week down to 7 commits/week. I have a pretty major project going of migrating things out of that probably won't see many commits but it will sure take a lot of time.
  • Play Magic: the Gathering. 10 games/week down to 6 games/week. I'll probably ramp it back up when formats get refreshed - like after Born of Gods release on February 1st. Standard is pretty decent these days, but I don't have as much time as I'd like and other things take priority.
  • Exercise. Staying unchanged at 3 nominal "hours" a week, which are closer to 3h30 actually. For health reasons that really shouldn't be cut, especially since I'm keeping up with this really well.
  • Try new fun things. Staying unchanged at 2/week. This goal has very high time variety, since sometimes I decide it's not fun after a few minutes, and sometimes it takes days to enjoy something fully, so it's hard to say how much time this is really taking.
  • Online Education. 3 lessons/week down to 2 lessons/week. Mostly due to my Internet connection becoming really shitty lately.
  • Books. Staying unchanged at 3/month. To be honest it's not terribly valuable, but I'm mostly reading in otherwise dead time like trains and so on, so it wouldn't really save much time to cut it. 
Changes of course go live 7 days from now. I'm sure I'll be readjusting everything for holiday season as well.

Wednesday, November 20, 2013

If assassination markets were real

Night Stalker by New Talent Modelling from flickr (CC-NC-ND)

I'm rich! Extrapolating current trends, my "investment" of 1 whole bitcoin I did for the lulz long time ago is on its way to be worth big $$$millions by the end of next year.

Anyway, let's forget the boring stuff like drugs and fake passports and focus on the most fascinating subject in the bitcoin land - markets for anonymous assassinations.

IRL assassins for hire

The world doesn't exactly lack people willing to break any laws for money - as all my previous bicycles can attest. And it sure doesn't lack people willing to murder other human being in cold blood for money - people sign up to various militaries in droves. And there sure is a ton of people hating someone else to the point of wanting to see them dead - or having a business or political interest in someone else dying.

So you'd think all the ingredients were there, so why the hell do we have so few IRL killers for hire? There's a bunch of reasons on both supply and demand side. The hit is of course difficult to people who want to arrange and execute it. That doesn't make it completely impossible, but it at least would make it expensive:
  • For a potential customer, finding assassin and paying them is both difficult and risky
  • For a potential assassin, finding customers and accepting payment is both difficult and risky
  • For a potential assassin, the murder itself is difficult and risky
  • It's difficult to hide the fact that the murder happened (and make it look like an accident) - and since the customer is probably connected to the victim, the customer is likely to be suspected. If that happens, links from the customer to the hired assassin (who is otherwise not connected to the victim) can be followed
And for whatever market rate for assassination would be:
  • Most people are too poor to afford assassination - and most potential targets (like cheating spouses, nasty bosses or whatnot) are hated only by one or a handful of person so there's no potential for pooling money to hire an assassin together
  • Even if one person was widely behated (yes, that's a word), any large scale coordination to gather money from large number of people is absolutely guaranteed to not remain secret
  • There are pretty strong taboos against killing others outside of some special contexts (like murder-happy militaries)
  • Even if people might be willing to murder another person in the heat of the moment, it doesn't translate to long and difficult process of arranging an assassination
  • Even if you got the money, potential customers have no way to verify potential assassins, so hiring an assassin means you're likely just getting scammed
And finally:
  • Whatever the price, and whatever the difficulty, the market is too small to be viable, so even if every now and then you have a filthy rich and completely amoral person wanting to murder another no matter what it takes - there are too few such people to make it viable as a career for potential assassins.
I think that about sums it. (or did I miss anything major?) I'm listing these points since surprisingly many of them are likely to weaken real soon.

Assassination markets already exist

Hired assassinations are by no means impossible. If you look at murder rate by country you don't see any neat normal curve - there's ton of countries with over 20 murders per 100k per year, and a ton with less than 2, and within a medium murder rate countries like USA there exist both very high risk and very low risk areas, rather than any kind of equilibrium.

It would be tempting to explain this away by country's wealth, and that definitely seems to correlate, but there are high murder rate relatively well off countries like Russia and Mexico, and very poor low murder rate countries like China.

It can't be definitely concluded from such summaries that murder rates have two equilibria, but it sure looks like it.

Now it's much harder to find internationally meaningful comparative statistics for lesser crimes, but I'm pretty sure it doesn't vary anywhere near as much (UK in spite of very low murder rate sure doesn't lack bike thieves), so multiple equilibria of murder rates are strongly suggestive that it's not just due to higher or lower crime levels (something which would have more of a log-normal distribution), but due to functioning or not functioning of assassination markets in different countries.

Judging from all the news stories from high-murder-rate and relatively well off places like Mexico and Russia - they indeed have huge number of assassinations, and victim profiles are very different. In low murder rate countries most fatal victims are either killed accidentally (like during a mugging), or by someone they knew personally. In high murder rate countries hired hits on journalists, politicians and other high profile targets are very common. It's not a coincidence that the only major political assassination in UK of the last few decades was ordered by Russia.
"dandelion" - "Löwenzahn" by marfis75 from flickr (CC-SA)

Hidden assassins for hire

There are two kinds of assassinations markets you can find on the hidden web. Easier to understand of the two are hidden services of self-proclaimed assassins for some amount of bitcoins.

Technology changed assassination equilibrium in many ways:
  • Bitcoins are very difficult to trace. They're not impossible, since high amounts of money are still traceable when they enter or exit bitcoin network, so if someone got $50k out of the bank a few weeks before their spouse got murdered, and that money all vanished without a trace, it's still pretty damn suspicious, and their computer might have a lot of traces of it all. By comparison someone getting $500 worth of bitcoins to buy some weed would not leave significant trace behind. For assassin the risk is even lower.
  • TOR drastically reduces the risk for both customer and assassin that the other is working for law enforcement, or otherwise risky. This is not absolutely risk-free, but it's very close to it.
  • TOR drastically reduces search cost. It's still difficult to tell apart a genuine assassin from a scammer, but it's really easy to find someone claiming to be an assassin, and for potential assassins it's very easy to find customers.
  • Since there was no direct customer-assassin contact, the customer getting caught (via victim) poses very little risk to the assassin.
Now I'm pretty sure every single such hidden site I've seen was a scam. However easy technology makes it to setup assassination sites, it makes it even easier to setup scam sites, and there were some pretty big give-aways that they were fake, like insistence on no escrow, no track record, claims to global range etc.

And for that matter probably the easiest way to disrupt assassination markets of this kind before they emerge would be to just setup so many scam sites that it would be impossible for anyone to tell them apart from the real thing.

But it's quite likely one day someone will setup a real site. Possibly a murder for hire site like the former Silk Road - with price of admission to get a "seller" account being a high profile murder to prove authenticity, enforced escrow, and no early finalization - the only way to get funds released being official confirmation of death.

I really doubt anything like that could emerge out of nowhere in any civilized country - if you believe my model of two equilibria the market for assassinations right now is nearly nonexistent, so nobody would bother going through major effort of setting one up. But what if let's say Russian mafia set one up, and then decided to also sell hits abroad, which would then increase murder rates in other countries until they jumped to high equilibrium? Once it's in high equilibrium, local markets in other countries could become self-sustaining, even if Russian stopped supporting them.

I'm pretty sure they have necessary technical sophistication, and necessary market over there, and with their government and law enforcement basically being just a different group of thugs, nobody would bother stopping that.

Crowdsourced assassination markets

The kind of individual assassination markets solve a lot of difficulties with assassinations, but they still wouldn't make it available to the masses. Basically anyone sufficiently hated by someone filthy rich would be a potential target - like journalists, (less corrupt) politicians, competing businessmen and so on. Just like in Mexico and Russia already, except a higher tech version of it.

But there's another much more radical idea - crowdsourced markets. Now a full disclaimer - I feel that unlike the Murder Silk Road mentioned before, this kind of market is pretty much impossible in practice - but it sure makes for a good story.

So the idea is that people would just pay money into the service to bet on someone they hate dying. Then once enough money was gathered someone would bet on a particular date of that person's death, then "helped" that happen and collected the cash.

In theory a group of relatively less wealthy people might be able to use this to coordinate a hit on someone rich and powerful, drastically affecting the balance of power in the world. And since the number of people willing to pay something to see someone dead is orders of magnitude greater than number of people having enough money to fund it themselves - that would ensure a bloodbath.

Of course even if that ever happened, the most likely outcome would be that the powerful people would use this to order hits on journalists and competitors (see Russia, Mexico and so on), and after a few high profile deaths they'd just invest a lot more money into security until it drove the assassination cost out of crowdsourcing range.

If assassination markets were real, how would we know?

Technology moves on, so it's entirely possible that one day real assassination markets will emerge, not just scammy sites ones we see today. So without insider knowledge, how would we know it happened?

First, it depends on how hard would it be to hide a murder. You sure want to make it look like accident, but then judging from places like Mexico it's either too hard, or they just don't seem to bother.

So the first obvious sign of assassination markets running would be drastic increase in murder rates in the currently low-murder countries. No shit, huh?

But let's assume that assassins all try to make it look like a suicide or accident. Many would sure botch it, so we'd see a huge increase in staged suicides and accidents that turn out to be murders on close investigation, or be extremely suspicious of it - a category that's really tiny right now, but which would hugely increase if assassins started running around, even if most were good at it. By the time police figured that out they'd have long cashed their bitcoins (since the hit is confirmed, there's limits to how long an escrow can be practically accepted).

Either way, profile of the victims would shift towards Mexican or Russian levels. Life expectancy of investigatory journalist and dissidents would drastically fall, due to all the "accidents" such professions now carry. Even bloggers would be at risk!

In theory there's a change that such market would emerge but would stay small indefinitely - but if you buy my multiple equilibria theory that's not a stable situation, and established supply of reliable assassins for hire would find their demand somehow.

And if crowdsourced market somehow came into being... First of all, they can't function without widespread public knowledge of it, even in theory, so we'd surely know. Then, we'd see a bunch of very high profile deaths. Some obvious ones - politicians are hate magnets these days - but it wouldn't be that surprising if a bunch of crazy people thought it hilarious to bet on just about any public figure able to generate sufficient level of negative emotions, like let's say Justin Bieber.

So as long as Justin Bieber lives, we know the world is safe.

Sunday, November 17, 2013

Beeminder status update

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

I think I have taken about as much stuff to do as is reasonable. By back of an envelope calculations it would take me about 27 hours a week to do all the things I committed myself to, and in practical terms my mean time to derailment is now pretty stable near 25 days or so, rather than going into space.

Here's update by goal. As usual, from hardest to easiest:

Thing I'me really struggling with

Pomodoros of important things (goal - 7 pomodoros / week). That's one goal I've been really struggling with, and it's not really clear why. It's not lack of time - it takes literally 25 minutes a day to stay on course with this one . And it's not lack of clarity on what to do - by per-project list contains 44 things I could be pomodoroing right now.

There's something about shutting off everything else and focusing singlemindedly one one thing that's just hard. Also timers, they're annoying. I'll keep trying, hopefully I'll find some way for this to work.

Things that work about right

Blogging (goal - 3 posts / week). The blog could always be more active, but it's already more active than at any time since 2006-2007 (back when I was at university and had nearly infinite amounts of free time), so that's fine.

Exercise (goal - 3h / week). Time a week I spent exercising feels about right. I want to add more variety, and maybe increase intensity somewhat. Sadly there aren't really that many exercise games out there, I don't have much space for exercise equipment at home, it's too cold right now to do that outdoors, and I don't like gyms much due to their very low ratio of time actually spent exercising to total time spent, including commuting, changing clothes, and such.

Play Magic (goal - 10 games / week). I feel there isn't really that much more to discover in Standard. Meta more or less stabilized, none of the top decks are anything special, and the card pool is too small right now to do much creative brewing. I miss Birthing Pod. Anyway, it's probably time to explore some other formats like post-Jund Modern.

Open Source contributions (goal - 10 git commits / week). I didn't have any serious projects recently other than Skype exporter, but I've added a bunch of missing functionality to my existing utilities, wrote some tools for manipulating Magic decklists, and contributed better decklist importer to Cockatrice.

Online Education (goal - 3 lessons / week). This one has really good reason why it's not going any better. It's BT being steaming pile of shit. Recently I can't get anything better than 2mbit (of 20mbit I'm paying for), and that's literally not enough to even watch standard quality youtube videos without buffering issues. My alternatives here are various BT resellers with no guarantee of being any better, or moving to a different place where I could get something else. Fucking first world, huh? Ironically it would work OK with a 60 minute lecture in a single video, since I could simply let it fully buffer or download, then watch it in one block later, but all MOOCs just break the videos into tiny bits, and that does not buffer well. There are workarounds - not everything I want to learn is video-intense, or I could setup some video downloader. Or I could move to a place where ISPs don't suck. South Korea?

Things that into space

New Fun Things (goal - try 2 new things / week). Unsurprisingly that causes zero problems and I'm far exceeding this very modest goal. I put reviews of some of things I try on my Google+ if you're interested.

Books (goal - read 3 books / month). This also exceeds expectations, but for a different reason. There's just so much dead time during a week, and since I ran out of podcasts (recommendations welcome) I'm just listening to random audiobooks instead. It's also a good thing to do while doing low/medium intensity exercise. Either way - this is mostly happening in a time which would otherwise be wasted.

Saturday, November 16, 2013

Why I want Apple to fail

Dear Apple fanboys. Dear Apple haters. Here's what phone for stupid people looks like:

I'll pause for a moment to let you consider the level of stupidity that has people pay $10k for a phone far worse in just about every possible way than a five year old Blackberry.

But I didn't mention that just to make fun of rich idiots. The entire consumer electronics market consists of pretty much three segments:
  • Very expensive and totally shitty things to take advantage of idiots with too much money - like Vertu phones, "audiophile" cables and so on. Everybody with any clue knows to stay away from them.
  • Bulk of the market which competes on price alone, with quality usually ranging from shitty to at best mediocre. You can find high quality or innovative stuff here from now and then, but nothing consistent and the next product in the same line will probably revert to the mean.
  • Apple. They sure have very high margins, but you actually get premium product for it.
The thing is - Apple didn't get to be $400bln+ company by doing anything amazing. For just about every Apple product you could make a long list of things which are wrong with it, their interoperability record is dismal, and it usually gives you a choice of Apple way or no way. Remember - this is the company which insisted on a one-button mouse. They're making that kind of ridiculous money because nobody bothers to compete with them!

Only this year other phone makers (mostly Samsung) even started bothering with the high end of the market. Due to network effects it can only win in total Android victory (the course we're currently on), destruction of high end Android market (more likely via lawsuits than any real innovation), or iPhones becoming Android-compatible - and knowing Apple's attitude towards interoperability that's about as likely as the Pope converting to Buddhism.

Anyway, on phones and tablets Android is finally putting some real pressure on Apple - not just from the lower end which Apple completely abandoned, but also from the high end. And Apple was never serious about desktops. But one huge area where Apple is still completely without any competition is laptops.

Laptop market today looks just like smartphone market looked like five years ago. There's Apple with their overpriced but pretty decent hardware. There's ton of cheap Windows junk. And of course there's overpriced and underdelivered sector of "gaming laptops" and their likes (less extreme than Vertu shitphones, but still not good value for money).

Other than Apple nobody is seriously trying to target the laptop high end market. One big reasons is Windows, which is about as compatible with anything high end as... well, Windows Phone. The high end market is largely tech people, so anybody with any hope of competing with Apple must do something Unix-y as well. It would most likely need to be Linux, possibly with some custom distro, and reasonable Windows (or OSX) compatibility layer to deal with smaller application ecosystem.

Or it could be licensed OSX, but we all know what's the likelihood of that. Or maybe, just maybe, Microsoft could go in more developer-friendly direction and made their OS tolerable, but that seems even less likely to happen than licensed OSX. Or it could follow Apple's steps with Bootcamp and simply dual boot Linux/Windows, or some kind of virtual machine.

Unfortunately right now nobody is even trying. There's some effort into pushing non-Windows non-Apple laptops, but they are definitely on the low end. Google Chromebook Pixel is sort of trying to go there, but it's still years behind, trying to attack Apple from the low-end, not the high-end. Other than that, nobody even tries... So tech people either stick to desktops, or accept overpriced OSX, with all its problems.

Anyway, I really hope Apple fails. I hope they get some serious competition and fall from their undeserved position as the most valuable company in the world to being just one of many manufacturers of quality consumer electronics. Because the alternative is really horrible for consumers.

Monday, November 11, 2013

The Great Ruby 2.0 Upgrade

Ragdoll Kitten by jurvetson from flickr (CC-BY)

Here's a quick announcement: I no longer care about Ruby 1.8 and 1.9 compatibility, all my Open Source software (except etwng for the time being, that's targeting JRuby default mode) is just going to assume you're running Ruby 2.0. Most of it will work on 1.9.x as well, and some might even run on 1.8.x, but that's a lucky coincidence, not any conscious effort.

If it inconveniences you greatly, feel free to send patches, I just don't plan to put any effort into this myself. But seriously, you should upgrade (at least to 1.9.x).

Once upon a time Perl 5, Python 2, and Ruby 1.8 all decided to do a major version upgrade. It went very differently for them. To call Perl 6 migration derailed would be an understatement. Python 3 is doing a lot better, but it still struggles, even so many years after 3.0 release most major Python projects still don't support Python 3, or only sort of do. To be honest this surprises me a lot, Perl 6 was obviously doomed from the beginning, but I thought Python people had their act together on this, with converter scripts, compatibility libraries, feature deprecation system, imports from the feature and so on. Apparently all that wasn't enough.

Meanwhile Ruby 2.0 upgrade went amazingly smoothly, with very little amount of backwards compatibility breaking. Pretty much the only nontrivial breakages were removing Pathname#to_str (which breaks Pathname library completely for no good reason since the entire Ruby POSIX interface demands Strings as arguments and doesn't bother to to_s anything) and some Unicode-related brittleness. All other incompatibilies are trivial things that are easy to fix and weren't important in the first place.

And speaking of upgrades, I recently found the first command line option parsing library that I actually liked quite a bit - trollop. I plan to use it pretty extensively, so gem install trollop away!

Sunday, November 10, 2013

All Commander Precons in Cockatrice format

Geisha 771 by Dirigentens from flickr (CC-BY)
Importing decklists into cockatrice takes much more effort than it should right now due to all data formatting silliness like Unicode apostrophes, various ways to spell "Aetherling", utter insanity of how split cards are being named and so on. Even on Wizards' own website's decklists tend to have a lot of issues.

To make this more automatic I wrote txt2cod script that handles most of such issues. It's available on github (requires Ruby 2.0 and trollop gem) together with my other Magic-related scripts.

And while I was at it, I converted all 10 Commander precons into cockatrice format. That's a good starting point if you want to play casual Commander online. Of course if you're more into Vintage Singleton feel free to completely ignore all of it.

Tuesday, November 05, 2013

Skype logs exporter

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

Most chat applications of the old times stored their chat logs in plaintext format. I'm sure Skype sends copies of all your messages to NSA (and for all we know also every single other government agency in the world to hedge their bets) in plaintext, so they have your plaintext logs, but they never bothered to provide these logs to you as well.

Fortunately Skype seems to be storing all its local logs in a sqlite database, so I wrote a relatively straightforward export script that converts it to a bunch of plaintext files (plus some image files for everybody's avatars).

It should work on any operating system you can get Ruby working on just fine. (you'll just need to install sqlite3 gem)

Since I'm not NSA, I only have my own Skype logs to work with, so it's very likely I missed a lot of important things - and in any case the format of exported logs might be a bit awkward. You can help me here with pull requests, or by emailing any Skype main.db the script can't handle reasonably to me.  (as we know the bad guys already have it anyway, so don't worry too much about your privacy)

By the way - I haven't been testing any of my code on Ruby 1.8 in quite a while now. Most will probably still work, but I'd really recommend an upgrade to 1.9 or 2.0.

Sunday, November 03, 2013

Hidden Object Game Design

So apparently a lot of gamers aren't even aware that Hidden Object Games exist - even people who make  game design videos:

But fear not! I really like the genre, so I prepared some hints on what makes a good hidden objects game, from player's perspective. All purely subjective, but then which such list isn't.

The game

First, HOGs work really well as casual relaxing games. Everybody gets it that different genres of movies elicit different emotions - and the same is true about games. HOG's strength are at creating relaxed time for the player, in artistically interesting world with a bit of storytelling - but if you miss that and try to make them very challenging (something that works very well in many other genres) the player will likely find that frustrating. So throw away timers, scores, and such nonsense. Hints should recharge, not be finite (they don't have to recharge fast). Some games have hardcore mode you can choose from the menu - that's OK, just make casual mode available as well.

The best way to distinguish your game from all others is in distinct art style - and HOGs' diversity stands in contrast to mainstream gaming's obsession with a handful of trends like the infamous brown and grey color palette. 2D art styles tend to look a lot better and immerse in the world more effectively. Some HOGs try "realistic" 3D, and that usually just falls flat.

Story is what turns a bunch of disconnected puzzles into a coherent game. It doesn't need to be brilliant, but it should make some sense. It's quite shocking how diverse stories of budget HOGs tend to be compared to AAA titles, and most of them are pretty decent - and even if they're not they often get a lot of points for just being fresh. Well, maybe except princess stories, I'm quite fed up with them by now. I still remember from back when I was new to the genre a game where I was playing a wedding planner. It took me half the game to figure out that nobody is going to kidnap the bride. Pretty surprising, huh?

By the way - in the Extra Credit video the guys are surprised by protagonist being generally female. I've never really noticed that as being in any way unusual, since in most mainstream games other than military shooters and JRPGs you can choose to play a female character if you want to, and as far as I remember the HOGs I played, there were female protagonists in maybe a bit over half of them - it was closer to balanced than to overwhelmingly female.

If you really need walls of text, they should be spoken, but generally avoid walls of text and keep cutscene to gameplay ratio within reason. Distinct art style works a lot better at establishing the world than walls of text.

It's helpful to give player some general indication of what % of the game passed, like chapter numbers, or count of how many parts of some magical artifact you need to gather to defeat some final boss.
George's Help by Written Voice from flickr (CC-NC-SA)

The puzzles

You need a variety of puzzles. The genre is still called "Hidden Object Games", but many of these games would be better described as Puzzle Adventure Games. These days usually about 1/3 of game time is spent in Hidden Objects sections, about 1/3 in other kinds of puzzles, and 1/3 walking around the map and on cutscenes. Puzzles don't need to be difficult, or good enough to fill the whole game on their own. A simple twist of a well known puzzle can be enough to engage the player for a few minutes, and then we're off to something else.

The player is not your enemy. This is true in all games (I'm speaking about you Paradox and your damn comets!), but especially so in such casual games. Don't hide barely visible slightly darker grey rectangle on grey backgrounds (not too often at least), hide instructions, or force the player to try every single item on every single location in order to proceed because your preferred solution makes no logical sense. The last problem is not new to the genre - it plagued 80s' adventure games even more. Do some playtesting and if players keep trying to carry water in a bucket and you want them to use a kettle instead at least include some explanation on why that doesn't work ("Sorry, the bucket leaks").

Puzzle sections need a restart button. Hopefully you came up with a new kind of puzzle, so the player might want to experiment with it a bit before trying to solve it properly - but then the puzzle might be even more messed than when it started. Just add restart buttons to all of them in case that happens. And obviously there should some instructions, and a skip button (with suitably long time before it becomes active).

There should obviously be some hidden object sections. Try to come up with a bit of variety. Different games have tried so many twists on this that by now you can just pick and choose a few from other games.

Nothing in the game should ever be based on reflexes. No irreversible decisions screwing the player should be possible ever - there's a reason these games don't have quicksave of any kind.

It's perfectly fine to have some kinds of achievements like for completing a chapter in under an hour, or finding some optional and possibly difficult to find items - most players won't really care, but some might.

And that's it for today. Enjoy the gaming.  If you're completely new to the genre I'd recommend starting with Mortimer Beckett series - that's what got me into the genre as well  few years ago - but there's a ton of other great games out there. (feel free to post your recommendations in the comments)

Saturday, October 26, 2013

Some things beemind better than others

Winy and her water by Tambako the Jaguar from flickr (CC-ND)

I'm in the middle of long overdue full GTD review, and one thing I've noticed was that aspects of my life that have a Beeminder goal connected to them tend to do a lot better than those that don't.

This doesn't necessarily mean it's thanks to Beeminder - there's also a lot of reverse selection, since only things I have clear goals and metrics for can really go to Beeminder, and that alone usually means they might go better, but it sure is a suggestive correlation.

What doesn't work too well on Beeminder

Anyway, I'm in the process of archiving one goal. I was very reluctant to add it, and pretty much all my worries about it were confirmed. It was a "do less" goal to try 80% paleo diet I wanted to try for a while. Now the goal was never in any danger of derailment, but it felt really wrong all the time.

A "do more" goal is something you need to think a few times a week, requires minimal data collection, and all that data collection corresponds to a successful outcome on the graph - you're getting some awesomepoints! You need to think about it sometimes - but vast majority of your time you can completely ignore its existence.

A "do less" goal on the other hand is something looming over you 24/7. It requires constant tedious data tracking (I only sent daily summaries to beeminder, but total number of data points collected for it was much higher than for all my other goals combined), and is associated with negative rather than positive emotions all the time you collect data for it. There are no redeeming qualities here.

About the only thing worse than a "do less" goal would be a weight loss one - not only you get all the negatives of a "do less" goal, you don't even have any reasonable amount of control over the outcome.

Now I never bothered to look at Beeminder's data to see if "do more" goals have higher success rate than "do less" and "weight loss" goals, but I'd be surprised if that wasn't the case. And even if they don't, they're sure much more fun and less stressful.

As for paleo diet in particular, it's fine when you can cook at home, but it's rather impractical otherwise without seriously stretching definitions of what counts as "paleo". There's huge choice for people who for some reason want industrial waste from soybean processing and similar garbage (also known as "vegans"), but if you want real food, you're on your own. Maybe it will change one day but for now full paleo is just too much effort and the best one can do is avoiding the worst of industrial crap.
Yawning tiger cub II by Tambako the Jaguar from flickr (CC-ND)

Goal Status

I don't really have any hard long term targets - I adjust them based on how difficult it currently is and how important I feel the goal is - if the goal is important but current target is too easy that's a good reason to ramp it up.

Anyway, goal status, from hardest to easiest:
  • Try new fun things - That's a new goal I added recently, so it has no data points yet. I'm not really worried about meeting this goal, but it sure is fun to get some points for things I want to do anyway (2/week).
  • Pomodoros of important things - Another new goal. Initial target at 7/week, but it will need to go a lot higher once I get used to it. I have a lot of projects I want to move forward without good goals or measures, so rather than ignoring them or adding 20 or so separate goals of dubious quality, I'm adding a catch-all "pomodoros spent on doing any of them" goal (anything covered by another goal doesn't count here). This might still end up leaving half of the projects without any significant progress, but that's better than all of them. 
  • Exercise - This goal has been suffering from serious difficulties. Early on I managed to get sick, last week my exercise equipment broke down (fortunately ebay was pretty fast as shipping replacements). I'm about right on track for 3h/week target, and I might consider increasing it to 3.5h/week someday, but for now I'm just going to stick to current target.
  • Online Education - I found a lot of resources other than Udacity, so this goal is safer long-term than I was originally worried. I still feel it's relatively hard to find quality resources in subjects that interest me, and in a few months I might run out of them, but for the time being 3 lessons/week is just fine.
  • Play Magic - No troubles here, but I don't feel any major reason to ramp this up from 10 games/week.
  • Open Source contributions - This has been going surprisingly well, and I'll soon post about some of the things I've been working on, and since this is really important I'm going to increase the rate from 7 commits/week to 10 commits/week.
  • Blog posts - It seems I accidentally wrote a post that got into top 10 of this blog ever just a few days ago. It's so random which posts become popular and which posts almost nobody reads... Anyway I've got ton of things I want to write about, and I really like this blog being much more active, so I'm increasing the target from 2 posts/week to 3 posts/week.
  • Books - I feel a bit like a Soviet factory manager here since I went through my list of things to read, sorted by shortest first, and I'm focusing on these first. But then correlation between length of the book and its intellectual value is not that high, so it's a totally reasonable behaviour. I'm going to increase the target from 2/month to 3/month since I still have a huge stack of things I want to read, and it's going to take me years to get through it no matter the target.

Future goals

There's a lot of things I want to improve, but they don't have obvious good goals. I tried a dubious goal with paleo diet, and that didn't go too well, so I'll stay away from other "do less" goals.

Doing new fun things sound like a good catch-all goal to make sure time spent having fun still feels like achieving something, and it's important to have some balance in life. Goals are self-correcting, since ones that have lowest "days until derailment" feel most like an achievement to focus on, so there's no worry I'm just going to play new video games all time next month for some nice points.

Another area that really benefits from adequate focus, and which I often got bad at taking care of in the past is maintaining my GTD system. Unfortunately none of the metrics are sensible - my GTD inbox will invariably go way above 0 (and likely >200) since I tend to do reviews using "dump everything into inbox, then dump all my thoughts into inbox, then process one item at a time" system and it can take a long time to get it together. Even not counting reviews inbox often gets temporarily flooded by new content, and that's perfectly fine, as long as it all gets processed within reasonable time. I have no idea what to do about it all.

Of all the projects currently covered by "do more pomodoros" goal - some of them might end up having their own goals if I can come up with any, or they might just get completed or blocked for longer time (another reason why I don't want to put them all onto separate goals). I'm not sure if the pomodoro goal will really work or not. If not - I'll have to come up with some other way of ensuring these things are moving forward.

See you next time.