tl;dr version: What is the best advice (that you learned by experience and not from books) that you can give me, with regards to 3D game architecture? (as in, how to design and connect the components of a 3D game)
When it comes to programming, there is only so much you can learn from books. It seems to me, many of the things learned are learned from other people, or by experience. Even learning something in a classroom has its advantages over books; the professor might slip in a little tidbit of knowledge that he learned from his experience, and it can make all the difference.
I'm looking for those tidbits here.
Books on game development only go so far. There's a big difference about a book that explains the logic and syntax of a programming language, and a book that tries to tell you how to make a game. The latter doesn't work so well (at least for me); but the former is the whole reason I'm studying computer science.
I am going into my second year of college, and I'm 19 years old. I don't have experience, I have book knowledge. So I'm trying to piggyback off of you and your knowledge that you've gained from experience.
My current topic of interest is game architecture.
(or "engine design" if you prefer, though I'm not looking to create a everything-but-the-kitchen-sink game engine)
I recently asked a question, Data structures for message passing within a program? and it resulted in a long, excellent answer from haffax. To him, he was just rattling off his experience and the knowledge he's gained from it; to me, it gave me many new things to think about that I had never read in a book before, and haven't experienced for myself. Go check out the answer, and up it if you like it.
From it, I thought more about message passing within a program. I thought about how perhaps MVC is not a good fit for game architecture. His concepts of all game objects being equal and not a hierarchy, where instead you add "Features" to a game object, is something I've never heard before, and I really like it. And right at the beginning of the question he gave simple bits of advice:
Before starting to design any of the packages and classes, start with an analysis
...
And for motivation, I speak from experience here, don't think of your task as writing a game engine, write a game!
I want more answers like that.
What are the most important game architecture concepts and tricks that you've taken from your experience as a game developer? When you sit down to write a game, how do you organize things? Do you separate your view and your model, or do you intertwine them and refactor later? What do you want to say about the effectiveness of MVC as a game architecture pattern? How do you keep track of so many things (graphics, audio, file loading, collision, AI, network) and make them all work together to create a finished game? How do you use design patterns and preserve the object oriented-ness of your game? How do you write automated tests for your game?
I can come up with a million questions, but right now I just want to hear in general, whatever sticks out in your mind. What sort of experiences have you been through that changed your thinking? What is your philosophy when writing your games? How do you stay organized amidst the confusion and the massive-ness of the task of 3D game creation?
What game development tricks have you learned from experience?
Thank you for taking the time to read & respond!!