Ghost Chaos – now available on Apple’s App Store

Apple just approved my game “Ghost Chaos” made with Objective-C and Cocos2D.


Get it here.

What is it all about?
About three years ago, I played a little mini-game that ships with Mario 64 for Nintendo DS on a DS a friend of mine loaned me. It was some kind of “Luigi’s Mansion” light. I always thought the game controls were really awesome taking adavantage of the touchpen. Basically, you have your flashlight and make the ghosts disappear, while the ghosts only appear visible to you when they are in the light cone of your flashlight. You have a time limit which makes the game pretty hard, because you only have a few seconds to get one ghost. Well, someone might have something like that developed for the iPhone App Store, but I haven’t found an app like that. Maybe I was just looking in the wrong place. So I decided, yeah, I’m gonna make a game that resembles that mini-game.
Unfortunately I haven’t unlocked the mini-game on my Nintendo DS yet, so I constructed the game from the memories of playing it then. I also took some creative liberty and modified the controls: You can either make the ghosts disappear by tapping on them or follow the ghosts with your light cone. Both ways have their advantages and disadvantages: While tapping only targets one ghost, it serves the purpose in the first levels, while the light cone can target multiple ghosts at once and will be only way to solve the levels in time when you are playing Level 8 or higher.

Here is a gameplay video:

Click on “Read more” for the post-mortem.

Read More

Using C-ish code in FreePascal

I really like the pascal syntax and I really like C# syntax, so how can I mix those two together? I wrote a parser which can manage that task.

The following snippet looks like a mixture between C#, C++, Objective-C and JavaScript:

namespace testunit;

@interface

using
  SysUtils;

type
  MyClass : class {
  private
    fMyString: String;

    void addMyself();
  public
    function addThat(): int;
  published
    property MyString: String get fMyString;
  }

@implementation

  void MyClass::addMyself();
  {
  	if (fMyString == "") then
  	{
  	  fMyString = "This is my string.";
  	}
  	else
  	{
  	  fMyString = "This is my new string.";
  	}
  }

  function MyClass::addThat(): int;
  {

  }

@end

Read More