This book addresses how program teams can develop complex games within the constraints of deadlines, budgets, and changing technologies. It establishes a set best practices taken from real-world experiences, while making sure readers understand that there are not any absolute solutions. Readers are taught how to write reusable code that they will actually reuse along with games that require component technology. Practical object-oriented design methodologies with examples drawn directly from commercial code are also discussed. This book is useful for the entire game development team, including producers, designers, artists, and programmers.