Tuesday, January 26, 2010

Busy, busy, busy...

I'm very busy with a lot of stuff at the moment... As a result, you won't see too many posts here from now until the end of februari ("most important things first", you know).

After that, I'll be back at full strength: First of all, my XNA game will be promoted. We need as many people as possible to play the game and fill in the survey. Currently the goal is to get at least 100 players/participants in one month. Will it succeed? To be honest, I don't have a clue. :-)

Peace out


Sunday, January 17, 2010

Why I switched from Game Maker to XNA

As you might have noticed by reading this blog, a little hobby of mine is to play around with software, with a specific interest in casual game development. For quite a long time, I used a free tool called "Game Maker" for this purpose. It's a free (the lite version anyway) tool to make games for windows. It's really simple to use; Most of the work can be done by clicking and dragging - there's absolutely no low-level programming required. But recently, I moved on and started focussing on XNA game studio instead. Read on to find out why.

1) Scalability

As with many drag and drop type tools, development speed and quality are very closely related to project size. For smaller games, Game Maker might be the top of the bill. You click "new game", and your rendering system, collision detection, level editor and whatnot are all in place. What better start could you wish for?

But then, after creating some smaller games, you move on to the real work. You want to create a game with multiplayer capabilities, a physics engine and a custom level editor. And you want to work cooperatively with a team of say 5 persons. *Dang*. The streamlined tool starts getting in the way. It's perfectly understandable; you can not logically expect a large game to sit comfortabely in the simple architecture of a tool that's designed to appeal to beginners. Whether you want to do one tiny thing that the built in level-editor does not support or you want to use complex inheritance trees or do advanced AI debugging... You'll collide with the boundaries sometime. And if you do, there's not really a way back (see point 3 below).

I know very well that creating advanced games is possible with tools like GM - Perhaps a thousand times cooler than anything I'll ever manage to put together. But from a coding/architecture point of view, I still say no. Full-scale projects require a different approach. Although you CAN make them with a tool like game maker, you're better off using something more custom. Because at one point, development will slow down, and you'll pay the price.

With XNA, I'm using C# and all possible tools to make coding easier, faster and more robust. I can architect the game code the way I want it. And if it turns into a mess, it's my own responsibility.

2) Gap between GML and professional experience

In my day job, I develop business applications in C#, using Visual Studio and Resharper. For game development, I use exactly the same toolset. I already had many moments at work where I could use something I learned during game development, and vice versa. I really like this interaction; it's nothing I'd easily give up. And if I'd choose to work with game maker and its scripting language (GML), that's exactly what'd happen.

You might say "It's better to know many different languages/environments". In another context, I might agree. But the gain of learning a specific scripting language that is used nowhere else is rather small. It's like learning a new language that you can speak only to one person.

3) No way back

Additionally, I find it hard to accept the fact that once you choose to use game maker, you're bound to keep using it. Once you start dragging and dropping and scripting, there's no possible way you can say: "Let's extract the code and move to [some completely other platform]". You have a bunch of scripts that are not meaningful in another environment. Most likely, they're not really clean and well tested either. You'll just throw them away and start from scratch, instead of converting them. While I'm quite confident that I can do exactly that last thing with XNA. Converting C# code to Java for example, is not that hard...


So let's wrap this up. In it's own way, game maker is a brilliant piece of software. Brilliant in the way it allows people with little experience to create games, have a lot of fun and learn many things about game development. Really, there's not one tool I'd rather recommend to people who are new to programming but want to create their own little game from scratch. But as any other tool, game maker needs to be used in the right perspective.

I used the learning perspective, but now I'm ready to move on. For actual development, that is. Because recently, I discovered another perspective to use GM... I still use it to create prototypes for my games. This requires some more explanation - I'll talk about this practice in a later post.

Monday, January 11, 2010

My XNA Game: Progress update

60% Complete!

Yup, that's right. I'm more than halfway done. So it's time for some more info on the game, in addition to what I wrote in this post.

The game's protagonist, as seen in this draft, is a little but slightly overweight bird. The main objective of the game is to collect as many points as possible by picking up bonusses and moving objects from A to B. You have to evade dangerous objects such as spikes, because they can destroy the object you are carrying and/or harm your bird. If you run out of health, you respawn at your birdhouse. Each level has a time limit, so you have to rush a little if you want a highscore :-).

Level 1 is set in the forest, where the bird lives. It's an easy level that allows the player to familiarize him/herself with the controls and game mechanics. Level 2 is set in the city and has an increased difficulty. The actual playing time is around 10 minutes for the two levels combined. The controls are easy: just the arrow keys and the spacebar. Sounds ok for an all-age casual game, right?

Final (?) words on the installer

I decided to go with the visual studio setup project for the installer. While not being 100% convinced of its superiority, to say the least, I had to pick something and go with it. I tested the setup on a number of windows PC's with XP, Vista and 7, and had no problems so far. The installer downloads all missing dependencies.

There's just one last issue with the installer: the setup project creates two files - a .msi file that performs the actual install, and an .exe that checks the prerequisites. This leads to two problems...
  • For the download, I should create a zip file that contains both files. This seems slightly unprofessional. Players expect to download a single installer file which they can immediately execute after dowloading.
  • The players should in some way be forced to run the .exe file. If they run the msi file instead, the prerequisites are not checked. They can install the game even if the .NET framework or XNA runtime are missing. If they subsequently try to launch the game, they'll get a very nasty error message.
A solution would be to use a zip self-extractor, that runs the .exe file after extraction. Sadly, many web resources report problems with this approach as well. So I'm well underway but not yet done with this...


As the tests have proven, the game runs smoothly without framerate drops, so that's one less thing to worry about. But there's still a lot of work to in the next 1,5 months...

P.S: Still no screenshots, since there's some heavy graphics rework being done at the moment...

Monday, January 4, 2010

Dealing with bad sleeping habits (step 2)

Read the introduction at http://bramdemoor.blogspot.com/2009/12/acknowledging-bad-sleeping-habits-step.html

 Since the day I posted that sad story about struggling to get out of bed in the morning, I took action.

This is the new way my day starts: My stereo system wakes me up for about 50% most of the mornings. Nothing new about that; in the old scenario, this was the point where I turned over again to start snoozing for a very long time. Now, it's just a final warning that allows me to turn over one last time and prepare for the upcoming horror...

Because there's no escape anymore; every night, I put my cell phone on maximum volume on the other end of the room. Even though I really love my warm bed, the TITITITITI-sound of my cell phone alarm is just so annoying that I can't do anything but jump out of bed and turn the damn thing off. So there I stand, fully awake before 7 a.m. Now that's what I call a "brute force" technique!

Let's make that my first official good intention for 2010: keeping up this new habit :-)

And if I fail, I'll install one of these:

Happy newyear!