I decided to take part in this month’s Game In A Day. It really ended up Game In Three Days, but, I mostly followed the rules – it’s 24 hours of game development, though it can be spread over two 12 hour days. I did three, because after the second day I still had time left over. The first part here is a semi-running log I kept of how things evolved. It’s probably a bit boring, but, there’s a screenshot and better information below that…
— Game In A Day: Boulder Panic! 3 —
Woke up way late (like 1 PM) and ran around getting stuff done for a bit. Finally settled down to start in on the game around 2:30. Decided to do Boulder Panic! 3 in 3D using Torque. Popped open MilkShape, and away I go. While I have to model everything from scratch for BP!3, I do also have a cool upside – all of BP!’s objects are very simple geometric shapes for the most part, faceted gems. Makes life much easier.
3:17 PM: I hate brain farts. I’m setting here, and I’ve modled like 9 of items (no texture), and suddenly can’t think how to model what the Gold should look like. Sheesh. Heck with it – make it a box, and move on J
3:22 – fire up PhotoPaint, and start making textures. Most of the objects are simple flat textures with an emap, just to make things simple.
4:13 PM: Texture creation complete, time to put them on the objects.
Took an almost hour break to go to the store, and fix some food.
5:52 PM: Initial modeling done – textures applied, etc. I’ll have to resize them a bit yet, but for getting them in the engine initially it’s ready. Time for Torque.
6:02 PM: Inital Torque setup. Now time to do the job of adding objects, etc.
6:39 PM: All objects show up in the engine – but emapping isn’t working, and the objects aren’t all on the same scale. Time for a little rework.
7:40 PM: All objects updated, collision meshes added (a simple box), sizes standardized, and emapping on ’em – however, the emap is a bit “intense” yet. I’ll work with these for now. That portion of the graphics is down to minor tweaking. Back to the engine side, and time to setup the initial board rules.
8:40 PM: Took a screenshot – game level starts up, looks kinda cool so far. It’s not playable, and it’s just a random level at the moment.
9:33 PM: I made some interesting game decisions – initially, the plan was for the player to be able to rotate the playfield around a center point, but for testing I left the default Torque player in place. As I started walking around the level, I realized… this is COOL. I’ve never seen a puzzle game played from the first player perspective before. Slick feeling idea. I restored the default crossbow, cranked up the velocity a bit, and now you shoot out the items you want to collect. Collecting an item works, and you get score – but nothing happens with the simulated gravity (this doesn’t use Torque’s gravity or physics really, just simulates ’em.)
11:00 PM Got my wife off to work with supper, etc. (She works third shift). Having some problems with my gravity system. The bug is driving me nuts, so, time to task switch to a slightly different area, and get the initial loading and setup for a game done, so that the player spawns in the right spot, and the level is setup as you come in. Trivial, but it needs to be done. Next I’ll handle the chaining routines (IE – checking that when you grab and object, any joined objects of the same time will also be removed.) But first – a quick run to the store to grab caffeene.
11:45 PM Back from the store, and a very weird set of conversations with some people I met along the way. Doesn’t matter what city you are in, there’s always some weird people to be found. Back to work.
11:59 PM Ok, now the gravity works properly for straight-down falling. Cool. The player also spawns in the right place, and the level auto-creates when the mission loads.
12:31 AM: So I start in on chaining, and realize that 1) Chaining collects in a 3D environment is a lot harder, and 2) It sucks from a player point of view because you have no idea what’s being collected sometimes. In BP! (1 through 2: DX) the rules have been very consistent – chaining is done to all objects of the same type that are touching. These could be HUGE amounts of items that get collected spanning the width of the entire level at times (Those are impressive collects 🙂
1:52 AM: It’s now almost fully functional. I went ahead and did the same collect system as the original BP! – this will make life challenging for the player on levels that are poorly designed. There’s still a couple of bugs in the collect system though – gotta get those worked out.
3:30 AM: Called it a night. Took a screenshot – at this point, I’m pretty happy with it. It plays properly, the crossbow is gone (but I’m still using the default player, it’s got some minor effects when grabbing gems, and most game rules are in place.
10:30 AM: Started again. Immediately jumped in and fixed a bug in the collect routine – it works perfectly now. Started in on the functionality for when an object comes to rest (boulders, gold, and silver need to check to see if there’s a gem under them – if so, they need to go crunch.) Also need to modify the collect to make gems disappear better – they explode riight now, but that’s not very pretty. Gravity isn’t completely right either, so I need to tweak it a bit too.
12:35 PM: Wow that took a while. Had some serious issues with getting gems to be crushed properly – basically, I made multiple typo’s, and had a hard time tracking them down. Now you get the cascade effect when you make a mistake – heavy items (gold, silver, boulder) fall down crushing the gems along the way. It’s great J
1:30 PM Taking a break again, to go do housecleaning, etc. My mother in law is coming tomarrow (no – don’t feel sorry for me, she’s a great lady)
3:30 PM Back to work. Added the Wall objects, adding the explosive barrel (TNT) item, which makes for a lot of fun when you have massive chain explosions 🙂
4:50 PM And back to house cleaning. Then went to see The Day After Tomarrow. Directors and fx guys have a strange idea what a big tornado is, or what they look like. Most of the people in the theater weren’t that impressed with the tornadoes, I think (Twister did it much better)
10:00 PM: Back to work.
10:25 PM IRC died – there goes the GID support group J Working on the in-game level editor now. Building 3D BP levels is an interesting challenge all it’s own. But, I’ve got it so you edit the same as you play – in first person.
10:35 PM Part of the GID was being connected to the IRC group to chat. Well, IRC is still down. Decided heck with it, I’d go screw around (play Half-Life) for a bit then if it’s not up by 11:30, I’ll go ahead and start working again without IRC.
Said heck with it, and went to bed.
11:30 AM, next Day – going back at it. 6 Hours or so remain.
12:33 PM Level editor works. File format saves, now writing the load file stuff. Highly ugly file format – just a quick header to say what size the level is (and one line for future stuff), and the a dump of the level.
1:37 PM Well, it saves levels and loads levels… and is buggy as hell at doing it.
8:00 PM After a BBQ, etc. I’m back to work. Prior to that, I had gotten save and loading working perfectly, and editing working fairly well, but it could be improved upon considerably. Collisions between the player and the playfield objects are enabled, and even a little humorous – instead of just applying the velocity reversed, I tripled the velocity, then inversed it. Kinda funny.
Worked for about an hour, and called it good.
— End Log —
Ok, now for a screenshot – reduced and looking hideous of course, but it gives you a good idea what it looks like when I describe it a bit more below.
So what’s the final status of that game? Pretty playable, needs some tweaking and some new particle effects done (rather than the default Crossbow explosion), needs a new player model (OrkBoy doesn’t cut it for the long term), the textures need more tweaking (while the gems are translucent and emaped, they have no ‘volume’ discoloration, making them look a little wrong to the eye – easily fixed, but I didn’t focus on that during the GID), the UI needs ripped out and completely replaced, levels need built (which is an interesting challenge when dealing with a 3D puzzle game), and the Par (score you have to beat) will need to be set for all the levels. That may sound like a lot of work – it isn’t really. Less than 30 man hours would easily finish the job.
What about the experience of GID it’s self? Well, you’ll probably find me logged into IRC most of the time now. One of the fun parts was chatting with everyone else who’s also doing the same thing at the same time, swapping screenshots, etc. There’s also a different mindset – you’ve got a much shorter dev time to work with, and you know it, so you pick your battles very differently. If you want to build up your portfolio, this is one way to do it – either for freebie downloads, or sellable games (though for either one, I’m certain you’ll need to throw in more time after GID – 24 hours only gets you so far.)
As for the game it’s self – it was surprisingly cool to work on a Boulder Panic! game again (I have released 3 for sale versions of Boulder Panic! (1, 2, 2 DX) and 2 freebie versions (The Challenge, and Christmas Bonus when I didn’t get one) over the last 5 years) Best part was that I did something completely new (as far as I know) – Boulder Panic! 3 is a first person puzzle game. As in, you walk around the puzzle, sometimes inside of the puzzle to solve it. It freaking rocks! And you’ve got to think very differently to solve a 3D chain in BP! 3 than the old 2D version. It’s cool. And, well… I’ve never seen it done before, so I actually feel like I innovated a bit, which is really cool (I’m sure after I say that, someone will point out that it’s been done before, and link to a game. Oh well 🙂
I’ve already figured out what my next couple of GID’s will be. Tom, Phil, Nicolas, and a couple o’ other people were discussing doing GID once a month – that’s about perfect for me. If you thought GID sounded like an insane idea – it is. But it’s great! 🙂
Things that went wrong – you’ll notice multiple gaps in my timeline. Well, I had to get other things (like, real world things) done from time to time. That cut into my ‘groove’ at times, reducing the efficency at which I worked. And if I wasn’t so focused on doing it all myself, teaming up with an artist would have allowed me to focus more on the programming side, rather than doing artwork at the begining and having to tweak it from time to time. I also probably spent TOO much time chatting on IRC at times, but I think it was a worthwhile part of the experience, so I can’t completely count it as a negative. I also had some stupid bugs – one that cost me over an hour was that I had %x %z %y, rather than %x %y %z – it was sutble enough that I glanced right over it, and the engine didn’t complain. It points out to me that I need to improve upon my bug thwacking skills some more (which is another great benefit – by logging your time a bit, you get a better idea what you strong and weak areas are)
Of course, I’m back to working on other things – namely the contract project(s) that I’m doing. That’s some pretty interesting stuff really – working with Torque vehicle physics. Absolutely nasty and cool area to work with. But, that’s something for another .plan… 🙂