Zen Of Design

The design and business of gaming from the perspective of an experienced developer

SimCity Engineer Describes Tough Technical Effort

One of the things that programmers hate are designers who can kinda sorta code, and then use that to float wildly optimistic estimates for how long it will take to code a new system.  For example, they might say “I can code a minipet system in 3 days!”  And then they do.  And then they claim the programmers who swore it would take 2 months were sandbagging.

Only it’s not a very good minipet system.  The storage is inefficient, the additional pathfinding chokes the server, they somehow break certain boss fights, there’s no GUI for storing or extracting them, they don’t animate when idling, swimming utterly breaks them, etc, etc, etc.

So now the supposed sandbagging engineers inherit this code, which is now considered ‘part of the game’ because a producer somewhere saw it and said ‘make it so’, and now it takes 3 months to do because you have to deal with the horrible, rotten hacked code that made its way into the system, and any content or player data that depends on said horrible hack.

If you’re a designer, don’t be that guy.

All of this comes to mind from reading the SimCity programming lead’s patient explanation that, yes, it took six months to make SimCity run offline, and even though some modder claimed he could do it in two weeks, it turns out that conversion was… a tad incomplete.

This is just a friendly reminder that if you don’t develop games, you really don’t know how hard it is to do so.  And even if you do, something that is trivial in one codebase may be godawful difficult in another.



  1. If you’re a designer, what you just wrote is known as a “prototype” and not actually a feature. As you mention, writing fully fleshed out features that ensure a good experience through all of the corner cases and all of the polish is an immense amount of work. Doubly so if you’re starting from some half-assed piece of code someone threw together in a couple afternoons and called it done.

    On the other hand, any developer who’s actually played in existing code bases for a couple years would have probably experienced just that.

    And to be fair, application development suffers from the exact same problem. I’d reword your statement to, “if you don’t develop software in a team environment in an existing code base, you really don’t know how hard it is to do so.”

  2. Lucy Bradshaw’s pants remain on fire after her comments about significant computation being offloaded to the cloud. (No, I don’t see how the region’s resource model could amount to much)

    The sadder example of non-coders making assumptions is the expectation that larger cities are just a case of a system requirements bump. Lots of people seem to expect linear scaling with area, but I can think of lots of reasons why their agent simulation would scale much, much worse than that. It’s the sadder example because I strongly suspect the only way to get adequate city sizes is to rewrite the simulation from scratch using the traditional statistical approach.

  3. If you want to be “mad” at EA/Sim City, the thing to be mad at them for is the decision in the first place to require online play and the design decisions that followed (like the tiny cities). The same goes for Diablo III/Activision.

    Being mad at them for how fast they remedied it is ignorant, because nobody outside the team fully understands how difficult it is.

    And anyone who has ever developed software knows that things that seem simple rarely are. This is especially true when it is a large, complex piece of software like a big video game.

  4. I think the main issue here was marketing or product focus. The idea behind the game, an interconnected SimCity universe, was a very neat and interesting one.

    However, I think that the vast majority of buyers were blindsided by this, and were expecting a normal SimCity game.

    Perhaps if EA/Maxis had called it Sim Neighbourhood, or something that conveyed the idea of interconnectedness, it would have gone over much better.

  5. Designers who can kinda sorta code, what you’ve done is created a “prototype”, not an actual feature. Any fully-fleshed out feature has plenty of edge cases and user requirements that it won’t be done in 3 days, no matter what you think.

    But here’s the thing. This issue isn’t relegated to only the game industry. Pretty well most programming runs into it, especially in an already-established and mature code base, which the Sim City code base certainly falls under once they shipped.

    Now, reading the blog makes me question some of their initial architecture/design assumptions which are implied, such as having actual networking code sprinkled here and there rather than offloading the request to some subsystem and just dropping in their native-ported server code, but given how fast game development typically occurs, I doubt they had the luxury of designing well-delineated and decoupled systems.

    I don’t doubt that it took 6+ months to get things offline to work based on that information. I’m actually surprised it was completed as quickly as that, in the end.

Comments are closed.

© 2018 Zen Of Design

Theme by Anders NorenUp ↑