What next?

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

    • So, I've read the book and hopefully it's made me a more aware and better programmer. I graduated from a BSc in computer Games Technology at Abertay in Dundee, Scotland and now work as part of a 10-ish man studio 4J.

      I've been here ten months and have one project just completed submission at Sony and another one in the works.

      So where do I go next? I'm not going to kick back and claim I know anything about game programming, I seriously feel like I don't have a clue :-).

      So, I have to write a simple-ish renderer for the Xbox 360. How do I go about taking what I know and turning it into a project? I feel as though I have mental overload constituting in a mental block.

      I can't focus on one thing without worrying on another. So, I need a renderer, but I need resources to render, which needs file I/O to get them in which needs memory allocation to have somewhere to store them which needs me to learn the nuances of the Xbox 360 and how it's low level API and OS work.

      How does anyone ever go about starting a project on a brand new system and actually make headway?

      Anyone have any good advice on how to divide and conquerthe tasks in a functional order to get a game architecture up and running in a smooth-ish and linear manner?
    • RE: What next?

      My advice may not be good and there are certainly people much more qualified than I to answer this question. Most of my huge personal projects fizzle and die. This latest one is definately going better than any others though. :) Kain or Mike would be better (and I'm interested in hearing the answer myself).

      That having been said, here are a few things I do.

      Usually I think about what I want to accomplish. I think about the major systems (in GCC, they would be View, Application, and Logic) and how they will talk to each other. Don't worry about assets or anything like that right now, just think about the major systems that you want and how they communicate. You want them de-coupled from each other as much as possible so that changes to one will have little (if any) consequences to the others. Now draw it out. UML is good for this, but boxes with lines work well enough at this level.

      Once you have a good idea of the major systems, start thinking a little deeper. Start deciding on the major classes & objects and the roles they'll play. Again, UML is great for this. Continue adding classes and then major methods & variables to those classes until you have a pretty good idea of how everything fits together.

      Now it's time to take a break. Clear your head for a day or two and forget all about your design. You want to come back to it on a fresh head so you can point at something and say "no no, it's much better this way". This is important.

      It's usually about now that I start coding the major stuff. If you're like me, you've probably already started coding some of the smaller systems that aren't tied into your architecture, like debug messages, 3D Vector types, and other things that every game programmer has written a million times over since the dawn of time. Start writing the core classes and go from there.

      Remember, design is what you do when you can't fit your head around the entire problem. UML and other design tools were created to solve the exact problem you're having.

      Oh, one last thing.... the process descried above is an example of starting a game project, but I do the same thing for smaller systems; it's just done on a smaller scale. When tasked with refactoring the camera system, I wrote out a bunch of UML diagrams. Usually I write one, then write it again slightly differently and repeat this process until I'm happy with it. It was the same with the Trace Text minigame I wrote, or the relator property. Anything that's not immediately obvious usually ends up with some sort of scribbling attached to it.

      Hope that helps!

      -Rez

      The post was edited 1 time, last by rezination ().