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?
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.
fonte
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.
fonte
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.
fonte
Se você está apenas começando, provavelmente é melhor usar um mecanismo ou estrutura 2D existente, como o SFML .
fonte
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.
fonte
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/
fonte
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!
fonte