   Proper grooming for AAA game coding
  Hey guys,  I'm hoping some professional eyes might pass over my post here. I'm interested in grooming my skills for work in the AAA games market. My interests are in implementation and logic, not so much graphics. I'm completely self taught. My starting point is 10 years of Visual Fox. Now I know that's an interpreted language so its not much to sniff at but its given me an understanding of some core concepts, OOP for one. I'm hard at work with C++ studying the syntax and the concept of the game loop. I'm also going to get my hands on some math and algorithm books. My guess is I'll need some work with some type of SQL database too? SQLite or maybe MySQL? Finally throw in some protocol work to top it off.  I'm unsure of how much time I should spend on Win32, MFC, OpenGL, DirectX or even learning another full engine. I'm quite interested in working on the guts of a large title but am a bit struck by the amount of tech I need to learn. Any words of wisdom?PS, I realize the time commitment I'm looking at and it doesn't scare me. :)Thanks much,D   
  Many AAA games use Unreal, joining or starting an Unreal project may get you some good experience.If you want engine experience, developing an indie game or hacking into the Q3 sources may be worth looking into.   ;  Mostly none of the above. Win32 might come in a bit handy for doing Windows games, MFC is pretty old and unlikely to be used for tools anymore (C# and WPF being more likely these days, I think). Bullet points on a resume aren't that useful, having 30 certifications in different languages isn't going to do any good if you can't make a game right then and there at the interview. Both of the jobs I have had have had sit down programming tests where I was given a partially completed codebase and a set of game rules that I had to implement in roughly 2 hours.Game development is less about knowing the ins and outs of specific APIs/frameworks and more about understanding how they work and how the hardware underneath works. If you want to do AAA games, you're mostly going to be using programming interfaces that you will see for the very first time on the job. Nintendo, Microsoft, and Sony don't publish their professional hardware or API documentation to the public, so you need to be able to easily shift between different programming technologies and get up to speed very quickly when you start a job at a studio. I don't use a single API at my current job that use for the first time here.In short, the best way to prepare yourself for a career doing games is to make games. Make them for Windows/Mac/Linux, demonstrate that you understand how a game WORKS, and that you can produce code that is clean and maintainable, and most importantly, works, very quickly. Very few studios will see it as a minus that you've never used proprietary console interface X if you come to their studio with a Windows game or tech demo that blows their socks off, and can explain to them clearly and concisely how it is structured, how it works, etc.[edit]Seconding the Unreal suggestion.[/edit]   ;Quote:I'm completely self taught. My starting point is 10 years of Visual Fox. Now I know that's an interpreted language so its not much to sniff at but its given me an understanding of some core concepts, OOP for one.Get a computer science degree.You are competing against people who have them.  They do, you don't; it isn't hard to guess who is most likely to get called for an interview.  If you are mature enough to already be in the workforce programming, you should be able to get a bachelors degree in CS within two years, even less if you push yourself. Quote:I'm hard at work with C++ studying the syntax and the concept of the game loop. I'm also going to get my hands on some math and algorithm books. My guess is I'll need some work with some type of SQL database too? SQLite or maybe MySQL? Finally throw in some protocol work to top it off.You will not succeed with that route.Imagine an aspiring auto mechanic:  I'm studying how fuel lines work, I might get a book about the engine block or two, and maybe learn about antifreeze to top it off.  Then I'll try to get a job somewhere that needs ASE-certified technicians.Or imagine an aspiring nurse:  I'm studying how blood flows, I might get a book about anatomy, and maybe learn about depression to top it off.  Then I'll take the LPN test.You *NEED* a solid education.  The easiest way to get that is through a traditional computer science degree.If for some reason you can't get a traditional CS degree, you need to do the same work.  That doesn't mean studying topics you like.  It means studying the things you DON'T like.  It means finding somebody else who knows the topic, who can assess that you really do know the topic.  It means getting a solid understanding of those things you will never bother to learn without hard work.Quote:I'm unsure of how much time I should spend on Win32, MFC, OpenGL, DirectX or even learning another full engine. I'm quite interested in working on the guts of a large title but am a bit struck by the amount of tech I need to learn. It will help you to understand them, but you will not touch any of those when you begin working on a AAA title.Major titles are worked on by large teams.  The libraries you will touch will have nothing to do with MFC, and you won't be touching either OpenGL or DirectX for quite a long time, if ever.  You won't be working on the engine, either.  AAA games teams make games.  The companies have other technology centers that build the graphics engines and such.You will most likely start out writing gameplay code.  That includes tasks like modifying the behaviors or items, and eventually writing those modules. Perhaps you will start out by changing how frequently health packs will spawn, or altering the behavior of what a weapon does.  You'll get to write serialization code, Eventually it will grow in to tasks like working with spatial trees, data loaders, and maybe modifying some of the tools.Quote: PS, I realize the time commitment I'm looking at and it doesn't scare me. :) The first few years of that commitment is getting a bachelors degree in computer science.;  Thanks for the insight guys. I'm still at the early stages here so all the input helps. kuroioranda, it sounds to me like experience will be the best teacher eh? Code games to learn them. I'm of the same mindset. I just need to get my toolbox in order too. frob, I get where you are coming from. I suppose I am a bit more hopeful because for everyone i see saying you need a traditional education, I see another opinion touting the efforts of the self taught and how it can be done without a BS. I guess I have to hope those others are right. A four year degree just isn't going to be likely for me. Believe me, I have a good bit of other topics that interest me other than math and algorithms but I'm doing my best to learn the topics outlined in degree programs. Hopefully it turns out to be enough. I may not ever have another option.   ;  Just curious, what is preventing you from obtaining a degree? It might not be as difficult as you think.Take it from me. I was able to get my foot in the door, so to speak, without a degree. But my lack of degree is seriously, seriously holding me back. My salary is somewhere around the 10th percentile for people with my level of experience. I'm not in a great position to start school now. I have a full-time job, and I have a family, and I have very little money. Yet, I start school in the fall.   ;  Hey CDPropTime seems to be my biggest hurdle. I work a 40 hr week and have a newborn to attend to. Not to mention a wife that requires plenty of attention too ;o) Up here in Alaska I don't have many local options for a CS degree. I'm pretty much forced to go online for a degree that would be worth a damn. When you get into that realm it gets quite expensive real quick with the for profit schools looking like the best option. But even being able to manage the costs  I still have the time issue to deal with. I take all the chances I get to study and practice but I have to be very flexible too. I wish I could just hammer out a degree real quick at say Full Sail but my available time just doesn't seem to allow for it. Oh and my high school grades were abysmal so acceptance may be and issue too. :(I guess after reading about others doing it the self taught route I'd like to think I can to. Its not an issue of drive its and issue of available resources. On the other hand if its simply not going to happen without a degree I suppose I'll have to rethink the strategy eh?D   ;  Fair enough, all I would add is, you should definitely give it a fair shot. Just look into it. A lot of schools have low admissions requirements. You do not need a degree from an ivy league school. I know a guy who got his AS at a community college (which had near-zero admissions requirements), and then performed well enough to get into a state college (Weber State, which no one has really heard of), where he graduated. That opened a LOT of doors for him. I even know one guy who got a BS at a sort of vocational/career college, and he's programming games now.It's not that it doesn't matter. The friend I just mentioned would probably have a few more doors open if he graduated at a state college. But like I said, that in of itself is not necessarily difficult. Just get your AS from a community college, and do well, and then transfer.I wouldn't be trying to push this on you if I didn't think it at least had the potential to make your life easier, instead of harder. All I'm saying is, pick a school that you can get into, and then talk with an adviser there. They'll be able to give you information on which courses you can test out of, which you can take online at home, and how much you have to pay (which might not be much after financial aid, e.g. grants, subsidized loans, and even scholarships). You can even go to school part-time.All I'm saying is, once you have all this information, you may find that it's actually easier to go this route than to try to hack it as a self-taught programmer. I'm self-taught. I have a job, yeah. I even worked in the games industry for about 3 years. But it's tough. You will have less bargaining power. You will, therefore, tend to get paid less than everyone else. Your resume will get passed over by 80% of HR departments without even an interview. I've even been auto-rejected by computer systems based on my lack of degree!Then again, you may look into it and find that it's too expensive, and that not enough aid is available, and at the rate that you can complete courses, you'll graduate in 8 years instead of 2 or 4. I very much doubt that this is the case, but it's a possibility. What I'm saying is, maybe looking into it will only confirm you suspicions. But don't make assumptions! Definitely look into it.   ;  FWIW it's still possible to get in being self taught.  I did but my path was long and twisted, and after doing the math, it actually cost me more in lost wages by going the route i did vs if i went and got a degree.My route to success if it's of any help..#1 - i started with qbasic and ti (calculator) basic in junior high making junky little games.#2 - i did a couple years of C programming on my own early in high school, read a bunch of game programming books, tried to follow them to completion.  Worked on a couple of my own projects to learn various techniques.  Learned techniques but never actually finished any full games.#3 - Took an AP computer science class in high school junior year where i learned about abstract data types and algorithms.  This is actually something you will need to know BIG TIME you should research these... linked lists, trees, hash tables, binary search, selection sort, merge sort, quick sort, recursion, etc.  They taught this class in pascal.#4 - spent a little time taking what i learned in pascal and transfering it to c++ code.  Also did some stuff like learned multithreaded programming, TCP/IP and UDP network communication, DirectX, OpenGL, software rendering of 3d, some basic encryption and file compression.  WHILE WORKING AT A RETAIL STORE for 4 years making about 15k a year lol ):#5 - worked with an uncle of mine in his small 3 man web dev company for 5 years so that i honed my professional programming skills while still working on my own side projects for fun and continuing to learn more.  Also learned web and DB stuff which is useful in game programming but it's definitely not a core required piece of knowledge.  I made aprox. 25k a year by the time i left... not good pay at all.#6 - got a job at a real company doing web dev for 6 months then started applying to game companies.  One finally said yes, i was brought in kind of on a "trial run" to see how i did.  I did great, got a huge raise and almost 4 years later im still workin in the industry and things are goin well.If i had to do it over again... i would have done 4 years of college after high school to get my computer science degree while working retail.  I would have skipped nearly 6 years of crappy working conditions and tiny pay - and those 6 years of increased salary easily cover the cost of student loans i would have acquired.But hey, if you are really passionate about making video games, 2 options i would think for you would be...#1 - You say getting a degree is too time consuming and difficult cause of family.  Have you checked into the university of phoenix?  They have 100% online programs.  it is a bit expensive but you have to spend money to make money ya know...#2 - be an independent game programmer!  Make games with a small group of people and release them yourself.  Flash is a good platform for making games and there is actually a lot of money to be had in flash games if you do it right.Also you said you live in alaska.  You might want to check out this map:http://www.gamedevmap.comnotice that alaska has no red dots hehe... youd 99.9% for sure have to move out of alaska to seattle, the san francisco area, or southern california to get a decent job.  There are other places, but those are the highest paid game dev hot spots.hope this helps!   ;  You'll find posts all over this forum arguing the merits of a computer science degree.  I don't mean to start one of those debates here, but I will say that I have no computer science degree, and didn't have any problem getting a job.  I've interviewed lots of CS grads for entry level positions, and I've found that while many of them could talk at length about computational complexity theory, they couldn't program a simple game in C++ to save their lives.  I guess my point here is that CS degree or not, you're going to have to teach yourself most of what you'll need to know anyway.I learned how to program by reading lots of books and making games.  Pick up anything by David Eberly.  Read Real-Time Rendering, 3rd Edition.  Read Mathematics for 3D Game Programming & Computer Graphics.  That'll be a good start.Good luck!   