Ask a game programmer

Discussion in 'Uber Entertainment Discussion' started by neutrino, February 27, 2009.

  1. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    If anybody has any programming questions then feel free to ask. I'll do my best to answer in the time I have available.

    If you want to become a good programmer here is some basic advice:
    1) Write a lot of code.
    2) Make sure you learn the basics (e.g. a good comp-sci program is a good idea)
    3) Keep learning.
    4) Find good people to work with that you can learn from.
  2. ogloom

    ogloom New Member

    Messages:
    2
    Likes Received:
    0
    I'm in my final year of school and am going on to study Computer Science at a top-class uni. I have limited programming skills:

    My Portfolio: http://www.timsprojects.com

    I have limited knowledge of php, JS and C++. All my C++ apps are console based and I haven't a clue how to start making graphical apps. I'd like to be able to make a very simple 2D game with C#/C++, but it seems the jump between console app to graphical app is quite large. Can you recommend me any tuts/books that would help bridge this gap? Thanks =]
  3. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Honestly I'm not really up to speed on intro type books.

    http://www.gamedev.net/reference/start_here/ looks like a good place to start.

    Downloading the directx sdk and playing around with the samples (which are mostly self contained) would probably be illuminating. These are mostly self contained and can show you everything you need to have working to get a 3d application running.
  4. Sorian

    Sorian Official PA

    Messages:
    998
    Likes Received:
    3,844
    How much direction do you get when working on a project? Is there a large outline with flowcharts and stuff or is more like, this is what we want, get it done?

    Do you still program on your own time?

    Any advice on getting into the industry without the degree?
  5. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Most games evolve through a combination of some sort of large design doc and the research that occurs during the implementation phase. Most of the design docs that I've seen in the past aren't very well specified technically and are mostly useless for actual implementation. This is non-optimal.

    At Uber we follow an iterative process loosely based on scrum. Our design docs are usually diagrams instead of paragraphs of descriptions. Since we whitebox the game before building real art assets we can quickly change things and go in different directions. This is much less stressful and a lot of fun the way we do it.

    Well I kind of consider the company my own time. It's pretty hard to justify working on code that isn't somehow helping out the company in some way. I've actually felt this way for a long time. For example when working on SupCom why wouldn't I just try to improve the game if I wanted to code more? What I do spend a lot of time doing is research. Either writing code to try things out or reading about new techniques in research papers or in forums. I very much blur my day between work and home as I currently exclusively work on my laptop.

    Write a few games on your own and use them as a portfolio. Don't worry about art quality if you don't have an art source, just try to do something cool. Make sure that you know your **** if you want to be an engine programmer (e.g. when you type code in C++ what does the hardware actually do). If you want to be a script coder make sure you at least know lua and python.
  6. eetmorsqrls

    eetmorsqrls New Member

    Messages:
    162
    Likes Received:
    0
    how much time do you spend actually playing the game? or do you leave that mainly to testers and such? (i'm an idiot at coding and such, so please tell me if that's a completely stupid question)
  7. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    We have play tests every day for the entire team a couple of times a day, sometimes less, sometimes more.

    When working on coding for the game I'm constantly tweaking code, playing, tweaking, playing etc.

    So all of us play the game a lot!
  8. Sorian

    Sorian Official PA

    Messages:
    998
    Likes Received:
    3,844
    How does that work out for the company when most publishers seem to want beautiful demo to look at when deciding whether or not to give you money?

    If you can do what you do all day and still want to code and research on your off time and enjoy it that is good news for me :).

    lol, I wouldn't know where to start building my own engine. I have dug through the TA Spring engine and could get some direction from that. Scripting I can do.

    How is compatibility handled? When a function is called from more than 1 place and different people are responsible for each place how do you guys ensure nothing gets broken?

    Are you guys assigned projects to work on little by little as development progresses or are you guys just given a broad responsibility throughout the project?
  9. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    You make the beautiful demo after you've already built the fun part of the game. If you need money from publishers right away then you are kind of screwed. The ability to have creative freedom is very important to us as this is what leads to a high quality game.

    I'm pretty much a learning junky. I spend the vast majority of my awake time in front of a computer. I'm watching TV at the same time that I'm doing this.


    You don't have to build a complex 3d engine at first. Anyway the best way to learn how to program is to spend a lot of time programming. You can start with simple stuff.

    Compatibility is handled through API design. At a high level engines have an overall architecture that specifies how everything fits together.

    The last question varies depending on your exact job. I've been responsible for the overall technical direction which requires thinking of things from beginning to end. I also need to make sure everyone else is working on the correct thing. At Uber we have a pretty experienced team so most of our tasks are driven by the process (which is scrummish). Pretty much everyone here wears multiple hats. For example Scathis is the designer and a game coder. I'm the CTO but I do coding, technical direction and business development. All of the other guys also can do multiple jobs (for example everyone is involved in playtesting and feedback).
  10. Scared

    Scared New Member

    Messages:
    18
    Likes Received:
    0
    Do you ever become disillusioned about code or coding? If so, how do you get around that?

    I am currently in my last year of a bach of Interactive Entertainment doing Games Programming and just having a bit of trouble getting myself into the swing of coding again (into our 3rd week). It is probably because I am still learning concepts and coding in general (going through networking and AI atm) and some of the things (actually getting the code down and working) isn't coming very easily atm.
  11. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Very interesting question.

    For me coding used to be about fiddling around with stuff to see if I could make certain things work. Over time, as it's turned into more of a discipline, it's become more of a means to an end. Now this doesn't mean I don't find it interesting but there is a lot of junk work that needs to be done. For example things like engine code merges, switching compiler versions (hence a bunch of work with project setup), build servers, profiling etc. end up taking a lot of my time. So when I actually get to work on actual game stuff I find it really enjoyable (like implementing the puppies for example). We are also doing some very interesting technology work at Uber and I would say that's where my coding passion really lies. I get to be involved in the design of that stuff but I really don't have the time to work on the really interesting stuff as much as would be ideal.

    In your situation it sounds like you are having a hard time being interested in coding at all. Honestly this isn't a good sign because coding is a very all consuming type of profession. They say it takes 10,000 hours of practice to become an expert and coding is no exception. There are plenty of jobs in the industry where having coding knowledge helps but the actual job is mostly about something else (for example level scripters, effects creators, gameplay coders to some extent and even artists).
  12. Scared

    Scared New Member

    Messages:
    18
    Likes Received:
    0
    Just as a follow up (if anyone cares), I have worked out of my "down on coding" period and now back into it. Just felt out of coding for a week or 2 but now to back to business as normal (except 10 times as hectic now. So many things due so soon)
  13. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    Learning to code feels like climbing a mountain and then realizing when you get to the top that it was just a hill and the real mountain is ahead. Repeat ad nauseam.
  14. Sorian

    Sorian Official PA

    Messages:
    998
    Likes Received:
    3,844
    That is so true.
  15. TheBigOne

    TheBigOne New Member

    Messages:
    40
    Likes Received:
    0
    only noob hikers don't check their maps before entering the mountains though :D
  16. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687
    I agree that a bit of research goes a long way. Unfortunately unless you know a superstar programmer pretty well it's possible you may never have met someone that has climbed these mountains. It took me several years of professional work before I started realizing how much there really was to learn. To this day I've only worked with a small handful of people in the "master" category ( although I'm lucky enough to count several others as friends).
  17. Pawz

    Pawz Active Member

    Messages:
    951
    Likes Received:
    161
    1. RE: Scrummish!

    Being a programmer currently struggling to mash agile techniques into a 2-man show, I'd love to hear how you guys are working with scrum. Do you use any management tools? Is the whiteboard your favorite meeting place? What's been the most challenging part of keeping the team organised over the last year?

    2.Software technology. Do you guys use any .NET? Or is it C++ only.

    3. DRM - Stardock, EA or Valve?
  18. neutrino

    neutrino low mass particle Uber Employee

    Messages:
    3,123
    Likes Received:
    2,687

    1. Honestly we don't even use full-on scrum. We just sit down and pick things off of the backlog for a sprint and then work on it. We generate the backlog mostly through playtest results.

    2. We use a little bit of everything but primarily C++ for heavy lifting. Unfortunately there isn't anything else to use that's cross platform and fast.

    3. What's DRM? LOL.
  19. BulletMagnet

    BulletMagnet Post Master General

    Messages:
    3,263
    Likes Received:
    591
    that's the answer we want to hear!
  20. hath995

    hath995 New Member

    Messages:
    3
    Likes Received:
    0
    I guess this is kind of a general questions but do you prefer depth over breadth when it comes to language experience? For example I have programmed in C/C++, Java, Python, PHP, JavaScript, MIPS assembler, and I've poked Lisp with a stick a few times. I feel confident I could do things with any of them but I'm far from an expert on any. I am thinking about doing a project in C# soon as well. I am thinking about working on game engines eventually (I'm actually a math major). Should I settle on one and stick with it?

Share This Page