«

latest

»

Orbit One Dev Diary #2: Down with the Sickness   21 June 2010

Things were going so well, and then it all ground to a hault. My body, it seems, had enough.

[1:47pm] So that "headache" turned out to be the flu. :(  Was out
of action for a couple of days, doing nothing but sleeping,
watching TV, and playing Plants vs. Zombies. Really, it was a lot
worse than I make it sound. Getting back to work slowly now ...
I'm just going to try and get the menu-game transitions working
properly.

Listening to  
Something that won’t give me a headache: Give Up / The Postal Service

So I lost two days of work, and I still wasn’t a hundred percent, but I recovered enough to do something. Being stuck at home with nothing to do was driving me nuts, so a bit of light coding was just what the doctor ordered. Thankfully, things started off on a positive note:

[1:55pm] I love it when I haven't booted up a game of mine in a
bit, start playing it, and can't help but go, "God, this is
amazing." The controls *still* feel very right. :D

I haven’t listened to Give Up in ages … such a beatiful album!

So work progressed at a slow and steady pace.

Writing quick, almost prototype-level, games is fun because you get to code all the nitty-gritty mechanics in a hacky manner, resulting in the most rewarding aspect of game design (something playable on screen) showing up relatively quickly.

Of course, at some point, the seams begin to show, and you end up with a mess.

[11:16am] Menu/game transition working, but not pretty. Working
on allowing players to jump in, mid-game. Want this to be a very
social experience. This is going to be tricky because of the
hacky way I coded things ... didn't anticipate things like player
1 & 4 playing but not 2 & 3, ie: non-consecutive controller #s.

Listening to
Just a quick song to get me going: Cecilia, by Simon & Garfunkel

Ouch. Thankfully, it took me all of 20 minutes to sort that out. On that note, perhaps now is a good time to dispense some random prototyping tips.

Random Prototyping Tips

Use version control. As you come up with features, break them up into small, attainable tasks. Write it, test it, and commit it. How small these tasks are and how often you commit them is up to you. For Orbit One, I would commit code once or twice a day. Version control allows you to roll back changes when new a feature just isn’t working out. It is also helpful when you’ve unwittingly broken the code, you can either check the diffs or roll back the changes.

Use constants. We all know that magic numbers are bad, but they’re especially detrimental to prototyping. If you hook game mechanics up to constants, you can tweak their behaviour very quickly. When you’ve just implemented a new game mechanic, playing around with its constants is a great way to get it “feeling” right. Constants also help during the balance and testing stage of development. Just make sure you don’t go overboard adding constants everywhere, “const-ifying” your code should come naturally, and should not add significant development overhead.

Don’t worry about performance. When implementing a new feature, just get it up and running quickly, and worry about doing it “correctly” later. Sometimes you’ll implement a feature, and minutes later you’ll realize that it doesn’t work within your game at all. The faster you can put stuff in and pull stuff out of your game, the more you can iterate on the concept, and the better your game will become. “Fail early, fail often” is the motto that gets thrown around often.

With a bit of warm-up coding done, and infrastructure laid, I was ready to get back to doing real work. Sickness or not, this game had to get done!

[8:52pm] Pickups, enemies work nicely. Only did three of each,
but it seems like enough. Really trying to strip away the extras
I've been stuffing in here. Now working on spawning stuff into
the world, building up the pacing, etc.

It became aparent at this point that I was running out of things to do. I hadn’t given the game a real top-to-bottom testing for a while. So I did that and, well, the notes went on for a bit:

[9:46pm] game flow / spawning works now. Finally got to play
through a couple of games start-to-finish. Needed a bit of
balancing, but it feels (mostly) good now. A couple of concerns:

- the beginning of the game feels too easy, and the end too
hectic. It needs a bit more balancing, but I'm worried about it
going too far either way.

SOLUTION: need to do testing with "real" people. I'm going to put
all the balance related stats in one place in the code so I can
balance this stuff easier.

- related to the above, the world gets very packed, leaving
little room to fly ... you know, the fun part! I'll need to make
the world a bit bigger. The game currently runs 800x600, I think
I can jack that up to 1024x768, and just make the world bigger,
without changing much else.

- with regard to both of the points above, I'm unsure of how
this'll scale to more than one player! will I need more pickups?
less? will there be space to manover, even in a bigger arena?
how will the hiscores scale (or should i have seperate tables?
or no tables at all?)

SOLUTION: quantity*1.5 for numPlayers>=3 ?

- finally, I'm think the consequences of death might be too
light. At the very least there needs to be a 2sec sit-out
penalty. I'm considering lives for the first time, 8 lives
per-player. But I think that breaks the spirit of the
pick-up-and-play mandate for gamma4, and frankly, I think it's a
bit of a lazy solution. It makes a lot of sense for single
player, but not multi. I want all the players interacting with
each other for the entirety of the game, it's always frustrating
when I lose all my lives first and then have to sit out the rest
of the game! :) 

SOLUTION: a very simple one, each death subtracts a point off
your score. I'm not normally a fan of this ... I don't like
taking away points I've already awarded the player. However, I
think it works here because it makes the rules simpler (ie: only
one var to keep track of now) and it makes the game more
competitive ... you kill someone out of spite/revenge now, not
just for your score. :)

It felt like I was almost done, yet there was still so much to do.


leave a reply