| Now having read most of the article, and having done quite a bit of game development myself... it sounds like a large amount of the problems with Rome II and the engine they were building was the navmesh. The navmesh is a sort of 3d mesh where the center of every triangle defines a node on a graph which can be used for pathfinding using algorithms like Astar. It sounds like they needed people to manually create and optimize these for various maps rather than using an algorithm to generate it automatically. Additionally there's this big issue with sea battles where each little boat has a little moving navmesh which little soldiers can move around on, including when the ships actually land and have to make the boat navmesh connect with the land navmesh at runtime. Altering navmeshes at runtime (which are generally static stack allocated) is sure to lead to a bunch of stale references if the code wasn't architected to be flexible to begin with This sort of detail is probably lost on non-technical folks and needs to be clearly communicated early on. At the end of the day, I have much fonder memories of capturing the Black Ship in Shogun 2 (which used the old two navmesh system separating boats and land), and virtually no memories of landing troops in sea land battles in Rome 2. The feature was not important to gameplay, but requires refactoring the whole damn navmesh system! |
Go back in time to the beginning of the Rome 2 lifecycle and simply proceed by iteration. Maintain playability throughout. This would’ve given them a much longer lead time on major issues with the gameplay.
It’s absolutely crazy to me that they would tear Shogun 2 down to its individual components and work on them all separately without maintaining a playable version of the game. A ton of it could be done with continuous integration, where they just have a couple of CI servers sitting in the office running the nightly build in an all-AI automated fashion. Heck you could even plug in a monitor to the server so that people can just walk over and watch the AI vs AI battles as a sanity check.
The other baffling part of the whole thing is how little communication was going on. I mean it’s baffling in terms of good design and development practices but it’s understandable from a dysfunctional management perspective.