Hey, look! I'm actually talking about games!
On Conceptual Integrity
I've mentioned before how our team at Egosoft works. Basically, ideas and feedback are gathered from the community, filtered by a group of volunteers, then examined by the core team and merged with our own internal plans and concepts where appropriate. All of this is then passed on to a couple of people who basically act as the design leads, who then refine things and add some constraints to make them fit into the spirit and feel of the game. The concept is then handed back to the dev team for implementation, with certain amounts of freedom and room for interpretation.
This model is great, and works very well with the sort of evolutionary-sequel chain of games that we do. However, historically, we've had a minor discrepancy between the theory and the actual practice. In a few cases, too much leeway is given during development, and the result is that things implemented by one subteam feel and work totally different from things in another area of the game. In short, there is not enough control on the conceptual integrity of some aspects of the game - like missions, for example.
Part of the large-scale "fix our practices" initiative that has been going on involves addressing this problem. Traditionally, the inconsistencies have arisen because of poor documentation and communication between subteams; documentation is often left until after code is done, at which point it is too time-expensive to go back and rewrite it all just for consistency. Since subteams work independently for the most part, it can be a long time before two areas are integrated into a playable game build, so these discrepancies fester and are very hard to correct.
The biggest weapon we have to combat this problem is a wiki system (specifically Atlassian's Confluence package). This has so far been a tremendous success, and shows signs of making some major headway in the campaign for better practices. The policy now is that all new features and gameplay changes/improvements/enhancements/etc. must be documented and approved before code starts. By making this an explicit and strictly enforced rule, we make sure that there is always a chance to check things for consistency before the code is done and it is too late.
The net result is that we've already caught several misconceptions, fuzzy and vague bits of documentation, and outright inconsistent ideas - all before any code is written. The subteam model will still be in place, but for the first time in a long time there is an easy way to control the conceptual integrity of the project. In The Old Days, the leads could do this easily, because the team was small and basically all in the same office. As we've expanded to a three continent operation, this has stopped being practical, and communication and coordination between everyone is paramount. There are very real difficulties in doing design when you are not physically next to your coworkers, but I think we're doing a good job of addressing those problems this time around.
I'll probably have some more thoughts on the matter as time goes by and we begin seeing the real long-term consequences of some of these changes. So far, though, I think we have a very bright future ahead.
What I've Been Doing Lately
Part of this new pre-documentation kick involves finding people and subteams to actually take responsibility for different features, and work on the documentation. I've gotten paired up with a couple of interesting tasks, which mostly relate to prior work I've done on the games (missions, and user interface).
The first main goal is to unify the mission UI into a sort of "things I need to do" list. Basically, the idea is to make a kind of mini-PDA for the player, where they can track jobs they're getting paid for, help that people have asked for (distress calls, favors, save-the-universe type stuff, etc.), and even their own personal plans and ambitions. My concept right now is to build this as a sort of email-style arrangement (which fits the mail-message concept already established in the game) where you have an inbox showing subject/summary lines, and can open messages for detailed info.
This all is pretty simple, though (aside from actually designing the UI itself), so I've got another task. Previously all of our cutscene data has been modelled beforehand and then imported for realtime playback. This causes all manner of data format and viewing angle/resolution problems, on top of the more obvious and severe problem of requiring all cutscenes to be built by hand. We have some plans for making short-and-sweet animated sequences start to play a much bigger role in the player's interactions with the game world; I can't say more just yet, but it does have some interesting implications.
Clearly we can't do this if we still have to build and test every animation by hand, so the idea is to build a sort of library that generates animation data (keyframes, motion paths, etc.) dynamically, given some basic specs. For instance, you could say "give me a scene that shows 3 fighter ships attacking a freighter in the Blooblargh Sector," and bamf, there you have a dynamic scene. Throw in some random elements and a little magic, and it looks like a real "video feed" of stuff happening in the game universe.
This will require a lot of subtle gimmickery to make things look smooth and natural, but the bonus is that the gimmickery only has to be coded once; after it's implemented, all scenes automatically benefit, rather than having to tune them all by hand.
Actually figuring out how to generate these scenes is going the be the real technical challenge, and that's my current task. First step is to lay out all of the requirements: I have a wishlist of things from the art team that they want to be able to do, and I've got to make this jive with the overall technical side of things. Most importantly, we have another programmer who will be in charge of making a data format for serializing these scene descriptions, so I'll have to give him an API that he can easily use to convert data to actual animations.
Should be fun [grin]