Qual é o melhor mecanismo de jogo de código aberto projetado para dar exemplo? [fechadas]

15

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

Dani
fonte
3
Você realmente entende minha pergunta? Desejo motores de jogos (não apenas jogos ). E eu solicitei Deve ser orientado a objetos . No tópico que você disse, as respostas são apenas para jogos (Doom3, Prototype, etc.) E também há um kit de ferramentas gráficas (OpenSceneGraph), mas não há nada específico sobre "mecanismos de jogos" nesse segmento ... Você pode fechar ou apagar a minha pergunta se você não gostar dele, mas eu não entendo o voto para baixo ... :( a minha pergunta não é o mesmo
Dani
2
Para esclarecer ainda mais, não estou interessado em códigos específicos de jogos. Quero mecanismos de jogo de uso geral.
Dani
3
Há uma diferença: nem todos os jogos são executados em um mecanismo de uso geral. O Doom3 possui um mecanismo específico para FPS, o protótipo é diferente e assim por diante ... Pode ser que eles tenham coisas em comum (gerenciamento de recursos, scripts ...), mas isso não é relevante para a minha pergunta. Minha pergunta começa com a frase "Eu codifiquei vários jogos em C ++". Reitero: Minha necessidade é encontrar um bom código-fonte de mecanismo de jogo de uso geral. Não é uma fonte de jogo para procurar código reutilizável.
Dani
11
O Doom 3 tem um "mecanismo específico de FPS", mas também possui todas as partes de que um mecanismo genérico precisa - como você diz, gerenciamento e script de recursos, renderização em 3D, física e assim por diante. É um mecanismo genérico e mais , não de alguma forma menos.
2
@ Joe Wreschnig Estou inclinado a concordar com @Dani sobre este tópico. Embora todos os jogos sejam movidos por alguma forma de mecanismo, os padrões arquiteturais usados ​​para um mecanismo "único" e um mecanismo projetado para trabalhar em vários títulos são bem diferentes, mesmo se ambos tiverem scripts, gerenciamento de recursos, renderização em 3D, componentes etc. Além disso, olhar para o código de um jogo construído em um mecanismo desenvolvido pelo mesmo estúdio provavelmente não é a escolha mais sábia, pois não fornecerá uma indicação verdadeira de quão flexível e fácil de usar o mecanismo é em um ambiente de terceiros.
Ari Patrick

Respostas:

6

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:

  • Construir o loop de animação é entediante e todos são praticamente iguais.
  • O objeto básico do sprite é muito limitado. Eu queria um sprite aprimorado com direção e velocidade, capacidade de lidar com várias condições de borda da tela, várias imagens e vários esquemas de colisão.
  • Pygame não possui recursos de interface do usuário. Eu queria etiquetas simples, botões e um seletor de números que eu
    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.

Dois pi
fonte
8

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.

Max E.
fonte
11
Porém, eu não chamaria exatamente de orientação a objetos de tecnologia pré-Doom3 id.
Tetrad
3
Não, não orientado a objetos, mas como eu disse, é digno de estudo. Quero dizer, vamos lá, só porque é processual não significa que você terá câncer nos olhos se você olhar! ;)
Max E.
6

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/

Tetrad
fonte
+1 Ótimo motor. Obrigado Tetrad! Eu já sei, mas nunca usei nem vi o código fonte. Você sabe se ele integrou a IA (por exemplo, localização de caminhos etc.) #
1111 Dani Dani
3
Eu acho que tudo está relacionado à renderização.
Tetrad
2
O Ogre é apenas uma biblioteca de renderização gráfica. Mecanismo de renderização de gráficos orientados a objetos.
Jonathan Sternberg
0

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.

jokoon
fonte
0

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.

nmin
fonte