(Part 3) Best products from r/gamedev
We found 117 comments on r/gamedev discussing the most recommended products. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 872 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 41-60. You can also go back to the previous section.
41. 3D Game Engine Design: A Practical Approach to Real-Time Computer Graphics (The Morgan Kaufmann Series in Interactive 3d Technology)
43. Game Feel (Morgan Kaufmann Game Design Books)
- Morgan Kaufmann Publishers
Features:
44. The Design of Everyday Things: Revised and Expanded Edition
- Product Condition: No Defects
- Good one for reading
- Comes with Proper Binding
Features:
45. Racing the Beam: The Atari Video Computer System (Platform Studies)
- ►ADJUSTABLE HEIGHT: Quickly raise and lower the tabletop from 33.5" to 47"
- ►PORTABLE: Locking casters allow for secure positioning, and moving from the workout to the office.
- ►NON-SLIP SURFACE: The desktop features a non-slip surface that features built in tablet and smart phone slots
- ►VERSATILE: The tabletop includes holes for cable management
- ►DURABLE: The steel construction of the frame will ensure that the RAD Cycle Products Adjustable Bike Trainer Fitness Desk Portable Workstation will hold up to years of use.
Features:
46. The Animator's Survival Kit: A Manual of Methods, Principles and Formulas for Classical, Computer, Games, Stop Motion and Internet Animators
- Faber Faber
Features:
47. Programming: Principles and Practice Using C++ (2nd Edition)
- Addison-Wesley Professional
Features:
48. Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture
- Used Book in Good Condition
Features:
49. Multiplayer Game Programming: Architecting Networked Games (Game Design)
- DOUBLE SIDED: Measures 26 inches by 23 inches, Blank on one side and a 1 inch grid pattern on the other side
- DRY ERASE: Both side of the game board are dry erasable. Even the top and bottom of the box are dry erase. We recommend using EXPO brand dry erase markers.
- CONVENIENT: Included is a velvet storage bag to keep your game pieces. Will hold everything except the cards and spinner. Game board folds up into a 13.25 x 11.25 square. Everything fits perfect inside the box for easy storage and transport.
- COMPLETE: All the game pieces you need to invent your game is right here. Included in this set is: Dry Erase Spinner, 1 Minute Sand Timer, 100 transparent color circle markers, 162 Dry erase cards, Velvet storage bag, 4 red 6 sided dice, Set of 7 polyhedral dice, 6 pawns, 4 dry erase markers, 8 Dry Erase Player Pawns and Stands, 26x23 double sided game board and a dry erase box
- INVENT AND PLAY: Can be used to create your own game or use with other games such as Dungeons & Dragons and other Role Playing Games. Perfect gift for kids or adults
Features:
50. Game Design Workshop: A Playcentric Approach to Creating Innovative Games, Third Edition
AK Peters
51. Introduction To 3D Game Programming With Directx 9.0C: A Shader Approach (Wordware Game and Graphics Library)
- Used Book in Good Condition
Features:
53. OpenGL Superbible: Comprehensive Tutorial and Reference (7th Edition)
- Pearson Addison Wesley Prof
Features:
56. Breaking Into the Game Industry: Advice for a Successful Career from Those Who Have Done It
Used Book in Good Condition
60. OpenGL 4.0 Shading Language Cookbook
- Music inspired complete cruiser skateboard with plastic injection molded deck
- Deck features the look and feel of a vinyl record
- 59-millimeter 78A PU Tunnel Wheels
- 3.125 trucks; Soft 90A bushings
- Comes with sticker pack to customize your cruiser and Stereo sunglasses
Features:
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.
Hey there, I'm a game designer working in AAA and I agree with /u/SuaveZombie that you'll probably be better off with a degree in CS. BUT... don't give up on wanting to be a designer!
 
You should realize that it's not giving up on your dream at all, in fact, it's great advice for how to reach that dream. A designer with an engineering background is going to have a lot more tools at their disposal than one who doesn't.
 
Design is way more than just coming up with a bunch of cool, big ideas. You need to be able to figure out all the details, communicate them clearly to your teammates, and evaluate how well they're working so you can figure out how to make something people will enjoy. In fact, working on a big game often feels like working on a bunch of small games that all connect.
Take your big game idea and start breaking it down into all the pieces that it will need to be complete. For example, GTA has systems for driving and shooting (among many other things). Look at each of those things as its own, smaller game. Even these "small" parts of GTA are actually pretty huge, so try to come up with something as small as possible. Like, super small. Smaller than you think it needs to be. Seriously! You'll eventually be able to make big stuff, but it's not the place to start. Oh, and don't worry if your first game(s) suck. They probably will, and that's fine! The good stuff you make later will be built on the corpses of the small, crappy games you made while you were learning.
 
If you're truly interested in design, you can learn a lot about usability, player psychology, and communication methods without having to shell out $17k for a degree. Same goes for coding (there are tons of free online resources), though a degree will help you get in the door at companies you might be interested in and help provide the structure to keep you going.
 
Here's some books I recommend. Some are specific to games and some aren't, but are relevant for anything where you're designing for someone besides yourself.
 
• Universal Principles of Design
• The Design of Everyday Things
• Rules of Play
• The Art of Game Design This and the one below are great books to start with.
• A Theory of Fun This is a great one to start with.
• Game Feel
• Depending on the type of game you're making, some info on level design would be useful too, but I don't have a specific book to recommend (I've found pieces of many books and articles to be useful). Go play through the developer commentary on Half-Life 2 or Portal for a fun way to get started.
 
Sounds like you're having a tough time, so do your best to keep a positive attitude and keep pushing yourself toward your goals. There's nothing to stop you from learning to make games and starting to make them on your own if that's what you really want to do.
Good luck, work hard!
I think that's a hard enough question even when targeting the general population within that age group. So it can be difficult to find well researched and experientially backed up information even without the more specific target of children with autism. Though I'll also note (as someone with a degree of autism himself), depending on the individual's particular autistic attributes, the condition can actually be a strength for studying something such as game design. The focus on designing rules and working out all the implications for their effects on the gameplay experience can often be a natural fit for someone with autism. At least in my case, the key for effective learning was to grant me the time, space, and tools to explore a subject in my own idiosyncratic way, at which point I could soak up all sorts of knowledge and concepts.
As for concrete recommendations, the one that comes to my mind is to look outside of computers for at least part of your teaching material and activities. I wasn't expecting it initially, but while reading a variety of game design books to improve my own knowledge for making video games, I repeatedly encountered the recommendation to do as much of your early prototyping away from the computer as possible. That is, design board games, card games, sports-like games, party games, and so on. In many cases, you can pull ideas from a variety of game types to build hybrids that do a decent job of replicating the essence of certain video game mechanics, giving you a chance to evaluate how fun the concept is, and if it merits spending time to make a more in depth digital version.
Best of all, it can be free or very cheap, it requires no knowledge of coding, you can do it anywhere (though preferably with a good work table and some craft supplies and standard physical gaming equipment), and you can get results in just a few hours, or maybe even a few minutes depending on the concept. Anything using a standard deck of 52 cards is particularly simple to test, for example.
Two of the books I've already read that had sections helping me think in these terms were:
Challenges for Game Designers is also on my backlog to read and looks very good for this sort of non-digital focus for learning skills that will ultimately be applicable to making digital games.
If you're planning on pursuing this as a career, there are tons of incredible opportunities for people experienced with lower-level 3D APIs. Making your own engine serves as a fantastic learning experience, and would be a huge investment in your future.
Below are some of my favorite books/resources right now that may help you along the way. These might not be immediately useful to you right now, depending on where you're at, but together they have more than enough knowledge for you to go far in 3D Computer Graphics.
You may want to narrow that down a bit, but okay, here are some highlights, with amazon links to help disambiguate.
http://www.amazon.com/Game-Programming-Gems-Adam-Lake/dp/1584507020/
www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135/
http://www.amazon.com/Game-Engine-Design-Second-Edition/dp/0122290631/
http://www.amazon.com/Game-Engine-Architecture-Engineering-Applications/dp/012229064X/
http://www.amazon.com/Artificial-Intelligence-Games-Second-Edition/dp/0123747317/
http://www.amazon.com/AI-Game-Programming-Wisdom-CD-ROM/dp/1584500778/
http://www.amazon.com/Real-Time-Rendering-Third-Edition-Akenine-Moller/
http://www.amazon.com/Real-Time-Cameras-Mark-Haigh-Hutchinson/dp/0123116341/
http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/
There are many others, but looking at my shelf these are the big ones that stick out for recommendations.
Are you looking for how to make games? Not just programming, but actually make them? I have some suggestions, but they often aren't about programming. There is a million books about programming, but finding those that talk about the ideas and ways to successively improve is a better point to start from.
Making video games is easy. Put the pitchfork down and let me explain. Anyone can open unity and load some assets and call it a game. Making good games is difficult, and even if you are not looking at card/board games, you should be prepared to test your game on paper. It is easier to make iterative improvement if you can look for mechanical and mathematical issues by scrawling some notes on paper cards.
For a book that covers both programming and game design, I also suggest this one.
These books will cover the psychology, the pitfalls, etc that come with making a game. You do not need a class to make a game portfolio. You can often get things done faster by a book, because it's goal is to teach as you read, not set a timer for 15 weeks. It can assume you will do it over 26 weeks or more if the book is huge.
Anyway, this is a much larger reply than I intended. Hopefully these are informative. If nothing else, they are significantly cheaper than a class.
A year ago, I probably would have said C/C++ with SDL, or maybe SFML, or maybe even Pygame. Flash would have been an option, but you can't develop for flash on Linux (without jumping through hoops). But this is almost 2012, and there is a very real and very interesting alternative to the "traditional" routes: HTML5 games.
But dude, javascript sucks, right? Not really. Read Javascript: The Good Parts. Javascript is misunderstood and perhaps a little strange, but it doesn't suck. And modern Javascript engines are very fast, it's no longer a second-rate scripting language.
But dude, only people with bleeding edge beta browsers can use it, right? Not really. A year ago maybe, but anyone with a recent version of Firefox, Chrome or IE can play your game. Some people might need to upgrade, but they probably need to upgrade anyway.
But dude, the only other dude to recommend HTML5 was downvoted. So what? It's still an emerging platform but it's ready to be used now, whether the other developers realize it or not.
But dude, none of the browser-based games I play are HTML5, is this for real? Yes, it is! Like I said, it's an emerging platform, but they're out there. Just look at Onslaught Arena or Can't Turn it Off (which, as a bonus, was made with a WYSIWYG game creation program).
So really, HTML5 is probably the best and easiest cross-platform choice for small games out there. The problem with almost all the other suggestions is distribution. Either it's difficult to distribute (it will involve people downloading exe files, bundling Python and Pygame, etc) or it runs on Flash (which sucks, let's be honest). HTML5 is just... there. Who doesn't have a web browser?
Edit: I was looking for this link earlier, the results of a Mozilla Labs competition. Really awesome HTML5 games here.
I play with C++ as a hobby. I'm very far from being even good at programming in this language, but I'll tell you what I've done so far.
I first read this book: Programming: Principles and Practice Using C++ (2nd Edition). This book is written by the very man who developed C++.
Now, I know it looks daunting since that book has about 1200 pages, but a lot of it can be skipped if it doesn't pertain to what you want to learn.
After reading that book and making a couple small programs, I decided that I would give SDL2 a try. SDL2 is a 2d graphics library that includes window management. I did this first since it has a lot of documentation on how to use the library, and you can usually google something if you have problems. SDL2 can also be used in conjunction with OpenGL, so it is worth at least getting familiar with the library.
After all of that (at this point, for me, it had been about 2 months of off and on practice), I finally googled how to learn OpenGL. I followed some tutorials and tried to make some programs, but I learned that OpenGL was way over my head. I was able to get a few small programs running. There was one program I made that procedurally generated terrain, but I learned that OpenGL really isn't necessary if you want to JUST make a game.
When using OpenGL there is a lot of code that you will use over and over again, resulting in you sort of developing your own makeshift scene manager. You'll also want to learn how to program shaders, I haven't even done this yet, but this doesn't only apply to OpenGL. You'll probably want to learn how to program shaders no matter what.
So, after dealing with OpenGL and its steep learning curve I decided to give some rendering libraries a try, and this has been the best course for me to take. Here's a list of rendering libraries. I use Irrlicht because it is relatively lightweight, easy to use, and setup. Irrlicht isn't really updated too often so you won't get the latest features.
If you really want to learn OpenGL then this is the tutorial I followed: Link. It even has information on how to use SDL2 with OpenGL. This will get you started at least.
As for the IDE I use, Netbeans. This is mainly for Java, but it works well for C++. There are all kinds of IDEs you can use, just search around Reddit for other people's opinions of what they like.
I hope I helped! Ask me any questions you have and I'll try to answer them, just note, I'm not even close to a professional developer. I just like to program and play with graphics!
EDIT: Oh yeah, if this makes any difference to you, I did all of this on a Linux distro.
I hope these are what you're looking for.
If I find any additional stuff, I'll edit the post - also if anyone else finds stuff similar to what I linked, feel free to drop info, i'd love to read more of this stuff!
Obligatory Subreddit Plug
/r/TheMakingOfGames - A subreddit featuring a lot of behind the scenes stuff.
Books
Masters of Doom is a book that follows the lives of John Carmack and John Romero, the creation of what became iD Software, and some of the most memorable games of our generation. (Daikatana's failure, Doom, The super mario clone that eventually became Commander Keen, Quake, etc.)
Jacked is a book that follows the creation of what became a memorable game studio (Rockstar Games) and one of the most memorable franchises of our lifetimes. (Grand Theft Auto)
Stay Awhile and Listen is a book that tells the story of the company known as Blizzard and the difficulty of creating Warcraft as well as the fight to create Diablo.
[Hourences] (http://www.hourences.com/product/the-hows-and-whys-of-the-games-industry/) is a book written by someone who's worked freelance / contract for quite some time now. The basic questions this book will attempt to answer are: Why would one want to work in the games industry? Or why not? And, if the decision has already been made, then: What would one look for or expect? How can one pick a good mod (modification) team or a development studio that will fit one’s personality and meet one’s expectations?
Minecraft: The Story of Notch A story about Notch before, during, and after the rise of Minecraft - talks about his family, his life, etc.
Rise of the Dungeon Master the story of Gary Gygax, co-creator of Dungeons & Dragons, one of the most influential games ever made. Like the game itself, the narrative casts the reader into the adventure from a first person point of view, taking on the roles of the different characters in the story.
Documentaries / Movies
Double Fine Adventure - A game following the conception and delivery of what would become "Broken Age"
Indie Game: The Movie - Follows the trials and tribulations of indie developers trying to "make it big" and/or "continue to succeed".
Minecraft: The Story of Mojang - Follows how Minecraft was formed, Notch, and the impact the game has made on generations.
Amneisa Fortnight 2012 A documentary that follows various groups doing a "game jam" that eventually became published games.
[Amneisa Fornight 2014] (https://www.youtube.com/playlist?list=PLIhLvue17Sd7Y5qXNqV1wDPtdNPjZ-tw0) Same as the 2012, just a documentary following the game jam.
GDC Post Mortems A good variety of games, the ups and downs, from indie to AAA.
Dont listen to the people that comment about not making your engine. Making one is a great learning excersise and highly recomended to become a better developer.
I recomend you make sure your C++ is on point, and check this books:
If you dont want to do the 3d route, you can just do 2d games using the libraries SFML or SDL. SFML is easier to use, for C++, while SDL is a lot more C oriented and runs literally anywhere (including things like nintendo DS or PS4). With those you can try to make some simple games like Snake, which is a great learning project.
If you are inexperienced, try to avoid OOP designs (do not use inheritance). It will just make things more complicated than they should.
Wolfenstein 3D was written mostly in C, with some assembly, presumably hacks to make the game run faster.
You should read Masters of Doom, it gives a very non-technical(but technical) perspective of how some of these early 3d shooters (wolfenstein 3d, doom, quake) were made.
These guys were revered not just for the games they created, but the ways they could seemingly crush and optimize code to be as efficient as humanly possible. For example, Carmack popularized a use of the Fast inverse square root function as one of the ways to quickly render and maximize performance of lights and shadows across 3d models. One story from the book I mentioned recounts how he was able to recreate a fast, efficient version of Super Mario Bros on PC. This revolutionized side scrolling graphics on PC, because it basically didn't exist in a form fast or smooth enough to make game development viable until that point.
P.S. If you're really interested in this stuff, instead of a "quick google", you should maybe try a "slow google". Tortoises vs. hares. That kind of thing. :P
Hi there, TerraNisi was with this stuff. Just a bunch of Windows API C stuff. I'm surprised you like the knight game! I thought it totally sucked and was embarrassed to put it up on the page :)
For C/C++/DirectX I'd recommend trying to look at tigr. tigr has some very advanced code in there, but it's all dense and in one place. Anyone can slowly lookup piece by piece on the internet and learn about the DirectX or OpenGL implementation. The author, Richard Mitton, is a grumpy but generally nice guy. One could probably email him with a well thought out question and he'd be happy to answer. Just recently I was asking a question to him about his PNG loader/saver :)
It takes time to grind through since it's a lot to learn, but it if it's what you want to work on then totally worth it. For books and math I did like this one by Frank Luna. Again, it's a lot to learn, but once you learn it you know it forever.
Animation is an art and good animation requires a strong understanding on how things move. A good resource for making both convincing and interesting animation is the Disney Bible: https://www.amazon.com/Illusion-Life-Disney-Animation/dp/0786860707/ and another: https://www.amazon.com/Animators-Survival-Kit-Principles-Classical/dp/086547897X/. But realistically it takes years to understand and make good animation. That's outside of the learning required with tools (such as Maya).
If he doesn't know the principles of animation he should learn them and then your critiques should be focused around 1) does the animation meet the intention -- ie is it usable and 2) how can the animation be improved to make it more interesting and believable.
While Design Patterns is the original book, I feel most people are better suited to getting books that were published later that make the first Design Patterns more digestable. DP is a good reference to have on the bookshelf for any software developer but I feel if you're new to Design Patterns:
A. There are better free online sources for the raw Design Patterns in the GoF book like this website
B. There are better books out there for explaining Design Patterns in the GoF book to newbies like Head First Design Patterns
A couple of things in response to you and others.
First of all OpenGL has excellent documentation. The specification is detailed and complete for one though I admit, probably no one should start with that.
I own the following 2 books which are excellent and the first has been out for over a year and you can download the code for both.
http://www.amazon.com/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321712617/ref=sr_1_2?ie=UTF8&qid=1319148333&sr=8-2
http://www.amazon.com/OpenGL-4-0-Shading-Language-Cookbook/dp/1849514763/ref=sr_1_1?s=books&ie=UTF8&qid=1319148364&sr=1-1
I started from no knowledge of OpenGL and using that first book I've learned the majority of the API. I bought it and used it for my upper division graphics class while everyone else was using OpenGL 1.1 and the professor didn't mind as long as I did the assignments. I've rewritten math and some of the helper code that comes with it and I use my own classes to wrap the VABO's (ie one glGenVertexArrays per mesh). It's not hard. I've also taken and modified some of the code from the second book which I just recently purchased.
Finally the new orange book will be coming out soon if the blue book isn't enough for you:
http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321773039/ref=sr_1_3?s=books&ie=UTF8&qid=1319148522&sr=1-3
Also I think people should start with the Blue book instead of 4.0/4.1/4.2 stuff so they'll be able to use the new Core API (no deprecated cruft) while still supporting 3+ year old graphics cards. ie don't use subroutines or the 2 new tessellation shader stages but you can still use the geometry shader etc. Learn that after so if you choose to you can knowingly limit your audience.
Finally I have a question for you. Why do you disable the attribute after drawing? I enable the appropriate attributes for every VBO I create (wrapped in a class function) and I never disable any. I draw things with multiple shaders, some with position, normal, texture coordinates and some with only position etc. and it's never caused a problem. I've never seen sample code that disables an attribute. The documentation (3.3) for glEnableVertexAttribArray() doesn't say that it only applies to the currently bound VABO.
Wait a second, I didn't realize that you're just using the "global" scope buffer objects and not even using VABO's. They make it much easier.
Also the new API makes it easier to understand what's going on under the hood. I started a software renderer and the farther I got the more I appreciated why they did/do things the way they do in 3.3/4.x . I think I'll end up just implementing a proper subset of the API as a software renderer (with function shaders instead of compiled GLSL of course).
>more familiar with C#, which im liking and want to continue (mostly because of how nice visual studio is
Get Unity and built your first game right away:
http://unity.grogansoft.com/complete-unity-pong-clone-tutorial-for-beginners/
Or in (slightly more detailed) book form:
https://www.amazon.com/dp/B01M9EAHP2/
You can use C# and Visual Studio with Unity, so you have a good head start on the coding. The above tutorial will teach you how to get around in Unity and put the pieces of a simple game together. Once you've done that you can either start building your own game or maybe try a few other tutorials if you're not comfortable starting something of your own.
If you do choose to go with Unity, there are a couple of good subreddits, /r/Unity3d is the main one, and /r/Unity2D is for 2D-specific stuff.
A great thing about Unity is it is very popular, so there are tutorials and resources everywhere (and C#'s popularity plays into this too). Unity is able to output your game to lots of platforms - PC, UWP, Android, iOS, HTML5, and more.
Similar to Pluralsight is the (free) Microsoft Virtual Academy and Channel9 sites - they have quite a lot of Unity and C# videos.
For overall C++ I recommend Sams Teach Yourself C++ in 24 Hours. It is a really good book and got me through a few of my introduction modules in Uni. Once you have the basics down, I found the best book for getting started with DirectX 9 was this. The Author really knows his stuff and you start from the absolute basics of graphical programming and work up to some really cool stuff by the end. Again it is book I have used and have had great results from it.
Hope these will help you on your way.
Pixel animation is a whole beast of its own but if you want to have a serious foundation for animating (without taking classes) this book is the best there is. The Animator's Survival Kit teaches everything there is to know about 2d animation and how to do it right. Lots of great examples of good and bad and why things work.
Interpolating between animation loops is a neat idea. Sounds tedious though. I'm sure that would require some serious thought on the programming/scripting side as well. High five!
The Ultimate History of Video Games: From Pong to Pokemon--The Story Behind the Craze That Touched Our Lives and Changed the World by Steven Kent
Game Over: How Nintendo Conquered The World by David Sheff
Joystick Nation: How Videogames Ate Our Quarters, Won Our Hearts, and Rewired Our Minds by J. C. Herz
Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture by David Kushner
Digital Play: The Interaction of Technology, Culture, and Marketing by Stephen Kline, Nick Dyer-Witheford and Greig De Peuter
Replay: The History of Video Games by Tristan Donovan
All Your Base Are Belong to Us: How Fifty Years of Videogames Conquered Pop Culture by Harold Goldberg
Vintage Games: An Insider Look at the History of Grand Theft Auto, Super Mario, and the Most Influential Games of All Time by Bill Loguidice and Matt Barton
If you are looking toward application development(games or otherwise) I'd suggest looking at more practical beginning programming books, don't even worry too much about making a game yet or building complex algorithms. I've found the Head First series fairly good in the past, so maybe try out https://www.amazon.com/Head-First-Java-Kathy-Sierra/dp/0596009208
Once you get your head around basic application development a bit more, I would highly suggest learning design patterns and can fully recommend the Head First book on that topic.
https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124
You can follow that up with the Game specific book on patterns, https://www.amazon.com/Game-Programming-Patterns-Robert-Nystrom/dp/0990582906
With all of that you should have enough to start asking more pointed questions and being able to Google up useful answers and tutorials that will get you on the road to building games.
Edit: That said, if you are looking at doing to extensive AI programming, specializing in engine design or other systems type development, start looking for books on the topic that interests you most. It's pretty easy to Google up book lists on these kinds of topics, and from there you can cross reference recommendations and should be able pick out ones that will help you get started.
Playtest your game with a wide variety of people. You need to find out if people actually enjoy it. And you need to make sure that the feedback people are giving you isn't just them being nice. People should want to play without you asking them to. If it is not good yet, iterate, or start something new.
If you have a game that is genuinely good, other good things will follow. Otherwise you are in for a never ending up hill battle.
Other than that, I'd suggest finding 1 or 2 partners to actually start a game company with. They need to be equally or more competent than yourself. Do game jams with them to test if the team works well together.
And read this book https://www.amazon.ca/Game-Feel-Designers-Virtual-Sensation/dp/0123743281
This is where refining google searches and just finding information would shine, and this is a necessary skill when entering game engine development because trust me, some information is near impossible to find, especially with OpenGL.
There is a book everyone recommends reading, personally I haven't but it's called "3D Game Engine Design" and "3D Game Engine Architecture". I can't vouch for these though, but i've made it without them, it's your choice.
There's also tons of information online that you can use to build a engine (specific parts like timing) but not necessarily a monolithic tutorial. For example, there is a book online called "Game Programming Patterns" that I found useful for someone else's insight on how things like input is handled. Again, i'm not going to post all the resources you want here because this same question has been answered before.
If you don't find that the tutorials or resources linked here or found yourself enough, there are hundreds of game engines, or games that are open source (or at least have source available) that is a treasure trove of design patterns, bad or not. An example would be id Software's Doom 3.
I know you're looking for something specifically OpenGL, but really despite how old OpenGL's design is at the end of the day it's just a graphics API. You take data, and you process it and display it at the window, every graphics API does this. I'm guessing you are searching for things like "OpenGL game engine design" but it's not necessary and may help your search effort a bit.
At the end of the day, and at least try. If I don't know how to tackle a problem, I attempt to solve the problem with usually the worst way possible then improve and improve until it's at least presentable. No one thought of a perfect engine design, and ideas are constantly improved.
Honestly, an external program probably won't help all that much if you don't have a decent understanding of the principles behind animation. It's pretty technical for what's a generally creative field. It's complicated and messy and about finding a good halfway point between what's technically correct and what feels right. Technically correct animation can still come across as really lifeless.
Spriter and tools like it CAN help if you understand the limitations of rigged animation, but it's not going to make your animation better, per se, it just means that you'll fail quicker, and that's okay! It's VERY easy to have animation that feels floaty when you're having a computer extrapolate your animation points.
Basically the only way to get decent at animation is practice. Pick up a copy of The Animator's Survival Kit
This is a pretty decent overview of the 12 animation principles.
Do you have an example of what you've done so far?
I'm basically in the same boat as you. I recently got Killer Game Programming and am slowly working through it. It extends upon what most people would know from normal java concepts, so it's a little advanced for me but it's making more sense as time goes on.
Also there's JMonkey which is a java based engine, so it might be good for a top down game like that. I'm still experimenting with that myself but there are some helpful tutorials there too.
Curious to hear of more suggestions myself though
Here’s a fun exercise: find a simple game you like, but don’t go farther than the SNES/Genesis generation of gaming. Play the game and study it. What makes that game special? Focus on its mechanics, dynamics and aesthetics. Write it all down too. Then take a mechanic and completely change it while also adding a brand new mechanic to the mix as well. Add your own art style and just have fun with it.
Don’t worry about it sucking, this is an exercise for your design skills. If you understand modeling and you understand coding, it seems you are just missing design. Read books on design, I can’t recommend “The Design of Everyday Things” enough. This book covers design as a whole and gets you to think about why we build things the way we do.
https://www.amazon.com/gp/aw/d/0465050654/ref=mp_s_a_1_1?ie=UTF8&qid=1526568855&sr=8-1-spons&pi=AC_SX236_SY340_QL65&keywords=the+design+of+everyday+things&psc=1
If you're interested in programming games (which it sounds like you are), I would suggest learning DirectX. Using a pre-made engine will never teach you as much as learning to create the engine yourself (when it comes to programming, that is). Pick up this book, it will explain everything you need to know to create a graphics engine (and there are PDF and CHM versions you can find online).
Make a simple engine based on the book's examples. Then try to do things in your own way. Google for "component-based design" and see if you can implement an engine that uses that.
More specifically, you should use absolutely use C++. You should start with a 2D game (or a text-based game). Don't expect to do anything major design-wise; it's about building your skills.
In addition, you probably haven't learned much in the ways of linear algebra (which is what graphics and a lot of gameplay is based on). I don't know any specific resources, but you should understand vectors (dot and cross products) and matrices (how to create scale, rotation, and translation matrices and how they have those effects on vectors).
Good luck!
I don't work in the game industry, but maybe these books can help you out.
Books
Articles
Videos
Edit: Added more things to read and watch.
-2- A lot of early 3d animators would do tweens. Nowadays most people use blends. More often than not you have someone who is traditionally trained and will create very highly defined keyframe animation that works well without either(Like WoW). In a few test audiences I've shown games too, not one person noticed the difference between any of them. For theory behind animation, I think a good book is the "animator's survival kit" Amazon link here. Nearly everything it talks about can be brought into 3d, and it only makes 3d animation look better.
-3- webGL is too early to be useful. It's like flash 1.0, ignore it for now like you did then. Unless of course you want to make a career on building tools for other people.
A fun entertainment read is Masters of Doom about the early days of Id pushing the limits on PC gaming.
I don't know what his contraints are, but if he wants to work on games & game design skills without being able to access a computer, but can use art supplies, then you could get him some blank playing cards and some thin-point sharpie markers. I found those were pretty solid for just sketching up random cards on, and can easily be used to whip up card-game prototypes.
Card games aren't video games, but some of the skills are transferable I bet.
Hi AvicSolaris,
EncapsulatedPickle's advice to start small is much better than ostrich160's advice to go crazy and just do it. But what is considered small these days is actually relatively big...
I'm going to give you a lot of unpopular advice (programmers hate it), but trust me, as a former uni. adj. prof., #gamedev, and published #gamedev textbook author it works. Start out w/ Playmaker and Unity. You can actually create video games by plotting out flowcharts instead of programming. I created The Blind Shrine Maiden using only Playmaker.
I have a video series on mastering Unity: https://www.youtube.com/watch?v=FaHk7Ix0PZU&list=PLWWn-q7oQDhGi8-Z3BRMCL0RMOCnPPsr3
I have a book/video series on Unity and Playmaker in which you make a modest, but complete, FPS game: https://www.amazon.com/No-Code-Video-Development-Using-Playmaker/dp/1498735657/ref=sr_1_1?ie=UTF8&qid=1462307560&sr=8-1&keywords=nocode+kelley
If you can't afford the book, let me know and I'll try to work smthg out for you. Email me. If I don't respond it's because I'm really busy these days (recently diagnosed w/ cancer).
Good luck!
It's super simple so you should focus on refining the few details that make up the sprite. You have:
The animation tries to add depth but it isn't quite there. You could have its right eye (stage left) go from two pixels to three as it moves from profile to 3/4 view (maybe a single frame during that transition could have the third pixel at 50% alpha), and have its left eye only expand to two pixels (never three).
You could have the shadow on the head move slightly to make the head rotation more obvious. The legs are okay but could look better. If you're really interested in animation, brush up your skills by looking up some tutorials or get a book like The Animator's Survival Kit.
You may also want to stick with the pink color palette rather than the white so it doesn't look like a ghast.
EDIT: Just saw your comments regarding magnets. Maybe change the negative to a dark blue instead of white.
One of the best resources out there, especially for Patreon supporters. I found this book to go hand-in-hand with this, I'd even go as far to say it's a must read, with great examples and modern practices.
https://www.amazon.com/Multiplayer-Game-Programming-Architecting-Networked/dp/0134034309
>Do it myself
Great idea. Learn to be an animator. There's software (Flash/Photoshop/other) to both draw your animations and then generate sprite sheets, so the process shouldn't take weeks. Here's a list of resources I recommend for animation:
>but artists (understandably) don't usually donate their time for internet strangers with the promise of a payout down the road
This wasn't true in my case. I posted an ad on /r/gamedevclassifieds as a coder and got three talented artists emailing me with work they've done.
I haven't really made anything that's screenshot worthy yet. I'm almost done with the world editor so when I get that done I'll finally be able to show off some stuff.
As far as tutorials your probably not going to find anything that's specific to 2d. I mostly do 3d graphics programming so most of my shader knowledge comes from doing that, almost anything you do in 3d translates pretty easily to 2d.
Here are some good books I've read on shaders:
Thanks, for posting this Reddit. Uhm, what helped me out was this book called : "Breaking Into the Game Industry" Breaking into the Game Indusry
It's a really good book that makes great key points that are valid, and its a short read! It'll take you about two hours to read the entire thing. Check it out! :D
Read books. It might be boring, but a lot more informational than watching a youtube video.
If you already know how to program in another (preferably OOP) language there's The C++ Programming Language or C++ Primer if you want to learn C++11 (not to be confused with C++ Primer Plus, which is a different book 'series')
If you don't know how to program and you want to learn C++ for game development there's Beginning C++ Game Programming, which starts at the beginning (variables are one of the first things explained). After that book you should read up Introduction to Algorithms to make sure you're not writing horrible inefficient programs. Then there's Design Patterns: Elements of Reusable Object-Oriented Software to teach you more about certain patterns used in programs design (needed when using Ogre3D for example. Ogre3D was 90% magic to me until I read about Design Patterns. :p As alternative to DP:EoROOS there's Head First Design Patterns, but it's Java-centric which is a whole other beast than C++.
After those books there's this Stackoverflow thread. Read the first answer (the gigantic list of books). The thread used to be a ton of comments (with the most votes comments on top), but all anwers got copied to the first comment, so it's all sorted on votes. Code Complete (2nd edition) was the most upvoted one, The Pragmatic Programmer was the 2nd most upvoted one, etc.
Then there's this Stackoverflow thread, which is more C++ centric.
I hope this helps :)
I'd encourage anyone interested to check out Racing The Beam. It goes into detail how some of the early programmers got as much as they did out of the 2600. The chapter on PitFall! is really great.
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.
There is book written by the creator of the C++ for people who are learning how to code: https://www.amazon.com/dp/0321992784/?tag=stackoverfl08-20
Other than that, there are the r/learnprogramming sub, the http://cppreference.com where you can learn everything about the language, from the the very beginning and the other books written by Scott Meyers and the creator of C++ himself. All of them are great. Hope it helps.
If you want to learn C++ from scratch, follow this post I made a while ago.
Grab these books and read them in order. I went down this pathway a year ago and can do some pretty cool stuff.
https://www.amazon.co.uk/d/Books/Beginning-C-Through-Game-Programming/1305109910/ref=sr_1_9?ie=UTF8&qid=1483700001&sr=8-9&keywords=C%2B%2B
Once you have gone through the entirety of that book then move onto C++ Primer to help with some of the theory stuff.
Then move onto this book: https://www.amazon.co.uk/SFML-Development-Example-Raimondas-Pupius/dp/1785287346/ref=sr_1_1?ie=UTF8&qid=1483700106&sr=8-1&keywords=SFML
Then go onto Effective C++.
It'll be a long hard road but a year from now you will of hopefully gone through them all and have a solid introductory knowledge of programming and C++.
Doing this should hopefully allow you to go from this: https://github.com/RyanSwann1/Tic-Tac-Toe To this: https://github.com/RyanSwann1/SFML-CPP-Platformer
Building games and mini engines allows you to really get a feel for programming and will really help with the learning process. Going into a game engine before this sort of stuff is a waste of time in my opinion because you'll lose out.
Raimondas Pupius has a couple of books on SFML (which is C++ based), which are quite good despite being published by Packt: SFML Game Development by Example and Mastering SFML Game Development.
As /r/Redkast has pointed out above, Game Programming Patterns by Robert Nystrom is a definite 'must read' in my opinion as well. I also like this one by Sanjay Madhav: Game Programming Algorithms and Techniques.
The Kindle editions of all of the above books are reasonably priced.
if your talking about game programming, i just got Killer Game Programming in Java from O'Reilly, it's a pretty good start.
However, if you're talking about game development, as in how to actually think of a game, i suggest The Art of Game Design by Jesse Schell. Very good book IMO.
I read Realtime Rendering a lot when I started programming 3D. It's good book , and the site links to a lot of other good books and sites.
I wouldn't recommend 3D Engine Architecture or 3D Game Engine Design though, since they give a very bloated approach and are quite C++ specific.
Remember to Keep It Simple. =)
Yeah I was going to say the same thing. That's like the best base to start at if you ask,
Here's a link.
http://www.amazon.com/The-Animators-Survival-Richard-Williams/dp/0571202284
Besides C, you can also try dabbling in Java and use Netbeans IDE since they are beginner friendly and explain the functions of syntax that you type in
(if you downloaded the 200MB++ help files)
(Try read this one!)[http://www.amazon.com/Killer-Game-Programming-Andrew-Davison/dp/0596007302]
or you can dabble in Flash n post your simple games to flash portal like kongregate/underground. Many indie developer also start from there.
Good list, I'd add:
Racing the Beam: The Atari Video Computer System by Nick Montfort and Ian Bogost
More related to early computer gaming:
Dungeons and Desktops: The History of Computer Role-playing Games by Matt Barton
Computer Gaming World magazine archives
Get Lamp, a documentary about adventures in text
Hackers: Heroes of the Computer Revolution by Steven Levy
Matt Barton's Youtube series about classic computer games
Its a really good question - with many good answers (and many bad). Pardon my brevity:
http://brewhouse.io/2015/10/14/game-programming-design-patterns.html
https://www.amazon.com/Multiplayer-Game-Programming-Architecting-Networked/dp/0134034309
Racing The Beam is about the Atari 2600 (though it does mention the NES in passing). And you did say "any early-model game consoles". I hope they do one on the NES sometime, it was great for getting some perspective on modern hardware.
There are a number of resources on early game development. If you're interested in Atari 2600 games (games were 2K or 4K of ROM, the system had 128 bytes of RAM) there's a wonderful book called Racing the Beam:
http://www.amazon.com/Racing-Beam-Computer-Platform-Studies/dp/026201257X
It goes deep into the technical details of several Atari games.
There's also been a lot written about the Apple II Prince of Persia, as Jordan Mechner released the source on Github a couple years ago:
https://github.com/jmechner/Prince-of-Persia-Apple-II
Fabien Sanglard has been doing a detailed code review on his blog.
If you want to learn animation, I recommend picking up the Animator's Workbook or The Animator's Survival Kit. I personally bought the Workbook and it helped me a great deal, but I also had the opportunity to thumb through the Survival Kit once. I'm not sure which is actually better.
Worry about this after learning the basics of 2D drawing.
I read through Multiplayer Game Programming, which covers a pretty generic approach to 'locked timestep' netcode. From that, I was able to build out a basic server/client framework to really grasp the concepts. I enjoyed the book and the approach of writing the system from scratch (figuring out RTT's, how far ahead the server should run, etc). FWIW, I built out my client/server experiment simply using Node and socket.io - you could probably do something similar.
I'd also suggest checking out the recent Overwatch Netcode/ECS GDD talk (around 22:30), which covers the same basic premise as the above mentioned book uses.
I found this shader repository quite interesting, start by looking at the simple ones to see if you can understand.
http://glsl.heroku.com/
Prior to that I read a book, the opengl shading language cookbook which is quite good.
Also, check out the book Javascript: The Good Parts to really up your game with javascript. I don't really do html5 games, but I've heard this book recommended enough by people I respect.
This is a pretty good book and is also only 4 months old, so very up to date.
Honestly my favorite book so far is the opengl superbible 7e
https://www.amazon.com/OpenGL-Superbible-Comprehensive-Tutorial-Reference/dp/0672337479
Seconded, Game Engine Architecture is the best book for an overall view on engine development. I've also found these books useful for implementing engine subsystems:
Anyone here recommend this book? Amazon link
I'd really like to learn C++ and heard that books are one of the best ways to go, so is this one a beginner could start reading?
It's not necessarily for game development, but still.
Hey, I've been where you're at. Consider going to school such as University to focus on a niche in the games industry. E.G: Comp Sci for programming, HCI, for design, etc. Or you can go to a specialized game school that teaches you everything. Albeit, these don't prepare you very well for the industry unless you work incredibly hard, and or are a wunderkind.
One thing that helped me is the book by Brenda Romero Breaking Into the Games industry. It's a pretty solid primer for your question.
https://www.amazon.com/Breaking-Into-Game-Industry-Successful/dp/1435458044
Edit: misspelled Brenda
Tutorials
---
Libgdx Specific
---
LWGJL Specific
---
Engines, Frameworks, Libraries
---
Source
---
Books
I have a few recommendations, but it really depends on what kind of design you're interested in. UX is an umbrella. If you want visual design skills it'll take some practice and not just reading. There's a bunch of stuff out there on graphic design basics.
Here's a few book recommendations that can change how you think about design:
Design of everyday things.
Universal principles of design.
Did you know Amazon will donate a portion of every purchase if you shop by going to smile.amazon.com instead? Over $50,000,000 has been raised for charity - all you need to do is change the URL!
Here are your smile-ified links:
https://smile.amazon.com/No-Code-Video-Development-Using-Playmaker/dp/1498735657/ref=sr_1_1
---
^^i'm ^^a ^^friendly bot
this is the book ive been reading to try and get some DirectX graphics going:
http://www.amazon.com/Introduction-Game-Programming-Direct-9-0c/dp/1598220160/ref=sr_1_6?ie=UTF8&qid=1323366015&sr=8-6
well written, very good read.
It's hard not to be excited about technology when watching one of his keynotes, regardless of whether or not you understand the content.
Oh, and for those that haven't read it, I highly recommend Masters of Doom. Some really inspiring stories about early id.
Thanks for the links everyone! I also managed to find some more resources:
BOOKS
BLOGS
I bought this one: https://www.amazon.com/Multiplayer-Game-Programming-Architecting-Networked/dp/0134034309/
It is pretty solid and goes into depth on both RTS and FPS games which require different ways of thinking about how to manage latency, packet loss, and other dynamics.
If you want to get into programming, then start with C++. Once you are comfortable with C++98 & C++14, learn SDL/SFML & then OpenGL.
If you already know C++, then start with https://www.amazon.com/SFML-Development-Example-Raimondas-Pupius/dp/1785287346.
tldr if you want to learn cpp, get a book. This one is good. Don't attempt to dive into programming with Cpp in unreal, learn cpp first then go into unreal. or just go with unity. Books are your friend.
Which Book is better?
This One or This One?
There is not much to it, just grab a book that applies the concept; like this one: http://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ref=sr_1_2?ie=UTF8&qid=1425383272&sr=8-2&keywords=c%2B%2B+stroustrup
It's also in C++ ;)
This stackoverflow question
Have some good answers.
Web resources (good)
OpenGLBook OpenGL 4.0
Arcsynthesis OpenGL 3.3
Books (unknown quality, look for reviews)
OpenGL SuperBible 5th Edition OpenGL 3.2 Core
OpenGL 4.0 shading language cookbook OpenGL 4.0 Core
The Animator's Survival Kit: https://www.amazon.com/dp/086547897X/
Good book with lots of practical references for animating walk cycles facial expressions etc
Since you are a C++ beginner, you should initially concentrate your efforts in learning the language.
My suggestion is to read Programming: Principles and Practice Using C by the father of C++ Bjarne Stroustrup https://www.amazon.com/Programming-Principles-Practice-Using-2nd/dp/0321992784/ and do the exercises from the book. Try to do these on your own, if you are really stuck on something search an alternative explanation, ask on Reddit /r/learnprogramming or Stackoverflow.
Also, very important, use a modern C++ compiler like the one from Visual Studio 2017 if you are on Windows, G++ 6 or 7 if you are on Linux, and latest Xcode if you are on macOS.
Animation survival kit is the best place to start for animation fundamentals: http://www.amazon.com/The-Animators-Survival-Richard-Williams/dp/0571202284
Go for both. Programming is lucrative in that you'll always find work. 3d animation is more in demand than 2d, but if you're game-making on your own you should be able to do it all to an extent.
Unfortunately, there's no real fast-track.
That being said, focus on design patterns and algorithms. Understanding and putting design patterns into use is absolutely your best starting place. Knowing and learning new algorithms gets your brain thinking in the right way about any problem you're trying to solve. These two topics on their own can be really pretty dry and boring, but there's only two ways to learn them. The slow way, by trial and error, by experience (which you've been doing). And the boring way, that's slightly faster, study.
Introduction to algorithms is really good, but dry.
Head First: Design Patterns If you've never used a head first book, they're really well done IMO. Just commit yourself to a chapter a day once a week or something, force yourself through it, and you'll learn tons.
Another pro tip, re-write your existing code. When you realize you should've done something differently, fix it. Any time you find yourself copy pasting code, or thinking to yourself, damn, I should've made an abstract class, or a factory, or ... whatever it is, go through the process. In the end, it always comes down to doing. Learning this stuff only comes from doing.
Well, you said video games so everyone started listing video game stuff, but I'd suggest taking a different tack. Start off by learning some game design by making some boardgames together:
https://smile.amazon.com/Game-Design-Workshop-Playcentric-Innovative/dp/1482217163/
https://smile.amazon.com/Challenges-Games-Designers-Non-Digital-Exercises/dp/1542453313/
If you want to know some algorithms that are handy when designing systems to work together, read Head First Design Patterns. It's a pretty light read but if you do most of their exercises, it sticks pretty fast.
Just break down the problem into smaller and smaller chunks. Come up with a few systems, a map system where the grid is stored(i.e. 14,17 is a barracks and belongs to room id #115.(also, make it a singleton so that the building system can ask it wheres free)) and then the room system(pretty much just manages a collection of the rooms built) which keeps track of all the rooms and updating them every tick, and then have a Collection system that is a listener to all the rooms and will pop up showing that they need to be collected, then have the unit system where all the characters are stored, and probably a movement system to track which characters are moving where, and more systems as you build it bigger. Then a game StateMachine(which would probably be the dominant system and passes updates to all the other systems) to keep track of what to menus to be showing the player, and when to take input to the map or whatnot.
If something doesn't feel good to work with, refactor it and try to think of a simpler way to use it. It's a big task, and you shouldn't try to fit the whole thing in your head at once.
If you want to learn the basics get this book
That is where I started.
There is this book that might help:
https://www.amazon.com/Multiplayer-Game-Programming-Architecting-Networked/dp/0134034309/ref=sr_1_1?ie=UTF8&qid=1497045503&sr=8-1&keywords=multiplayer+game+programming
but this is general and not specific for GameMaker. As I recall GameMaker has some tutorial on this stuff but I am not sure.
http://www.amazon.com/Game-Feel-Designers-Sensation-Kaufmann/dp/0123743281/ref=sr_1_1?s=books&ie=UTF8&qid=1453765173&sr=1-1&keywords=gamefeel
Game Feel
btw: Game Feel: A Game Designer's Guide to Virtual Sensation
https://www.amazon.com/Game-Feel-Designers-Sensation-Kaufmann/dp/0123743281
I'm trying to remember which game design book this was covered in, I'll check when I get home. In short, so long as there is an immediate cue to acknowledge the input, the extended animation doesn't feel unresponsive.
​
Edit: Game Feel: A Game Designer's Guide to Virtual Sensation is the one, it covers this kind of thing at length.
is this the same as Animator's survival kit ??
The animator's survival kit. Still an unbeatable book for this sort of thing.
I have to give a recommendation to http://www.amazon.com/Head-First-Design-Patterns-Freeman/dp/0596007124
> http://www.amazon.com/Killer-Game-Programming-Andrew-Davison/dp/0596007302#immersive-view_1419346106105
Could that be outdated though? Given it came out almost 10 years ago?
There is Masters of Doom, but I don't know if that is exactly what you are looking for.
I recommend Masters Of Doom: http://www.amazon.com/Masters-Doom-Created-Transformed-Culture/dp/0812972155/
I've touched this book before and it didn't help me as much as this when it came to actually learning.
If you haven't already I highly recommend Racing the Beam. It goes into detail about how the thing was programmed and how the constraints of the system informed gameplay.
A run cycle where the head and hips don't bob up and down looks very static and unnatural to me. The head should be lowest on the footfalls, and as much as a full head higher a couple frames after the passing position.
This tome is a valuable resource:
The Animator's Survival Kit: A Manual of Methods, Principles and Formulas for Classical, Computer, Games, Stop Motion and Internet Animators
There are full chapters about crafting walk cycles.
Can't agree more on the first one. Also, Mathematics for Computer Graphics and Game Feel
Amazon links for the lazy:
Art of Game Design, 2nd Edition
Designing Virtual Worlds
A Theory of Fun
3D Game Engine Design
Essential Mathematics for Games and Interactive Applications
Game Engine Architecture is really just a survey of techniques. It lists whats out there without actually diving deep and explaining why. The material is primarily suited for secondary school students. If however you want to know what the specialists have open on their desks this very minute (with full mathematical and computer science proof), you can only rely on one book - David Eberly's 3D Game Engine Design - a practical approach to real time graphics (http://www.amazon.com/Game-Engine-Design-Second-Interactive/dp/0122290631/ref=sr_1_1?ie=UTF8&qid=1288767426&sr=8-1). Warning - this book is serious, aimed at professionals who have been doing game engines for over a decade. A new comer will be humbled by the sheer volume of information David has assembled, explained and documented. He is also an author of Mathematics and Physics books. His books are very serious, with actual computer science behind them. He also has an open source game engine - Wild Magic out there. Check http://www.geometrictools.com for more information.
Masters of Doom
If that's not going to inspire the shit out of him I'll kill myself making a Doom clone in Html/CSS.
http://www.amazon.com/Killer-Game-Programming-Andrew-Davison/dp/0596007302#immersive-view_1419346106105
Killer Game Programming