Começando com o 2d Game Dev (C ++): DirectX ou OpenGL? [fechadas]

12

Então, eu sou um estudante procurando colocar meu pé na porta do desenvolvimento de jogos e estou procurando fazer algo em 2D, talvez um tetris / invasores do espaço / algo com um clone de interação com um pouco de mouse.

Apontei minhas pesquisas na direção de C ++ e 2D e acabei levando ao DirectX / OpenGL

Agora, pelo que entendi, todos esses pacotes farão por mim é desenhar coisas em uma tela. E é tudo o que realmente me importa neste momento. O som não é necessário. A entrada pode ser tratada com stdlib provavelmente.

Então, para um iniciante que tenta criar um jogo básico em C ++, você recomendaria o DirectX ou o OpenGL? Por quê? Quais são algumas das principais diferenças entre os dois? Qual é mais utilizável?

Dfowj
fonte

Respostas:

16

Eu recomendaria o SDL ( http://www.libsdl.org/ ) para 2D, foi onde comecei com material gráfico e foi muito fácil de usar, mesmo que eu mal conhecesse C ++ na época.

Este (espelho) é o conjunto de tutoriais com os quais comecei e que achei muito úteis (eles eram datados há ~ 4 anos atrás, quando trabalhei com eles, mas não acho que o SDL tenha mudado muito e ainda devam ser relevantes )

O SDL também faz tratamento de entrada e o SDL_Mixer pode fazer áudio básico.

Eu nunca trabalhei com o DirectDraw ou o OpenGL para coisas em 2D, então não posso comentar lá, mas definitivamente posso recomendar o SDL.

Riley Adams
fonte
1
Achei o SDL bom, mas era muito difícil obter os caminhos e inclui a instalação corretamente.
Skeith 07/04
1
Verifique também o lazyfoo.net/SDL_tutorials para obter alguns tutoriais decentes (inclui tutoriais de configuração para vários IDEs).
BeanBag
Concordou com @Skeith. Não consigo imaginar as dores de cabeça ao obter a configuração SDL pela primeira vez para iniciantes. Já é bastante difícil lidar com alguns dos problemas comuns de configuração com amadores ou mesmo profissionais. Depois de obter a configuração SDL pela primeira vez, consegui fazer QUALQUER COISA pelo resto da minha vida, com facilidade. Isso é quantas dores de cabeça isso me deu; quanta experiência eu aprendi sobre mais do que é típico para configurar uma biblioteca. Foi há muito tempo para lembrar o que exatamente me dava mais problemas ou que problemas eu tinha, mas todas as outras bibliotecas eram fáceis de configurar.
precisa saber é o seguinte
7

Usei SDL e SFML para meus projetos de jogos. Usei SDL para um jogo finalizado, um jogo de tetris, e usei principalmente SFML como uma camada de janela para experimentos de shader. Pela minha experiência, eu diria que SDL é o que diz. É uma camada simples de mídia direta, que abstrai os dados com os quais sua mídia (som e vídeo) trabalha para um nível em que você pode interagir em diferentes plataformas. Isso é "tudo" que faz.

Por esse motivo, geralmente é necessário misturá-lo com algumas outras bibliotecas, principalmente SDL_mixer, SDL_gfx e SDL_image, que fornecem a funcionalidade que todos precisam para criar jogos.

Todas essas bibliotecas também se destinam à linguagem de programação C e seguem suas convenções. Não que haja algo errado com isso, mas se você deseja uma abordagem orientada a objetos sobre como você interage com o io, basicamente precisa criar essa camada por conta própria.

O SFML vem com tudo pronto para uso. Tem som, vídeo, mixagem, captura de quadros e orientação a objetos. Se é isso que você quer, eu recomendo que você faça isso. O SFML também possui uma camada de abstração para algumas das funcionalidades básicas do opengl (especificamente beginShape / EndShape e pixel shaders). Eu não acho que o SDL tenha algo assim, apenas um método para mesclar com ele.

PS: Não afaste a conversa do C / C ++, mas se você não estiver usando esse idioma por qualquer motivo específico e quiser um idioma mais fácil, sempre haverá um jogo de pygame. Que é basicamente SDL + para Python.

Robert Vella
fonte
2
SFML também é C ++, enquanto SDL é C. Isso faz a diferença se você realmente deseja aprender C ++.
jsimmons
5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

Eu concordo com essas observações e acho que é uma discussão estelar sobre por que o DirectX é melhor que o OpenGL.

Esse diário é uma resposta a David na Wolfire.

Espero que isso sirva para equilibrar um pouco. ;)

Mas, em geral, se você estiver usando uma estrutura de plataforma cruzada e API:

Use o DirectX no Windows e o OpenGL no * nix.

jacmoe
fonte
Grande ler =) O que um campo minado este assunto é ...
Nailer
6
404, página não encontrada
axel22
Recebo um 404 no link archive.gamedev.net / ....
Exilyth
4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

Eu concordo com essas observações e acho que é uma discussão estelar sobre por que o OpenGL é melhor que o DirectX.

No entanto, essa pergunta é absolutamente uma questão de opinião, e o DirectX tem seus benefícios sobre o OpenGL, especialmente 10 e 11 e especialmente no contexto do desenvolvimento de jogos.

Além disso, se você optar por usar o OpenGL, o SDL é uma biblioteca maravilhosa e muito popular, e há muitos recursos para aprender o OpenGL (NeHe, etc.) - mas esse talvez seja o lugar para outra pergunta.

Ricket
fonte
1
Como um contraponto à discussão entre OGL e DX, o pessoal do Unity decidiu explicitamente mudar para o DirectX no Windows, pois os drivers OpenGL padrão para a maioria das placas de vídeo são muito ruins. Eu não tenho a referência à minha frente, mas imediatamente de suas conferências eles disseram que algo como os drivers OGL era o problema número um de falhas no Windows. Felizmente, a camada de abstração significa que você realmente não se importa da perspectiva dos usuários.
Tétrada
Desenvolvemos software de visualização orientado a negócios para unix e windows, e posso confirmar que a maioria dos problemas que vemos no Windows estão relacionados ao driver OpenGL.
Drxzcl
1

Se você está apenas começando, provavelmente é melhor usar um mecanismo ou estrutura 2D existente, como o SFML .

DrDeth
fonte
1

Eu gosto do Direct X e o uso há vários anos em muitos projetos, mas se o seu aprendizado estiver atento a problemas de versão.

Eu descobri que a maioria do código x direto não será compilado em uma versão diferente e isso pode ser um inferno se você estiver tentando seguir um tutorial.

Eu recomendo o Direct X, pois existem recursos para tudo que facilitam quando você começa e maneiras mais avançadas de manipular as coisas à medida que avança.

Skeith
fonte
1

Mecanismo de jogo de Haaf

Eu não sei o quão atualizado é (quero dizer, não é, mas acho que não há nenhuma razão para que não deva ser utilizável), mas eu o usei há um tempo atrás (C ++) e eu realmente gostei. O HGE não foi atualizado desde 05.08, mas lembro-me de ser bastante simples de aprender e rápido. Ele também vem com todos os tipos de ferramentas e ajuda como um sistema de partículas.

De qualquer forma, se o que você deseja é criar um jogo de verdade, em vez de aprender o que está acontecendo "nos bastidores" nos processos de desenho e coisas assim, eu recomendo usar algo de nível superior ao openGL ou DirectX, ou você gastará seu tempo desenhando coisas na tela em vez de criar um jogo real. E vale a pena conferir a HGE.

http://hge.relishgames.com/

Zaky German
fonte
0

Estou na mesma posição em que você está, tendo começado a trabalhar no desenvolvimento de jogos (na plataforma do iPhone) há alguns meses. Vindo de um background C, eu realmente sugiro que você use um framework (Particularmente Cocos2d).

As vantagens de uma estrutura são mais do que discutidas neste post - mas principalmente ele lida com a maior parte do processamento de baixo nível com o OpenGL e fornece métodos para lidar com o que você provavelmente precisará para os desenvolvedores de jogos. Eles têm uma ótima comunidade, são de código aberto e, portanto, se você precisar acessar o código principal da estrutura / modificar qualquer parte dele para se adequar às suas necessidades / ir para o nível baixo de OpenGL, se necessário - você ainda terá essa opção.

Você pode seguir a rota direta do OpenGL, mas para mim parece exagero.

Você provavelmente também desejará examinar várias bibliotecas de física diferentes que existem por aí - Google Chipmunk e Box2D para obter mais informações.

Felicidades!

Salman
fonte
1
+1 por não merecer estar em -2. Trolls em excesso neste site dando negativos sem motivo. Honestamente, eu nem entendo por que eles permitem que algo abaixo de 0 seja mostrado. É tão idiota quanto o youtube, permitindo a redução de votos.
Carter81