Books/other stuff for new programmers

The Partridge Family were neither partridges nor a family. Discuss.
User avatar
DonJohnnie
Posts: 18
Joined: February 8th, 2017, 2:18 pm

Books/other stuff for new programmers

Post by DonJohnnie » February 12th, 2017, 3:12 pm

Hello guys!

At first I intended to send this only as a PM to Chilli, but he recommended that it would be good to get some opinions from the whole community rather than just one person. It's gonna be a long-ish read so please bear with me :)

I wanna say that I really appreciate the work Chilli and this whole community is putting into teaching those who are new to game programming (or programming in general); you can't really find much clear content on the internet. There are some tutorials but those aren't able to teach you much, so you're stuck with merely repeating or rewriting what that person is showing with no actual understanding.

Now, I've been lurking the internet trying to find answers to my questions but this whole "how to get into game programming" thing is kinda foggy. When I ask something on some stackexchange site (god i hate those fuckers), there's always like one dude "uuuuh, this ain't the right section, bruh, gtfo" + the others who just downvote my question to eternity and get me banned (not being able to ask anything) for a while lol.

When it comes to C++ programming in general, the experience I have is from the book C++ Primer (latest edition, about 1k pages in total) which has pretty much set the basis for my lessons to come (at the end I'll write some of the chapters to give you a general idea of the book in case you don't wanna search it up). Note: I read it very thoroughly so I can say that I understood those things very well (maybe not the advanced tools chapters yet, but that's ok I guess). I switched to Primer after reaching a few hundred pages of Bjarne Stroustrup's "Programming and principles bla bla" (the one for new programmers coming to c++), when the shit hit the fan, and everything got very fucking confusing, like small parts of code everywhere and eventually NOT writing it all together and shit like that.

Now, talking about my goal, I would like to be a game programmer, but in the triple-A, big-budget sense (I don't mean I want to have some batshit crazy salary, I'm just talking about the overall image of the work field if you get what I'm saying), like I wanna get a bitch wet when she hears I work for something like Naughty Dog, Valve, DICE, etc, meaning I'd like to gradually work my way up to 3D game programming, and not stay in the 2D area for much longer than I need.

So, firstly, what books/stuff would you recommend that would put some basis into my GAME programming knowledge, as the C++ Primer helped me with GENERAL programming concepts (besides Chilli's C++ game programming series) ? And secondly, after the beginner stuff, maybe some (more) practices or overall intermediate, semi-sort-of-advanced stuff for later on ? Concluding/Reformulating: what would you recommend to someone who wants to get serious,carnal,intimate with game programming ?

PS:
I have a lot of (free) time to learn these things and also to practice, so that's not a problem, and most of all I'm willing to have patience and to understand. I'm currently 18, highschool, 11th grade (not that it really matters, but I'm just putting it out there)

Sorry if this message was kinda bulky and it was kinda hard reading through my stuff (english is not my native language)

Thanks in advance and take care :)

The quick run-through of C++ Primer 5th:
1.Start: general things about input/output; while,for,if, statements + working with a Bookstore class (not defining it, just using it)
2. Variables and types: bult-in types, conversions, literals, declarations, const qualifier, references and pointers to const, type aliases; auto,decltype
3.Strings, Vectors, and Arrays: using declarations; string type; defining, initializing, operations with strings; vector type and info about it like in the string section; c-style strings; multidimensional arrays;
4.Expressions: fundamentals, basic concepts, precedence and associativity, order of evaluation, arithmetic, logical, relational, assignment, increment etc operators; Implicit/explicit type conversions
5. Statements: if,switch,while, for, range for, break, try, throw etc etc;
6. Functions: Basics, local objects, declarations, separate compilation, argument passing (by val/ref), overloading and scope, return; inline and constexpr functions
7. Mothafucking CLASSES: defining the class from the Start (the one which you worked with) and abstract data types in general; the whole class arsenal - constructors, member /non-member stuff, friends, copy control, class types, functions that return *this, name lookup and class scope; static members
8.The IO Library : io classes, string streams, and some info about copying or assigning objects IO objects
9.Sequential containers: overview of seq. containers, container library overview, iterators, begin(), end(), assignment and swap, adding elements to a seq. cont.; erasing, accessing elements; vector growing, other std::string info
10.Generic algorithms: pretty self self-explanatory + lambda expressions + binding arguments
11.Associative containers: pair, map, set types;
12.Dynamic memory: smart pointers -> shared, weak, unique; Dynamic arrays; allocator class
13.Copy control;
14.Overloaded operations and conversions;
15. Object fukin oriented-programming: overview, base, derived classes, conversions and inheritance, virtual shit, copy control from the perspective of inheritance, etc
16. Templates;
And then the advanced topics for like 200 more pages (a few chapters)

Note1: all of these chapters come with well-thought examples that use and test the knowledge you've gained; from little declarations to full-blown base and derived classes.
Note2: list longer than I first wanted it to be

User avatar
chili
Site Admin
Posts: 3948
Joined: December 31st, 2011, 4:53 pm
Location: Japan
Contact:

Re: Books/other stuff for new programmers

Post by chili » February 21st, 2017, 12:40 pm

Hey bro, sorry for not responding sooner! I had meant to earlier but it kinda got pushed to the side and forgotten, because I was anticipating writing a big response.

Basically my advice boils down to: write code. Books are fine, they can give you a foundation and they can introduce new ideas to you as you progress. Some can explain a certain technology, and that's fine. But honestly, they are not essential.

What is essential is getting the coding practice in. If you wanna get good, code every day, 1 hour, 2 hours. 30 hours a week even. That is it. If you love programming, it will be the easiest thing to get your practice in. Give yourself challenges, and set about conquering them. If you fail hard, lighten up a bit. Especially for games, you should be coding games yourself. Start small, or even start by modifying someone else's simple stuff. As you make progress and it gets easier, keep cranking up the complexity and scale of your projects.

Doing this shit will not only make you better at generating code, but also at research (googling shit and reading documentation), at debugging, at creativity in coming up with your own challenges and game ideas, problem solving skills, organization, tangential skills like math/physics, etc. etc. etc.

I've seen a lot of people who are just perpetually preparing, and never doing. "I'll start my big game project just after I learn X, Y, and Z" Just fucking do it shia_lebeouf.gif

There are undoubtedly good books out there, but I wouldn't know cuz I haven't read any of them. If I got time for that bullshit, I'd rather be fuckin' doing the thing than reading about the thing bro ;)
Chili

User avatar
DonJohnnie
Posts: 18
Joined: February 8th, 2017, 2:18 pm

Re: Books/other stuff for new programmers

Post by DonJohnnie » February 21st, 2017, 8:30 pm

No worries bro.

Thanks for the answer. I'll try to follow it and code some shit up everyday from now on.

Keep up the good work with the series :)

User avatar
YoMomIsANiceLady
Posts: 33
Joined: February 2nd, 2017, 8:20 am

Re: Books/other stuff for new programmers

Post by YoMomIsANiceLady » February 21st, 2017, 8:41 pm

Reading chili's comment I can confirm. I have always wanted to get into game dev but never really got into it. I always thought "Oh I need to learn how to do this", "I need to learn how to do that", "Yes, I want to make my own games, I definitely WILL". The 'will' was always the problem. I finally decided to not do it in the future but do it in the now and have started working after telling that myself for years. So keep that in mind!

Secondly, not sure whether or not you're planning to go to college but speaking from experience, I am currently in my third year of computer science and a part of our course is to get a work placement for 6 months. Basically, we study for 2.5 years and then we need to go to work and then we study some more. Looking for this placement, I have noticed that there are a TON of companies which offer internships. They are looking for young students or graduates with little to no job experience. I have applied to Riot Games (They make League of Legends), Naughty Dog, Square Enix, JAGEX (RuneScape) are hiring right now, Rockstar Games, Ubisoft are looking for interns. All of these gaming companies are looking for CS students. So consider taking a Computer Science / Software Engineering course. I'm not saying you should. But as a Computer Science student, I can confirm it is closely related to game dev and we learn a lot of very useful things. It is also high in demand in game dev companies!

Another thing to keep in mind is that these companies will look at any work you might have done. So if you do work on any games of your own, KEEP TRACK of them, keep them documented and then throw them on your CV when you're applying. If say in 2-3 years you apply to an internship and you present them a fair amount of projects, git repos with your code, anything that you work on really, you will definitely make a good impression.
"Life is like death, but completely different"
- Ivan Gašparovič

User avatar
Zedtho
Posts: 189
Joined: February 14th, 2017, 7:32 pm

Re: Books/other stuff for new programmers

Post by Zedtho » February 22nd, 2017, 6:57 pm

chili wrote:
I've seen a lot of people who are just perpetually preparing, and never doing. "I'll start my big game project just after I learn X, Y, and Z" Just fucking do it shia_lebeouf.gif
That was me before I found your tutorials haha. I would read 300 pages of "C++ Programming and Principles" and wait until I'm finished before starting to program :P

That's probably also why I've never been so enthusiastic about programming, because I never did program. It's a big problem hindering new programmers from continuing when they read books.
But, less competition in the field *insert evil laugh here*.

When I didn't know how to get the physics in Pong done (well that's what I thought the error was. It wasn't...) I was sent this book: https://www.amazon.com/exec/obidos/ASIN/1482250926

You could also look at already existing posts on forums.

Florian3321
Posts: 27
Joined: February 12th, 2017, 1:50 pm

Re: Books/other stuff for new programmers

Post by Florian3321 » May 13th, 2017, 9:27 pm

My dream also is to get a programming job some day... I am currently 17 years old so I should start writing lots of code :) Till now I have learned from these ressources, maybe they also help you a little bit ;)

https://www.youtube.com/user/ChiliTomatoNoodle
https://www.youtube.com/user/1kingja
https://handmadehero.org/
https://www.youtube.com/watch?v=1IcZB26 ... qMDY6A1w_c
https://ossu.firebaseapp.com/#/
https://github.com/ssloy/tinyrenderer/wiki
https://www.youtube.com/user/BSVino
https://www.youtube.com/user/GameEngineArchitects
https://www.youtube.com/channel/UCfUy39 ... yk7ztgRuuQ
https://www.youtube.com/user/makinggameswithben
https://www.youtube.com/user/TheChernoProject
https://www.youtube.com/user/thebennybox

and some books: ;)
3D-Math-Primer-for-Graphics-and-Game-Development
GameCodingComplete
Tricks Of The WindowsGameProgrammingGurus-FundamentalsOf2DAnd3DGameProgramming
Tricks of the 3D Game Programming Gurus
CharlesPetzold-ProgrammingWindows
Game Engine Architecture
Andrew S. Tanenbaum - Structured Computer Organization

Coursera course: From NAND to Tetris

Maybe it helps somebody...

User avatar
BurakCanik
Posts: 250
Joined: February 8th, 2014, 9:16 pm
Location: Istanbul, Turkey

Re: Books/other stuff for new programmers

Post by BurakCanik » May 30th, 2017, 10:10 pm

YoMomIsANiceLady wrote:I have noticed that there are a TON of companies which offer internships. They are looking for young students or graduates with little to no job experience. I have applied to Riot Games (They make League of Legends), Naughty Dog, Square Enix, JAGEX (RuneScape) are hiring right now, Rockstar Games, Ubisoft are looking for interns. All of these gaming companies are looking for CS students.
Are they looking for foreign students though ? I mean I'm from Turkey (also studying CS here) and this is exactly the kind of thing I would kill for.
If real is what you can feel, smell, taste and see, then 'real' is simply electrical signals interpreted by your brain" - Morpheus

User avatar
BurakCanik
Posts: 250
Joined: February 8th, 2014, 9:16 pm
Location: Istanbul, Turkey

Re: Books/other stuff for new programmers

Post by BurakCanik » May 30th, 2017, 10:27 pm

Also, some of my recommendations:
  • Elements of Computing Systems - Nisan and Shocken.
    Excellent book on computer architecture. By doing the projects at the end of each chapter, you are building a computer system from the ground up. It should be taught at every CS program imho. It's also mentioned above as "From NAND to Tetris".

    Introduction to 3D Game Programming with DirectX 11 - Frank D. Luna.
    Great book on 3D graphics programming and also DirectX 11 introduction. After I learned my fundementals from our lord and saviour Chili, I delved into this book. Spent some (too much) time on it, "modernizing" its demos. DirectX 12 version is out too, although I'd recommend this instead, since DX12 is low-level, expert's API. Only downside to this book is that it uses the deprecated effects framework so you got to figure out how to do stuff without using effects framework, on your own. There are some sources online and I have modified 4/5 of the book's demos (up until chapter 21 I think) to not use the effects framework, I'd be happy to share them. That's what I meant by modernizing earlier.

    Effective C++ - Scott Meyers.
    After you get your shit together in C++. It's more of a guide, elaborating on do's and don't do's of C++ software design. It'll make your life easier, when you know enough C++ and programming in general.

    Game Programming Patterns - Robert Nystrom.
    This book is kind of like the famous Design Patterns book by the Gang of Four (I'm told). It provides solid examples of software design patterns and some optimizations used in the games industry. It's a fun book to read, often making you laugh as it (imo) has witty humour. Also it lists bot pros and cons of each pattern, warning you about overusing/misusing them etc. Really great book! (Also that's where albinopapa stole his forum signature from.)
If real is what you can feel, smell, taste and see, then 'real' is simply electrical signals interpreted by your brain" - Morpheus

albinopapa
Posts: 4373
Joined: February 28th, 2013, 3:23 am
Location: Oklahoma, United States

Re: Books/other stuff for new programmers

Post by albinopapa » May 31st, 2017, 6:24 pm

BurakCanik wrote:(Also that's where albinopapa stole his forum signature from.)
Whoa, whoa, I stole nothing...I cite my source.
If you think paging some data from disk into RAM is slow, try paging it into a simian cerebrum over a pair of optical nerves. - gameprogrammingpatterns.com

User avatar
cyboryxmen
Posts: 190
Joined: November 14th, 2014, 2:03 am

Re: Books/other stuff for new programmers

Post by cyboryxmen » May 31st, 2017, 7:32 pm

BurakCanik wrote:
  • Game Programming Patterns - Robert Nystrom.
    This book is kind of like the famous Design Patterns book by the Gang of Four (I'm told). It provides solid examples of software design patterns and some optimizations used in the games industry. It's a fun book to read, often making you laugh as it (imo) has witty humour. Also it lists bot pros and cons of each pattern, warning you about overusing/misusing them etc. Really great book! (Also that's where albinopapa stole his forum signature from.)
The book is actually available for free on his website too if you are not planning on purchasing it.
Zekilk

Post Reply