Archive for September, 2008


No One Said it Would be Easy

First of all: Avast! Happy Talk Like a Pirate Day, ye salty sea-dogs! As temptin’ as it may be to write me whole post like the vicious pirate I be, I’ll not be subjectin’ ye to such tomfoolery!

Yes, it is September 19th, AKA Talk Like a Pirate Day. So put on your best pirate hat, eye patch, and call someone a “scurvy land-lubber” today!

With that out of the way, on to more serious business…

When I started this development blog I promised that I would be open and honest about the challenges that I’d encountered throughout the process of creating this game. This week has been quite a challenge, so I wanted to talk about why.

If you start reading about starting your own business, a lot of the books or resources out there will mention as an aside “oh, by the way, you’ll be working alone a lot of the time, so make sure you’re OK with that.” The thing is, no matter how many times you read that and say to yourself, “yeah, that’s cool”, you’re not really prepared for the reality of this.

I’m a pretty social guy. My friends would be the first to tell you that I like to talk. I’m starting to find that working by myself all day is taking a bit of a toll on me. I’m talking to the cat more and more, for example. One of the things I really enjoyed about working on a large game team, at a big company, was the social interaction with the other members of a team. When I hit a wall while programming, I like to be able to talk it through with another programmer. Now, I can kind of do this over instant messaging, but it’s not the same.

At any rate, I’ve decided that I need some kind of social hobby in my life. I need to find a group to do things with, so I’m thinking of joining a photography group, or something like that. Something that will get me out of the house at least once a week or so and let me interact with other people.

The other thing I’ve noticed, is how easy it is to forget to go outside. There will be days where I’ll suddenly realise that I haven’t left the house for two and a half days. I don’t usually realise this until my wife asks me why I’m so grumpy. So, mental note: find some reason to go outside and do some form of exercise every day. Yesterday I was in an absolutely foul mood until my wife called me from her work and said, “you sound really grumpy, why don’t you go outside.” I grudgingly decided she was probably on to something, so I went for a bike ride through the park near our place. I felt 1000x better by the time I got home. The other lesson here: listen to your wife.

The final challenge I’ve run into this week is one of, what I guess you’d call, “designers block”. I’ve become stuck on the problem of the end condition in my game. I now have three new ideas on things that might work, but I’ve become kind of paralyzed by the problem and I’m finding it difficult to start coding up any of them. Instead, I’ve spent a lot of time this week working on my company logo. I thought if I took my mind off the problem that I might be able to come back to it fresh. However, in this case, all it has done is allowed me to continue to over-analyze the problem, making it harder to do anything about it.

So today I’ve decided: it doesn’t matter if none of the potential solutions I have work or not. The important thing is just to implement them and see if they work. It’s the only way I’m going to get past this problem.

To summarize, the lessons I’ve learned this week are:

  • Find some way to get some social interaction, like by joining a club for a hobby you enjoy;
  • Get outside and get some exercise every day;
  • When you’re stuck on a problem, if walking away for a short time doesn’t help, then just dive in and hope that by pushing past it you’ll eventually find the solution.

That be all for now, me hearties! Yarrr!

Cap’n Owen


What a Difference a Day Makes

One of the fun things about prototyping is how much my game can change from one day to the next. This can also be a bit of a problem. Yesterday I implemented the two remaining big changes that I thought were needed to the game. By the end of the day I had them both in the game and I started play-testing the thing. It turns out the game isn’t fun anymore; I completely destroyed the balance of the game. Now the game is much too easy and there’s no longer any challenge to it.

The problem this leaves me with is the following: I still have no end condition to the game. In the older system, it was too hard and users generally lost at the same point during every game. Not only that, but the player felt like he/she had no control over the game at the end of the game. Losing became an inevitability. This was not good. However, now it feels like you can’t lose. The game has become too easy and so it feels like your actions and choices have no consequences. I’ve been reading a book on game design theory and I think what I’ve done is removed “meaningful play” from the game somehow.

In order for the game to be fun, the player must feel like his/her actions are what determine the outcome of the game. In the previous iteration, it felt like no matter what the player did, they would lose, so their actions became meaningless in terms of the outcome of the game. Now, no matter what the player does, they can’t lose, so again, their actions become meaningless.

So I’ve prototyped the two extremes: one where the player always loses, and one where the player never loses. The real trick is going to be to figure out how the heck I implement something in the middle. I’m just not sure what that is yet…

Owen



The Prototyping Continues

Earlier last week I had said that I had reached a stage of the prototype that I was happy with and that the final game would probably look quite similar to what I had. I was wrong. I showed the prototype to a friend of mine who is good at providing feedback on these kinds of things. He suggested a few things to me about how to simplify the game, as he found the learning curve quite steep.

One of the things he asked me was: had I considered allowing the player only one move per turn instead of multiple moves per turn. I admitted that I had thought about it at one point but couldn’t figure out how to make it work in the game. After our conversation I kept coming back to that one question he asked me. Finally, on Friday, I decided to just implement it and see what happened (this is what makes prototyping so much fun).

Once I had made the change I suddenly realised that it drastically simplified how I was thinking about the game. However, it exposed a slew of problems with other gameplay systems. I started making notes about what needed to change and suddenly I had a list of about 5 major things I needed to overhaul to make this new system work. By the end of Friday I had a very different game. The core gameplay is still the same, but the game feels completely different to play.

I still need to implement about 2 more of the systems changes before I’ll consider this version of the prototype in a “complete” state, but I already like it better. My wife and I had a couple of friends in town over the weekend who don’t really play video games. I had them play the newest prototype and I was amazed at how much more quickly they were picking up the gameplay than people had, previously.

I think the lesson here is: sometimes you need some outside perspective in order to make changes for the better. I was already so used to playing the game, that I was unable to see some of the difficulties that new players were having with the game.

Now, if you’ll excuse me, I’ve got a few more game systems to overhaul!

Owen


Windows Woes

Warning: This is a tech-heavy post, mostly about coding and setting up source projects. You’ve been warned.

I spent most of the last two days trying to port my prototype over to my Windows machine. I’ve been using my MacBook as my primary development machine since my Windows box has been acting strange since the move.

First I had to get Subversion installed on Windows, which was quite easy. I was able to sync down my repo and see all my files there. Isn’t source control amazing?!

This is where things got tricky. I downloaded the Playfirst SDK for Windows and set about installing it. I’m sure everything would have gone smoothly if I’d installed it exactly as it came, but my directory structure is set up to keep the parts of the SDK that are platform-independent separate, while all the game logic that is platform agnostic sits only in one place. Sounds simple enough, but it complicates things.

The first problem I ran into was that I downloaded Visual Studio C++ Express 2008. After a few hours of mucking about with the solution file and reading through forum posts I discovered that Playground only builds under Visual Studio 2005. Crap. So then I spent 2 hours this morning uninstalling all the crap that VSE 2008 installed on my machine. I’m running dangerously close to 0 HDD space on that machine, so I needed every MB back that it took from me.

Once I finally had 2008 gone, I dug around and found VSE C++ 2005. I downloaded that and got it installed. Now I was able to go back in and reconfigure the solution file to point to all the strange directory paths that I have and point the project to the appropriate libraries. That’s when I discovered that it needs the Windows Platform SDK, which doesn’t come with VS Express. Turns out Microsoft doesn’t want to make it easy for you to write C++ code, as they’d rather you wrote everything in C#. Anyway, I downloaded that and then spent 30 minutes finding stuff to delete off my HDD so that I’d have room to install it. Phew.

Finally I got the game compiling. I discovered that XCode is much more forgiving when it comes to compiler warnings and errors. For instance, I had ended up with an array of size 0 in my code. XCode was happy to let that compile, but VS was having none of it. I also discovered a bug in how I was using the STL List iterator in my code. The Mac OS was fine with what I was doing (which was something very bad), but Windows crashed and burned.

At any rate, I finally got it all compiling and running in under 2 days. Not too shabby! Now I can play the prototype on both computers! Whee…

Owen