Software Requirements / UML usage

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Software Requirements / UML usage

      Do game programmers tend to use UML to organize/arrange their engineering efforts? I would assume so, considering how simple it seems to be to learn, but I was curious how much time experienced developers would suggest I put into learning to use it..

      The same with more traditional software engineering efforts, like SMS, requirement analysis, use cases, CRC cards, etc etc.... I find these topics to be dry, to say the least, but how much time would you suggest I spend learning it if I want to be a professional game developer?

      And yes, I know that knowing this stuff can't hurt, so if it's a really good idea to get familiar with design tools like this, does anyone have a suggestion on an accessible resource to read up on them. The textbooks that I've found are all pretty rough to go through...
    • Personally, I use UML quite a bit to solidify my own architecture and designs. I don't go too crazy though. I typically draw out class diagrams for large systems, flow charts for complicated algorithms, and whatever the communication diagram thingy is. I have a whiteboard next to my desk that I use to draw this stuff out. When I designed the role system for The Sims, I covered it completely with tuning outlines, class diagrams, and other diagrams to show how each component communicates with the others.

      From the professional side, it really depends on the company. Many companies play "fast & loose" where there's no actual tech review before you build the system. Here on The Sims, we have Technical Design Docs for each major system. Really, as long as you can explain and draw out the architecture you're planning on writing, it doesn't matter much if you conform to the explicit UML paradigm.

      That having been said, I would recommend learning the very basics of UML just so you have a simple visual language in which to communicate and iterate on your ideas. You should have a good understanding of all the core classes and how they talk to each other before you even write one like of code.

      I did a talk for GDC 2011 talking about some of the architecture for The Sims Medieval. I have a few really basic UML diagrams in there to explain what's happening. I've attached one to this post as an example. This is fairly representative of the level of detail I tend to go into, though I typically the core interface functions to communicate the primary public interface to each class. In this diagram, I was attempting to show how a Sim gets added to a schedule and the rest of the interface wasn't important.

      -Rez
      Files