Por onde começo se eu quiser escrever um jogo em C ++ 2d? [fechadas]


17

Sou desenvolvedor de web C # e quero expandir meu conjunto de habilidades e me divertir enquanto faço isso. Conheço algumas noções básicas de C ++ e gostaria de escrever um mecanismo de jogo / jogo em 2D simples para mim, usando C ++. De que outras bibliotecas ou SDKs eu preciso e onde encontraria alguns tutoriais e recursos informativos para avançar?

Eu já procurei no XNA com C #. Existem muitos recursos para isso, mas eu prefiro usar produtos que não sejam da Microsoft. O objetivo disso é se divertir um pouco enquanto se torna um programador melhor arredondado.

Observe que não estou pedindo o melhor lugar para começar. Só estou pedindo um lugar para começar.

Obrigado por qualquer ajuda!

Respostas:


27

O ponto de partida padrão (na minha experiência) para o desenvolvedor de jogos em C ++ é o SDL . Você precisa sujar as mãos um pouco mais com isso do que com o XNA.

Se você quiser tentar algo um pouco mais alto, sugiro o SFML . Ele lida com algumas das tarefas mais domésticas para você, mas você ainda precisa ficar de olho no uso de memória, etc.


1
Vou dar uma olhada neles. Meu maior problema com o XNA é que era tão direto que eu não sentia que estava realmente aprendendo coisas de nível inferior que estou interessado em explorar.
quakkels

6
O SFML tem um design bonito, mas ainda é um pouco complicado e está em processo de uma grande reformulação da API - eu não o usaria para jogos mais complexos até que o próximo lançamento seja bem polido.
Bitgarden

Se você quer algo um pouco mais desafiador que o SDL, tente o ClanLib . Como o XNA, ele suporta aceleração de hardware, mas também funciona no Linux e também em 2D.
21711 ChrisC

2
Você também pode ir direto para a garganta - OpenGL é o meu favorito (você pode envolvê-lo com SDL ou SFML)
ultifinitus

9

Eu sugeriria usar SDL . Já faz muito tempo que a documentação e o suporte são muito bons, e é uma das maneiras mais fáceis de obter uma superfície de desenho na tela. Isso lhe dará a prática de escrever aulas em C ++ (já que você provavelmente desejará agrupar muito as chamadas de função SDL C) e também fornecerá alguma experiência usando ponteiros e referências e fazendo um gerenciamento básico de memória. Gerenciar sua própria memória é uma das principais diferenças entre C ++ e C #.


9

Pessoalmente, eu escolheria o Allegro 5 pelos seguintes motivos:

  1. Possui um sistema de compilação baseado no CMake. Isso torna muito mais fácil do que a maioria dos sistemas de construção para trabalhar em várias plataformas. Parece uma coisa menor, mas é muito importante no geral. Isso torna a construção da biblioteca muito mais simples.

  2. SFML ainda está em fluxo significativo. 2.0 é uma mudança bastante substancial. Considerando que Allegro já passou por uma mudança significativa com a versão 5, e agora é tudo sobre estabilidade.

  3. Abrange a modularidade de uma maneira diferente da SFML. Com o SFML, você solicita componentes específicos, mas obtém todos eles. Se você solicitar o componente gráfico, obterá todo o componente gráfico. Com o Allegro 5, você sempre obtém o componente gráfico. Mas se você não quiser usar os carregadores de bitmap do Allegro, não precisará; você pode usar o seu próprio.

  4. Tem uma documentação muito boa. SFML usa documentação no estilo Doxygen, mas mesmo isso é bastante espartano. Enquanto o Allegro 5 é mais abrangente, com funções agrupadas com base em sistemas específicos que eles cobrem. Não é perfeito, mas é melhor no geral.

  5. Eles são inteligentes o suficiente para não tentar fazer rosqueamento. Com o C ++ 11 / Boost.Threads amplamente disponível ou ao virar da esquina, o uso de outro wrapper de encadeamento pode ser mais do que problemático: pode ser perigoso fazer o código funcionar corretamente.


Por que você prefere / sugere Allegro sobre SDL ou SFML?
Quazi Irfan

@iamcreasy: Se você insiste.
Nicol Bolas

Você ainda não mencionam SDL ...
Engenheiro

@NickWiggill: o SDL possui threads e sistemas de compilação específicos da plataforma. Não senti a necessidade de chamar por algo específico.
Nicol Bolas

@ nicol-bolas você não mencionou os contras de Allegro. Como uma quantidade muito baixa de comparação de tutoriais.
Quazi Irfan

4

Eu acho que um lugar fantástico para começar é o LazyFoo . Isso o colocará em funcionamento com SDL mais rapidamente do que em qualquer outro lugar que eu já vi. Eu recomendo entrar rapidamente no OpenGL (assim que você aguentar), porque você terá muito mais retorno do seu investimento em programação - com a aceleração de hardware. Se você seguir esse caminho, recomendo este guia .


2

Eu recomendaria SFML se você estiver usando c ++. Você obterá algo na tela rapidamente e usá-lo com o código do jogo em c ++ é simples.


2
  • SFML - o bebê do grupo, mas potencialmente mais fácil de usar do que li.
  • SDL - o caminho do meio. Biblioteca muito madura, sensata, geralmente concisa, se um pouco misteriosa de tempos em tempos, e uma escolha muito comum. A configuração dos formatos de exibição pode ser um bastardo, usei os tutoriais do lazyfoo para ajudar nessa frente.
  • Allegro - Geriátrico, existe desde os dias Atari ST. Por esse motivo, grande parte do código de renderização 2D (que eu acho que é apenas no Allegro 4) é bastante rápido, já que a lógica foi construída para sistemas com especificações muito mais baixas. Pessoalmente, não acho muito intuitivo, mesmo considerando a documentação.

Considerando que o OpenGL acelera o lado 2D das coisas hoje em dia, não é tão importante ter acesso aos renderizadores de software rápidos que o Allegro e o SDL possuem (ou tinham em versões anteriores). No entanto, quando escolho uma biblioteca, concentro-me na maturidade do projeto, na base de usuários e nos documentos mais do que na velocidade (desde que a velocidade seja razoável), e eu diria que SDL e Allegro vencem nessas frentes. A SDL também lançou títulos AAA triplos, como Civ: Call to Power.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.