Comecei a escrever um mecanismo de jogo muito simples para aprender melhor o OpenGL 3.x, mas como minha inexperiência e meu conhecimento escasso de como um jogo em 3D deve ser projetado, geralmente encontro problemas onde percebo que deveria ter projetado minhas classes diferentemente. Outros problemas que estou enfrentando é como acompanhar o tempo de maneira concisa no jogo e atualizar o movimento conforme necessário e como informar ao representante que ele precisa redesenhar. Também continuo precisando criar funções Get e Set para passar vários sinalizadores de um objeto para outro, isso é uma prática ruim?
Então, como o título diz, estou interessado em livros ou artigos / tutoriais e fontes que possam me ajudar e explicariam alguns padrões comuns de design em design de jogos (por exemplo, manipuladores de estado de jogos, fontes etc.).
Btw, ainda estou usando freeglut, você recomendaria que eu mudasse para um sistema de janelas melhor antes de progredir ou depois de obter uma melhor compreensão do OpenGL?
fonte
Respostas:
Escreverei uma resposta adequada desde que estive no seu estágio há cerca de 2 meses.
Não se preocupe com isso. Com sua falta de experiência, você nunca será capaz de pensar em todas as possibilidades e maneiras pelas quais uma determinada classe será usada em seu mecanismo. É melhor se você considerar os principais recursos da classe, implementá-lo e reestruturar posteriormente. Não tente pensar demais, você estará perdendo seu tempo nesta fase. Meu primeiro jogo foi uma bagunça completa, tenho certeza que foi o caso da maioria das pessoas.
O que você precisa é o conhecimento sobre o que é um ciclo de jogo. Este é um bom lugar para começar. Depois de começar a escrever códigos mais complexos, como lidar com a física, convém considerar loops com tempos de quadro variáveis, mas comece pequeno. Um loop de jogo de quadro fixo simples deve bastar para você por enquanto.
Esta é mais uma questão de engenharia de software. Com o tempo, você verá quais dados você precisa proteger e quais são seguros. Provavelmente, é melhor se você apenas implementar um recurso e depois ver o que não está exposto fora dele e puder ser tratado como dados públicos.
É tudo uma questão de experiência. Você escreverá uma classe de câmera e verá a funcionalidade que deseja dela ao lado das matrizes de transformação. Se você quiser alguma dica imediata, eu diria, implemente os ossos, estenda mais tarde.
Artigos e Livros:
Esses livros falam sobre a arquitetura dos mecanismos e pipelines de jogos modernos. Eles fornecerão uma boa visão geral da tecnologia subjacente. Eu recomendo o primeiro livro, se você tiver que escolher, ele é menos "tendencioso" em relação a determinadas tecnologias, embora no final você deseje superar as duas, pois elas são ótimas fontes de conhecimento.
http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135
http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806
http://ogldev.atspace.co.uk/index.html
http://www.arcsynthesis.org/gltut/index.html
http://www.opengl.org/sdk/docs/man3/
http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/
http://www.opengl.org/sdk/docs/manglsl/
http://www.peroxide.dk/papers/collision/collision.pdf
(Estou vinculando isso porque achei difícil encontrar artigos sobre como a detecção adequada de colisão 3D é feita.)
Há mais livros, mas quando você terminar isso (especialmente a Game Engine Architecture), você saberá melhor o que deseja.
WinAPI, se você sentir que tem tempo e vontade de aprender a programação do Windows (se estiver desenvolvendo para o Windows). O FreeGLUT é bom para aprender, mas eventualmente você precisará de mais funcionalidades. No entanto, se você quiser seguir outra rota, poderá iniciar o OpenGL com bibliotecas como SFML ou SDL. Fique com o FreeGLUT, a menos que você seja teimoso como eu. Fui direto para o WinAPI.
fonte