I've been working on Kairo for over 6 months now and I've found it a difficult game to blog about. I chose the game design because I wanted something that I liked, but also something I wouldn't find too difficult to develop on my own. So what this means is that I'm not doing lots of exciting and innovative things, most of my development time seems to be overcoming annoying unexpected problems. Exactly the kind of thing I've always thought people wouldn't want to read about.
However talking to Michael Todd at GDC I realised that people avoid talking about their failures and indie gaming is presented like it's a constant stream of successes. So I think it's time I get into the nitty gritty of the problems I've been tackling. I'll cover some of these road blocks in the coming weeks but I wanted to give them some context. So I thought it's time for the obligatory "my development process" blog post. Once you understand how I make the game, the unexpected difficulties I've encountered will make a lot more sense.
Paper First
The design of Kairo is mostly about lots of interesting unique rooms. So each room starts on paper. In my initial prototyping I tried making rooms straight away on the computer but they kept coming out like very game-like boxy rooms. So I took a step back to get out of that game design mindset. I consult a bunch of references including abstract paintings and whatever I can find online, however my main reference is architectural books. From there I make a very basic sketch in my notepad. I don't need a lot of detail, that can come in the modelling processs. I just need a basic structure and outline to work with.
Modelling
Rather unsully I model the entire game in Google Sketchup. It's the easiest modelling program I've ever worked with by a large margin. I know it's often used for game protoyping but I don't think it's very widely used for final game assets. This makes sense as it's not great for everything, but for the sharp minimalist design aestheic I'm going for it's perfect. It also means basic room layouts are done in minutes and full room models are done in mere hours.
So anyway I take the sketch and try to recreate in Sketchup as best I can. Usually once I've got the basic shape on screen ideas start flowing as to how to enhance the design and give it some life beyond the simple outline. I typically don't texture in Sketchup even though I could, I just assign colours to each different surface type. Generally rooms in Kairo only use around 3-4 different materials so it's not complicated.
Engine
From Sketchup the models go straight into Unity. I throw in the basic Unity "First Person Controller" along with a few of my global scripts and image effects and the room is instantly playable. There's a level of iteration with Sketchup as I make sure everything is the right size and the room can be navigated as expected but that doesn't take long.
To get the visual style of the room right I first throw in some point lights to give the room some life. Then I adjust he basic colours from Sketchup and change them to textures I want within Unity and scale them appropriately. Then I choose a tint colour for the lights that make the room "feel right" and the most basic non-interactive version of the room is done.
Scripting
Now I need to hook in the actual gameplay. Rooms in Kairo are either puzzle rooms or mood rooms. The mood rooms are just there for exploration aspect of the game and act as a bridge between puzzle rooms. For these mood rooms all I need to hook in is the door scripts and they're done. For the puzzle rooms there's obviously a fair bit more work.
Most of my puzzle are coded using invisible cubes working as triggers which are in co-operation with Unity's animation system to make the room change as neccesary. In all honesty I try to do as little coding as possible and generally Unity is flexible enough to do allow me to do most of this without relying on code.
Lightmaping
The very final phase for a room is lightmapping. Once the room looks and feels right and the scripting is all in place all I need to do is the final layer of polish. Unity 3 includes a great lightmapping tool that allows me to take some very flat looking rooms and give them a huge extra dose of atmosphere.
Conclusion
So that's it. In thoery these simple steps allow me to make rooms for Kairo really quickly and easily. In fact this all went so well in my prototyping phase I was convinced I could have the game finished in six months. However of course that was rather optimisitc. Next time we'll start to see why.
Great news :)
I'm glad to finally hear some more news on this project.
"Mood rooms" is definitely something the industry needs more of, even if you're convinced that you're not doing "lots of exciting and innovative things".
I'm excited about it.