So today I dragged my sorry butt out of bed at the unholy hour of 8:45 AM. At 9, our meeting started, and it ran for over 3 hours. Virtually all of the issues that directly concern me (at least for the immediate future) were hammered out, which is good.
The topic of discussion today is a very hefty system that will, among other things, automatically generate little mini-cutscene sequences to illustrate various game events. The idea is that you feed the system a few objects, say "show this thing blowing up that other thing" (or whatever), and it figures out all of the specifics and shows it for you. This saves us an immense amount of work creating such scenes by hand, and with some nice gimmickery, we can actually have higher-quality cutscenes overall (ones rendered in-engine at least) just by adding some extra polish to the generator logic. It's a good idea, and not nearly as complicated or impossible as it may sound.
I always find it kind of funny to see the artists and programmers interact. The art team is concerned entirely with how things will look - where cameras will go, angles, FOV, relative object speeds, transitions between shots, etc. etc. By contrast, all of the programmers are concerned entirely with how to make it work. Since I've been heading up the code-side design of all this, I've spent a lot of time and effort identifying areas where we can reduce code complexity by treating two different things as special cases of the same basic concept.
For instance, I've drafted up a keyframe system that is designed to smoothly interpolate coordinates over time along a preset, keyframed path. The idea is that it can be used generically to control any movement and animation. It can generate coordinates that are absolute (i.e. world-space) or relative to a particular object. By treating all coordinates and positions as data for the keyframe system, we get immense control and flexibility, and the entire system is very simple - we only need one movement/animation system.
The artists of course don't see it this way. One of the recurring topics was whether or not to allow cameras to be positioned in absolute world-space at all, or to require that they always be relative to some object in space. The artists described, in great detail, the difficulties of knowing where to put a world-space camera if you don't know ahead of time the precise location of every single object in the scene. They have a very good point.
However, this led to the suggestion that camera positions be special cases that are only allowed to be relative to an object. This immediately makes the system more complex, because now camera positions have to be treated differently from all other coordinate data in the system. I eventually gave up trying to explain this [grin]
In general, the whole discussion took a rather concerning turn. It seems like we've got a minor case of technology toy obsession going on, and there's a tendency to add features and gimmicks to this system just because we can. I don't think the issue of actually creating content came up at all. It will be interesting to see how this plays out over time, but if we continue this obsession with technology for technology's sake, we're going to catch ourselves in a (sadly familiar) situation and find that we've got a small fraction of the development schedule left, a really nice shiny toy, and... no actual content that uses it.
I'm really hoping that this doesn't play out this way, and that I'm just being paranoid - but we'll have to see. For the time being I'm focusing on getting a working base implementation done first, and leaving features and fiddly little options until later. Hopefully that will at least help matters by getting content developed early on, even if it gets revised heavily later. We're going to be in unpleasantly hot water if this project ends up being a massive pack of new features but no actual game.
Eh well. Hopefully I'm just feeling skittish because I sacked out on the couch all afternoon. Getting up "early" is a hazard to one's health. I shall have to sleep in extra tomorrow to compensate!