Notes from The Black Forest

Posted on Thursday 21. January 2010 by Andreas | Add a comment

The Black Forest has been a project I wanted to do for a long time. However, the idea of what exactly it should be went through a number of iterations. The very first idea was to have a ghost character in a game world that was slowly destroyed by the great void like in Michael Ende’s Neverending Story. The void would expand and act like a spatial time limit. You could only stay inside the void for a couple of seconds before you die. I developed a simple prototype, but playing it was not very enjoyable since I did not put enough time into the level design.

Instead, I got side-tracked by working on my own 2D game engine called Pelikan. It was supposed to be super-flexible, easy-to-use, have a beautiful clean syntax, help you focussing on actual game design work and make prototyping so much faster. Well – I was wasting my time on building an engine for rapid prototyping, instead of actually prototype. I finally ditched Pelikan when Flixel came out, since it was doing everything I wanted my game engine to do, but in a better way.

If you really want to make your own game engine or any other framework it is worth looking at what actually worked. Adam Saltsman distilled his Flixel library from a variety of Flash games that he had worked on. David Heinemeier Hansson extracted the famous Ruby on Rails web framework out of the Basecamp source code, not the other way around. The good thing about this is that you don’t need to anticipate how you’ll use your code – instead you only implement what you really need right now and take out the useful parts later.

For the second idea I took a 180 degree turn. I would make The Black Forest a series of little game episodes, each one developed and released in a weekly circle. It soon become apparent that I was not able to develop one episode within a week. I simply had too many other obligations. We kept the idea of releasing an episode once a week, but developed them in advance and on the side, so we still had time for other projects.

With the episodic format we tried to combine some of the aspects of prototyping and episodic games. The prototyping allowed us to try out new game ideas in a quick way. The episodic structure should tie everything together into one narration of the hero’s journey – the main character experiencing different adventures in unfamiliar environments. I feel that there is a certain atmosphere in the series that comes out of this connection between the episodes. This was important to me since I wanted The Black Forest to be more personal than the other games we did before. I also wanted to explain as little as possible to the player and break through some established and learned game conventions. Figuring out what to do would be the player’s main challenge and motivation to play the game.

Finding Friends
In the first episode the player needs to figure out that the signal-red colored ghosts are not enemies, but potential friends that help him or her to find the exit. Every ghost the player touches illuminates the dark maze for a certain amount of time. The “latest friend” will follow the player, making it easier to draw the path.

Unlearn
A lot of games reward the progress of the player by constantly giving him or her new power-ups. How would it feel if you actually take something away from the player and question common game design conventions? People seemed to like this episode the most, but it suffered a bit from problems with the collision detection.

Harmony
What I like about this episode the most is that it does not reward any skills you might have attained in other computer games. This one is only about hearing. It’s the most difficult and frustrating of all episodes though and the audio-visual feedback to the player could be improved quite a bit.

Companion
The goal of the last episode is to meet the other ghost. If you touch the other ghost, a different music is triggered and stars begin to appear in the background. If the distance between you and the other ghost becomes bigger, the music slowly fades out and the stars disappear again. The level is generated procedurally, so the path is different every time you play. So are the chances of meeting the other ghost. You can not go backward, as you can’t go backward in time in real life. The idea came from tinkering about the likelihood of meeting your significant other – being at the same place at the same time.

As with previous game projects I worked together with Martin Straka, who made the soundtrack for the game and also came up with a lot of gameplay ideas. The Black Forest is our first game where the audio is probably as important for the player feedback as what you see on screen. Without the music “Finding Friends” and “Companion” would hardly offer any reward, and the puzzles in “Harmony” are completely based on sound. This was also the first time I worked together with Marek Plichta, who did the beautiful graphics and level design for “Unlearn” which added a lot to the atmosphere as well.

The Black Forest got a number of favorable reviews and mentions in blogs like Jay is Games, Game Set Watch, Play This Thing! CreativeApplications.Net and IndieGames.com.


Useful Mac Apps

Posted on Wednesday 13. January 2010 by Andreas | 4 Comments

If you’re working on a Mac, there are a ton of useful and affordable applications out there. Here’s a list of tools that I use regularly. How does your list of favorite apps look like?

Dropbox. A super-fast file sharing app that feels like it’s part of the Finder.
Little Snapper. Helpful for taking and organizing screenshots of your projects.
Quicksilver. The fastest way to start up an application or find a phone number without touching the mouse.
Screenflick. Simple screen capture app that we use to record trailers of our games.
Sequel Pro. A tidy graphical gui to admin your local and remote MySQL databases.
TextMate. The best text editor around. Lightweight and extendable.
Things. Simple, but powerful task management that syncs with it’s iPhone companion app.
Timepost. Unobtrusive time-tracking that syncs with Basecamp or Harvest.
Times. Beautifully designed RSS reader that feels much more like reading a newspaper instead of emptying your inbox.
Transmit. FTP-workhorse. Allows to edit remote files directly.
Versions. Well designed Subversion client. Makes things like tagging and renaming folders much easier.
Wallet. Stores all those user accounts, passwords, credit cards numbers and licence keys for you.
WireTap Studio. Easily record audio output from any application, system audio, microphone or line-in.


New url for RSS feed

Posted on Wednesday 16. December 2009 by Andreas | Add a comment

If you are subscribing to our blog via RSS, please note that we moved the feed url to Feedburner. Please update your bookmark to http://feeds.feedburner.com/pixelate. Thank you.

Oh, and the screenshot above shows the highly recommended newsreader Times from Acrylic together with a desktop wallpaper from Little Big Planet.


December Updates

Posted on Sunday 13. December 2009 by Andreas | Add a comment

December is a busy month for us with lots of things going on. We just released the first two episodes of The Black Forest Finding Friends and Unlearn both here on Pixelate and on Kongregate. Episode 3 (“Harmony”) will be released December 20, followed by the last episode of the first season “Companion” on December 27. The Black Forest is the most personal, experimental and tiniest game we have done yet and so far people really seem to appreciate it.

We also pushed a big update for Mr. Bounce to the AppStore which contains five new levels, new game elements and a new music track by Martin Straka. The new track is also available at our Soundtracks store.


The Black Forest Trailer

Posted on Wednesday 4. November 2009 by Andreas | 2 Comments

Here’s a gameplay trailer for our upcoming experimental game series The Black Forest. We are going to release one episode every week this December to play for free online.


Mr. Bounce version 1.0.1

Posted on Thursday 29. October 2009 by Andreas | Add a comment

We released the first small update for Mr. Bounce on the AppStore yesterday. The update includes:

  • Play your own music in background: Turn music volume to zero in game options. Close the game, and start your music track in iPod. Then startup Mr. Bounce again. Your music should continue in the background.
  • Better performance on iPhone 2G and iPhone 3G
  • Your name is highlighted in the Hall of Fame
  • Minor bug fixes

Make sure to let us know on our forums if you have a feature request.


Mr. Bounce for iPhone and iPod touch

Posted on Friday 16. October 2009 by Andreas | Add a comment

We teamed up with the new Berlin-based company Spaces of Play to create an iPhone version of our “breakout meets controlled chaos” game Mr. Bounce. It runs super-smooth, features 5 extra levels (25 in total), has real multi-touch controls and an online hall of fame right from the start. It’s only 0.99 USD or 0.79 EUR and available today on the iTunes App Store. Don’t forget to rate the game in the App Store and give feedback in our new forums.




New forums and a sneak peak at The Black Forest

Posted on Thursday 8. October 2009 by Andreas | Add a comment

We launched our new forums today where you can give feedback to our games, submit bug reports and feature requests or just tell us who you are. The forums are also the place where we will give a look behind the scenes once in a while, starting with the very first screenshots of our upcoming series “The Black Forest”.


Project Management for Indies

Posted on Thursday 27. August 2009 by Andreas | 4 Comments

In this blog post I want to talk a bit about how we do project management. If you are an indie game developer you might say, “I don’t care about project management. All I want to do is games.” If you are the only person working on your game you don’t need to care about it. However as soon as you start working together with (or for) someone else you’ll need to find a reasonable way to communicate with each other.

Since Understanding Games we are using the web-based project collaboration tool Basecamp (affiliate link) for our written communication, alongside Skype for chat and discussing things in person. Here are some of the advantages of using Basecamp over E-Mails and plain notes.

Keep track

Basecamp enables you to assign and keep track of to-dos and milestones. While a to-do is usually a small task, a milestone stands for a bigger goal that you want to achieve until a certain date. Both to-dos and milestones allow for sending notifications or reminder via email, so you won’t need to check for them manually. A common workflow for us looks like this: I assign a to-do to Martin to compose a music loop for our next game. We discuss some ideas (style and atmosphere of the music, length of the tracks, what file format to use) on the message thread of the actual to-do. Once Martin has composed something, he uploads an mp3 on the same thread. In this way the complete discussion happens in one place and does not get mixed up with other discussions.

Prioritize

Basecamp also lets you keep track of milestones and any recent activity in all of your projects from within the Dashboard view. This way we can easily priorize which tasks need to be done next and what the other team members are doing.

History of communication

When you do your team discussions on Basecamp, it’s really easy to go back and see what you actually agreed on. Can’t remember if it was BF-SUCC.mp3 or BF-SUCC2.mp3 that sounded better? You won’t need to browse through all your emails. Just look into the according message thread.

Work asynchronous

We don’t have an office and we work from different cities in different countries. We have other jobs and freelancer gigs on the side, so we seldom work at the same time. Having all important information about our projects on Basecamp frees us from the necessaries of asking each other in real-time how something was supposed to be done.

For small indie teams Basecamp can feel a bit costly (paid plans start at $24/month) but from our experience the improved team communication makes this investment worth it. There is also a free 30-day trail and a free plan (one project, no file sharing).


More Soundtracks

Posted on Saturday 18. April 2009 by Andreas | 2 Comments

After releasing the soundtrack for Hypnotic Discotheque Fascination last month we now also offer the music for Understanding Games and Mr. Bounce on our soundtracks page. Again, you can listen to all tracks on the webpage, and name your own price for downloading. Thank you for your support!


GDC Review Part 2

Posted on Monday 6. April 2009 by Andreas | Add a comment

Thusday

The second day of the Independent Games Summit was packed with interesting panels: 2D Boy’s Kyle Gabler and Polytron’s Phil Fish talked about The Art of Independent Game Promotion, or how to market your game without spending any money. This talk was a good follow-up on the Monday-keynote focusing again on non-development topics.

Kellee Santiago from thatgamecompany did an insightful presentation on How Do You Manage Small Indie Teams, a topic that I believe is greatly under-appreciated by a lot of small indies.

In his talk Beyond Single Player Jason Rohrer questioned why independent developers are largely painting themselves into the single-player corner instead of exploring multi-player based interaction that is so common in board games.

Hothead Games had the most well-designed of all slides, but the only thing I can remember is that they are porting Braid to the Mac, which made me a very happy.

In Making Web Games: The Indie Experience Pixeljam Games discussed their goal to make original Flash games without the needs for ads. How? Make the player care about your game. This notion should be commonsense, but Flash games are still largely seen as commodities.

The day ended with Eskil Steenberg’s mind-blowing presentation on the open-source tools he wrote to develop the MMOPG Love completely on his own.


GDC Review Part 1

Posted on Sunday 5. April 2009 by Andreas | Add a comment

This is the first part of my personal GDC review. It was my first time there and it was just incredible to basically meet every single person that ever has been an influence to me on making original games. Thank you all for this great week.

Sunday

The conference week already started on Sunday with the first Flash Gaming Summit organized by Mochi Media. It was a one-day event that was only around $50 if you registered early, and the excellent catering alone was worth the ticket. Unfortunately most of the panels were a big disappointment. Most panelists spoke from the perspective of the big Flash portals and advertisement companies, advising aspiring Flash game developers to aim for easily consumable “hit games” and doing as many sequels as possible. During the first four panels no one talked about creativity, innovation or inspiration, even though Mochi Media claims that they are “fueling the creativity of the gaming community”. The MochiAd business model is good for creating revenue, but the Summit underlined that a big share of the Flash games scene acts more like the antipode of creativity, producing very few really interesting games. The day’s highlight then was the appearance of Edmund McMillen in the last panel discussion, arguing you should not aim for a certain target audience but make the games you are really interested in.

Monday

Probably the most interesting presentation of the Independent Games Summit was the keynote given by Ron Carmel from 2D Boy. In “Everything You Always Wanted to Know About Going Indie But Were Afraid to Ask” Ron gave away lots of interesting numbers like how much money they actually needed to make World of Goo. Ron covered stats on distribution and how sales are directly related to press coverage. An interesting fact is that of all World of Goo sales from 2dboy.com 25% are Mac and 10% are Linux sales. So developing for Windows only could make an indie lose 1/3 of the potential sales. For all the numbers and slides a PDF of the presentation is available.

(Photo by Sklatthill under Creative Commons)

Next in my list of memorable lectures is “The Four-Hour Game Design by Cactus”. Jonatan Söderström’s surreal presentation on how to make a game in four hours made me cry laughing, feeling I am dreaming all this. Coverage on Destructoid, Offworld and TIGSource made me realize – it was all really happening. The presentation was made completely in Game Maker and is available for download (Windows only).

Another really interesting one on Monday was Petri Purho’s postmortem on Crayon Physics Deluxe, last years winner of the IGF Seumas McNally Grand Prize. In his presentation Petri explained how important prototyping is for actually making a game. Before starting prototyping Petri did never release anything and worked on a game engine for around 2 years of his life, without achieving anything more than a black screen. (From my own experience I confirm that developing your own engine does not get you any closer to making your own game.) There is a good summary about the complete postmortem on Destructoid.


Soundtracks and Shirts

Posted on Monday 2. March 2009 by Andreas | Add a comment

We just released the soundtrack of our new game Hypnotic Discotheque Fascination on Bandcamp – if you liked the music and want to give us some support, go download the soundtrack and name your own price for the three tracks. You can also prelisten to all the tracks directly on the site. We are planning to add more game soundtracks in the future.

We also have a lovely new shirt in store which you can get from Spreadshirt. It features Jakob Ingvorsen’s “Black Forest” illustation from our homepage.


Hypnotic Discotheque Fascination

Posted on Saturday 14. February 2009 by Andreas | 3 Comments

We are very happy to present our new game Hypnotic Discotheque Fascination that we designed together with Justin Gagne from Velle. We have been working on this over the atlantic for the last three months, and for us it has been a really cool collaboration. It features the best music score that we have had in any of our games until today, and Martin’s sound design has been the driving force for this project.

You can play the game at velle.us. We hope that you enjoy it!

For more information please read the press release.


A better workflow for developers and sound designers in AS3 projects

Posted on Sunday 1. February 2009 by Andreas | Add a comment

In our AS3-only game projects we always ran into the same issues regarding the sound assets. Often we wanted to try out a new sound or adjust the volume of a sound in the context of the actual game to see if it would fit in. This would require our sound designer Martin to send me the new sound file, or tell me “please make this sound +5% louder”. I would do the change, recompile the SWF and send it back to him. To achive a good result we would have to do this cycle a couple of times, which was very time-consuming and unsatisfing for both of us.

So I decided to write a little sound helper class called SoundControl to make things easier and more straightforward. Here’s how it works:

1. An XML config file is used to store all properties (id, file, volume, pan, startTime and loops) for the sound assets. This makes it easy to do changes directly, like trying out another sound or adjusting the volume. The startTime which is measured in milliseconds is especially important if you want to loop a mp3 file, since they always have a small gap at the beginning. You can measure this gap in any visual audio editor (such as Audacity or Adobe Soundbooth) and use the length of the gap as the startTime to loop the sound gaplessly.

<soundConfig embedSounds="false">
    <sound>
        <id>HelloWorld</id>
        <file>../assets/mp3/HelloWorld.mp3</file>
        <volume>0.5</volume>
        <pan>0</pan>
        <startTime>0</startTime>
        <loops>10000</loops>
    </sound>
</soundConfig>

2. You can choose between embedding the sounds in your SWF or to load them dynamically by setting the embedSounds property in the soundConfig tag. When embedding the sounds, you need to add the assets to the EmbeddedSounds class. Make sure to name the class for each asset the same as the id in the XML.

package de.pixelate.pelikan.sound
{    
    public class EmbeddedSounds
    {
        [Embed(source="../../../../assets/mp3/HelloWorld.mp3")] public static var HelloWorld: Class;
    }    
}

3. The SoundControl class enables you to play the sounds defined in the XML. Create an instance of the SoundControl class and add an event listener that will be called once the XML and all sound assets are loaded.

var soundControl: SoundControl = new SoundControl();
soundControl.addEventListener(Event.INIT, onSoundControlInit);

4. While developing you usually want to dynamically load the XML file, so you can quickly do changes and try out different sounds without recompiling the SWF.

soundControl.loadXMLConfig("xml/soundConfig.xml");

5. For production you might want to compile the XML into your SWF, so you can also pass a XML object to the SoundControl instance instead:

soundControl.setXMLConfig(xml);

6. Both commands will preload the sounds that are specified in the XML and dispatch Event.INIT from the SoundControl instance. Once your event handler is called you can play any sound by its id specified in the XML.

soundControl.playSound("MySound");

That’s it! You can download the source code (licensed under MIT) at github.


Vote for Mr. Bounce!

Posted on Sunday 11. January 2009 by Andreas | Add a comment

Mr. Bounce is nominated for “Best of Casual Gameplay 2008” in the category Action and Arcade browser games by the folks at Jay is Games. If you enjoyed playing our game, we would very be happy if you vote for it here. (You can vote once a day.)


Playing games on MacBook White with Parallels 4

Posted on Sunday 14. December 2008 by Andreas | Add a comment

I am really happy with the improved support for Windows games in Parallels Desktop 4. I can finally play a lot of indie games on my MacBook White (2.16 GHz Intel Core 2 Duo, 2 GB RAM), which does not have a dedicated graphics card, but a pretty underpowered build-in graphics chip. Here’s a list of games I could play at a decent speed:

  • Ad Nauseam 2
  • Crayon Physics
  • Knytt Stories
  • Migthy Jill Off
  • Night Of The Cephalopods
  • Noitu Love 2
  • Psychosomnium
  • Qwak
  • Rescue The Beagles
  • Rom Check Fail
  • The Shivah

I am going to update the list from time to time.


New homepage

Posted on Saturday 29. November 2008 by Andreas | 2 Comments

Today we published a redesigned version of our homepage, which features some very nice illustrations from Jakob Ingvorsen of Spoiled Milk. Every pixelate game now got it’s own “comic book” cover and you can also catch a glimpse of our new game “The Black Forest” that is planned to be released in 2009.


Understanding Games Remastered

Posted on Monday 10. November 2008 by Andreas | 2 Comments

Today we released the remastered version of the complete Understanding Games series. Every episode now comes in crisp clean remastered sound. We hope you like it as much as we do.


Bytejacker

Posted on Sunday 21. September 2008 by Andreas | Add a comment

Bytejacker might going to be my new favorite weekly videogame show. This is like a two-man version of the 1UP Show on steroids, reviewing downloadable and indie games, filmed on a roof in Brooklyn, NY.


Current Exhibitions

Posted on Saturday 30. August 2008 by Andreas | Add a comment

(Photo from File Festival by Fernanda Landa)

I am happy to announce that Understanding Games is shown both at the File Festival in São Paulo, Brazil (until tomorrow) and the AveCom Festival in Arnhem, Netherlands (3.—26. October).


Mr. Bounce on Miniclip and Whirled

Posted on Saturday 30. August 2008 by Andreas | Add a comment

Our latest game Mr. Bounce is now also available on Miniclip and Whirled. Your highscore will be saved on both websites. Whirled also awards you with trophies for your achievements in the game – try to beat my personal highscore (160,950) to get the Supremacy trophy.


Everyday Shooter (PC)

Posted on Thursday 14. August 2008 by Andreas | 1 Comment

For some reason, I always play games long after their release date. So while the rest of the world already has played through Everyday Shooter, I am in the middle of level 4. I absolutely love the music in Jonathan Mak’s game. This is lofi guitar heaven. It feels like Lou Barlow is coming around the corner and starts to sing at any moment. Or like an Appleseed Cast album that has not been released yet. I’ve tried for too long to convince friends that video games can be a medium of expression. Next time I will just let them play this game.


Leaving Sweden

Posted on Saturday 26. July 2008 by Andreas | Add a comment

So, yesterday was my last day in Stockholm. After 15 months of living in Sweden I am back in Germany now. After having some vacation at my parents place I will move to Zürich at the end of August to work for the very nice folks at Spoiled Milk. I will work part-time for them, which allows me to invest more time into my own game projects. This is something I am really looking forward to. Being able to split up my time between game and web development has been a personal goal for a long time, so I’m excited to see how that works out.

Of course, leaving Sweden is a bit sad as well, and I am thankful to have met a lot of friendly and interesting people during my stay. No more long summer days …


Mr. Bounce Release

Posted on Friday 6. June 2008 by Andreas | 2 Comments

Could there be a better day to release a video game than the Swedish National Day? We think not. Finally, after one year of long evenings and weekends, we are very happy to release our new game Mr. Bounce. (The game is also available on the Kongregate gaming site.) We hope you like it as much as we do. Thanks again to everyone who play-tested our beta version and gave us valuable feedback!


1UP Specials: RSVP

Posted on Saturday 31. May 2008 by Andreas | 1 Comment

The guys from the 1UP Show have a great new format called RSVP where they invite influential people from the game industry (influential in terms of games as medium of expression) for dinner and just talk. The first episode features Erik Wolpaw from Valve, Dylan Cuthbert from Q Games, Jonathan Mak from Queasy Games and Mark MacDonald from 1UP. Very much worth seeing!


Ether (PC)

Posted on Monday 26. May 2008 by Andreas | 2 Comments

We certainly need more beautiful designed games. I don’t mean games that look good from a technical point of view. The notion that the graphical quality of a game can be measured in numbers is still common sense amongst a lot of people. From this perspective every new game has to raise the bar towards graphical realism. This is of course plain wrong. Instead, every game needs a distinct personality. Like Ether for instance – an atmospheric, physics-based Half-Life 2 Mod developed by Brown Dyed Hotel, a group of swedish students from Campus Karlshamn of Blekinge Institute of Technology. I only played it for several minutes at the Swedish Game Awards Exhibition, but I was immediately captivated by it’s beauty and I encourage everyone to check it out for yourself.


Mr. Bounce Trailer

Posted on Sunday 11. May 2008 by Andreas | 2 Comments


We are currently putting together the last bits and pieces of our new game Mr. Bounce – optimizing the code, mastering the music, implementing a highscore list. Expect to see the game released on Kongregate during the next weeks. Until then, have a sneak preview at the trailer!


Bully / Canis Canem Edit (PS2)

Posted on Friday 2. May 2008 by Andreas | 1 Comment

A while ago I bought a used PS2 to play a bunch of games that I had missed so far and that I thought I would enjoy playing. One of them was Rockstar’s Bully (named Canis Canem Edit in Europe). It got a lot of positive reviews in the gaming press and playing a troublesome schoolboy sounded like an interesting game idea which got me very excited to play it.

The actual experience of playing Bully makes me feel like being in the office doing overtime on a sunday working on a PC that crashes every 10 minutes. The number of good ideas and intentions in this game equals the number of moments of pure frustration. I consider the mission system one of the biggest flaws of the game. Like in GTA you progress through the game by completing missions – if you fail a mission you are forced to do it over and over again.

A typical mission looks like this: Escort a school kid that is threatened by some bullies to his locker so he can return his borrowed books to the library. Ok, this could be a challenging, interesting task inside a video game, but:

The school kid will follow you at a really slow pace, while you have to lead the way. Due to a seriously unclever positioning of the camera, you can’t see where your fosterling actually is and therefore you can’t protect him from getting beaten up. On the way to the locker he needs to go to the bathroom, so you need to escort him there first. The target location is indicated by a symbol on the in-game radar-like map. Once you are actually there, you realize this is the girls bathroom and your friend will not follow you in there. Of course there is also some arbitrary timer running out, and you are just wondering if a single person has actually tested this or any of the other missions before the game was released.


You Have To Burn The Rope (Flash)

Posted on Monday 7. April 2008 by Andreas | Add a comment

There has not been a Game of the Week post on my blog in quite a while, mainly because I simply have not enough time to play a lot of games anymore. I already was happy that Valve’s Portal was kind of compact, time-wise. Play You Have To Burn The Rope and guess how happy I was to play this little diamond. Be warned, it’s an intense experience.


Dutch Translation of Episode 1

Posted on Monday 17. March 2008 by Andreas | 1 Comment

Episode 1 of Understanding Games has a dutch translation now! The other episodes will follow soon. Wat hebben we vandaag geleerd, Bub?


Debug and Release Builds with AS3 Conditional Compilation

Posted on Sunday 16. March 2008 by Andreas | Add a comment

While working on our upcoming game Mr. Bounce I was searching for a way to compile debug and release builds from the same source in AS3. Our game project includes things like an internal level editor and cheat keys that we need for developing and testing the game, but should not go in the release version of the game.

I stumpled across something called Conditional Compilation on Ryan Taylor’s Blog – a new feature of the Flex 3 SDK. It allows you to define constants (Booleans, Strings, Numbers or expressions) at compile time, which are globally accessible within the source of your application.

You can define your constants on the command-line with mxmlc, in a Flex Ant Task or using a configuration file. See Adobe’s documentation for more information on this.

For our game we defined the debug and release constants in the flex_config.xml file that is located in the Flex 3 SDK folder inside the frameworks folder. Both constants are Booleans using the CONFIG namespace.

<compiler>
   <!-- (other compile options...) -->
   <define> 
      <name>CONFIG::debug</name> 
      <value>true</value>
   </define>
   <define>
      <name>CONFIG::release</name> 
      <value>false</value>
   </define> 
</compiler>

Now we can check for the debug and release constants in the source code and execute the correct code for the target build:

private function init():void
{
   CONFIG::debug
   {
      // Only init the level editor for the debug build
      initEditor();
   }

   initGame();
}

We could also specify alternative versions of a function for the different builds:

CONFIG::debug
private function init():void
{
   initEditor();
   initGame();
}

CONFIG::release
private function init():void
{
   initGame();
}

Alcon (ActionScript Logging Console)

Posted on Sunday 13. January 2008 by Andreas | Add a comment

I recently started using Alcon for logging and debugging AS3 projects. It uses LocalConnection to send your trace calls from the included Debug class to the Alcon console, so it is not dependent on the Flash or Flex IDE. It has some nice features that make it very handy including the ability to display both the current frame rate and memory usage. Another plus: It works on Mac as well.


Portal (PC)

Posted on Friday 4. January 2008 by Andreas | 1 Comment

Surprisingly, Valve’s Portal (part of The Orange Box) did run quite well on my low-end PC. While some people complained that it is too short, I am actually happy with the fact that you can play through it in one or two sessions. I just don’t have as much time to play games as I had as a kid anymore. However, Portal is actually longer than you’ll think at first, and it does a good job in playing with your expectations through the whole game. The puzzles are mind-bending and challenging, but never unfair. A slight motion sickness might occur, though. I am also going to spoil that the end boss is really really cool. But you’ll properly have played it already.


Another World 15th Anniversary Edition (PC)

Posted on Thursday 27. December 2007 by Andreas | 2 Comments

Do you remember the feeling of immersion that you had when you played Half-Life for the first time? I just finished playing the 15th Anniversary Edition of Eric Chahi’s Another World (named Out of this World in the US) and I had quite a similar experience of being sucked into an atmospheric game world. In both games you play a scientist who has to learn how to self-defend against other species because of a failed scientific experiment.

While Half-Life is the effort of Valve’s great team work, Another World was almost done completely by Chahi himself – an exceptional talent in programming, art and design. The Anniversary Edition includes a highly interesting Making Of video presenting the little secrets and tricks of his game development process.

Compared to todays standards Another World is both quite short and really hard. Be assured that you will die a thousand deaths and that you’ll need to replay a bunch of levels many many times. It does not help that in theory the controls are elegant and simple, but sloppy and unforgiving in reality. Of course, Another World is one of these precious gems in gaming history well worth the struggle playing through it.


Serious Games Award

Posted on Tuesday 11. December 2007 by Andreas | 1 Comment

Great news! Understanding Games won the second price at the Serious Games Award in the category Best realization of a Serious Game (Bestes umgesetztes Serious-Game). The award was organized by the Hessian Department of Trade and Industry to promote computer games that provide an expedient usefulness in addition to sole entertainment.


Understanding Games Diploma Thesis

Posted on Wednesday 5. December 2007 by Andreas | Add a comment

Many ideas in the Understanding Games series have their origins in various books and articles that I read during my diploma thesis research. So I thought it might be a good idea to make the influences and theories behind Understanding Games more transparent and release my diploma thesis as a downloadable pdf. The pdf contains a lot of figures, so it’s size is rather big (44 mb). Note that the thesis is in German language. You can download it here.


Setting up a AS3 Project in Textmate

Posted on Tuesday 4. December 2007 by Andreas | 20 Comments

When developing Flash games I use a fairly uncommon combination of development tools which I’d like to share here. I’ll give an overview on how to setup the OS X editor TextMate for developing ActionScript 3.0 projects using the free Adobe Flex SDK. If you are new to Flash development and working on a Mac this might be a good alternative to buying Flash Professional 9 or Flex Builder since TextMate is available for a convenient price of €39. Setting everything up can be a little bit tricky and requires a number of steps so I try to be as clear as possible. Let’s go …

1. Download and install the 30 Day Trial of TextMate from the Macromates website. If you are new to TextMate please take a look at the online manual to familiarize yourself with the basic functions of the editor.

2. Download the free Flex SDK from the Adobe website. Move the extracted folder into your Developer/SDKs folder.

3. Make sure that you have Subversion installed. If you don’t you can download an easy-to-install package of Subversion from the homepage of Martin Ott.

4. Get the latest ActionScript 3 bundle for TextMate using Subversion. To do this, open the Terminal application, copy the following script into the Terminal and execute it by pressing return.

mkdir -p /Library/Application\ Support/TextMate/Bundles
cd /Library/Application\ Support/TextMate/Bundles
export LC_CTYPE=en_US.UTF-8
svn co http://macromates.com/svn/Bundles/trunk/Review/Bundles/ActionScript%203.tmbundle/
osascript -e 'tell app "TextMate" to reload bundles'

Now the ActionScript 3 Bundle should show up in the TextMate Bundle menu.

5. Download and install the Flex Compiler Shell—it compiles much faster than the standard mxmlc compiler by keeping everything in memory.

6. To use the Flex Compiler Shell from TextMate we also need to download and install the terminal application iTerm.

7. Now let’s set up a new ActionScript project in TextMate. Select File→New Project from the menu, create a new folder for your project in the Finder and drag it in the TextMate Project Drawer. Click on the info button located in the bottom of the Project Drawer. Add two shell variables so that the ActionScript Bundle knows where to look for your files:

TM_FLEX_FILE_SPECS    src/Main.as
TM_FLEX_OUTPUT        deploy/Main.swf

We also need to let TextMate know where the Flex SDK is located. Go to TextMate→Preferences→Advanced→Shell Variables and add a new global variable:

TM_FLEX_PATH    Developer/SDKs/Your Flex SDK Folder

8. You are still with me? Great. Let’s finally write a simple “Hello World” application. Create two new folders named deploy and src in your project directory. Then create a new file in the src folder and name it Main.as. It should look something like this:

package
{        
    import flash.display.Sprite;
    import flash.text.TextField;

    [SWF( backgroundColor='0xFFFFFF', frameRate='30', width='200', height='200')]

    public class Main extends Sprite
    {
        private var textField: TextField;

        public function Main()
        {
            textField = new TextField();
            textField.text = "Hello World.";

            addChild(textField);
        }        
    }
}

10. We are almost done! Make sure that ActionScript 3 is selected in the language dropdown menu. Press Shift+Command+B and select Build (fcsh) to compile the main class. This will open iTerm and start up the Flex Compiler Shell. You will find the generated Main.swf in the deploy folder. That’s it.


Ratmaze 2 (Flash)

Posted on Sunday 17. June 2007 by Andreas | Add a comment

Pixeljamgames – the creators of the superb Gamma Bros – just released Ratmaze 2. You are playing, well, a little rat inside a maze. The goal is to collect as much cheese and other types of food inside the maze until the time limit runs up. Each time you collect a food item your score increases and you get some extra time as a reward. The tricky part is that you cannot see the complete maze all at once. You can however choose to enable or disable scrolling in the settings of the game. (Enabling scrolling makes it a little bit easier since you can see which rooms adjoin.) As a secondary task you can also try to collect the bonusletters R-A-T-M-A-Z-E hidden in the maze which involves some physics-based puzzles with marbles. Give it a try, it’s a very nice game to play on a rainy sunday like today.


Rhythm Heaven (GBA)

Posted on Sunday 10. June 2007 by Andreas | Add a comment

The most games I currently play on my Nintendo DS are actually GBA games. So, why am I living in the past? Basically because the GBA has some very original titles. Well, at least in Japan. One of these wonderful games that you can’t buy in Europe or in the US (for whatever stupid marketing reason) is Rhythm Heaven. It’s essentially like Wario Ware except that you have to press the buttons in rhythm of the music instead. It’s a simple concept that will keep you entertained for quite a while. There are six varied stages with five levels each and a remix level at the end of each stage. The music is ingenious and catchy in a way that it makes you sing-a-long. Forget the music games you have played before, this is the real shit!


Qwak (GBA)

Posted on Sunday 3. June 2007 by Andreas | Add a comment

The platformer Qwak was first released in 1993 for the Amiga (and later for the CD32) by british developer Team 17. This great little gem shares it’s game mechanics with arcade classics like Bubble Bobble or Parasol Stars. It’s super-fast and pretty damn hard. Unfortunately at the time it came out the Amiga was already on it’s way down, so a lot of then Amiga owners will not have played the game. Which is a shame because Qwak is one of the best playable Amiga games out there. The good news is though that the game’s designer James Woodhouse has ported the game over completly to the Gameboy Advance. There are only 300 (homebrew) copies of the game, so make sure you order it for £15 including shipment as long as it’s available. And if you don’t believe me that Qwak is that great, download the demo for your PC first.


Cave Story (PC/Mac)

Posted on Sunday 27. May 2007 by Andreas | Add a comment

So … I try to get in the habit of writing some sentences about one game that I like each week. Let’s start with Cave Story which is a free Japanese platform/adventure game for PC and Mac developed by Studio Pixel.

In Cave Story you are playing a young boy who wakes up in a cave but by mischance cannot remember how he’d got there or who he is. While exploring large underground areas and talking to unique characters you unfold the weird but still enjoyable story. You’ll need good reflexes and button-smashing qualities since a lot of baddies seek your life and it can get quite hectic especially later in the game – not to mention the very challenging boss fights.

Overall, Cave Story delivers so much more than you’d ever expect from a freeware game. The cute graphics are lovely, the controls are accurate and the soundtrack adds a lot to the atmosphere of the game. All the details are perfect. Go and download it now if you have not already played it.