Reddit reviews Game Coding Complete, Fourth Edition
We found 32 Reddit comments about Game Coding Complete, Fourth Edition. Here are the top ones, ranked by their Reddit score.
We found 32 Reddit comments about Game Coding Complete, Fourth Edition. Here are the top ones, ranked by their Reddit score.
First of all, I wouldn't recommend learning game coding by looking at a codebase, the biggest reason being that all games are different and are using different techniques (obvious one being 2D vs 3D, but you have tons of differences between a FPS, a RTS, an open-world, etc).
I would recommend to find books or articles that explain why a certain technique is usefull, the coding language doesn't really matter, the technique itself is what is important (As you are saying it's for learning purposes and I don't think it's quite interesting to understand data-driven programming, cache optimization or 3D APIs optimization for C++ when you are first trying to understand a game structure).
I can recommend two really good books :
And website like Gamasutra have lots of good articles to look at. You can also look at HandMadeHero when Casey Muratori is explaining in details why he is doing what he will programming later on the show, his website is worth looking at too with some really good talks. Lot of good talks can be found at GDC, not all of them are free but a good portion are.
If you still want to learn only from codebase :
Happy game programming :)
EDIT : Fix format
EDIT 2 : Changed open source to publicly available sourcecode
These days there is only 1 book I would recommend, and a honorary mention:
Buy
Optional
There 2 much older books -- only pick them up used to help give a different perspective
Avoid
Misc.
You'll also want to browse our 2nd wiki for specific topics.
Game Coding Complete was the book we used in my game programming course during my bachelor.
Thanks for linking to my tutorials. Seeing the title made my heart drop for a moment, because I thought that you were talking about me suddenly stopping without achieving anything, ha-ha. (Well, I haven't written in a long time, but new articles are on their way)
There are not much tutorials which talk about more advanced topics, because it's a lot harder to write about them: you have to research a lot, you have to get some experience with the stuff you want to share with other people. Another problem is that it's much harder to come up with examples and sample code for harder and more complex stuff. Some things are just not a very good fit for the format because you have to write hundreds of lines of code.
That's why I mostly prefer books to tutorials, while I still can randomly find a cool tutorial on the topic I'm searching for in Google.
Here are some books which helped me the most (you already mentioned Game Programming Patterns, it helped me a lot too)
Another thing I can recommend is to read /r/devblogs, there are some in-depth blog posts which talk about complex topics and show how some problems can be solved.
As a bit of self-promotion, I want recommend my game's dev log thread which talks about complex topics and features code and solutions to the problems I solve. :)
Game Coding Complete has been a great read so far. It covers a lot of "big picture" things and architectural discussion which I haven't seen in a lot of other books.
.FBX is one of the most used formats in the industry, what usually happens is the artists output their work into .FBX files and either the engine loads it directly, or will convert it to a proprietary format that's most efficient for their engine. Unfortunately information on .FBX is not publicly available so you have to use their SDK.
http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775847
http://docs.autodesk.com/FBX/2014/ENU/FBX-SDK-Documentation/
.OBJ is not a suitable format for animation it's only good for defining meshes and materials. A very good library that removes all the hassle of format loading is Assimp: http://www.assimp.org/
Lastly, animation formats don't store individual vertex positions, it will store matrix transformations. It's worth looking into how animation is done, I don't have any links but I would recommend looking at the following books:
https://www.amazon.co.uk/d/Books/Game-Engine-Architecture-Jason-Gregory/1568814135
https://www.amazon.co.uk/Game-Coding-Complete-Mike-McShaffry/dp/1133776574
Alright, in that case it sounds like you can benefit from 'the general advice':
Is this what you mean by "Game Programming Complete"?
http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574
I'm asking because I like to backlog books like this and want to make sure it's the right one. I've also seen this one suggested elsewhere.
There isn't a completely language agnostic book out there like you'd find with say Code Complete, but there are two books that fit your description but neither is really a beginner text.
 
Game Coding Complete
and
Game Programming Patterns, much of which is available on his website.
Once you get a bit more (ok, a lot more experienced), Game Engine Architecture is another great read.
 
Other than those 3 books, almost everything else is technology or language specific... like Learning Unity 5 or Learning Inverse Kinematics for __, etc.
 
While you are just starting out however, you should consider the beginners guide on Gamefromscratch, followed by various tutorial series or game engine overviews, as you aren't at the point where you really need to buy a book yet.
Disclaimer, I haven't personally built a full functioning game engine from scratch but I've been interested in game engine architecture. I recommend two books I'm currently reading, Game Engine Architecture and Game Coding Complete.
I'm writing an event manager for my game, and the game dev book i'm reading suggests using hashed strings as a unique identifier for game events. Why is it necessary to hash the strings? Shouldn't the pointer be a sufficient identifier? Aren't hashing functions usually expensive?
It seems like you're on the right path. I started working with major engines like unity and UDK. In addition I started writing small game clones (Pong, Pac Man, Asteroids) in C++ using DirectX. Once I was comfortable with all that I started working on my own flexible/reusable engine and writing my own tools. Using Unity and UDK gave me a good idea of what sort of features I needed to support and helped me develop comprehensive use cases. The whole point is that it is really an individual process. I don't have a degree, just been developing in C++ for the past 15 years. Tons of good literature out there too! http://gameprogrammingpatterns.com/ http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574 http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135. Those are some of the resources I found particularly helpful.
I got my start by taking AP CS in high school. However, I had already gone to college and that was a while ago, so I read some books on the commute to/from work.
Initially, I read Sams Teach Yourself PHP, Mysql and Apache all in one to learn PHP.
Immediately afterward, I read Murach's Java Se 6 and Beginning Java Objects to learn Java.
Most recently, I read a portion of C++ Primer Plus, but got very sick of it. I've read most of Accelerated C++
I have a few other books on C# to read when the time comes to actually write code.
By the time I had read all of the above, I felt pretty confident on how to structure a program, regardless of language. As such, I was able to pick up Python and JavaScript quite easily just by reading online documentation at Python.org and W3Schools. When I'm writing a web app, I'll rely pretty heavily on PHP's and MySQL's online documentation to help me with whatever syntax quibbles I may have.
I still want to read Game Coding Complete and I'll probably want to find a few resources on programming within XCode.
They all tend to follow the same programming paradigms, to be honest. Java did a good job in getting me into an OOP mindset and C/C++ did a good job at helping me think about how to program things without layer of abstraction. Once I learned these concepts, it was pretty easy to get started with a new language. Programming in PHP can be super sloppy, but taking what I learned from other languages, I'm usually able to write fairly clean code in PHP (especially when I learned how to use classes).
I wouldn't recommend all of the books above, to be honest. I didn't have much ability to do online training at the time and compiled lists of books weren't nearly as useful at the time, so I relied mostly on Amazon book reviews. I'm sure you can find a few choice books on each language you want to learn and go that way. If you were to read books, I think Accelerated C++ is a good book, but works best if you already have some experience programming. I remember like Beginning Java Objects more than Murach's, though both are great as references (which is why they're both still in my bookshelf). C++ Primer Plus spends too much time teaching C and not enough time teaching C++ (you spend pages upon pages learning about C-style strings, aka char arrays, rather than just using the String Class, but I digress).
Ultimately, I could read a bunch about a language, but I never truly learned the language until I started writing in it. I've written a handful of programs just as proofs of concepts and I recommend you do the same while learning any language.
Chapter 22 of Game Coding Complete covers this.
Get a few books on the subject, they are a great resource to get you familiar with the parts that go into making a full engine.
http://www.amazon.co.uk/Game-Coding-Complete-Mike-McShaffry/dp/1133776574/ref=sr_1_1?ie=UTF8&qid=1370533326&sr=8-1&keywords=game+coding+complete
http://www.amazon.co.uk/Game-Engine-Architecture-Jeff-Lander/dp/1568814135/ref=sr_1_1?s=books&ie=UTF8&qid=1370533364&sr=1-1&keywords=game+engine+architecture
http://www.amazon.co.uk/Game-Engine-Architecture-Engineering-Applications/dp/012229064X/ref=wl_it_dp_o_pd_S_nC?ie=UTF8&colid=3D6S8DHCZFLJF&coliid=I301TVJ1BKHNZ8
Heres the sources I used to create a 3D OpenGL engine.
https://www.youtube.com/watch?v=VS8wlS9hF8E&list=PLRIWtICgwaX0u7Rf9zkZhLoLuZVfUksDP
https://www.youtube.com/watch?v=GFYT7Lqt1h8&list=PLlrATfBNZ98eOOCk2fOFg7Qg5yoQfFAdf
https://www.youtube.com/watch?v=ftiKrP3gW3k&list=PLEETnX-uPtBXT9T-hD0Bj31DSnwio-ywh
https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574
http://www.randygaul.net/2012/08/23/game-object-factory-distributed-factory/
http://www.randygaul.net/2013/05/20/component-based-engine-design/
Use libraries for things you don't understand. Use Box2D or Bullet for example as physics engine.
You can learn as you go, no need to know everything at the start. Start with basic shapes without light or textures. Then add components as needed (component based engine design). Components can be things such as model, material (texture + data), AI, physics, controllers.
I don't know enough to answer you without knowing I'm not completely wrong but I can point you in the right direction.
I recently purchased Game Coding Complete http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574/ref=sr_1_1?ie=UTF8&qid=1334788077&sr=8-1
and it describes a model very similar to what you're talking about (separation of game and rendering). I can't recommend this book enough, I'm only 5 chapters in and I'm already loving it. The fourth edition is freshly updated as well.
Here's the source code from book http://code.google.com/p/gamecode4/ Maybe you can answer your own question by reading it (its C++ / directx)
Sorry if you have no interest in buying a book but what you described fit the book fairly well, Good luck!
Game Coding Complete
I have a pdf of this book which covers a lot of the basics and some advances stuff of making games. It is focussed on programming and includes code snippets and lots of examples.
LOL, just looked up Game Coding Complete 4th edition on amazon
https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574
who are these people selling for such ridiculous prices ?
What kind of games? Mobile games? Browser games? Desktop/console games?
If you're into building games entirely from the scratch and have it run on desktops and mobile devices, I'd suggest trying out the SFML framework (C++). They have some nice tutorials on their GitHub Wiki
Keep in mind that those are just the basics. If you prefer some more comprehensive literature, I'd recommend the following books:
Game Coding Complete
Game Programming Patterns
Game Engine Architecture
Game Engine:
Game Engine Architecture by Jason Gregory, best you can get.
Game Coding Complete by Mike McShaffry. The book goes over the whole of making a game from start to finish, so it's a great way to learn the interaction the engine has with the gameplay code. Though, I admit I also am not a particular fan of his coding style, but have found ways around it. The boost library adds some complexity that makes the code more terse. The 4th edition made a point of not using it after many met with some difficulty with it in the 3rd edition. The book also uses DXUT to abstract the DirectX functionality necessary to render things on screen. Although that is one approach, I found that getting DXUT set up properly can be somewhat of a pain, and the abstraction hides really interesting details about the whole task of 3D rendering. You have a strong background in graphics, so you will probably be better served by more direct access to the DirectX API calls. This leads into my suggestion for Introduction to 3D Game Programming with DirectX10 (or DirectX11).
C++:
C++ Pocket Reference by Kyle Loudon
I remember reading that it takes years if not decades to become a master at C++. You have a lot of C++ experience, so you might be better served by a small reference book than a large textbook. I like having this around to reference the features that I use less often. Example:
namespace
{
//code here
}
is an unnamed namespace, which is a preferred method for declaring functions or variables with file scope. You don't see this too often in sample textbook code, but it will crop up from time to time in samples from other programmers on the web. It's $10 or so, and I find it faster and handier than standard online documentation.
Math:
You have a solid graphics background, but just in case you need good references for math:
3D Math Primer
Mathematics for 3D Game Programming
Also, really advanced lighting techniques stretch into the field of Multivariate Calculus. Calculus: Early Transcendentals Chapters >= 11 fall in that field.
Rendering:
Introduction to 3D Game Programming with DirectX10 by Frank. D. Luna.
You should probably get the DirectX11 version when it is available, not because it's newer, not because DirectX10 is obsolete (it's not yet), but because the new DirectX11 book has a chapter on animation. The directX 10 book sorely lacks it. But your solid graphics background may make this obsolete for you.
3D Game Engine Architecture (with Wild Magic) by David H. Eberly is a good book with a lot of parallels to Game Engine Architecture, but focuses much more on the 3D rendering portion of the engine, so you get a better depth of knowledge for rendering in the context of a game engine. I haven't had a chance to read much of this one, so I can't be sure of how useful it is just yet. I also haven't had the pleasure of obtaining its sister book 3D Game Engine Design.
Given your strong graphics background, you will probably want to go past the basics and get to the really nifty stuff. Real-Time Rendering, Third Edition by Tomas Akenine-Moller, Eric Haines, Naty Hoffman is a good book of the more advanced techniques, so you might look there for material to push your graphics knowledge boundaries.
Software Engineering:
I don't have a good book to suggest for this topic, so hopefully another redditor will follow up on this.
If you haven't already, be sure to read about software engineering. It teaches you how to design a process for development, the stages involved, effective methodologies for making and tracking progress, and all sorts of information on things that make programming and software development easier. Not all of it will be useful if you are a one man team, because software engineering is a discipline created around teams, but much of it still applies and will help you stay on track, know when you've been derailed, and help you make decisions that get you back on. Also, patterns. Patterns are great.
Note: I would not suggest Software Engineering for Game Developers. It's an ok book, but I've seen better, the structure doesn't seem to flow well (for me at least), and it seems to be missing some important topics, like user stories, Rational Unified Process, or Feature-Driven Development (I think Mojang does this, but I don't know for sure). Maybe those topics aren't very important for game development directly, but I've always found user stories to be useful.
Software Engineering in general will prove to be a useful field when you are developing your engine, and even more so if you have a team. Take a look at This article to get small taste of what Software Engineering is about.
Why so many books?
Game Engines are a collection of different systems and subsystems used in making games. Each system has its own background, perspective, concepts, and can be referred to from multiple angles. I like Game Engine Architecture's structure for showing an engine as a whole. Luna's DirectX10 book has a better Timer class. The DirectX book also has better explanations of the low-level rendering processes than Coding Complete or Engine Architecture. Engine Architecture and Game Coding Complete touch on Software Engineering, but not in great depth, which is important for team development. So I find that Game Coding Complete and Game Engine Architecture are your go to books, but in some cases only provide a surface layer understanding of some system, which isn't enough to implement your own engine on. The other books are listed here because I feel they provide a valuable supplement and more in depth explanations that will be useful when developing your engine.
tldr: What Valken and SpooderW said.
On the topic of XNA, anyone know a good XNA book? I have XNA Unleashed 3.0, but it's somewhat out of date to the new XNA 4.0. The best looking up-to-date one seems to be Learning XNA 4.0: Game Development for the PC, Xbox 360, and Windows Phone 7 . I have the 3.0 version of this book, and it's well done.
*****
Source: Doing an Independent Study in Game Engine Development. I asked this same question months ago, did my research, got most of the books listed here, and omitted ones that didn't have much usefulness. Thought I would share my research, hope you find it useful.
I've been doing a lot of research lately on the best books in programming in general to start a blog about each one and their importance to an inspiring developer. These are two of the books which will help you greatly getting started on designing your first game.
The first book is completely about design patterns, you will need to learn about these as creating software in general requires knowledge of how specific design patterns work and when you should use those patterns. The second book in the list is a complete guide to creating a small sample game, albeit not in libgdx, it should provide you with enough material to get you started.
I also recommend the Game Programming Patterns and Game Engine Architecture books which were stated in a previous comment. I have both these books as well as the Game Code Complete book and will be buying the Design Patterns book I mentioned as it is the most highly recommended book for any developer.
Game Engine Architecture is a pretty good overview of how to put a game engine together in general, from tools to graphics to game-play systems. You can pretty easily take what's in it and use it to make a 2D game. (3D math is also useful in 2D!)
Edit: Game Coding Complete (https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574/ref=sr_1_1?ie=UTF8&qid=1484886864&sr=8-1&keywords=game+coding+complete) was also a decent read, though not nearly as in-depth as Game Engine Architecture.
Game Engine Architecture by Jason Gregory is a great book, but probably a bit too high-level if you don't have that much experience.
Game Coding Complete might be more appropriate for your skill level. NOTE: It uses DirectX, so you'd either need to do the same or convert the code to OpenGL... which might actually be a great learning experience that forces you to learn how it works rather than just copying code ;)
This book is amazing, BTW: http://www.amazon.com/gp/offer-listing/1133776574/
Right now I'm reading a mammoth book to help me build a good foundation. Game Coding Complete
I hope to make a 2d sidescroller, and after that I want to make a big retro RPG like Crono Trigger
I would suggest reading "Game Coding Complete: 4th Edition". I just started reading it, and it covers all the things I've wondered about making games. Check out the reviews. http://www.amazon.com/Game-Coding-Complete-Fourth-Edition/dp/1133776574/ref=sr_1_1?ie=UTF8&qid=1347389908&sr=8-1&keywords=game+coding+complete
thanks. try this 960 page book
it might have something in there :)
I'll take a look at them. Thank you :)
EDIT: Are you referring to this one and you probably mean Game Coding Complete ?
I would recommend game coding complete. It covers many aspects of game development, from code in c++ to crunch working hours.
https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574
I too am an engineer, been working in the Field for about 6 years, im a professional C++ developer, ive designed and implemented several simple game engines, the basics are: There is an Engine, which handles the graphicss, File IO and the other OS like portions of the game, then there is the Gamelogic, which maintains all the rules and functionality of the game, then on top of that there is game layer which would incorporate all the mods and scripting.
for ease of development, its very likely that the Game logic and game layers are implemented in LUA with the intention of rolling over into actual C++ when they stabilize to 1.0 and since the game is still alpha im willing to bet the "base game" "mod" that is in the mod list is actually a giant piece of LUA code
https://www.amazon.com/Game-Coding-Complete-Fourth-McShaffry/dp/1133776574 i recommend you read that book
Edit: seeing the devs did reply, looks like just the top layer is in LUA.
I use to recommend skipping straight into game dev since that is what I did but recently I realized it is best to learn programming first. Which is why I stopped gamedev completely to relearn everything about programming.
I have not actually done most of the things I linked because I want to learn a lot more before startin game dev again. I have done (1) mooc.fi's intro to java part 2 and (2) the first two courses in the coursera python course so I know if you actually do intro to java part 1/2 and the full coursera course you will be ready enough to start game dev tutorials specific to whatever you want to create games on. I created 25+ game prototypes last year with less than those 2 courses teach..
1 is java programming, 2 is python programming but you make some games like asteroids, 3 is just a page describing how a JRPG works, 4 is multiple tutorials about gamedev, 5 is just a reddit post about do not repeat your self which I have learned from ignoring it that it is EXTREMELY important, 6 have not read yet but I am pretty sure it has to do with the reason I stopped gamedev to relearn from the basics, 7 I have not read but I most programmers recommend the book code complete and it has a similar name so it will probably be decent, 8 actual game dev
and.. maybe get a 6 month free pluralsight account from microsoft visual studio dev essential program thing and https://www.pluralsight.com/courses/encapsulation-solid
I am not sure how useful the pluralsight encapsulation/solid videos will be yet but it has made me think of OOP differently..
A quicker version would be just to do 1, 2, then whatever game framework/engine's tutorials you want.