Fácil de usar mecanismos 3D de plataforma cruzada para o desenvolvimento de jogos em C ++? [fechadas]

73

Quero tentar escrever um jogo em 3D. No entanto, não quero começar com um nível tão baixo de desenhar triângulos individuais e escrever meu próprio carregador de objetos 3D e assim por diante. Já ouvi falar de coisas como Irrlicht , Crystal Space 3D e Cafu , mas não tenho nenhuma experiência com nenhuma delas. Estou procurando sugestões de pessoas que tenham experiência com esses ou outros mecanismos nos quais estão bem escritos e sejam fáceis de começar a usar, sem ter que aprender uma tonelada de teoria matemática 3D e como as GPUs funcionam internamente.

davr
fonte
16
Embora possa ter sido encerrada, essa pergunta foi muito útil para mim.
Caleb Jares
4
idem, thread muito bom, não sei por que o stackexchange não gosta desse tipo de pergunta.
Steveh
2
eles gostam de fechar perguntas suponho
Frank Cranston
github.com/fffaraz/awesome-cpp#game-engine
Ciro Santilli新疆改造中心法轮功六四事件

Respostas:

48

Minha opinião (apenas para mecanismos 3D de código aberto):

  • Irrlicht :
    • Motor 3D leve
    • Limpe C ++ sem dependências e sem STL.
    • Não está muito bem documentado, mas existem bons tutoriais.
    • Muito pequeno para que você possa personalizá-lo facilmente.
    • Nenhum driver OpenGL 3.X, Direct X 10.X ou 11.X disponível no SDK oficial.
    • Muito bom para desenvolvimento móvel;
    • Boa comunidade
    • Poucas extensões disponíveis
  • Ogre3D :
    • Grande motor 3D
    • Ele usa C ++ moderno, como STL, exceções e RTTI
    • Boa documentação (existem livros publicados).
    • Muitos renderizadores (OpenGL, DirectX e OpenGL ES ...).
    • O Ogre3D tem muitas extensões como integração CEGUI ou Bullet, nós de árvore ...
    • Mas é mais difícil estender o Ogre3D se você quiser algo específico.
    • Grande comunidade
    • Muitas extensões
  • Espaço de cristal : um design antigo e difícil de usar. Depois de alguns dias, parei de usar esse mecanismo.
  • Horde3D
    • Motor pequeno
    • Design moderno
    • Comunidade leve
    • Sem extensões
  • Blendelf
    • Motor pequeno com algumas dependências
    • Design moderno com efeitos modernos como DOF ou HDR ...
    • Apenas OpenGL
    • Comunidade leve
    • Integração de bala para física
    • Você usa lua para pilotar este mecanismo

TL; DR:

  • Para um jogo de mesa (ou futuro jogo comercial): Ogre3D
  • Para um primeiro jogo: Irrlicht
  • Para desenvolvimento móvel: irrlicht (Ogre3D é muito grande)
  • Para efeitos sexy: Blendelf
Ellis
fonte
Para ser sincero, eu não recomendaria a Irrlicht para desenvolvimento móvel. Faz muitas alocações de memória e oferece implementações personalizadas de alocação de memória quase nenhuma. O tempo de inicialização devido às quase 60.000 alocações feitas na inicialização é um grande problema.
8113 Simon
Eu uso Irrlicht no Android e IOS e tempo de inicialização não é um grande problema ... loading textura é muito mais do que alloc ...
Ellis
@ Simon, você poderia explicar a que se refere com "implementações personalizadas de alocação de memória"? O que é isso e por que você iria querer?
temporary_user_name
2
@Aerovistae A alocação de memória requer chamadas para o sistema operacional, é uma operação muito cara. Geralmente, ao criar um mecanismo de jogo, você deseja fazer seu próprio gerenciamento de memória, se alocar uma grande parte da memória uma vez e depois distribuir essa memória no programa. Dessa forma, você está apenas movendo os ponteiros e não chamando o kernel cada vez que deseja mais memória. É um tópico bastante avançado e requer aritmética avançada de ponteiro, especialmente se você deseja algum tipo de mecanismo anti-fragmentação.
Dreta 09/06
3
Então, quando Simon diz que não recomendaria porque não oferece implementações personalizadas de alocação de memória, isso realmente não se aplica a iniciantes ou mesmo à maioria dos desenvolvedores intermediários?
temporary_user_name
21

A sugestão inicial óbvia é o Ogre3D .

Tetrad
fonte
Você já teve alguma experiência com isso? É bastante estável, bem escrito e bom para iniciantes em 3D? Posso facilmente pesquisar no Google uma lista de mecanismos 3D (como você vê na minha pergunta), estou procurando mais informações sobre qual é uma boa escolha e por quê. Obrigado.
davr
11
Mas o Ogre3D não é um mecanismo. É uma biblioteca de renderização em 3D. Você precisa escolher um mecanismo baseado no ogro ou construir o seu próprio.
Fogo
4
Eu tive uma vasta experiência com o Ogre3d; É muito estável e bem escrito, e faz um ótimo trabalho de cuidar de tarefas mundanas (seleção de cenas, carregamento de malha, outdoors / partículas). O fogo está correto, pois não é um Game Engine; mas o Ogre pode ser (e geralmente é) incorporado a outras bibliotecas para criar uma. É um passo fantástico acima de "desenhar triângulos individuais e escrever meu próprio carregador de objetos 3D", mas é apenas uma biblioteca de renderização. Se é isso que você quer, é uma ótima biblioteca com uma comunidade ativa e solidária.
22410 Karantza
3
@Fire OGRE: Mecanismo de renderização gráfica orientado a objetos. É um motor. Tem singletons em todo o lugar. Definitivamente um motor.
Ricket 26/09/10
3
@Ricket Sim, um mecanismo gráfico , mas não um mecanismo de jogo, o que ele provavelmente quis dizer, pois isso é enfatizado fortemente nos documentos do ogro. Além disso, o padrão (anti) singleton certamente não tem nada a ver com ser um mecanismo ou não.
Raoul
7

O Open Scene Graph é um mecanismo 3D multiplataforma muito bom e muito bem projetado. Ao contrário do Ogre3D, por exemplo, ele não fornece recursos de "mecanismo de jogo" e se concentra em ser uma abstração muito boa sobre o OpenGL.

  • É bastante leve e não força uma estrutura para você: você pode usar o mínimo ou o máximo que desejar e usá-lo através de SDL, SFML, wxWidgets, QT ...
  • É uma ótima experiência de aprendizado: ao aprender a biblioteca, você entende cada vez mais o OpenGL subjacente e a maneira como ele foi projetado.
  • Pronto para usar: possui carregadores para os principais formatos 3D
  • Shaders friendly

Veja a extensa lista de amostras .

small_duck
fonte
4

Em termos de mecanismos de jogo:

  • Torque3D : Muitos recursos, mas alguns considerariam o código difícil de trabalhar.
  • Mecanismo C4 : Suporte de autor excelente e barato, mas as ferramentas podem exigir um pouco de trabalho.
  • Faça você mesmo: selecione um conjunto de bibliotecas e cole-as junto ao seu jogo.

Desde que o Ogre3D foi sugerido, existe também uma alternativa leve ao Horde3D .

Prós:

  • O design é sólido e provavelmente superará o Ogre3D para renderização pesada (se ainda não o fizer)
  • API C, tornando as ligações para linguagens como Python simples e fáceis de manter (o código interno é C ++)

Contras:

  • Requer pelo menos suporte ao OpenGL 2.0
  • Comunidade menor
  • Base de código instável (grandes mudanças na arquitetura ainda estão ocorrendo)
Jason Kozak
fonte
2
Evite o Torque 3D se você valoriza sua sanidade. O mecanismo de script é um pesadelo confuso, muito frustrante de se trabalhar.
precisa
4

O Irrlicht fornece um pouco mais do que o Ogre3D e, ao mesmo tempo, é um pouco mais prático (por exemplo, não parece que você está apenas "ligando um motor" e vendo-o funcionar, parece mais que você é o um executando comandos, como deve ser na minha opinião).

Eu acho que seria ótimo para começar!

Ricket
fonte
4

Eu sei que você pediu C ++, mas o Panda3D também trabalha com C ++, mesmo que seja inicialmente destinado a trabalhar com python. É um motor de jogo, mas seja qual for ...

jokoon
fonte
2

A escolha óbvia, se o Ogre3D estiver com um nível muito baixo para você, seria NeoAxis: http://www.neoaxisgroup.com/

É alimentado por Ogre, mas é uma plataforma completa de desenvolvimento de jogos.

Está direcionado ao .NET para que você possa usar C #, C ++ gerenciado, VB.

Então vá em frente. :)

O Ogre3D pode ser executado em uma variedade de dispositivos móveis, como iPhone e Android. Portanto, não é muito grande.

Não confunda tamanho com desempenho.

Não tenho certeza se o IrrLicht possui um suporte oficial para iPhone, mas o Ogre3D possui.

jacmoe
fonte
Se estiver no .NET, você não pode adicionar o IronPython à lista de idiomas? Python é uma linguagem de script fabulosa.
precisa
2
.INTERNET? Isso não exclui a plataforma cruzada?
davr
.Net não, mas o Neo-Axis usa C ++ / CLI, o que faz.
jsimmons
Conversei com o desenvolvedor líder da Neoaxis hoje e eles estão anunciando o suporte ao Mac OS X em setembro. :)
jacmoe 7/08
1

Boas respostas até agora, mas vou adicionar Marmalade . Faz móveis muito bem. Um monte de grandes estúdios lançaram um jogo de console com ele, então ele tem credenciais. Existe até um editor semelhante a uma unidade, construído sobre ele, o Shiva3D , que também permite plataformas cruzadas.

ADB
fonte