Great Gadzooks! Spandex Force Released

February 9th, 2008

At last I’ve unleashed Spandex Force onto the world! Go download yourself a copy of this exciting puzzle RPG right now, and make sure you buy it as well. Here’s the official press release which you can find on…surprisingly few other game-related pages so far. Strange. Sheeplings was picked up like wildfire, and judging from sales per day compared to Sheeplings, Spandex Force is approximately 1900% better than Sheeplings.

That’s a completely bogus comparison, of course. Sheeplings was slow to pick up speed, and didn’t really start selling after I made a new version that added many improvements; Spandex Force, on the other hand, has sold consistently since v0.5. Speaking of sales, I imagine that it’s easy for the casual reader to think that making games is all profit and fun, but let’s put things into perspective a little:

For the work I put into Sheeplings I got less than 50 cent per worked hour, after deducting what I spent on art. Probably more like $0.2 – I didn’t keep track of the hours I worked on the game. Surely, if Spandex Force sells better than Sheeplings, I must be better off this time?

Not exactly.

At the moment all sales of Spandex Force have paid off just above half of the art and music costs. I.e., so far I’ve had to pay for the privilege of releasing a game.

So go play Spandex Force and buy yourself a copy so that I can make more games! I promise you that I won’t be buying any sports cars for your dough – it’ll all go into production costs for my next game that I’ve started prototyping…

Are You Ready for the Fluffiest Game Ever?

May 3rd, 2007

There, I’ve done it. The sheep’s out of the bag: a Sheeplings press release has been sent out. Click here to see it in all its glory, or go to to read more about the game!

And for the ones who won’t click the link above I might as well post the release here as well:


Are You Ready for the Fluffiest Game Ever?

KarjaSoft releases Sheeplings, a thrilling mix of puzzle solving and sheepherding action.

Sweden — May 2, 2007 — KarjaSoft releases Sheeplings, a thrilling mix of puzzle solving and sheepherding action. As Windsor the sheepdog you must protect and guide your flock toward the final goal: the sheep-jumping competition in Woolyville. Armed with only your bark you will face ravenous wolves and eagles, sheep-napping bandits, logic puzzles, stubborn sheep, hidden powerups and much more.

Sheeplings is designed to provide fun for the whole family. The casual and non-violent gameplay is suitable for kids, but adults will also find themselves challenged by more than 80 wool-raising levels divided into three quests. Sheeplings also features an innovative unlocking scheme that lets you tackle the levels in any order you want.

Sheeplings is priced very sheeply at $19.99 and is available for Windows 2000 or higher, and Intel Mac OS X 10.4.4 or higher.

Read more about Sheeplings at
Download a Windows trial version from
Mac trial version is available at

About KarjaSoft

KarjaSoft was founded in 2003 but changed focus in 2006 from small applications to family-friendly games with innovative gameplay. Current plans include world-wide market domination in fluffy sheepherding games by 2008. For more information, visit


Miro Karjalainen

As you might have noticed I included a link to my KarjaSoft page as well; this meant that I had to do some serious restructuring before sending out the press release. First and foremost I switched web hosts from Cirtexhosting to Lunarpages in a vain attempt at receiving more stable hosting. Secondly, the old site design was…practical. And not particularly appealing. The new one isn’t exactly the Mona Lisa either, but I think that I won’t scare away people from the moment they enter my page at least. I hope.

Incidentally, on the topic of switching web hosts, here’s a tip: don’t forget to set up your e-mail accounts on the new host. It becomes rather embarrassing when everything starts to bounce all of the sudden, and you have no idea why.

Buy Sheeplings!
Do like the ram tells you or he’ll nibble your legs off!

Prototyping, Software 3D Algorithms and Sheeplings v1.0

April 16th, 2007

At long last, my uber-cute sheepherding game Sheeplings v1.0 is released and ready for purchase! It just might appear on a few portals as well in the near future. I ought to make a v1.1 to improve things even further, but – hopefully understandably – I really feel like diving into something new for the moment. Enter my new project – currently called New Project!

Or rather: enter prototype month.

A while ago I made an experiment with dynamic in-game music that I intended to use in a game called Crux. Recently I made a prototype of the idea, and…it just didn’t work. It was seriously lacking in fun. When it comes to (relatively) new ideas there’s just no getting around it: prototyping is invaluable to sort out the trash from the golden nuggets.

Instead, I started to examine other game ideas I’ve had: a SimCity-esque casual strategy game, a resource management game involving sheep, a game featuring automatically generated logic tests, a Guitar Hero-like casual game, and much more. I think most of them would work, but I decided to go for a game with strong, non-experimental gameplay.

Yes, I’m making a match-3 clone.

But there’s a twist to the tale: I actually like match-3 games. That is, I love the hypnotic gameplay, but I don’t like most actual games that implement it. They’re too slow or too mellow or too stagnant or too frenzied – there’s always something that leaves me un-gripped. So I won’t be making a straight clone – I’ll be making something I want to play myself. Also, given the twisted madman that I am, I won’t rest at that. There will be two different modes of match-3 play, and one special gameplay mode for “boss battles.” In short, I’m preparing a game that combines features from match-3 games, RPGs and Guitar Hero. Madness; it’s madness I tell you! Normally my cynical mind would have started to back away slowly by now, but I am approaching this in a careful way. Thanks to the power of prototyping I’ve managed to create simple versions of a few of the game modes, and they show the most important aspect: it’s fun. Even in this bare-bones manner the gameplay itself is fun. So I think I’m on to a good start.

I mentioned Guitar Hero; of course I’m not making a Guitar Hero clone in any way. It’s just some features that bear a similarity. For example, the 3D scrolling background that delivers objects to the front, along these lines:


It’s almost ridiculous, how much effort I had to put into making that. It took me all Sunday to get it running like I wanted. Let me give you a chronological summary:

  • First problem: BlitzMax’s features no “draw polygon” function. In other words, BlitzMax only works with two-dimensional square bitmaps (or plotting primitives that would be too slow). Okay, some searching around gave me a DrawPolygon function that some kind BlitzMax developer on the Blitz Forums had written. Time to test it out.
  • Second problem: the DrawPolygon function only implements affine texture mapping. In other words, a straight interpolation. Imagine that you have a polygon and a texture; affine texture mapping simply “smears out” all the pixels in the texture so that they’re evenly distributed. This is not a good thing for perspective.
  • And this brings us to the third problem: 3D systems draw images using triangles. In order to draw a square, you draw two triangles. Imagine what happens when you move the texture coordinates in a scrolling manner while simulating perspective using affine texture mapping? It looks like two trianges that don’t really fit together.
  • In order to fix this I – naively – imagined that there might be some primitive drawing function that used quads instead of triangles, and that – magically – would correct this behaviour. Hell no. Oh well, let’s leave that problem; let’s move on to the perspective issue.
  • Oh, look here! Both DirectX and OpenGL have support for XYZ coordinates, and not just XY! This means that I can just modify the Z coordinate and get perspective, right? Wrong. This requires additional setup of cameras and whatnot – something that BlitzMax apparently doesn’t do by default. I simply cannot be arsed to go through that, so let’s consider the options.

“What options exist,” one may ask. “It’s a fact that affine texture mapping looks like crap and that just adding a Z coordinate doesn’t fix it. You’ll have to be satisfied with affine texture mapping and this weird shift between triangles.” Bullcrap, I say! Time to think back to the days of glory; the days of optimization; the days when no 3D graphics cards were available. I recalled that I messed around with 3D graphics and perspective correct texture mapping back in the 486 days, and there’s really no magic behind it. All you have to do is put in a (1 / z) here and there, to make sure that the z value affects the projected x and y coordinates. So how could I exploit this to make things look better?

It’s really so simple that it hurts.

In order to minimize the projection error, all I have to do is subdivide the scrolling area into chunks, calculate each chunk’s coordinates with respect to the z variable, and then draw these chunks using normal affine texture mapping! I feel pretty stupid that I didn’t think of this immediately, but better late than never. So, to sum things up: in order to draw that nice scrolling background you can see above, what I do is make a loop that draws 16 (or 32 – I haven’t decided yet) horizontal strips (since that’s where the perspective is most correct). This not only gives a very good impression of perspective, but it also takes care of the nasty issue with the sliding triangles.

Even though 3D systems are getting more and more advanced, and no-one implements software 3D engines, I still think it pays to know basic algorithms.

Sheeplings – Pre-Post Mortem

March 22nd, 2007

Over a year ago I started making a small prototype in which you played a blue box that herded small white boxes around a black playing field. “Herding sugar cubes,” my ex called it, and she was very fond of the gaming mechanic. That’s when I thought I was on to something: if the prototype was an amusing toy, it would surely become a fun full-fledged game!

I’m of course talking about the beginning of my illustrious little game Sheeplings.

About a year ago I wrote a design document for the game; the document was wildly different compared to what can be played today. I originally wanted to make a simulation game in which action levels would feature as interruptions. “Oh no! On the way to Woolyville a nasty wolf attacks; prepare to defend your sheep,” and things along that line. The action levels would be randomized, and the main focus would be on the simulation parts. Unfortunately I decided to scrap that idea due to budget constraints: it would simply cost too much to have someone draw all those locations. Instead I went with an action-based game with hand-crafted levels instead.

Why all this nostalgia? Because I am finished with Sheeplings v0.5, and this is also something I call Release Candidate 1.

Download it here (Windows 2000/XP/Vista, 7.5 MB)

Requires Windows 2000 or higher, 1 GHz CPU or better, 256 Mb RAM, DirectX 7 or later, and 16-bit or 32-bit color mode.

Screenshot 1 Screenshot 2 Screenshot 3
View more screenshots here!

The observant reader might note that this post is a very poor excuse for a post mortem, and that’s totally correct; that’s why it’s called a pre-post mortem. After all, I wouldn’t call a product at version 0.5 finished. I’m planning on making a proper 1.0 release in a little while, and after that it’s time to make a properly retrospective analysis of what went right and what went wrong in the process. All in all – given my limited resources – I’m fairly pleased with the game as it is, even though I hope to make many improvements still before I completely leave it.

So, in this pre-post mortem I’m simply looking forward to being able to look back on the project.

Or – possibly – I just wanted a more intriguing title than “Sheeplings v0.5.”

Wanna Make Sheeplings Levels?

March 5th, 2007

I am slowly but inexorably losing my mind. I’ve been working on Sheeplings for ages, and now I’m finally almost done. I released 0.3 to the public and received lots of good feedback that helped me improve the game. I released 0.4 to a smaller number of people and received even more feedback that made me fix some important details. Now I’m almost done with 0.5 which will be the release candidate.

“Well, get it done, then,” I hear you sigh. But I just…can’t. Making the levels is destroying my mind. The first dozen were fun and new. The second dozen were interesting, since they brought in new gameplay elements. The third dozen had the appeal of bringing in new “logic puzzles” into the fray. And so on. Now I have made 69 bloody levels, and it’s just not fun anymore. Y’hear? It’s not fun! I need 15 more levels for the last quest before I’m satisfied, but I loathe starting up my level editor whilst vainly trying to think of a new concept I haven’t flogged to death like a bug-ridden equestrian carcass.

Isn’t my editor beautiful:

At least it’s almost WYSIWYG. The objects at the top are clickable, and you can place them on the playing field below. You can also remove things (if you’ve clicked the grey box beforehand) and add goal areas (if you’ve clicked the red box). But it’s still a big steaming pile of excrement even worse to work in than vi. Well, okay, not really quite that bad.

Oh well. Let’s move on to my little proposition: can you imagine yourself a level designer for my marvellous Sheeplings? Can you think of some levels that utilizes the existing concepts and characters and limitations, and doesn’t include new functionality like “the sheepdog has a paintbrush and has to re-paint all white sheep black” or similar things? I assume that not a single person will take me up on this offer, but if – for some reason – you would be interested I can offer a free copy of Sheeplings once it’s done, and your name in the credits section of the game. Making levels really isn’t such a chore, so you don’t have to be totally put off by my ranting; it just gets extremely dull once you’ve made so many of them.

In a vain escape from finishing the game I’ve started making small promotional pictures I intend to use on the homepage later:

My God, I have no shame.