Back to search

When delays occur in the production stream such as what's happened with Star Marine, what are the producers at CIG doing to minimize it's effect on the overall schedule of the game's development? I'm aware that various modules are being run in parallel to help offset this, but are there other specific things that are being done that we may not be aware of?asked by Amontillado

TL;DRThey limit one release's impact on others through a layered branch structure with team streams feeding main and separate release branches, plus spacing releases and keeping backup plans, though delays can't be promised away.

So, this is actually a really good question for Sean Tracy, Jeremy Masker... These are guys I am constantly having discussions with, sometimes arguments with, about what is the best way to offset and mitigate the risk that this will delay other streams.

Healthy argument.

We do have healthy arguments - you know I think that's another thing that's important in production is you have to be super open to: 'My idea is not always the best idea.' - and everybody needs to be that way in game development in general and it's kind of... to borrow a term from our old friends at Activision: "It's the battle for the best idea." And it really is true. I love having those conversations because you may think you're right but then you get into it and... ahh okay, that's a better solution.Anyways, back to your question. The real point of this is... yes. What we do is have an interesting stream and branch structure. So, you talk about main is like the main code stream... and actually that's really no longer the case for us... we do most of our game development in... it can be best described in two pyramids - one an inverted pyramid and one below it, a regular pyramid. In the middle sits Main and below that we have Game Dev, so we have Game Dev FPS, Game Dev AC, Game Dev Social, Game Dev... and that's where each of the teams works in their own little discrete area. Now, there's a bunch of intermediate streams that are constantly synchronizing with one another and what this does is if two guys in two different streams work on the same file, it will push into here, they'll integrate with one another, they'll send an e-mail to both of them saying, "Resolve this. Make sure this comes together in a clean way," and everything that is clean, stable, and beautiful - theoretically - then propagates up to main. Then it's from main that we'll branch out to do a release so the where we get to the upper pyramid is when we say: "Hey, we want to release Star Marine." Which... we've said we want to release Star Marine... because we do. So, we then create a branch above that that is the Star Marine release branch and this is what will end up going to Public. So, that is created off of main which theoretically - with the system that's going on in the lower pyramid in that ecosystem - remains pretty stable and we do final polish, bug fixing, and much to Sean's chagrin... maybe some feature development, in that release stream which is then later integrated backwards once we release down through the whole tree structure again. So this is the technical structure of how we've arrayed our Perforce to try to mitigate the impact that one release has on another.But then there are also, you know, kind of social, psychological, or marketing impact that it does have, where you want to try to space out your releases a little bit to give a release time to breathe, to give the team focus and time to focus on that release and make sure that they support it after its release and everything else so in that way you do kind of want to space out your releases a little bit or else you're going to burn everybody on the team out and divide the focus.Do you have anything to add on that?

[laughs] No. You mastered that one. That was great. I don't have anything to add... I think that what we try to mitigate is any individual module impacting the other module negatively. I think that's really what we're talking about and so as producers we are trying to find ways, as Travis has done excellently over the years, of trying to find ways to... "How can we keep pushing down this module so we can not impact each other?"

That's a really good point too that you make... it does happen. We're just trying to minimize. A lot of things in production are: "I can't promise it's not going to happen but I can try to minimize it happening and minimize the impact that it happening makes."

Yeah, and having as many plans in our back pockets as we can. Right, like... here's the plan we're all shooting for... but here's our other 10 plans we have in the back pocket in case things... that we have in the back of our heads or part of our schedules, for sure.

Thank you, good question.

Yeah, great!

10 for the Producers›Episode 08 (2015.06.22)·
Published on this date.22 Jun 2015