I think I wrote this just a touch over 2 years ago. As such, I've been using different resources and books since to learn from. I wouldn't say this list is useless by any stretch, but Unity has updated its systems by a large margin, some to the point where they operate almost completely different.

Read this guide with a pinch of salt (as the original should have also been read regardless, as it's subjective), and I'll be updating this list soon to be updated and more useful for people using the new Unity versions.

[Originally a post on Reddit: LinkCopied and Pasted here with no edits]

I remember when I first started out in Game Development, and how hard it was to make sense of all the different options and resources available to me on the internet. Sure, it's easy enough to tell someone "Use Google", but you might be connecting dots which aren't going to go well together, or learning things which may be useless to you in the context of the other resources you're taking in. I've also written a small section after the resources list that might help you make sense of some other stuff, or at least they were things I struggled with when I started out. Just have a quick read, it might help you out :)

One thing I'd like to mention before I list these, is that we've all made the switch to Unity 5. That in itself is not a game changer, but it does mean that there are old techniques mentioned like coding state machines and animations, which are now handled a lot easier by Unity itself with things like Mecanim. There's no harm however in learning the old way of doing things, because you'll come to appreciate the new methods in Unity 5, and why it makes your life so much easier with things like Mecanim and UNet for multiplayer. So for a few of the books mentioned, they might go over what some would say are redundant techniques, but they'll still work in Unity 5, there just might be an easier or updated way of doing it (better to start off somewhere though, and learn how to update your methods later!).

Also don't feel you need to finish these in order. I found myself jumping back and forth between various books, websites, and videos trying to learn new things. The first time I came across an event manager, and adding a dynamic list of objects needing to read and write events, I was overwhelmed with new information. It took me going to a different book and starting a different project, to see a much simpler version of the events manager being used, before I understood it and came back to the more complex project in a previous book. Don't feel you have to reach the final page, think of it as going as far as you can with a book or video tutorial, and then going off to do your own research on the topic/technique, and see it in simpler examples, and come back to finish where you left off when you feel you're ready.

So with that in mind, here's a list of Websites/Videos/Books I found useful whilst I was learning, and I've placed them in a general order that I think makes sense for a total beginner to tackle them, taking into consideration skill level progression throughout:

This is the starting point for most people. When you buy a book, or watch a YouTube tutorial, there's always the chance that the creator makes assumptions that you know how to use Unity's menus and features for the most part; at least when it comes to basic stuff like moving objects, using the lightmapping tool, inspector etc. The official Unity tutorial page will talk you through the basic process of actually 'using' Unity as a piece of software first, and the projects on the tutorial page are a great place for you to start straight away after doing so.

I suggest starting with the the Ball project, as it's the easiest and quickest way to learn about variable types, rigidbodies, and GUI stuff. It's also the simplest form of game that lets you jump into level design quickly, as the game mechanics are simple, and you can finish the framework of the game in a day, and spend the rest of your time enjoying creating levels and pickup patterns.

From there, try moving onto the Space Shooter tutorial (which is old and for Unity 4 I think, but still teaches you scripting fundamentals really well), or the Survival Shooter tutorial if you can make the big jump to something more advanced. Otherwise, consider the mini-projects, or moving onto one of the first books or video tutorials I'm going to mention below.

This guy is pretty good at taking complex topics and distilling them into their simplest essence. Which is great, because that's what you want, quick results, and not going too deep or complex into designing major titles. His GTGD series is on Steam if you want to actually buy Series 1 and 2 and support him. You should definitely watch Season 3 which he's releasing slowly over the next few days as of posting this thread, but it's all solid stuff which is great if you want to make an FPS your first serious project. His Unet tutorials are great too, and help you get multiplayer concepts nailed quickly if that's also one of your goals.

Similar style to GTGD series. Taking complex projects, and providing a step by step breakdown in the order you might want to develop them efficiently. He's also doing an FPS multiplayer tutorial series, but has only released 3 videos so far. They're good, and look to be solid, and his past track record of producing high quality videos means that he's probably going to create a good FPS multiplayer series.

This is a good reference book to have, whilst it covers advanced things you won't be ready for later on, it's good to have when you do start coming across those more advanced topics. It discusses pretty much every practical aspect of game dev with Unity, and goes over things like Vectors, which if you've been using up until now with no solid understand of how they work, this book provides very visual examples to help solidify your understanding of those concepts and more. You'll read the first few chapters, and then put it down until you become more adept with Unity.

Again, another good reference book for reminding you of how to write your code, and how to use certain functions and variables. This is another holistic guide, but this time concerning C#'s uses in Unity, instead of focusing on Unity itself. This doesn't teach you how to make specific projects/games, instead it teaches you programming concepts, functions etc., and gives you test cases or potential uses for those techniques and functions. Again, it's good to have this book as a reference if you decide to go with C# as your language.

This is a purchase you can skip if you're comfortable in using Unity and making small projects like the ones in the Unity official tutorials. If you still want a little hand holding however, this is a good book to move onto if you want to make more projects, before moving onto more advanced topics later on. Goes over really basic stuff which you should know by now, but again can be a neat little reference in how to use Unity in a general sense.

This is another holistic approach to Unity that looks at a little bit of everything. The projects and example cases are basic enough that you don't get overwhelmed at this point, but will always move you forward learning new things as well.

By now you're comfortable using Unity, and you're comfortable making basic games. Now you might start wondering how to add custom models and collision meshes, how to bring your assets in the most efficient manner possible (removing animations on imported models that don't use animation, compressing vertex values etc.), generally you're wanting to know the best and most efficient method to bring your stuff into your project. This guy knows a lot of time saving tricks, tips, and best ways to make sure your models and assets don't bring Unity slowing down to a crawl, and how to save a few frames and increase performance. If you're going to use Blender in Unity, this book has so many tips and tricks to use in making sure your game and project runs smoothly.

Same guy as #7, but this time he creates an entire project from start to finish, using fairly advanced C# techniques, and even goes as far as creating an event manager. Some really solid concepts in this book, but might be a bit too complicated to make this big a jump for some people. If you're feeling comfortable with your current knowledge, or you think you can make the jump, try this out for a very professional methodology to approaching designing and developing a game. This book will help you design/develop your first professional game in terms of how you approach the project, and organise yourself alongside your code.

Nothing too straining. You'll know a lot of this, but again, puts it in the context of a complete project with various disciplines and techniques. You'll learn every aspect of Unity again. If you feel you're being held back, and you're ready for more advanced stuff, you may want to skip this purchase. However, you now lack a holistic reference book for this point in your development progression. The last book I recommended to keep around for a complete reference on Unity, is probably too easy to read now. So if you want a book to reference multiple areas of Unity, you'll want this.

Again, another book from Alan Thorn. This one is skippable if you don't want a cheatsheet for some techniques etc., but it would make for a good final book to add to your collection now that you're comfortable making projects, and you're just looking for extra tips and pointers. It's good for a few things, but generally speaking if you've done your homework and extra researching into topics by now, you won't really need it. You'll definitely find a few golden nuggets here though. Goes over every aspect of Unity pretty much, and just gives you little performance tricks, programming tips and scripts you can use to help make development go faster etc.

Again, not read it, but I've been told it's a great reference book and starting point for using Mecanim and Unity 5. I have this on order too, should arrive soon.

Summary:

Don't at any point, feel there is a right and wrong way to do it. In fact, there's no good way to approach Game Development, because if you're going solo or even in a small team developing a project, it requires you learn 3D modelling concepts, texturing and UV unwrapping, shaders, audio formats, video formats, digital 2D art concepts, psychology, programming, a whole bunch of stuff all at once.

There's no way you can just say "Here's step 1 to making your own game from scratch". Because if you know how to program already, you're step by step guide is going to be different from someone who already knows how to 3D model, and wants to learn C#, or someone who knows both, but doesn't know Unity.

My point is, if you're a complete beginner, and know nothing of 3D or programming, things like Z-buffer fighting, and Vertex Painting are going to be alien terms and have no meaning. It's also not practical to pick up a list of terms in game dev, and learn the meaning of each one. Z fighting is important, because if two faces are on top of each other, they'll flicker because the renderer doesn't know which to draw first. That won't mean anything to a complete beginner, and they'll have no idea that's even a thing they need to look up, but it's vital.

That's my point however, is there no right way to approach the broad topic of Game Development, so don't feel disheartened. Don't feel afraid to walk away from something halfway into it, go read up other stuff, because you'll find you reach these happy accidents where you find something you wouldn't otherwise expect to find; you'll learn something new, or solidify an existing piece of information.

Most importantly keep working. No matter how bad your projects, how messy they are, make mistakes and get your hands dirty, and close the creative gap between your awesome taste as a player along with your high expectations of what a high quality game is, and what you're capable of as a beginner. The more projects you do, the better you get, the more you learn, but it's important to accept that you're going to suck to begin with, and it's a year or two before you start producing anything that meets your expectations.

Otherwise just keep making stuff. Always push forward and take steps along our journey, even if they're only tiny, make improvements and progression each day. Even if you only end up adding one more texture to your project, or you only add one object to your level, make sure you're always keeping in a professional mindset about working on your project and making constant progression.

I'll leave you with all of that to digest, longest post I've ever written XD

My game design playlist on YouTube is 400 videos long filled with random stuff from art theory, to shader writing, unity tutorials, c# concepts. My point is, think of your journey not so much as a single aspect of Game Design/Dev (unless you want to specialise!), but think holistically as a person, as a professional, and keep your mind open to everything and anything. Absorb as much as you can, and move onto something else when you hit a mental block. Return to a problem with a fresh mind and having taken a major detour across hundreds of YouTube videos and online articles.

Most importantly, have fun making games, or else people won't have fun playing them!