   Good game architecture books for a total newbie?
  With my graduation from high school coming up, I've managed to convince my parents to buy me a game architecture book. Trouble is, I'm not sure which one would be best for me. Over the next several years, I'm going to be trying to develop a shareware graphic adventure game. Of course, I'm ill-equipped to handle the task. I don't really need a book that will teach me absolutely everything, so much as I need a book that will take me through the basics. Primarily, I'd like a book that could help me:1. Identify what skills a team needs to have in place to create a videogame.2. Which skills I would be able to learn on my own.3. Make me better equipped to pursue further education in learning game architecture on my own, if it doesn't teach me everything necessary on my own.4. And if at all possible, how to assemble and motivate a good team.And to give you an idea of exactly how much of a n00blar I am at game architecture, until recently, I thought the term refered to the physical design of the in-game environments. So yeah, I need something that will start me from the very beginning.   
  Hmm, I believe part of that question relies on how strong you feel you are at programming. If you feel a little weak, try to strengthen your abilities a little bit before diving into a really large and complex field.That being said, if you want a general overview of how things are done in games, I've found Core Techniques and Algorithms to be a fairly decent overview of what goes on. There is a pretty good mix of theory and implementation detail in that book and it might be a good place to start. Be warned though, don't expect to master the material in a short amount of time, a lot is covered in the book.I hope that helps you out!   ;  I'd like to second Jbs on the Core Techniques and Algorithms book.Just be aware that the book assumes you know how to program.Also, while the book explains some variants of the game loop, and decomposes them, in the end, it doesn't really go into 'architecture'. Rather, it presents several (very interesting!!) techniques and algorithms, in a relatively loosely-coupled manner.That being said, I think it's a great book, and assuming you have decent coding skills, you will be well on your way with it.   ;  Gah, then this complicates the problem. My programming skills are virtually ziltch.Like I said:Oilers99 = Total n00blar. :P   ;  Architecture, code design, patterns is not really stuff you learn fast. Takes time.Core Techniques and Algorithms is not really an architect book, but more a "littlebit about everything fancy stuff". As a theory book I even find it poor if I compare it to a book that teaches you algoritmic theory. I used "Algorithms in C++ by Robert Sedgewick". Not sure if you can get the book anymore. Very good book - recommend it.Game Development and Production by Erik Bethke is alo a poor book, but is more about the planning and basic designing. Except the author is probably not the best in this game. But you get the picture. Not a book about code just so you know. Not sure if I recommend to buy it even.Software Engineering and Computer Games By Rudy Rucker, is the closest I have found where you get to learn code design and architecture. Its an advanced book, and you end up programming a program that runs a ton of concept games. But I think you start asking questions in the wrong end...Learning to program:1. Learn C++. Get a good C++ book. Should cover everything.2. Learn Algorithms. Get a book about Algorithms (search, sort, trees, etc etc)3. Get to know about win32 (or other lib that let you make simple gui software).4. Get to know about DirectX (basics should do, don't make a huge project).5. Get to learn assembly.6. Get to learn Java, and don't be afraid of C# either.7. Get to learn a few other languages. You ain't a programmer before you know several languages.8. Then start to learn about propper OO9. Learn about patterns10. Learn how to design, engineer, plan and execute.I recommend to study OO, Paterns, Architecture and stuff like that in java, cause its a bit easier there. When you know how to do stuff, return to c++ and do your thing.The list is huge, and covers a few years. But I started also in the beginning to look for architecture, code design and "cookbook recipies". It really doesn't work like that. You need to skill up in several areas, and mature before you start creating big stuff.So your question about architecture is something you should wait asking. Come back when you are at the end of my list asking about architecture.You need to start with C++. Deitel and Deitel has several good books...   ;  @DarkSlayerI must question why you recomend learning assembly. Its almost useless nowadays. And why learn 'proper OO' after you've learned multiple OO languages? Especially when you're recomending learning Java, which is entirely OO. You won't be able to get any true experience with the language until you use it in the way its ment to be used, namely in an object-oriented fashion. And why C++ first? You recomend learning other languages which are generally considered to be easier to learn(C# and Java), but only after learning the more complicated language. Shouldn't that be the other way around? You recomend to leave C++ and then return once you understand proper OO, but why not just start at Java and learn proper OO then, then go onto C++?   ;Quote:Original post by Ezbez@DarkSlayerI must question why you recomend learning assembly. Its almost useless nowadays. Where I work, about 5% of our code base is in assembly. This means every now and again you have to drop down to the assembly level to get work done or understand how to fix a problem. Of course, this doesn't mean a shareware project needs assembly to get by.That a side, understanding the machine's architecture is imperitive to optimizing for your platform and understanding assembly is one way to really understand the architecture. I'd recommend every programmer at least once in their carear learn assembly.   ;  1:Learning assembly is good because you then learn to understant the underlying stuff. Im not talking about making software in asm. Just learn it. It also help understand the many underlying concepts of the various languages....and sometimes you actually must use it.2:Just because a language is OO like java, doesn't mean you will learn OO by using it. It doesn't even mean your code will be OO. OO is not classes. OO is a concept of code design, and gives you powerful features in code.Many ppl don't even know propper OO and just mess around at best. Remember that it is easy to make working software without using OO. So many ppl tend to think that OO is just use of classes.I think its better to learn OO after you've used java for a bit, cause Java is a better language for this stuff. You can learn OO in any OO language, but I think Java or C# is less painful and error prone. 3:C++ is crude, basic and forces you to think about many basic concepts you don't learn in Java or C#. Dealing with pointers and references, copy-by-value or reference, new/delete objects and keeping them under control, stuff about classes etc etc etc. Alot of this is hidden and automated in Java, so you tend not to learn it porperly.Those who start learn Java have often alot of problem moving to c++. They often show that they have learned very little at all. But if you know c++, its easy to use anything else.If you learn asm, you'll understand alot of the weirdness of c++.4:Should you return to c++? I didn't say that. If you tell me you know programming, and all you know is c++, then you are a stupid noob at best. A programmer is not dependant on a language. Learning syntax and functionality of a language is a part of process, and is easy.For every project you shall do, you should justify the use of a particular language. Not use it blindly like stupid noobs do. If there is 3 languages you can use, you should test em all untill you know which suits best. Noobs are afraid of learning, and work, so they argue as best they can to avoid such things.5:Don't be a noob.   ;  I'll second the Deitel & Deitel books, their book "c++ How To Program" is excelent   ;Quote:Original post by ender_341I'll second the Deitel & Deitel books, their book "c++ How To Program" is excelentIs this the book of which you speak?http://www.gamedev.net/columns/books/bookdetails.asp?productid=285   