Beard Second and Drunk Mile

December 28th, 2009

Last week I had an interesting conversation about confusing units. For instance, the commonly used light year is of course not a measurement of time despite its rather confusing suffix. During that conversation I heard about another length measurement called beard second. As you can imagine, what it measures is not time despite its ending in “second,” but rather the length that beard grows in one second. Something like 5 nanometers, or 100 Ångströms according to some.

Wikipedia’s list of humorous units of measurement lists a few more of these, but I feel that a very important unit is missing: the drunk mile (drm). I debated with myself whether or not to call it drunken mile instead but in the end I opted for the shorter version. This is a unit of measurement that is supposed to be used during rather inebriated states, so the fewer syllables the better.

So, time for some definitions. What is a drunk mile? The drunk mile, despite ending in a length measurement, is the time it takes for a drunk person to traverse the distance of one mile.

“But Karja, that won’t work,” I hear you cry. “The time it takes to walk a mile varies enormously from person to person! And what if someone has a bike? Or goes by taxi?”

Ah, but despair not! Careful scientific study has revealed that – despite what one might think – the drunk mile is surprisingly constant. And that constant is two and a half hours. I’ll give you some examples of situations that have been proven to support the drunk mile hypothesis, i.e. take exactly 1 drm:

  • Sven and Inga has been drinking heavily but at different locations. Sven’s location is exactly one mile from Inga’s. Sven calls Inga whom replies that she’ll be right over. She arrives two and a half hour later.
  • Ragnar and Knut are at a party, and Knut suddenly remembers that he’s forgotten to bring his iPod filled with awesome trance music (or whatever kids today listen to). Ragnar graciously lends his bike to Knut, who rushes off to fetch the iPod from his house which is located one mile from the party. He arrives two and a half hours later, even more intoxicated for some reason.
  • Sophie and Sanna are preparing to go to a party, and are drinking heavily at Sophie’s place. They call Mauri, whom they are going to meet downtown, and say that they’ll take a cab right away. Despite the introduction of a motorized vehicle they still arrive downtown (which of course is located one mile away) after two and a half hours.

As you can see, the drunk mile is a very useful measurement. Instead of saying “we’ll be right down” or “oh, maybe fifteen or thirty minutes” you can say “I’ll be down in 1.5 drm” and everyone will know what it entails!

Web and Downloadable Game Engine Choices 2009

December 20th, 2009

In my last post I complained about the lack of a perfect silver bullet game engine that would fit my needs as a small indie developer starting up a new game project. My three primary target platforms are Windows, Mac and the web, in roughly that order.

“But Karja, haven’t you heard? iPhone/XBox Live 360/Android/etc etc is the new indie platform of choice! This guy I read about made six billion dollars on his game there!”

I have a number of reasons why that is utter bull excrement:

  • iPhone is flooded with games. Literally flooded, with thousands and thousands of games that make it hard to gain visibility. Also, iPhone relies on Apple’s SDK, objective-C (to some extent at the very least), touch screen, low-end hardware, etc etc – and all of these aspects have to be hand-crafted for the iPhone release without being reusable on other platforms.
  • XBox 360 is good if you only intend to target Windows and XB360. But that would be incredibly stupid for me, since my target audience isn’t the XBox lads.
  • Android is interesting. It would be neat to get in quickly just in case the market suddenly explodes á la iPhone. But, and this is a big but, Android requires Java which is utterly incompatible with web deployment (Flash is the only viable option there).

After some consideration, I found that my options are as follows:

  • Java – Windows and Mac deployment is possible, and I can deploy on Android as well, eventually. I also looked at Java-to-Actionscript converters, but…that feels desperate and unreliable. So, web deployment is a no-go for this one.
  • BlitzMax – What, BlitzMax? That only supports Win/Mac! Yes, but I seriously considered trying to write a BMax->Actionscript converter since I already have a lot of BMax code and an abstraction layer API in place. (This means that I would have to write the APIs for drawing/sound in Actionscript from scratch, but convert the game logic at least.)
  • C++ – Screw web deployment, and go for a full-fledged C++ engine! That would be the most fun to code in. But… No. 2010 is coming up and the web is the new black.
  • HaXe – This would allow web deployment, and there’s a neat HaXe->C++ converter that can be used along with NME/NEASH, an SDL version of the flash API. Essentially, what this promises is that the same code could be used to make a Flash version and a compiled standalone downloadable (…as well as an iPhone version!). Alas, things aren’t as good as they sound. I did some quick tests and NME/NEASH lacks a lot of bitmap manipulation support. For example, BitmapData.colorTransform() support is missing – and this means that the alpha channel of bitmaps cannot be modified in the downloadable version. Things like this make HaXe seem way too shaky at the moment.
  • PushButton Engine – If I’m considering pure Flash (well, Actionscript) engines, this is a strong candidate. It’s a well-designed library intended to be used for larger game projects. However…. After looking at the code a bit, I fail to see exactly what it will bring. The rendering, file-loading and game state management seems to be the biggest things that it provides but to be honest those aren’t all that tricky to write by yourself.
  • flixel – Another Actionscript/Flash engine. This one seems very attractive at first, but the main problem with flixel is that it makes assumptions. “You only want to make a platformer style game, right? You’ll want to use pixelated effects, right? You want to embed all files since you’re deploy for the web only, right?” And so on.
  • Actionscript/Flex – Finally, the last option is to go for pure Actionscript with Flex. No no no, I’m not trying to reinvent the wheel and have a NIH (Not Invented Here) mentality. But to be frank, writing the main framework that flixel or PBE would provide is…not that much work. Also, I have specific needs: for example, I need to target different platforms and handle files differently on the different platforms (embedded/external).

Nothing is decided at all, but I’m currently leaning towards using PBE, flixel or pure AS/Flex. My main beef with that is whether or not it’s fast enough to look good on the downloadable versions. HaXe seemed like an interesting choice for a long while, and I’m sure that it will be in the future, but I simply found too many flaws in it to provide any actual benefit at the moment. I’m (probably) going for a double-buffer approach with quite a few alpha effects on bitmaps (not in the least for the particles), so the current unstable alpha support in the SDL parts makes HaXe’s NME/NEASH solution for downloadables and iPhone pretty dubious.

In the end maybe I oughtn’t spend so much time investigating this, and just choose something and start developing instead. I guess all engines and choices have their flaws, so nothing’s going to be perfect.

Game Engine Choices for Indie Developers 2009

December 10th, 2009

This post is going to get a bit technical, so if you’re easily bored by the gritty details of game development you might want to go somewhere else right now. Maybe to Cute Overload or something.

My latest game, Wildhollow, is released and I have some great ideas for my next game. Let’s just say that it might include puzzles, RPG elements and some online functionality. Oh, and superheroes or monsters too. Not really sure which yet. Either way, in order to get the game done I need to decide what to implement it in. Sheeplings, Spandex Force and Wildhollow were all developed in BlitzMax, an object oriented BASIC language that’s extremely easy to develop cross-platform games in.

As long as your cross-platform needs are Windows, Mac or Linux, that is.

As an indie casual games developer I find myself wanting to maximize my potential market (of course), and that means maximizing the number of platforms I can distribute games too. To make things easier for me I’ve constructed this table of feasible game engines/libraries as things are now in 2009:

Engine Name Language Windows Mac Web iPhone Android Xbox 360 Linux
Android SDK Java (X) (X) (X) X (X)
BlitzMax Misc X X X
ClanLib C++ X X X
Cocos 2D Obj-C X
Flixel Flash (X) (X) X
Game Maker Misc X
HaXe Misc (X) (X) X (X)
Haaf’s Game Engine C++ X
LWJGL Java X X (X) X
PopCap Framework C++ X
PTK Engine C++ X X
PushButton Engine Flash (X) (X) X
Pygame Python X X X
Simple DirectMedia Layer C++ X X X X
Silverlight Misc X (X) (X) (X)
Slick Java X X (X) (X) X
Torque 2D C++ X X (X) X
Unity C#/JS X X (X) X
XNA Game Studio C# X X

Note that I said feasible engines and libraries. This is not close to a complete list, but they are the ones I’m considering. I can list some criteria:

  • There must be decent performance, which means preferably no software rendering
  • All Windows only, Xbox only, etc libraries are of no use to me. I’ve listed a few anyway just for consideration
  • I want to be able to create mostly 2D games in an efficient manner. 3D engines are often bloated and unusable. Unity may be free but it’s of no use to me, for example
  • Finally, I have a prioritized order of platform preference. You may note that the columns in the table are ordered rather strangely. That’s because I’m going from most important to least important platform

A quick glance at the table shows that there’s no single engine or library that fulfills all my needs. An X demarks that the platform is supported, and an (X) means that limited support is possible. That could mean that it’s possible but requires a lot of messing around (e.g. HaXe for iPhone), or that the solution isn’t practical (e.g. Java web applets aren’t very useful), or that it requires unreasonable things (e.g. Unity on the web requires a specific plugin).

Most engines and libraries support Windows and Mac, so that’s not really a problem. The real problem comes with my third platform of choice: the web. And by the web I mean that it should run seamlessly for most users. Which means that Java is doubtful (too…clunky, and portals won’t accept it), and that leaves only Flash. Which, of course, is mostly incompatible with “normal” programming languages and engines.

This is not an easy decision…

Wildhollow Reviews and Warez

December 7th, 2009

My latest adventure/pet raising game Wildhollow is released and things are progressing fairly well. Many seem to like it, and thanks to Pätr a game-stopping bug was found in time. It could have been immensely embarrasing otherwise…

For the ones curious what Wildhollow is all about, here are two reviews:

Also, I’m constantly googling “Wildhollow” to see what people are saying about the game. One thing I noted this weekend is that a cracked version of Wildhollow has popped up on various file networks. Trembling with fury and sorrow and trepidation and other things I downloaded one of these files to see if it was a bona fide copy of the game. Were people downloading my precious little game and playing it for free? Were people ignoring my hard work for a moment’s instant gratification?

It turns out that the answer is no.

If anyone feels tempted to download the “Wildhollow RIP” that’s circulating on warez sites you should be aware that it’s technically cracked but you won’t be able to play further than Steinheim Keep. You see, for the trial version I made two modifications: I added a time limit of 60 minutes, and I content-limited the game so that nothing from beyond that point is included. The warez version available only removes the time limit but – obviously – cannot add the missing content.

I guess that it’s just a matter of time before a real version pops up, but I feel pretty happy that for now loads of people are going to play the game an hour or two until they realize that they’re playing a trial version after all!

Follow the Indie Games Xmas Calendar

December 1st, 2009

Juuso of the Game Producer blog has initiated a cool project: an indie games xmas calendar. The concept is to reveal a new game each day, until…well, you can guess what day. For obvious reasons there’s only one game revealed so far, but I’m interested in what games are going to pop up during the following weeks. This is an excellent opportunity to see what’s brewing on the indie development scene.

Oh, and one of those games just might be a certain adventure/pet raising game called Wildhollow.