Thread: So you want to be a game programmer?

  1. #16
    Its hard... But im here swgh's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,688
    Having read this thread, I agree with Bubba and a few others. In my own perosnal view, I see game programming as a challenge. A good, exciting challenge which gets you into learning whar is a game about? How does it all work under the hood? Programming a game lets you delve into the secrets of how a game is designed. It is your own ideas, and it is your virtual character(s) you see on the screen as the end result.

    That has to be the most satisfying part of it. Many hardships come along mind, errors, things not quite working out. I read a few years back that the creators of James Pond 3 had a programming nightmare getting the ground detection to work.

    To echp a few comments, I too think that graphics is a small part of a game. It all has to fit together, and you as the programmer are the "glue" that can make that happen. Yes, graphics look nice, but making a character have yellow hair is nice, but what about the sound, gameplay,. events. music and logic? Should that have been included in the aboive thread??

    I have a gut feeling it was posted as somthing for others to read and take away with them feeling many have a lot of work to do to get to the OP's standard. But many of us take our time, work hard and know one day we will get there.

  2. #17
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,661
    >> http://cboard.cprogramming.com/searc...earchid=536622
    >> For anyone interested in the vast knowledge of dxfoo.
    > Ehh....that thread link is broken
    The board no longer caches previous searches (for very long)
    Just click on a user to get to the profile, then do "search for threads started by"
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  3. #18
    Software engineer
    Join Date
    Aug 2005
    Location
    Oregon
    Posts
    283
    I am responding to all the replies due to my stupid speech last night. I edited my post and took out the misguidance and changed it to an apology to all of those that read and replied. I suppose with this thread topic being what it takes to be a game programmer, I'd like to turn my post around and really ask you guys what it takes for the reader to be a great game programmer. I see that Bubba did that and has posted some excellent ideas of what to expect and focus on. Some others have commented too on what to focus on. I'm sure the readers can learn a thing or two still!

  4. #19

    Join Date
    May 2005
    Posts
    1,042
    I can be a dick but I'm also fair, and I was surprised with your response. I just gained about 1000 times more respect for you (I really expected your response to just be more of the same, in which case I was going to be done with the thread).

    I can't really talk too much because I haven't released a game. I always work on implementing things that:

    -Other people haven't done before, or don't really understand. My approach to pathfinding was actually pretty unique in terms of what I've seen already implemented out there in released products.

    and

    -Things that are really, really difficult (e.g. my latest physics projects, somewhat described on gamingdl.com).

    Graphics programming falls into the second category (really difficult) but not into the first (it seems that everybody nowadays can easily product doom3 level graphics utilizing the latest shader tools).

    In as far as my experience goes, the bread and butter of being successful can ultimately be summed up into three things:

    - Working your ass off
    - Knowing what you are talking about (buzz terms, theory that already exists)
    - Not being afraid to think. Think until it hurts, until you are confused and frustrated.

    In as far as programming goes, well, I've fallen out of the loop with the contemporary programming fads, and I've just kind of gotten sick of the programming scene in general. I've also stopped working my ass off on my programming projects. I've noticed, however, that I feel much more interested in programming now that I'm not in a programming related major (I'm doing some work for some professors at school).

    So, yeah, that's my two cents.
    I'm not immature, I'm refined in the opposite direction.

  5. #20
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    - Not being afraid to think. Think until it hurts, until you are confused and frustrated.

    Been there many times. I have a bad habit of biting off more than I can chew and then killing myself trying to figure it out. But that's the nature of the beast. Seems I'm always diving into an area I know little about, but that's what helps me learn.

    For me the hardest part of any project is getting everything to fit together like a glove. It sucks not having the texture you need in video memory when you need it there. It sucks equally as much when you want to play a sound, but it has to be cached in, loaded, and played which sucks up time and frames.

    Physics and graphics
    Bob hit the nail on the head when he said graphics programming is a unique beast. Actually getting the quality is simple, but getting the graphics to work with the engine and with each other is a pain. Physics programming can get extremely complex but is vital to the 'realism' factor. Why spend so much time making it look real when the moment your objects move, all that illusion is lost.

    Let's take Need For Speed Most Wanted for an example of this.
    The cars - beautiful.
    The graphics - incredible.
    The gameplay - amazing.
    The sound - top notch.
    The physics - laughable.

    You can hit the brakes at 160 mph and stop on a dime. Cars can do insane things like slam into barriers at over 180 mph and barely lose any speed. You can take corners at speeds that are way beyond the limit of adhesion for tires and the coefficient of friction for the actual pavement. Engines can bounce off the rev limiter contiuously and never blow. You can do a major burn out in first gear, but after that you never even as much as bark the tires. In a high horsepower car and when the driver is racing it he will bump the clutch and never let off the gas. This will most certainly bark the tires between 1st and 2nd and if it's powerful enough, between 2nd and 3rd. After that most cars cannot bark the tires. Also some of the cars in the game are front wheel drive and rear wheel drive and all wheel drive. No difference can be seen in any of these configurations. Front wheel drive cars skid out just like all the others which is not accurate. Front wheel drive cars skid much differently than rear wheel or all wheel drive cars. Also, I own a Dodge Neon SRT 4 which is front wheel drive and when I slam the gas and get the turbo to about 15 PSI the car wants to pull the wheel out of my hand due to torque steer. Even with the limited slip diff they stuck in the front, it still wants to torque steer. This is non-existent in NFS Most Wanted. Also my tires are only 5.5's which causes them to break lose quite easily since there isn't enough rubber on the road to account for the boost in horsepower.
    This is the only front wheel drive car I've ever seen bounce down the road due to traction problems. Again this is non-existent in NFS.

    But the game doesn't claim to be physically accurate and most people don't want it because accurate does not equal fun for everybody.


    The 3D portion of graphics
    But graphics are actually quite simple nowadays. Get me a model with a lot of vertices and details and good detailed textures along with bump maps for the textures, etc, etc, and I can put it on the screen using a pixel shader and make it look amazing. So that's simple.

    Extending 3D models into interactive 3D models
    But let's say we want pieces to fly off this model when it crashes or we want it to show damage effects from the environment...well now you are talking about a whole nother ballgame.
    Or what if we want pieces to move on the model in response to user input (such as doors opening, landing gear coming down/up, etc, etc). There are a lot of things to think about when attempting this type of system.

    Scripting
    And then you have scripting. How does this fit into the scheme of things? Do you need the power of Lua or Python or can you get away with something simpler and in-house? How will you communicate with your game objects? How will you manage the objects and track the script? How will you store the script in release versions? There are a million things to think about when it comes to scripting.

    A game is a performance
    So games to me are like a perfectly orchestrated performance. When it all comes together at the right time it's magic. When it's unorganized, choppy and out of sync, it's disastrous.

    You ever played a game you were so into and then a cut scene happens? During the cut scene the lips do not match what is being played over your speakers. All sense of realism and depth in the game is lost in a heartbeat. You may have just been through the best mission of your gaming life and experienced the best graphics, but you just can't get past the glaring fact that when your character speaks, his lips don't match the words.

    It's the small details that either make or break the game.

    What would I study?
    So what would I do first if I wanted to do game programming? Study C++ design patterns. Design is everything and a poor design will leave you with an aching head, sore eyeballs, and no game. Study anti-patterns and find out what they are, who has used them, why they did, and why they failed. There are hundreds, maybe even thousands of games that never see the light of day due to poor design. Poor design will make you miss your deadlines, fall short of your goals, and make the engine and code a complete and utter mess.

    Study all of the things that you never actually see in a game because it's that foundation that actually makes the game run and do what it does. Resource management is a huge one because a game is a huge mass of resources all crammed onto a CD or DVD or hard drive. Manage them correctly and you have a good experience. Mis-manage them and you will probably want to quit programming altogether.

    Apology accepted
    And I commend you for your apology. None of us here knows it all nor do we claim to. However we all do specialize in certain areas which brings a unique mix of technology and thought to the board. Have any of us ever made a large game and completed it? Doubtful. Many of us lack the resources, time, and money to produce a truly great game. Bob's game looks amazing for the time he has to devote to it. Perspective's terrain engine and implementation of Rottgers algo is simply amazing. Psychopath's new 3D editor to me rivals some of the interfaces I've seen on retail editors. We have an amazing group of people here all with amazing talents and a passion for programming. Just because we don't work for a company does not mean we couldn't. The difference between most of us and your everyday college grad who majors in comp sci is that we have a passion for programming. Sure we may take a break now and then, but before long we always come back to it with new ideas, fresh approaches, and new algos we want to try. Passion is important and it's the only thing that gets a game out the door long after you are sick and tired of hearing about it much less coding on it.

    I'm sick to death of this blasted Zelda clone. We've been working on it for about 2 years now and just now we are finally to the 'game making' portion. Up till now it's been programming tools, editors, etc, etc just to get the data where it needs to be in the format it needs to be in. The only thing that keeps me going is I don't want to have wasted 2 years and thousands and thousands of lines of source code only to quit and delete it later. This game will see the light of day as a shareware game no matter what it takes. Personally I'm sick of hearing the little bastard's name.

    Last edited by VirtualAce; 09-25-2006 at 11:42 PM.

  6. #21
    Its hard... But im here swgh's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,688
    @Bubba

    I hear you about taking ages to complete the zelda clone. But think about Nintendo? They released the big gun zelda games and it must of taken them equally the same time as it will take you and your team to finish yours. Proffesional or not, in the gaming world. the slightest error can take days to correct if it is serious enough. Keep at it and never give up, you will get there in the end

  7. #22
    Registered User
    Join Date
    Aug 2003
    Posts
    1,218
    Actually the difference betwean Our zelda and Nintendos zelda is huge. They had a whole team of devoted programmers, artists, and all the other parts.

    Our teams consists of 2 programmers and im not even sure there are any artists. Plus they worked 8+ hours a day 5 or maybe even 6 days a week, we work on our sparetime inbetwean jobs, school in my case, and other things.
    STL Util a small headers-only library with various utility functions. Mainly for fun but feedback is welcome.

  8. #23
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    Posts
    9,897
    >I edited my post and took out the misguidance and changed it to an apology to all of those that read and replied.
    You deserve a cookie.

    >I'd like to turn my post around and really ask you guys what it takes for the reader to be a great game programmer.
    I can't stress enough that one should have a very strong foundation in general programming concepts. Algorithms, data structures, problem solving, design. Mastery of these things is the difference between a good programmer and a great programmer. Programming is about taking your current foundation and stacking ever more specialized stuff onto it. That's why I'm usually surprised that people want to program games when they're still having trouble with language syntax, or basic concepts that every programmer should know.
    My best code is written with the delete key.

  9. #24
    (?<!re)tired Mario F.'s Avatar
    Join Date
    May 2006
    Location
    Ireland
    Posts
    8,446
    If you don't mind I'm going to grab your reply:

    > I'll confess that one of my reasons includes writing software engines. I feel like a god when I write them, so I have felt that I am more superior than the rest.

    I don't know about you, but I'm known to kiss my arm and hands and tell myself I love me when I just finished solving some hard problem that has been taking me days to deal with. Or when I have one of those Aha! moments. The point being that it's quiet natural, anyways, that amidst the sense of acomplishment, a feeling of... self-satisfaction and some sort of superiority-towards-the-world emerges.

    If there is one thing programmers are generally, is a competitive bunch. Arrogance, for those who have it, can be bad, yes. It serves no one. However no one cannot deny the vast knowledge behind it. They deserve to be arrogant. So, in my opinion, go ahead! Don't hide it. Don't supress that feeling. In fact it may serve you if you don't let it out of control.

    > Another reason may include that writing to forums for years about Tricks and software had led to several arguements and that's all my mind wants to do now: arguements.

    I've learned more here on CProg or anywhere else when I started or participated on threads where some level of... let's call it strong debate happened. You just have to have the stomach for it. To accept that probably in the end you will have to put your foot where your mouth is. But also be glad and thankful for it even if your ego sometimes doesn't allow you to make that final reply saying so. I really don't care where I put my foot when the consequence generally is having gained more knowledge.

    Ask any budist

    > A third reason includes a different attitude on the web. I'm actually normal in person, but on the web I seem more angry probably due to those bad experiences.

    Ah well... I wouldn't even know where to start. A huge portion of the web is made of people that don't exist. We all play some part whether we are conscious of it, or not. We, for the most part, are not the person the words seem to indicate we are. Some of us even have the giggles at turning this into some form of art.

    An whole new science could(or probably already has) emerge from the study of internet relationships and social interaction. However I think that science could easily reach a conclusion; It's a dog's world.
    Originally Posted by brewbuck:
    Reimplementing a large system in another language to get a 25% performance boost is nonsense. It would be cheaper to just get a computer which is 25% faster.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Please comment on my c++ game
    By MegaManZZ in forum Game Programming
    Replies: 10
    Last Post: 01-22-2008, 11:03 AM
  2. Replies: 12
    Last Post: 05-23-2006, 11:49 PM
  3. HELP!wanting to make full screen game windowed
    By rented in forum Game Programming
    Replies: 3
    Last Post: 06-11-2004, 04:19 AM
  4. My Maze Game --- A Few Questions
    By TechWins in forum Game Programming
    Replies: 18
    Last Post: 04-24-2002, 11:00 PM