Games software has its roots in a "cottage" industry, ignoring formal methodologies, instead leaving the programmers to find homespun solutions to the technical problems faced. The picture has now changed: the scale of the problems faced by programmers means that more methodical techniques must be applied to game development to prevent projects spiralling out of control, both in terms of technical complexity and cost. The book addresses how program teams can develop ever more complex entertainment software within the constraints of deadlines, budgets and changing technologies. It establishes a set of best practices tempered with real-world pragmatism, understanding that there is no "one size fits all" solution. No member of the game development team should be working in isolation and the book will be useful to producers, designers and artists as well as the programmers themselves. In addition, the book addresses the needs of the growing number of Game Development courses offered in academia, giving students a much-needed insight into the real world of object-oriented game design.