Como ser um programador de jogos: Design Patterns
Este é um assunto complicado até para quem decorou todos design patterns possíveis e imagináveis em programação. Por mais que existem muitos por ai, poucos são utilizados no dia-a-dia, e muitas vezes por falta de conhecimento.
Antes de começar a trabalhar com jogos eu imaginava que muitos design patterns eram utilizados nos jogos, afinal são programas bem complexos e grandes. Porém, o que eu aprendi é que nem sempre é necessário utilizar todas as técnicas possíveis só para dizer que utilizou.
Em praticamente todos jogos que trabalhei na Glu e na EA o design pattern mais utilizado era sempre o Singleton. Praticamente todas as classes que não eram objectos ou entidades tinham este padrão implementado que tem como objetivo expor uma variável estática para acessar todo conteúdo da classe.
É claro que aqui e ali se via alguns outros design patterns, como Factory e Prototype, mas o mais utilizado sem dúvidas era o Singleton, por que funciona muito bem quando você precisa acessar conteúdos de outras classes. É importante conhecer alguns design patterns mais utilizados, mas também saber onde e quando utilizar.
Não adianta implementar todos design patterns só para falar que utilizou todos se os demais programadores da equipe (ou futuros programadores) não vão manter tudo funcionando, principalmente por falta de conhecimento. Por isso é muito importante conhecer bem os mais utilizados e pelo menos saber onde utilizar. Para estudar mais sobre design patterns eu recomendo os 3 livros abaixo:
- Game Programming Patterns
- Design Patterns: Elements of Reusable Object-Oriented Software
-
Code Complete: A Practical Handbook of Software Construction
- Este livro possui uma Game Programming Patterns (o autor começou o link na internet e depois publico a versão impressa). Obrigado Gabriel Sussumu por lembrar deste link nos comentários!
UPDATE 1: Links de mais conteúdo de Design Patterns em jogos enviado pelo leitor Fernando Mondo:
UPDATE 2: Reescrevi algumas partes do texto para tentar expressar melhor minha opinião.