How to be a Game Programmer

edited in Questions and Answers
This is something I wrote about last year on unisa computer science forums

Here is a link http://osprey.unisa.ac.za/phorum/read.php?417,176607

But anyway I'll repeat everything here.....

what a difficult question to answer, I've been asked this question a 100 times and perhaps I'm not a right person to answer it. Maybe they should have asked me the following question: "which or what books do I have to read that will enable me to make games?"

Ok I don't really have all the answers since game dev is a very brought field, maybe the questions I would have like to be asked are the following
"I wana make games for android, where should I start"
"I think windows phone has awesome graphics how do I make games for it"
. "I saw somewhere on tv saying that html5 is cool what do u think"

Okay this were not the questions that i was asked so lets go back to the main question "how to become a game programmer". My reasons for not answering this question is because I never made a commercial game, all my friends ever saw was some demos on my phone or some crazy dummy engines they've seen when they try to hack my computer, so they assume i have all the answers.
Game programming as a part of game development is a very big subject and there are many sub disciplines within itself. I myself have read more than 200 books and I feel like I've only touched the surface. Some of the disciplines include, computer graphics, gameAI, engine architecture, rendering, shader programming, game physics, augmented reality, only to name a few. Although I have read more than 200 books, the are only few useful ones or I'll just say readable ones, so I'll just name few books that are some of my favorite ones, the ones that I read and never got stuck, so I'll not waist time trying to lecture you on which language you should use because at this time and age any programming language is well suited to write games.

Here is the list of some of my favorite books from beginners to pros

Html5
1. Foundation game design with html5 and JavaScript (2012) - Rex van der Spuy
2. Pro android web game apps using html5, css3 and JavaScript (2012) - Juri Bura and Paul Coates
3. Pro html5 games (2012) - Aditya Ravi Shankar

Flash
1. Foundation game design with actionscript 3.0 (2012) - Rex van der Spuy
2. Essential guide to flash games (2010) - Jeff and Steve Fulton
3. Flash multiplayer virtual worlds (2010) - Makzan
4. Adobe Flash 11 Stage 3D game programming (2011) - Christer Kaitila

Android
1. Beginning Android games second edition (2012) - Mario Zechner and Robert Green
2. Game and Graphics Programming for iOS and android with openGL ES 2.0 (2012) - Romain Maricchi Foino

XNA
1. Learning xna 4.0 (2011) - Aaron Reed
2. Windows phone game development (2010) - Adam Dawes
3. Professional windows phone 7 game development (2011) - Chris G. Williams
4. Windows Phone 7 xna Cookbook (2012) - Zheng Yang
5. 3d graphics with xna game studio 4.0 (2010) - Sean James
6. Xna 4 3d game development by example (2012) - Kurt Jaegers

DirectX
1. Introduction to 3d game programming with DirectX 9c, 10 and 11 (2006, 2008, 2012) - Frank Luna ... Visit d3dcoder.net for more
2. Character animation with direct3d (2009) - Carl Granberg
3. Multi treaded game engine design (2011) - Jonathan S.Habour
4. Game Coding complete 4th edition - Mike McShaffry

AI
1. Introduction to game AI (2011) - Neil Kirby
2. Artificial Intelligence for games (2009) - Ian Millington
3. Behavioral Mathematics for Game AI (2009) - Dave Mark
4. AI and Artificial Life in Video games (2008) - Guy W. Lecky Thompson
5. Programming game AI by example (2005) - Mat Buckland

Mathematics
1. 3d math primer for graphics and game development(2011) - Fletcher Dunn and Ian Parberry
2. Essential Mathematics for games and interactive applications(2008) - James M. Van Verth and Lars M. Bishop
3. Mathematics for 3d game programming and computer graphics (2012) - Eric Lengyel

I will not give a review on this books since people who are more knowledgeable than me have already done that. Just go to amazon.com and search on a particular book, the reviews there will tell you whether you like the book or not.

It you want to ask anything else, I'm always here¿¿¿

Comments

  • edited
    I'd skip the whole section on XNA since that's no longer supported by Microsoft. That banner has (mostly) been picked up by the Monogame project.

    In my opinion if you're going to learn stuff, it's better to learn fundamental principles like with the Math stuff you mentioned, graphics pipelines, etc than to focus on proprietary technologies like DirectX. That stuff should be learned by doing. If you know what you want to achieve and the core principles of achieving that, you should be able to figure out how to achieve that using whatever tech you happen to have in front of you. Don't marry yourself to any one specific platform/technology either - you'll be lost at sea when it inevitably falls out of fashion.
  • I'd skip the whole section on XNA since that's no longer supported by Microsoft. That banner has (mostly) been picked up by the Monogame project.
    Not necessarily. XNA is still a very valid path with the huge growth of Monogame / Xamarin with many studios / indies using it for easy cross platform development.

  • edited
    You must have missed me mentioning Monogame in the bit that you quoted.

    Monogame may be API compatible open source XNA replacement, but it's not XNA. Monogame will continue to be developed, XNA will not. Monogame is alive, XNA is dead.
  • @rustybroomhandle

    Where did you get your information, because you are totally misinformed.

    Let me correct you, monogame was initially setup to help developers to port their XNA games over to other existing platforms such as, Android, iOS, Linux, Mac OS X. So monogame is no a replacement for xna, because 99.9% of code you write is 100% xna, development, ie. Visual studio, Windows phone development kit which includes XNA game studio 99.5% and monogame only 0.5% for porting.

    Yes Microsoft did not include support for windows 8 and windows phone 8, but if I run any game I made with xna on any two platforms, they run without asking any questions, the only difference is that they cannot take advantage of new windows phone 8 APIs. In that case, Microsoft thought Directx 11 or Html5 will do the job because of lack of support of DirectX 9 which xna is tiredly wrapped around on, so therefore the lack of support on this 64bit devices.

    If you were to visit me at this very moment, you will find the following books on my table:

    Learning C# by Programming Games - Arjan Egges
    2D Graphics Programming for Games - John Pile Jr
    Windows 8 and Windows Phone 8 Game Dev - Adam Dawes

    This are books that Im currently reading, they all use XNA and they were released in late 2013 which shows that XNA is very far from dying, and still on that note, two other books on directX 9 im reading are

    Programming 2D games - Charles Kelly and
    Introduction to game physics with box2D - Ian Parberry

    So if DirectX 9 is still the biggest hustler in the game, so will be XNA.

    Either than that, this tread was not written for arguing on which tech is better than the other, instead it was written to help fellow programmers learn to make games with easy to read books, because in many years I struggled through many books which were very hard to read and gave up many times because they failed to explain things in a way a beginner like me wanted to learn. I think all those horrible authors forgot who were their main audience when trying to teach those concepts. But even internet was worse in getting the right information. So the books I mentioned above, were ones I enjoyed most out of many books I read, I mean I could even read this books on bus, under the tree, near the construction site, or while im watching Tranfomers 3 and Avengers at the same time. I mean this are really gifted athours and they write for no Brainers like me.

    So stop working and start thinking ¿¿¿
  • What games have you made? It'd be nice to have a look at the kind of stuff you've been working on to see how you're putting all that reading into practice.

    I can't view the Unisa forums link unless I create an account, which I'd prefer not to have to do.
  • Just saying it's probably not worth learning something that has been confirmed to have received its last update a year ago. Monogame's API is more or less compatible with the XNA 4.0 framework, so if XNA is your schtick, then Monogame is a better option.

    http://ventspace.wordpress.com/2013/01/30/directxxna-phase-out-continues/

  • If you were to visit me at this very moment, you will find the following books on my table:
    And my apartment smells of rich mahogany...

    In all seriousness though, @Elyaradine is right - owning books is not as impressive as actual games. @rustybroomhandle makes some good points; once you've got some fundamentals down, one of the best ways to learn is by simply trying to make games.
    So if DirectX 9 is still the biggest hustler in the game, so will be XNA.
    I hate to say it but that simply isn't the case, XNA is far from the biggest "hustler" in the games industry. Having worked with both, personally I can't see XNA/Monogame rivalling Unity any time in the near future.
  • Hi @SkinnyBoy welcome to MGSA

    Here at MGSA we encourage people to make games. And the simplest path to making games is to simply just make them, we normally encourage people to start with tools that come with tutorials and show you the quickest path to making games. Most of our community use either Game Maker or Unity.

    Game Maker is rather easy to get into and its tutorials are rather in depth and let people create basic games with relative ease once they have completed the first couple of tutorials.

    And some people, like @Tuism, have made games in Game Maker and then gone on to making games with Unity (which is quite a bit more complex)

    ---

    So while I have you I am rather curious: have you made any games, and can you share them with us?

    I hate to say, but you have been quite rude to rusty who is busy making a really cool game (The Maker's Eden) and given his many years of programming and being involved in game development: I am certain that he knows what he is talking about, and from my own experiences can affirm his statements to be true.

    Also I see Squidcor and Elyaradine have posted with similar information about XNA.
  • edited
    This is actually the perfect post about game programming:

    It starts out with a vaguely informed general collection of concepts, runs but is poorly structured and a little bit gibberish at first but obsessed with a specific measure of correctness (in this case, books read), then gets commented a bit, before finally derailing into a random side-alley technical topic. Then some clever dick appears and goes all meta on the overall structure of it all.

    Ten points everybody :)
  • @dislekcia I see no evidence of source control being used though, so minus 2.
  • @dislekcia I see no evidence of source control being used though, so minus 2.
    I had a bet going on source control or a linux joke next. You win :)
  • [tl:dr] read the last 2 paragraphs of this post

    Are there a bunch of say 'fundamental' area that every game programmer needs though? Err, I mean there are, but can we group them at all, it's such a difficult field to nail down other than MAEK GAEMS! ... which, even with all my years of uni and algorithm competitions, was the best tonic for actual game programming: get your hands dirty and you'll soon see what parts of programming you like.

    I'd say there are areas that suit certain tasks, and that knowing a bit of them all is useful but like any field, some people are specialists, some are jack of all trades ... even within the specialised role of programming (let alone game programming)

    As a quick exercise, I'm just going to vomit some knowledge areas and skills/outcomes needed by game programmers... and then attempt to see what matches what:

    Knowlegde
    Data structures
    System architecture
    Software engineering (I'll lump this with "working in a team")
    Rendering pipeline
    Mathematics
    Toolsets
    User experience (UX)

    Outcomes
    Optimisation
    Rapid development
    Prolonged development
    Aesthetics
    Game Mechanics (ok, this is actually still a group of things)
    AI
    User Interaction/Controls
    User testing

    .. ok I'm going to stop because it's already starting to get confused... I can make up whatever list of things (and everyone might have a slightly different take on it) but I think the point has been made: I personally am pretty good with datastructures, archetecture and maths, whereas I'm quite rusty with my rendering pipeline, not really worked in a large enough team to say I'm an engineer expert, I don't know a huge variety of toolsets (it's like Unity and a bit of GameMaker), and I've never been good at user experience

    So, with my particular strengths I think I'm fairly good at optimisation, prolonged development, and some of the more mathy mechanics (bro, the other day I had to write a DAG to figure out a water flow dynamic model for a game... it was boss, bro), but I'm not terribly good at rapid development, find me anyone else to do UI 'cause I just seem to suck at it right now, and I lack the knowledge of all the toolsets so I'm at a disadvantage when I want to get a particular game idea out in a short period of time (I just end up using Unity and it's not always a good idea). I try make up for it with experience from coding in multiple languages augmented with coffee intake but I'm st...

    [tl;dr starts here]

    ... anyway, you get my laboured point. I guess my larger point is that if there is a core fundamental set of skills needed for game programming, I can only lock down: 'programming' and 'making games', the rest is really what you want to learn and where you want to go (tempered with knowledge of what knowledge will get you there)

    P.S: soz, this isn't a vague slight at the OP (in case people are reading it like that). Just a monologue of how I view the cloud of ideas and areas that is called game programming
  • raxter said:
    Are there a bunch of say 'fundamental' area that every game programmer needs though?
    Probably not. Different projects/tasks will have different requirements. All 'n all, 'make games' is probably the takeaway that comes up most and is the most useful.
    Thanked by 1raxter
  • edited
    raxter said:
    Are there a bunch of say 'fundamental' area that every game programmer needs though?
    Probably not. Different projects/tasks will have different requirements. All 'n all, 'make games' is probably the takeaway that comes up most and is the most useful.
    Yup. And I also think whatever background a programmer has heavily flavours their way of attacking and solving problems. (If you have a hammer, everything is a nail, but in the good way!) Clever / determined / ignorant people solve problems with or without the right background. One example made a huge impression on me: it was some kind of look-at problem, where most programmers would use a bit of trig and vectors to solve it. But this one guy constructed a purely mechanical solution (by appropriate parenting etc.) I could not even imagine how one would come up with a solution like that. I think different styles in a team is wonderful, even on the crispy side of gamedev.

    Not that I think structured learning or even books can't be helpful ;)
    Thanked by 1dammit
  • Echoing @hermantulleken's comment: in Fling Fu, a bunch of us at Luma were wondering how someone with virtually zero dev experience could make the ninjas walk and fight and have all of the physics stuff work so well doing it. How could he possibly do that without some impressive IK solver or something? Turns out, he just fixed the ninjas' head height, and let their bodies "fall" into place, because walking is just controlled falling after all...

    MIND BLOWN.
    Thanked by 1dammit
  • @hermantulleken omg lol I literally just did that yesterday!

    Story time:
    About 2 years ago I tried to make a game based on pipe connections (essentially think of pipe dream but with lots of odd-shaped multi-cell parts each with their own openings in non standard locations). Did all sorts of crazy maths to figure out where the opening would be when I rotated it and whether the connected on the grid based on these opening rotations and orientations. Was a bit of a nightmare and a lot of effort to debug but worked alright.

    Today I'm doing a similar grid thing with 'pipes' (ok roads but same principal), thought I'd have to do a bunch of annoying fidgety maths again, hit me to just use a child game object as a opening marker and when placed on the grid see if they line up (with a reasonable epsilon value), works a charm and was far easier than the advances grid searching rotation mess I was about to dive into! Seems cheap and dirty but it won't break because we know we have a grid with discrete separations between placed objects \o/

    I'm still picking up bits of my brain off my desk after that realisation. Showed me that sometimes you need to know the tools well and work with the way it operates... I've also learned game dev can be a lot of very clever tricks that make seemingly cheap and dirty solutions not actually cheap and dirty... they work and bring the fun, so win!
    Thanked by 1hermantulleken
  • This is why I think it's important to take breaks from being hammers to try look at every problem from a different tool's (harhar) perspective. Reading up on problem solving from different domains, like philosophy or business studies, can actually give you perspective because it trains your brain out of one-track thinking.
    Thanked by 1hermantulleken
  • Let me throw in my 2 cents. I've been programming for a while, games not so much but now, that's what I want to focus on. I'm going about learning game dev by making games (best way to do so). Wanna learn networking in games? think of a game that you'd want to have networking and then learn by making it happen.

    Thanked by 1EvanGreenwood
  • edited
    @raxter + @dammit Yup.

    I also think it's valuable talking problems over with non-experts. I tend to over analyse things. I have *a lot* (a bit more than 200 books :P) of math knowledge in my toolbox, and tend to over-analyse and develop overly "sophisticated" solutions at times... and just miss the common sense way of doing it. It's always a bit of a shock when somebody makes a suggestion that's so obvious you feel like a fool for missing it. (Especially after spending a long time at it.... o.0).
  • This is also a strong argument for involving more people in the solution search. By articulating your problem in a community like this one, you basically get more brains poking at it for free, so you're more likely to get different solving perspectives and thus be more likely to solve it faster.
    Thanked by 1hermantulleken
  • edited
    Lets say you were starting to play chess today, will you be a rated chess player after you play 1000 games?
    Well the simple answer is no! after 1000 games you are still a beginner.

    Then you go to a famous master and ask, "Why cant I seem to win?" then the master takes a book out of her bag called "My System" and says to you "never challenge anyone until you finish reading that book", you scratch your head and quietly respond "Cool I'll try that".

    Two weeks later you get your first victory against your girlfriend and give your friends a run for their money, Then you think entering a tournament will be cool. After the tournament, you only scored 4 out of 7 points, the master comes and congratulate you, " You did well this time, but how did you lose the other three?", again with a disappointment on your face "Those games ran until the end, so I had no idea what to do at the end. The great master says "need no worry" as she grabs a book "Endgame Manual" out of her bag and tells you that the more you read there closer you become.

    Do u see where this is going? If you wanna know chess, you must learn "the chess principles", "End game", "Master Your chess repertoire".

    This also applies to computer science, Its called writing code versus writing beautiful code. If you want to write beautiful code you must know whats the difference between a quick sort and merge sort, versus selection or insertion sort.

    So lets make scenario
    1. John learned programming by watching some random awesome coding videos on YouTube, he has awesome confidence and he think he's a natural hacker.
    2. Sarah is very patient, she likes structured learning, so she read books on design patterns and data structures.

    Both John and Sarah are tasked to write a national voting system to help lazy people to vote on their smartphones. Only one of them will get a tender.

    John begins By opening his IDE and start hitting code, he's having fun there's nothing to think about as long as the program runs. After a week, he is convinced that the program is well done, so he submits it through the presidency and spend the rest of his time coding "Lets own the world app".
    Sarah begins by taking a pen and paper and writing the requirements of the project, the rest of the week, she spend time drawing the uml and deciding what design patterns she is going to use. She breaks on Sunday for church and ice cream, So next Monday she decides all the algorithms and data structures she is going to use, she doesn't have to worry about writing them herself since she'll copy them directly from her textbook, no need to reinvent the wheel. again she rest on sunday and start working on code next monday, She codes for 8 days non stop and submits the project two days before due date.

    A week later Mac calls them for a review
    Mac: "Thank you guys for taking us into the future, I hope this elections will be a free and fair... After a through testing this is what the expects came up with, John you are a very good programmer at list better than me. There were 3 John Smith in your system even though eleven voted, only eleven people voted for EEF but it shows 111.
    Sarah your program takes 10 seconds to open and John only takes 50. Well done. "

    I'll let you write the end of story.

    All of this also applies to Game Programming. Remember, everything written on books is written so that we don't repeat mistakes of the past. Game Coding complete 4th edition by Mike McShaffry will address this issues. good luck
  • Any chance we can get the all caps taken out of the thread header?
  • edited
    @SkinnyBoy

    You can definitely learn a lot from various "masters".

    I think the real key to become a great programmer is to just be so interested in it that every little piece of info you can get makes you better (@dislekcia said something similar in connection with game design before - you have to be curious). The great programmers I have worked with or met / know somewhat have little in common - some studied, some did not, some work under somebody great, some did not, some read blog, some read books, some don't.

    It's that burning desire of understanding and power that makes you a better programmer - the other stuff is just various means by which to fulfill that desire.

    There are good reasons though to be a bit skeptical about game programming books, and to prefer "just doing it".

    First, as any seasoned programmer knows, you do not really believe something is a mistake until you have been really burnt by it. In the real world, there is no good and bad - there is just compromise. I have not read books that can really convey the trade-offs you have to make. There is a big difference in knowing source control is good, versus having lost months of work because you did not have it.

    Second, like most skills, there are different levels of understanding. How well can you ride a bike by reading about it? In fact, you cannot even understand riding principles if you have not been on a bike (you just think you do). The same with programming. If you understand the principles of algorithms, you are still far off from making fun games. (As an extreme example, spend some time here http://cstheory.stackexchange.com/).

    Third, the idea of (re-inventing the wheel = bad) is a myth. As a (game ?) programmer, your job is *not* to code specs and standard algorithms, or just glue things together. Your job is to re-invent wheels *all the time*. You will be expected to do new things pretty much every day. Even if you clone a game, chances are the algorithms you need is not easily be accessible. Your skill is not just to understand and implement, but to invent too. If you cannot invent... (and re-invent) then you are a bit doomed.

    Fourth, probably the biggest challenge of being a game programmer is to persist past the interesting bits, and get the necessary bits done too. Practicing finishing projects is invaluable. It's a form of stamina. I'm not a great chess player: I'd much rather play the master student than the one who had 1000 games under the belt.

    *Edit:* (Almost forgot) Fifth, writing a book and being a good programmer are separate skills. Only very few people have both. Most of programming knowledge is not available *anywhere* but other peoples heads. It's frustrating, but true.

    ----

    Your scenario is flawed, because, 1) Sarah will discover too late that she cannot compile or deploy her program from Windows onto the Linux server 2) she will spend way longer deciphering compiler bugs, 3) she will discover that her O(n) algorithm is actually slower than Johns O(n^2) algorithm for practical problems, 4) her program is unusable because she did not get early feedback from users 5) she did not realise the GUI system does not map well to her UML diagrams, and possibly 10 other things.

    ----

    That said, I love programming books and other resources, and programmers can learn a lot from them. There are so few game programming books published we can read all of them. Just beware that most of the things you will need are not in them. Books are helpful to structuring your experience, opening the doors to new avenues of exploration, and to amplify your knowledge. But 200 books vs. one finished game out in the wild... The story does not end as you expect.

    (And just a little disclaimer; the above is not meant to be construed as an argument for making game engines. Learning programming and making games are two separate things, only slightly overlapping.)



    Thanked by 2Chippit Elyaradine
  • edited
    Karuji said:
    Any chance we can get the all caps taken out of the thread header?
    I've been wondering if we should change it to "Game Programming Book Reviews" and thus keep it more on topic :)
    SkinnyBoy said:
    All of this also applies to Game Programming. Remember, everything written on books is written so that we don't repeat mistakes of the past. Game Coding complete 4th edition by Mike McShaffry will address this issues. good luck
    How do you know that your chess analogy applies to game programming? All of Herman's points above are really, really solid. (Also, this hypothetical chess master is making a killing off books, the cynic in me asks what incentive she has to truly turn you into a master chess player yourself - compared to turning you into a repeat customer)

    As someone that's built both nationwide applications for the government AND released completed games, there's not much I can generalise across the two other than: Try to understand the problems you're attempting to solve and make sure those problems match reality. In government work that means nailing down the spec 100% and having ample use-cases to check against as you implement. In game development that means lots of rapid iteration and testing with players, then fielding myriad problems that are unique to that specific game while avoiding useless wastes of time like premature optimisation and feature creep.

    So far the historical approach most likely to actually result in someone becoming a successful game programmer is to start programming games and doing research (book-, face- or internet-based) once they understand the implementation space of the problems they're trying to solve. The other way around, doing all the research first, hasn't worked nearly as well. If that second approach works for you, cool. But it only WILL have worked once you've got a game you programmed to show people :)

    It's also not the best approach to advise for other hopeful game programmers unless you have more knowledge about their individual programming backgrounds and goals. Given no information whatsoever, it's better to advise the approach with the statistically higher success rate.
    Thanked by 1Karuji
  • edited
    The chess analogy sprained my uncus.

    @SkinnyBoy I have a suggestion. How about putting all this learning to use in a game jam. There are so many of them. The one I usually enter is Ludum Dare, alternating between the 48 hour compo and the 72 hour jam. They're fun and there's usually a lot of creativity on show.

    On beautiful code: In general, I don't consider myself a "programmer", even though I program. I don't see my task as "writing code", even though that's what I do. I try to remain focused more on the content I am creating. I consider my activity in the morning as "driving to work", not "negotiating traffic lights and taxis", and I see what I do when making a game the same way.

    In the big scheme of things, my code is probably horrendous, but I know enough about what makes things slow and what logical way to solve any problem in a way that runs well. I like to go from thought to playable thing in the fastest possible way, even if it means nasty shortcuts. I want to know what a thing feels like before devoting too much time to crafting the code that drives it.

    I should write a book too: My Code Is Shit And I Don't Care
    Thanked by 2EvanGreenwood dammit
  • Herman's post is utter win. And he (or some other respected programmer around here?) has said before that as a solid programmer in a production environment, it's not just about optimising the code (although there is that), it's about optimising your time so that you can get it done to be fast *enough*, doing it so that you're saving time when the code needs iterating (especially from someone who isn't you, maybe months later).

    In that sense, writing "beautiful code" isn't about being really smart and doing fancy stuff that requires a lot of extra reading to understand: it's about writing code that's easy for other team-members to read/edit, that runs fast enough that the game doesn't hitch. If the game's running smoothly, then you're wasting time trying to be clever. I'm sure there's a book about that too. :P
  • edited
    SkinnyBoy said:
    "which or what books do I have to read that will enable me to make games?"
    Just to be fair. I don't think @SkinnyBoy was advocating NOT practicing game programming and NOT making games. It's very easy to argue against book learning if you assume that book learning means not practicing making games and not applying that knowledge.

    Source: In his chess scenario he framed the books as the crucial bit of understanding that helped the players grow once they'd already picked up some skills at different stages of the chess player's development (i.e. the scenario was not of a chess player who reads a ton of books and immediately is a master).

    (It's a crude metaphor, but I don't think @SkinnyBoy meant to argue that doing all the research before having any practical experience is the most efficient approach, I think he was literally trying to advise on which books to pick if you wanted to read up on beginner game programming)

    Also. I don't think anyone here thinks reading books and theoretical papers are bad for you. That would be dumb. I've met many programmers who have been able to talk about "white papers" written about a particular game programming subject, and their knowledge far surpassed mine and they were able to do useful things that I was not.

    I agree "Game Programming Book Reviews" would be a more useful discussion (like @dislekcia mentioned).

    Though of course I haven't ever read a programming book myself, and I don't think that will ever hold me back (as my game design skills are more important than my game engineering skills in my job). But I can imagine how that extra information could be useful to some other programmer, and I'm glad that some of my colleagues have been through the kind of formal education that made them acquire theoretical game programming knowledge, and then be able to pass on that information to me when I need it.

    @rustybroomhandle I'd totally read your book : )
  • edited
    Just to be fair. I don't think @SkinnyBoy was advocating NOT practicing game programming and NOT making games. It's very easy to argue against book learning if you assume that book learning means not practicing making games and not applying that knowledge.

    Source: In his chess scenario he framed the books as the crucial bit of understanding that helped the players grow once they'd already picked up some skills at different stages of the chess player's development (i.e. the scenario was not of a chess player who reads a ton of books and immediately is a master).

    (It's a crude metaphor, but I don't think @SkinnyBoy meant to argue that doing all the research before having any practical experience is the most efficient approach, I think he was literally trying to advise on which books to pick if you wanted to read up on beginner game programming)
    Agreed. I think we're just being our usual e-overbearing selves while trying to get someone to make and then post some games already ;) (Sorry)
    Thanked by 1Tuism
  • Experience underpins everything here. While education is useful to get to a baseline, nothing trumps actual experience. Usually knowledge that comes from experience is more rich/deep than that coming from books anyways.

    Just by the way, in the chess example, if you play 1000 games without any improvement then you probably shouldn't be playing chess and nothing you do will ever help you. One of the most important things in life, and especially in the dev world, is the ability to learn by trying (and failing) and by adapting for success. Those who try and fail have the ability to lead to improve the current state - those who follow recipes fall behind and become irrelevant.

    Just my 5 cents.
    Thanked by 2EvanGreenwood Tuism
  • I think there's also a point worth making here about direction of learning:

    Personally, I don't see very much in the scope of game development (programming included) that helps me narrow down specific successful approaches. I see so many different ways of coding working, so many different engines, so many different game ideas, so many different focuses from mechanics to art to emotional resonance to client brief to systemic need... Basically, there are so many possible paths that there isn't really one path at all - I find that books tend to assume that the specific path one person followed is a correct path that others can and should follow to reach similar success.

    That doesn't seem to be the case - especially given how the landscape these paths are traversing changes continuously as new technologies, social perceptions and economic implications come and go. I don't feel that we can have a "map of game development" in that sense.

    That's why I prefer to focus on a space that I can find generalisable learning points in: What didn't work for others. And, if possible, why. Unfortunately I haven't been able to find many resources that focus on this, so most of my knowledge is gained from anecdotes and watching the visible sections of the local and international development industries evolve.

    Learning what NOT to do is much more important than learning what might have maybe been the right thing to do at some point.
    Thanked by 2farsicon hanli
  • I just found out that you can read any book for free online via unisa. This was a coincidence because they put this info at page b4 last in my COS3711(Advance Programming) tutorial letter so this seems like a secret mission or something.
    There only way to read books online via unisa is to follow the instructions bellow.

    Go to oasis.unisa.ac.za
    1. Click on Library Links -> Search for Information Resources -> A-Z list of electronic resources
    -> s -> Safari Business and Tech Books Online

    You can either search the books you want at the top right, or you can click any category on the left side. My favorite category is "game programming' and all the books I mentioned above are available there.
  • @SkinnyBoy: The links are only accessible by UNISA students btw. UCT has a similar thing tho if anyone here is there. Actually most universities have something like this, if you are attending uni or did attend and you still have access, it's worth digging around the library site, lots of great 'free' resources (well, paid for with student fees and such :p)
  • I updated the list of books above. I'll be doing the reviews on all my favorite books. I was doing some offline. but I'll post all ones I finished all the reviews.

    more on that, starting may, ill release games ive been making throughout the years and comment on which books i read to make those games possible.

    the reason I have been holding is that this games were not polished enough that gave me satisfaction for main release, so now I got an artist and all shoud be well. 2 I decided that all of my games must have social features, so all this time I've been making a nodejs social engine to handle all the networking stuff.

    SkinnyBoy Games is coming soon!


  • Posting something on a developer forum is not a "main release". We see tons of unpolished things all the time, neither polish, nor social features are worth more than honest feedback from skilled peers.
Sign In or Register to comment.