Possível duplicata:
Onde posso encontrar bons exemplos (bem organizados) de código de jogo?
Eu codifiquei vários jogos em C ++ e agora estou construindo meu próprio mecanismo e editor de jogos.
Tenho algumas dúvidas sobre o design e desejo encontrar ótimos exemplos a seguir.
Qual é o melhor projetado na sua opinião?
Deve ser orientado a objetos. Linguagem de programação não importa, mas eu prefiro nesta ordem: C ++, C #, Java ou outro similar.
EDITADO: Para esclarecer mais, não estou interessado em códigos específicos de jogos. Quero mecanismos de jogo de uso geral.
EDITADO: Este artigo explica o que é um mecanismo de jogo: mecanismo de jogo na wikipedia e aqui está uma lista de mecanismos de jogos conhecidos: lista de mecanismos de jogo na wikipedia
fonte
Respostas:
Eu acho que a melhor maneira de construir um mecanismo de jogo é começar com o que você já conhece muito bem e adicionar esses recursos que são tediosos ou repetitivos.
Por exemplo, eu faço muito com Python / pygame (que é um wrapper SDL). Eu gosto muito do sistema, mas houve três coisas que me incomodaram:
pudesse adicionar facilmente aos meus jogos.
Era relativamente fácil criar um invólucro orientado a objetos em torno desses recursos. Dê uma olhada no capítulo 10 e na documentação do Game Engine disponível aqui: http://aharrisbooks.net/pythonGame/
(Isso foi escrito como parte de um livro, mas você é bem-vindo ao mecanismo de jogo, mesmo que não queira o livro.)
O capítulo 10 explica a motivação e as técnicas para construir um mecanismo de jogo 2D básico. Você pode se divertir ao criar o seu próprio. A linguagem real não é tão importante (exceto, é claro, que você precisará de uma linguagem OOP para oferecer suporte a OOP.) Se você já estiver usando SDL com C ++, poderá começar adaptando meu mecanismo a C ++ / SDL.
fonte
O venerável design de mecanismo Quake (ID tech) resistiu ao teste do tempo e é provavelmente o design de mecanismo de jogo mais bem-sucedido de todos os tempos. Tudo além do renderizador permaneceu praticamente inalterado desde o final dos anos 90 e ainda é usado em jogos modernos como o ETQW.
O código fonte completo para quatro iterações desse mecanismo (Quake 1 a 3, mais Wolf ET) está disponível na GPL. Provavelmente, existem mais de cem mecanismos de jogos baseados no Quake, apoiados pela comunidade, desenvolvidos ativamente, que os mantêm relevantes na era moderna. Especialmente interessante é o XreaL, por seu renderizador fantástico, e o ioQuake3, por sua manutenção fiel do Quake 3, otimizada para o hardware moderno. Além disso, para versões de ID "oficiais" mais recentes do mecanismo, a lógica do jogo (não o mecanismo inteiro) também está disponível.
Mesmo que você não acabe usando esse mecanismo de jogo, vale a pena estudar sua arquitetura de separação cliente-servidor bem pensada e a segregação da lógica do jogo a partir de detalhes de baixo nível.
fonte
A biblioteca de renderização Ogre3D está bem próxima do código do mecanismo e, de todas as contas que ouvi, é muito bem projetada e muito OO.
http://www.ogre3d.org/
fonte
Ao falar sobre o mecanismo de jogo, acho que você está pensando em algo que não seja o mecanismo de renderização, o mecanismo de som, o mecanismo de física, o mecanismo de entrada etc.
Portanto, você pode estar pensando em arquitetura de jogos, IA ou padrões / sistemas de design etc., que são usados para estruturar um software no gerenciamento de dados e outros componentes para criar algum tipo de cena / thater / illusion, produzindo assim um conjunto gerenciável de regras para ajustar para criar um "videogame" real.
Essa é a camada superior de um videogame, e eu até tentei aprender um pouco sobre ela, é vasta, complicada e requer muito conhecimento de todos os outros assuntos. Imagine que você deseja recriar uma realidade alternativa do nada, acompanhar e computar todos os eventos e regenerar dados precisos daqueles, a qualquer momento: para todo tipo de jogo, existe algum tipo de mecanismo de jogo de subconjuntos, e eu não ' acho que é realmente possível criar um mecanismo genérico que seja matematicamente rápido o suficiente. Mesmo para um jogo em que você controla um único personagem, ainda existem muitas coisas que podem variar e ainda podem exigir que o jogo mude toda a arquitetura.
A indústria de jogos não é tão bem servida pelo código aberto quanto outros campos das ciências da computação, apenas porque o entretenimento tem tipos diferentes de tipos de licença, que envolvem licenças artísticas: o produto do jogo é pago apenas por um cliente, e a AFAIK, há apenas alguns mecanismos que parecem bons o suficiente para trabalhar para você: Hord3d, NeoAxis, misture-se, Panda3D. Mas não posso garantir que eles serão tão fáceis de usar quanto ferramentas como Unity, Torque, C4 e outras; tenha em mente que um mecanismo de jogo é, com o renderizador gráfico, o tipo de software mais difícil que você encontrará na criação de jogos.
fonte
Para mim, usar Python com Pygame é uma boa solução. Talvez o Python seja um pouco lento, mas para os computadores de hoje, e se você apenas tentar otimizar seu jogo, isso não importa. O Pygame possui uma documentação muito boa no site original do pygame. Mas primeiro pegue o início de um tutorial para aprender alguns conceitos básicos. Para otimização de velocidade (conversão de imagens, ...), você precisará de outros exemplos que são fáceis de encontrar.
fonte