The Animal Farm

December 27th, 2010

Plenty of Time to Kill

The original title of this post was, “Time to Kill,” but I realized I was in a crowded train station and perhaps plastering that on my computer screen was asking for the wrong sorts of questions. I’m sitting in Union Station, a full 2.5 hours before my train was supposed to depart and it’s already been delayed about 45 minutes. That is a bad sign.

Christmas. Enjoyed it. That’s all I really want to say on the topic.

See the Light is almost ready, and if I weren’t so damn tired I’d be working on it right now. There’s a bug list of about 14 items, none of which should take more than an hour. Provided I’m not a lazy schmuck the next few days, it should be ready for review by the time Apple turns iTunes Connect back on Wednesday. Then comes step (3): Profit.

I finished my first full game of Civilization yesterday with Evan and Dee. I don’t have the resources to do a comprehensive review at present (pictures and such), but here are some general impressions: the game is a little tricky to teach - lots of moving parts and plenty of little rules. It’s very long, taking us upward of 5 hours for the first playthrough. It’s also very fun; everyone enjoyed it, and the end turned into a vicious race between Evan, who was attempting victory by expanding the culture of his empire, and me, who was crushing opponents with military might. I won by a narrow margin. Evan was one space away from victory, but his dedication to the arts left his capital defenseless as my superpowered army trampled through.

Watched The Other Guys. I’m always a fan of a good Will Farrel movie. This one is eccentric but still more grounded than Anchorman, and it’s fun. Speaking of movies, Union Station has an FYE and I’ve got a pocket full of dolla bills [y'all], so I might have to go pick something up to entertain me for these endless hours. Now if only Union Station had power outlets.

Union Station music is horrid.

December 23rd, 2010

Board Games + Memory Game

Last night I brought all the board games Laura and I own inside from the car, and I counted some 40+ between the two of us. I have a bit of time to kill in Union Station, so let’s see how many of them I can recall from memory:

(1) Last Night on Earth
(2) A Touch of Evil
(3) Dust
(4) Dust: Tactics
(5) Civilization
(6) Dungeon Lords
(7) Citadels
(8) Settlers of Catan
(9) Settlers of America
(10) Carcassonne
(11) Carcassonne: Hunters & Gatherers
(12) Carcassonne: The Tower
(13) Graveyard Robbers 2: Skippy’s Revenge
(14) Tannhauser
(15) Red November
(16) Apples to Apples
(17) Cranium
(18) Colosseum
(19) Zombies!!!
(20) Resident Evil: Deck Building Game
(21) Dominion
(22) Deadlands
(23) Arkham Horror
(24) Descent: Journeys in the Dark
(25) The Stars are Right
(26) City of Thieves
(27) Gamma World (RPG)
(28) All Things Zombie

Those are all the ones I can recall right now - the list is missing a few expansions that I’m sure I counted in the mix (a couple Carcassonne expansions and at last two Last Night on Earth expansions).

Given that this is clearly a thing I do, probably moreso than video games right now, I think the site should start reflecting this hobby. Expect some board game reviews in the coming weeks - nothing formal, just blurbs I write up as I get time.

Oh, and See the Light is coming for the iPhone. Probably two days left in development, and then I just have to wait for Apple to open up for game submissions after the holidays.

Talk about a throw away post

December 12th, 2010

String Tables and Localization

Not enough attention is paid to the unglamorous portions of game development - the bits that nobody enjoys doing or even discussing but which are necessary to ship commercial products. Today I’m going to talk a bit about string handling.

Simply put, displayable strings shouldn’t show up in code. The reasons follow:
(1) Changing those strings becomes an annoying process of searching tons of source files. And then recompiling is necessary for the changes.
(2) It makes localization a mess. You can’t very well send the source to a localizer, so you have to find the strings and compile a table. Then actually putting the newly localized strings becomes… ugly.

The better solution - and it’s an old solution, I’m not talking about anything remotely new here - is using a string table. Essentially a giant table of key/value pairs that match a certain key (which can be used in code) to the text that key represents.

This has the following benefits:
(1) Changing strings becomes a process of finding the string in the table and tweaking it. No recompilation necessary.
(2) For localization, you pass off the string table to the localizer and get a new file with the localized text. Code determines the appropriate string table for the given language and… you’re done.

Well, you’re not quite done. String tables text you 80-90% of the way, but there’s still some labor involved. For instance, German and Italian are bigger languages than English (about 20% on average, if the number I read is to be trusted), which means that some of your strings may no longer fit into their carefully crafted containers. There are options for this:

(1) You can make your UI files localizable and provide new size/position information given the language. This is a lot of work but can provide a better experience.
(2) You make your font sizes localizable (ie: region-specific configuration files) and tweak those based on the language. This is generally easy. You can often make one small size change and fix a lot of issues, but there’s the risk that new sizes will be too small to read or not look as good.

And there’s also the problem of baked-in text - text you bake into images to give them a little extra “pop.” Personally, I prefer to avoid these types of images altogether - I opt to use special fonts instead. It doesn’t look as good as what an artist can create, but it saves work, and you don’t have to ask your artist to learn to draw Kanji for a particular bit of text. Of course, if you insist on baking text, providing localized images is an option.

Localization isn’t the biggest problem in software development, but if you don’t plan on it from the beginning it’s extremely laborious to do later.

Oh, and See the Light is coming to your iPhone.

December 9th, 2010

Puzzle Quest 2 Shipped!

Now available for the iPhone and iPad.