Where am I now, compared to 8 months ago? I’ve been so focused on the demo for the last two months, that it’s been difficult to see the bigger picture. The reality now is that I need to take this game from a demo to a finished product. Writing games is great, but I have to make sure I can continue to support myself doing so.
Up to now, I’ve been primarily focused on a console strategy. I’ve always seen the PC version as a backup plan to explore after the console route failed (if it failed), but I haven’t invested too much thought into it. While I am still heavily pursuing it the console route, I believe I need to prepare the alternative options. The most important goal is completing the game, regardless of the platform. Even if/when I become a licensed developer, the work required to complete the game doesn’t simply disappear. I have been so focused on producing a solid demo that I have lost sight of this point.
The demo has helped me concretize the direction of the game. Actually, it forced me to pick one, and I think it’s turned out well. I am happy with the choice; it offers me lots of options, and I believe I can build an interesting game around the core concepts.
In August, it will have been a year since I quit my job. I promised myself that by then I would have a clear picture of whether I can continue to pursue this path. I.e. whether I can earn a living. The next 3-4 months will be my biggest test yet. Now it is time to focus on the end-game for this project
Work Done Last Week
I spent a day or two recovering then turned my attention to refining the PAX demo for the IndieCade submission. I improved the level, cleaned up some texture, tweaked the camera system some more.
The camera system is going to be replaced by a better system using triggers to allow a better framing of the view I want to present to the gamer at any given time. I thought I could get away with free-form system I have now, but it’s not very intelligent and doesn’t guide the player properly. Using a more designer-controlled system will allow me to better guide the player. I wanted this new system in the demo but I couldn’t find enough time to implement it and setup all the appropriate triggers.
I started cleaning up a lot of the hacks that were put in during the demo rush. I also improved the build process, adding a master build, and automating the generation of new test builds. It gets tiring rolling everything by hand 20 times in the same evening.
Finally, I submitted the IndieCade demo late Friday evening.
Work Planned This Week
I will review my plans for the game and my development schedule. I will also strip down the current design ideas to a core set and estimate the backlog of work left to do. I will attempt to balance this against my August target.
I’m also beginning the hunt for a dedicated artist. I will discuss this further next week.
I’m doing various cleanup activities in the code, adding some polish, and looking into some performance issues I have run into. My demo level is three to four times larger than anything I’ve tested up to this point, and I encountered some interesting performance bottlenecks which I need to address ASAP. As physics-based game, the “feel” of the game starts to change as soon as the frame rate drops below 60 Hz. Since I may release this game on the PC, I also need to find a way to elegantly deal with a drop in frame rate without affecting the game play.
This is the second “catch-up” diary discussing the development of the PAX demo. The first can be found here.
One of the most challenging aspects of getting the demo ready was obtaining the demo art assets. I work alone, and I am constrained by what I can spend on artwork. I didn’t want to commission paid-for work just for this demo so my options were limited. I turned to friends for assistance in the art and audio areas.
My art needs were mostly addressed by a talented friend who must remain anonymous for the time being. But he knows who he is. He went out of his way to help on multiple occasions. I could not have gotten the demo done without him. He also showed me the ropes on Photoshop so that I could learn to tweak individual assets on my own.
My audio support unfortunately fell through as the deadline approached forcing me to scramble to find an alternative. Unbeknownst to me, it turns out that the missus is actually a decent pianist and composer. She crafted a simple but surprisingly good track for the demo level. And for sound effects, well, it turns out that for certain sounds, it’s pretty easy to simply create them yourselves. Also, sfxr can be a lifesaver.
Big thanks of course to everyone who helped me test or offered feedback: Dave, Tom, Paul, J., Rudolf (of Dyson fame), Andy, Sascha, and my brother K for staying up to all hours to help me test the last few niggling bugs.
Work Done Two Weeks Ago
This was the big crunch to the PAX demo, and I added or improved a bunch of areas. I added basic animation support. I improved (and simplified) the scoring system, improved the Help system, and the audio support.
I fixed a long standing issue with the jump system. Previously, the player could jump off any static surface, which meant they could easily reach any point in the level, or “stick” to ceilings by jumping against them. Now I’ve refined the surface detection to limit these surfaces, and also allow the player to jump off dynamic objects (prior to this, you couldn’t jump from a stack of rocks piled on the ground). This functionality may seem straightforward – it usually is – but it was complicated due to the continuously changing shape of the avatar.
I added a lot of polish, improving the load screen, the pause screen, the player controls.
Most importantly, I designed the demo level, white-boxed it using simple physics shapes, and textured it up completely. I also added all the goals, help trigger areas and resources.
What followed then was an endless cycle of testing, iterating and improving.
I also encountered a ridiculous issue with Windows and the recognition of the Xbox 360 controller. I’ve been using SDL for my gamepad handling, but there doesn’t seem to be standard button mapping. Hoping to limit variability, I’ve made the 360 controller the only officially supported one. Of course, that wasn’t enough. Depending on which service pack you have installed on XP, whether you’re using Vista, or whether you’ve installed the Xbox 360 drivers, the controller will be reported with various different labels. It was first confusing, then frustrating when each tester came back with similar complaints of the button mapping not matching up correctly.
I got this under control at the end, but I need to find a more effective way of addressing this.
I also added a ton of homemade sound effects, captured using my laptop, audacity and my Rock Band microphone. It worked surprisingly well. The music was captured the same way off the electronic piano in our living room. I’m happy with how it came to be quite honest. I expected a lot more “noise”, but instead, I didn’t even have to apply a filter. That’s a ringing endorsement for the Rock Band mic in my opinion.
This diary and the next are catch-up entries for the two weeks that I missed. I will go over aspects of development related to putting together a demo for PAX 10.
The PAX demo was marked with heavy crunching, including a blistering week-end of activity right at the deadline. I hate working like that. It’s one of the activities I object to the most in the industry, and one of the main reasons I left traditional game development. And here I am, making the exact same mistakes.
Of course, I try to rationalize things to myself: It was my first big demo. I wanted it to look as best as possible, to get every last feature in. I didn’t want to kick myself later on for not getting certain features in, which might have made the difference between being a finalist, and being rejected.
But I know myself. I crunch because I am lazy at times. I’ve discussed this personal trait before. I tend to leave things late and excuse it by saying I work better under pressure. In the end though, it’s simply lack of discipline and planning.
I’m not going to beat myself up over it though. I’m pointing it out here in an effort to avoid repeating the same mistakes and to learn from it. I am happy with the result, just not how I got there.
The one decent rationalization I can make is that I didn’t force anyone else to crunch along with me. Still, that’s not entirely true. My crunching affects others, not least of which are my friends and the missus, although they probably enjoyed having a break from me. A silver lining perhaps?
I will continue to address this issue. These are not the working conditions that I want to set forth for my company or myself (especially since I love my free time).
Work Done Three Weeks Ago
I finished implementing my help system, save for a few bugs and visual display issues. It’s a simple system that displays hints as you move through different triggers area, and will need further improvements, but it fit my needs for the demo.
The camera was also improved and it now tracks the player smoothly (no more jerkiness), and zooms out nicely as the player grows in size. Again, it fits the needs of the demo, but I have plans to replace it with a different system (which I’ll discuss in another diary).
I continued to improve some of the new systems I have put in place, adding better level editor support as I go along. The player control system continues to improve.
I spent a while debugging my collision detection system. I’m using box2d to track when the player enters specific trigger areas. For whatever reason, I am constantly losing contact points. I spent a good while trying to address this and I have a solution that can at best be described as a compromise, and at worse a “complete hack”.
I finally added keyboard support for the controls, as requiring an xbox gamepad was limiting my selection of testers. My worry was that it would be awkward to control on the keyboard, and of course, it very much is. The lack of analog inputs makes the character (and the shooting) difficult to accurately control. I’ll have to give it another think.
Actually, I’m just in the process of wrapping up my Indiecade submission, but I’ve been meaning to post this for a couple days (sorry for the lack of updates in the meantime).
The PAX deadline was this past Saturday at 11:59pm, Pacific time…which is 9am my time. So that was a fun week-end of crunch. Ended up not sleeping that evening/morning, and then decided to make the most of the day. It was a very satisfying experience to finally got a decent build together (and delivered on time).
So, I’m wrapping up this submission, and then I will return with some thorough updates in the next few days.
I’m skipping the regular update this week due to time pressure, but I’ll be back next week with two week’s worth. Don’t worry, I’m keeping notes. Here’s a preview:
Last week: worked on the demo.
This week: working on the demo.
Indiecade announced on Friday that their deadline was extended to May 15th, giving everyone another two weeks to submit. I actually have only one extra week to improve my demo because my next deadline is PAX 10 (May 9th 2009). The stress is still on, but it’s weird working so hard towards a deadline and having it pushed back — a mixed blessing really. You have to keep pushing hard for longer, but you also have more time to polish, to tighten up the graphics on level 2, etc.
I’ve noticed a certain degradation in my code quality the last few weeks. I still document my code, and clean it up before checking in, but I’m also leaving a lot of areas unfinished, and doing a lot less refactoring. There is an increase in code duplication, and a little less care going into the design of new classes and systems. It’s not that I don’t care. On the contrary, I’m almost obsessive compulsive about these issues, but I know my time is limited. I can afford to cut some corners as long as it doesn’t sacrifice the stability of the game or the simulation. One thing is for sure, I’m still tagging my code with “todos” everywhere that is appropriate. If I graphed the amount of “todos” in my codebase on a timeline, I imagine it would neatly line up with my stress level.
After these deadlines, I will need a good week to go through my code and fix up and improve areas that need it. For the time being, I’m focused on the exterior presentation.
Update: Oh, and my hometown hockey team won their first playoff series in 10 years last night. I’ve been losing a lot of sleep staying up watching the games, but it’s all worth it.
Work Done Last Week
I added shader support, and experimented with some visual looks for a day or so. Still, I had to drop this idea for the original deadline. It isn’t yet working as I would like it to, and there are more pressing issues to address. With the extended deadline, I may look at re-introducing it soon.
I improved the audio support, adding some sound effects, and starting to extend the framework. Once you start adding some audio, you start seeing all the other “events” that are missing audio. A mini-Pandora’s box. The audio effects I have right now are still placeholders, and I’m working on acquiring some original stuff.
I did a lot of work on a help system. I’ve been trying to set up a dynamic system that provides useful info to the player without impeding their view or progress. It’s taken me a couple days to set up, thanks to an annoying bug that I spent two days fighting (while implementing countless potential solutions). My final solution isn’t a hack per se, but it’s god awful ugly. But when your back is up against the wall…
The control scheme is also improved. Based on user feedback, I’ve been experimenting with a simpler system, and it seems to be more effective. I’ve yet to get the new system player tested, it’s still in flux, but I’m looking to get some feedback on it this week.
I didn’t do any administrative tasks. As expected I ran out of time.
Work Planned This Week
This week, I’m focusing on the help system, the camera work and level design. The deadline extension gave me a little reprieve — time to collect my breath before diving back into things.
The help system logic is 90% done. I’m trying to layer the help around the current focus of the player (inspired by the way Everyday Shooter did it). You can easily ignore it if you don’t care about it, but it provides useful information to first time players. Or at least that’s the plan.
I’m unhappy with the camera I currently have in place. It was a quick hack for the time and has no state tracking (ie, it is unaware of its previous action, current velocity or acceleration). I want to add some better tracking and smoothing mechanisms, and some dynamic zooming to better frame the scene.
On the level design, what can I really say? It’s a hugely important area, and my focus is having on killer level for the demo. A lot of work and iteration lies ahead.
Lastly, I’ve been jumping from one area to another, leaving things mostly unpolished. I’ve been trying to constantly address my biggest risks, and I’m hoping to have enough time to come back and bring everything together.
Yup. Crunch time. Lots and lots to do, so I’ll keep it short this week.
Work Done Last Week
I fleshed out the audio manager a bit further, but then had to put that on hold. Still want to get back to it, but the very basics are done, and other areas need my attention.
I improved some more gameplay visuals, adding a basic scoreboard (which will probably change again), and made various visual tweaks, trying to provide useful feedback to user actions, but in a subtle manner. I don’t want to simply add more text and graphics to the user interface, not just because it’s a clunky way to solve a problem, but also because it’s annoying and tedious (for me to implement).
I spent a big portion of the week adding support for a game idea I’ve been toying with. I had to make a few core changes to the tech, and add support in both the object and level editor. All in all, I’m pretty happy with the base system I have in. Adding new features is becoming easier. This new feature will add
Work Planned This Week
I’m adding shader support today (technically, I already added it on Monday), and I have this cool post-processing effect where I desaturate parts of the world. I’m experimenting with color, and color contrast. The more I progress in development, the more I want to play with the visuals. However, time is tight, so this will go on the back burner.
I am switching to “production” mode for the final days of the push. By this, I mean focusing on producing an improved set of levels, and focusing on polish, balance and iteration. I will still continue to add to the codebase, but no new tech. Audio support, gameplay support and a couple other areas need improvement, but I am no longer experimenting in that area. It’s pure implementation.
I’ll be reviewing my task list, to make sure I’ve got every area covered and that I am focused on the highest priorities. It’s inevitable that I’m not going to get everything I want into the demo that I hoped for, but it’s a matter of being practical and tactical. I will focus on the fun first and foremost, and then polish.
Also, given time, I’m going to do a few administrative things, such as setting up a master build, preparing a basic site for the game, some media.
One of the things I’ve done recently is to keep the game as simple as possible. I’ve spent a lot (A LOT) of time brainstorming, designing, testing out ideas, trying to come up with cool concepts. Many interesting ideas have come up – almost too many. It got to the point where I didn’t know what I wanted to do. I was paralyzed by choice.
This was about a month or two ago. Since then, on the advice of people close to me, I started simplifying. I stopped focusing on making the absolute best game, and just focused on making a game. Start small, start simple, and then go from there. Get the absolute basics going, and build from there.
So that’s what I’ve done. Right now the game is a simple platformer: collect resources and reach the exit in the level. Nothing particular complex about that, but it got me moving. Now that I have a simple game framework, I am free to continue experimenting. I have lots of little ideas, and a couple major ones.
One in particular has resurfaced in the past week, triggered by an interesting piece of feedback. The simple game is too simple. It isn’t clear to the user why he needs to collect these resources. There’s no payoff. There doesn’t appear to be an aim to the game. So I’m trying to address that in several ways. I want to explore how the user can affect his environment through their actions.
I have a few more days of pure development time available to me (before I switch to content production and polish), and this is one of the ideas I am experimenting with. It has the potential to add more depth to the game, in a cool way (if executed correctly).
Work Done Last Week
I spent a while drilling down on some of the feedback. The useful feedback covered several areas, from aesthetics and user interface to gameplay and level design. Some of the feedback was universal as well: the control scheme is awkward and unclear. It also isn’t always clear whether a user action is working.
I added basic support for audio, writing an audio manager and incorporating SDL_mixer. I chose SDL_mixer over FMOD as it seemed like the simplest interface to implement, but I’d like to move to FMOD when I have a bit more time (primarily for their excellent cross-platform support).
I worked on the level progression logic, the home screen, and the code to tie it all together; boring but necessary work.
I’ve done a bit of work on improving the gameplay, fixing some bugs, and improving the visual feedback. It’s still not perfect, but it’s getting there.
I didn’t progress far enough to put a new build together, but I’m working on one, and will be sent out soon.
Work Planned This Week
There’s a lot of work ahead. I will continue working on the audio, adding audio effects. I have interesting things planned for the audio, but I don’t expect to be able to implement more than a basic system by the submission deadline. I hope to discuss these ideas at a later time.
I will also experiment on the tech for the game idea briefly discussed above, as well as a couple other smaller ideas. Hopefully a few of them will stick and be included in the demo.
I will continue working on the Help system and polishing the gameplay.
To continue to push the game forward and keep things rolling, I’ve decided to submit to IndieCade and PAX 10. The deadline for IndieCade is April 30th (with PAX following up a week later) so the clock is running. Shouldn’t I wait till I actually submit to announce this? Yeah, maybe. There’s a chance I won’t get it done, or won’t be satisfied with the quality and not submit, but I’m putting this up now so that it’ll be harder to back out of the commitment. A little bit of added motivation.
I’m going to do everything in my power to produce a fine demo for the deadline. I’m currently reviewing what is lacking in terms of gameplay and production values. Things that immediately pop into my head are audio, menus, gameplay structures, visual feedback, more levels, overall level structure, fresh artwork, and lots and lots and lots of fine tuning.
There are many areas to address, and I’m still putting a list together, but it’s obvious there’s a lot of work ahead.
The feedback process last week is going to be on-going for the next few months. I am now committed to producing weekly builds, and exposing the game to a new set of people every week to keep bringing in useful and fresh feedback.
Work Done Last Week
I made major progress on multiple fronts. I poured my energy into producing a new demo. I didn’t finish everything I wanted to put in the demo, but I made significant progress.
I designed a set of scenarios, prototyped them, and then built a test level around them. This was the first major, real-world test of my tools and level building process. It exposed a handful of bugs (all fixed now), and areas in need of improvement.
I improved some collision code, and continued to refine the controls of the avatar.
Finally, on Saturday I sent out a demo build to two close friends (who hadn’t seen the game yet) for some fresh feedback. The feedback is coming in now, and there are many issues to address, but the game feels like it is on the right track.
Work Planned This Week
First, I will review the user feedback. Some important issues have already been raised and need to be addressed. In particular, visual feedback and user experience need to be addressed immediately.
The gameplay structures also need work. You can’t currently “die” or lose, nor finish a level. I’m starting to flesh out the design of the home screen hub.
I’m also looking into help, mini-tutorials and tips for the player. It’s not clear to the user what you have to do or how to do it.
I’m keeping it short this week. I’m putting a new build together to show to a few friends who haven’t yet seen what I’m working. This will hopefully generate some useful feedback from fresh eyes (and talented developer minds). It’s also another step towards a publisher demo.
I’m a bit nervous about putting my baby on display, but also excited. No time to worry about that though, there’s too much to get done.
Work Done Last Week
I made progress on the polish side of things. I finally implemented a new game specific renderer, and cleaned up a bunch of issues related to rendering, and there’s a noticeable improvement on visual quality.
I continued to experiment with the new features and the test level, but didn’t get as much time as expected. I spent more time working on designing interesting scenarios then actually implementing.
I also spent most of Tuesday dealing with German administrative issues, talking to advisors, dealing with business registration and exploring potential future avenues for funding.
Work Planned This Week
This week will be more of last week: continued focus on a play test demo, improving, testing and tweaking the new features, and improving the test level.
The emphasis will be on usability and clarity. I’m not going to polish just for polish’s sake, but to try to get across the aims of the game as clearly as possible. There are a lot of bugs to fix!




