GDC is approaching, and I’m showing Escape Goat 2. That gives me less than three weeks to get everything together, meaning I should have something pretty playable in about a week, so I can playtest with a bunch of friends before showing it to the media.
For the most part, the new systems are in place. We’re running in high resolution, lighting and shadow casting is working, even the new world layout is implemented. One major remaining bug is the squish detection, something that has plagued me since the start of the project. I changed enough of the physics system in the upgrade from EG1 to EG2 that squish tolerance isn’t working properly. This means the goat gets squished in places he shouldn’t–such as after a teleport into a corner, or from getting grazed by a falling block. Definitely something that needs to be fixed before GDC.
Last Monday I decided to dedicate two days to implementing a new method of collision detection that would ideally solve this (and a few other very minor issues that have been with the game forever). I knew it would break some things to install it, and there was a 25% chance it would break so many things that it wouldn’t be worth pursuing.
So I created a new branch in SVN and got to work. Monday and Tuesday went fine, and I was confident I could have it all in place end of Wednesday.
Nope. Testing on Wednesday revealed lots of new crashes and unpredictable behavior in the new system. Fixing squish detection broken about ten other things. I spent Wednesday working it out, then Thursday, and by Thursday night I was positively fried from the code work, not to mention scared that it wouldn’t be fixed in time for GDC.
Thursday night was a meetup with some other local indie devs, and this event saved me. Talking to other indies, forced to explain what I was working on and why I would take such a big risk this close to GDC, I realized I was going further and further down the rabbit hole of programming. If you code, you know what I’m talking about: the pursuit of that perfect system that’s going to solve everything, but requires a substantial rewrite of existing “mostly working” code.
Friday morning, I switched back to Monday’s code branch, undoing four days of work (saved for a rainy day in source control, of course). I had been afraid of rolling back because of the pain of losing four days, but after I did, I was relieved that it didn’t consume even more days. Before Thursday night, I was prepared to spend the whole weekend trying to fix it. Instead, I can take care of more important stuff (like level design).
The lesson I’m taking from this is to stay connected to other devs, and keep an eye on where time goes.
See you at GDC!