Postby Chris » Tue Aug 03, 2010 12:32 pm

Yikes, part 20! This is starting to get serious now. I’d actually been meaning to keep writing at a target rate of one Subversion blog per month, because I wanted to keep up the momentum and I think this long running blog series is a fascinating experiment in itself. But it’s a strange thing - it’s harder now than it was when I started this process. At the beginning of the Subversion project back in 2006, when I was spending most of my days on Darwinia for Xbox, Subversion was all about technology, and often involved highly experimental game development. I spent months just tinkering with procedural city generators, and the results were often staggeringly cool to look at, and therefore to show off. It made for great blog material, and was very satisfying to write about. The game itself was very thin on the ground, just ideas slowly forming into plans. Now things are different - Subversion is actually a game now. Whereas previously I might have spent a couple of weeks writing a river generation algorithm, I now spend a couple of weeks writing AI code to make guards surrender when they fear for their lives. It seems somehow much more mundane - something you can see in other games, and it’s much harder to write interesting blog material about it.Am I telling you to stop reading this blog? Certainly not, the truth is that tons of really interesting and exciting stuff is going into the game now on a regular basis - it’s just different to the massive procedural city stuff of a couple of years ago. Until we bridge the gap between the mid-game logistics-em-up in the procedural cities, and the core game in the sites themselves, there will always be a gap.Since the last Subversion blog (May 4th) I’ve adopted a new working method based on Sprints - fixed short time intervals of 1 or 2 weeks, during which time I work on a single area of Subversion at the exclusion of all others. It’s a guided, formalised way to rapidly prototype and produce working systems, perfect for a project like Subversion where there are tons of areas that all need work before even basic gameplay can happen. The rules of a Sprint are set down in advance, and bring the order to this chaos:- A sprint must occur for a fixed real time interval, 1 or 2 weeks.- The aims of the sprint must be set beforehand. Deviation from the original aims can happen, but should be minimised as much as possible.- During a sprint no other part of the game may be worked on, unless directly related to the sprint- Once a sprint has started, it has to be finished- Once the time is up, the next Sprint topic is chosen and the cycle continues.- If a Monday arrives without a clear plan for a Sprint that week, you instead use the week to plan your next few sprints, starting next week. You aren’t allowed to invent sprints in realtime.You tend to have the next 2 or 3 sprints already planned out at any one time. As you work you come up with new ideas for Sprints and add them to the queue. It’s a very satisfying way to work, because you see rapid progress in all kinds of different areas, and you have none of the stress of worrying about what you should be working on next. Working on a single Sprint gives you ideas for 2 or 3 more that could directly follow on. You also get short term goals to aim for - when Sprints are planned you are careful to design jobs that can realistically be completed in two weeks, and it always ends in a little bit of a rush on the last couple of days to finish everything you started. You know that if you don’t finish the Sprint on this last day, by next Monday you’ll be onto something else. That’s quite a motivator, especially on a project where the final end date may be a long way away. In my experience it’s actually possible to plan two weeks of work very accurately - much more so than longer time frames lasting several months, so you actually end up feeling like things are more organised and more on track than normal. Also, the two week limit stops you from going off on a crazy long tangent - you are forced to pick sensible Sprint targets, and make decisions that result in finishing during the time limit, rather than endlessly polishing and re-engineering non-critical stuff (as has happened to me several times before, I have to say).Here’s some of the sprints I’ve worked on since the last blog. These descriptions are taken directly from the Sprint plans I used:Human Rendering (1 week): People are rendered in the world as stylised outlines. Their equipment is rendered in place on their outlines, allowing the player to see what equipment and weapons guards/staff on site have equipped. Injuries are shown in position on these outlines. The outlines change shape to reflect core changes in state - eg Surrendered, Unconcious, Terrified.Future upgrades : Character animation.Instincts (2 weeks): Low level behaviors that apply to all human beings to varying degrees. Eg Curiosity, Suspicion, Aggression, Fear, Intimidation. Different entity types are more/less susceptible to different instincts. Players can mess with instincts of NPCs for their own ends. Highly intimidated/co-erced/manipulated NPCs can be controlled by the player. Player’s agents also susceptible to instincts - they are not robots. Display of instincts through colours, and through text/speech bubbles to signify intent.AI Module (2 weeks): Foundation for a Behavior Tree based AI system that will drive all NPCs higher level behaviors. Includes a tool for visual creation and debugging of Behavior Trees.This sprint was completed in two weeks, but has zero direct bearing on the game at the moment. It provides an AI framework, but no actual content - ie no NPCs are using this system yet. A follow up sprint lasting two weeks will create behaviors for NPCs using this system. I’m planning to write a more detailed blog about this AI module once i’ve completed that followup sprint, because it’s going to be awesome.Theft (1 weeks) : Some items have value, some items are extremely valuable and are rendered differently (gold, glowing). Your team can collect valulable items. Total plundered is shown visually.Complex Security Systems (2 weeks): Server rooms contain racks of hardware wired together appropriately. Camera control systems drive CCTVs around the building, recording results onto hard disks. Routers and switches connect all devices to the Local Area Network, and telephone exchanges (outside the building) wire the phones and LAN into the national phone network. Security systems power sensor grids, laser trip wires etc, and wire directly into alarms and Police auto-diallers, which are also plugged into the phone system. Keycard scanners and Keypad locks connect to central computers with access lists and logs of use. Everything can be tinkered with, rewired, hacked and cracked.Multi-track Music (2 weeks): Upgrade the SystemIV sound system to support multi-track music. Stereo tracks of differing but compatible lengths can be mixed simultaneously during the game, with the volumes, ADSR envelopes and DSP filters all adjustable in realtime depending on the game situation. A direct continuation and extension of DEFCONs ability to crossfade multiple music tracks and to alter the playback frequency based on your surviving population count, to produce an endless stream of varied music linked to the world state.This is the most recent two week sprint. We’ve got a new Audio guy - PJ Belcher - doing our music and sound effects for us right now, as sadly our previous audio hero Alistair is unavailable. The results so far are excellent - Each emotional element of the music is separated out and played on its own audio channel, and we can adjust the volumes based on your game situation. So if a guard becomes suspicious of you, we fade up a musical element to represent that. If you get into a fight, we fade up some heavy scary drums and guitar. When your guys are hiding deep inside a high security area, we bring in some tense cellos and percussion to nail it home. We’re mixing about 10 different tracks together to form the game music right now, and it’s sounding really great.This is all built on the Audio system originally written by myself and Andy Bainbridge for Darwinia, many many years ago. It was originally designed to handle the hundreds of audio events and ambiences that make up the sound in Darwinia. It was then extended to support DEFCON’s haunting cross-fading and frequency dropping music tracks, and then used again in Multiwinia and Darwinia+ on the Xbox. In fact, an earlier version of this audio engine (including the audio tool you see me using in the video below) can be seen in our Darwinia and Multiwinia source code , for those that are interesting in seeing how it works internally.Here’s a video of the new multi-track music tool in action, showing me mixing the different tracks together in-game. The music is the current early draft of PJs first music track for Subversion, designed to evoke a strong feeling of tension in the player.(Requires Xvid codec, headphones and high volume)Pretty cool stuff! I’ve always loved audio, it’s probably one of my favourite areas of game development, and I got a lot of satisfaction out of working the audio into Darwinia and DEFCON. Without the audio those games would never have had the atmosphere they have. I used to joke to Alistair that his sound effects made our animations look better - because that’s how it felt to me. Something like the Refinery building in the Mine level in Darwinia has a really simple rotating cog visual effect, but a massive reverberating metallic clang that makes the building sound huge and epic, and genuinely “sells” the animation to the eye. I’m hoping we can continue punching above our weight with the game audio on this project as well as the previous ones - I’ll probably write more on this as we progress.So the other great thing about the Sprint working method is I know what sprints are (potentially) coming up in the future. I look at this list and think I have the best job in the world. If you are anything like me, or you are at all interested in Subversion, you’ll find this list as exciting as I doNPC AI routines (follow on from AI Module sprint)Climbing and AcrobaticsComputer HackingCharacter animation (follow on from Human Rendering)World object interactionPrimary User InterfaceInventoryEquipping gearCharacterisation - differentiating Agents and their Skills/Abilities/EquipmentCity level integration : Merging the core game missions with the mid-level cityThe very next two week sprint? A much needed holiday in California with the wife . Essential to the project, I think you’ll agree.In the mean time, you can check out a two-page article in Edge Magazine this month, all about Subversion.