Pergunta

Eu estou brincando com desenvolvimento de jogos 2D usando C ++ e DirectX no meu tempo livre. Eu estou achando que a abordagem de modelagem de domínio problema enterprisey não ajuda tanto quanto eu gostaria;)

Estou mais ou menos à procura de um "melhores práticas" equivalentes ao projeto básico motor de jogo. Como entidades devem interagir uns com os outros, como animações e sons devem ser representado em um mundo ideal, e assim por diante.

Alguém tem bons recursos eles podem recomendar?

Foi útil?

Solução

Gamedev.net geralmente é onde eu me volto para ter uma idéia do que as outras pessoas na comunidade de desenvolvimento de jogos são fazendo.

Dito isso, eu tenho medo que você vai achar que a idéia de "melhores práticas" no desenvolvimento de jogos é mais volátil do que a maioria. Jogos tendem a ser essas aplicações especializadas que é quase impossível dar qualquer "se encaixa um tamanho todos" respostas. O que funciona muito bem para Tetris vai ser inútil com asteróides, e um modelo que funciona perfeitamente para Halo é provável que falhar miseravelmente para Mario.

Você também vai descobrir rapidamente que não há tal coisa como um "padrão da indústria" para a textura, malha, nível, som ou formatos de animação. Todo mundo só rola seus próprios ou usa o que estiver conveniente para a plataforma. Você ocasionalmente ver coisas como COLLADA , que é bom, mas ainda é apenas um formato intermediário projetado para tornar a escrita mais fácil exportadores .

Se você é novo no desenvolvimento do jogo, o meu conselho seria este: Não se mate sobre sua estrutura de código em sua primeira vez. Experimente um jogo simples, como os asteróides, e apenas cortar fora até que ele funciona, não importa como "feio" o código é. Use formatos simples que você está familiarizado com sem se preocupar com o quão bem eles vão realizar-se em projetos maiores. Não se preocupe com plugins, peles, editores, ou qualquer um que outro fluff. Apenas fazê-lo funcionar! Então, quando você é feito com aquele primeiro, todo o jogo importante, escolher outro, e desta vez limpo até um ou dois aspectos do seu código (mas não exagere!) A partir daí, iterate!

Eu prometo a você que isso vai te mais rápido do que qualquer quantidade de picar ao redor on-line para o "caminho certo" jamais poderia (isto vindo de alguém que fez um monte de picar).

E um último pensamento para você: Se você se sentir de trabalho mais confortável em um espaço mais bem definida, dê uma olhada XNA ou uma biblioteca similar. Eles vão pré-definir alguns dos "melhores" formatos para usar e dar-lhe ferramentas para trabalhar com eles, o que tira um pouco da adivinhação inicial fora.

Boa sorte, e acima de tudo lembre-se: Jogos (e seu desenvolvimento) são suposto ser divertido! Não fique muito preso nas coisas pequenas!

Outras dicas

Faça um jogo. Depois que estiver pronto, fazer outra. Olhe o que você gostou eo que não gostou e, em seguida, fazer outra.

Falando sério, você pode ler todas as "melhores práticas" guias para design de jogo que você gostaria, mas no final tudo se resume a experiência. A única maneira de obter experiência é sentar e escrever um jogo. Após fazer isso algumas vezes você vai ter um muito melhor idéia de como escrever um jogo.

Praticamente qualquer livro que tem Andre Lamothe como um dos contribuidores.

GameDev tem toneladas de artigos também.

Eu não posso concordar mais com você: aplicações empresariais não prepará-lo para jogos de programação

.

Eu criei alguns jogos de pequena escala em python, java, html / php e perl. A estrutura básica de um jogo, como você provavelmente sabe, é:

Main Loop:
handleInput ()
updateGameLogic ()
renderImages ()

Agora, isso é tudo muito bem para uma única tela, jogos single threaded, como qualquer coisa, desde os 70 ou 80 anos. Mas eu não encontrar esta estrutura uma particularmente forte ajuste para jogos multi-tela (como RPGs) ou algo mais exótico. Não passe muito bem. O código fica bastante badalado como você precisa lidar com uma variedade de entradas. Ele não escala bem.

No entanto, antes de eu bater esta metáfora muito, por favor note que este é um excelente lugar para começar. Eu iria mais longe ao recomendar aprendendo Python / Pygame e começar a construir jogos com essa ferramenta em vez de C ++, o que complica o processo de concepção e implementação. Quando você protótipo em python, você vai ver a forma take jogo muito mais rápido e correr em questões de linguagem independente.

Para mim, os mais difíceis, a maioria dos aspectos que consomem tempo de programação de jogos são os ativos gráficos e som. Enquanto eu sou um pouco de um lerdo áudio e músico amador, criando música crível e adequado e SFX é um projeto tudo por conta própria. Eu não tenho nenhum talento gráfico, então eu devo confiar em modificar imagens exisitng ou usando os livremente disponíveis. Felizmente, existem fontes gratis amplamente disponíveis que podem utilizados para jogos (e pouco mais, uma vez que são quase universalmente ruim).

Finalmente, está lá nada como código aberto para ver como outros projectos de lidar com isso. Batalha de Westnoth é um maduro, jogo de tamanho médio. Você pode querer ver o que está acontecendo lá. Mais uma vez, jogos em python freqüentemente fazem seu código fonte disponível, então você pode olhar através de centenas de projetos lá. Você poderia também descompilar Atari 2600 ROMs, mas isso não vai dizer muito sobre a programação de hoje. Os velhos VCS foi um dispositivo dedicado que lidou com seus aplicativos de uma forma muito dependente do sistema. :-D

Finalmente, eu também gosto de Andre LaMothe. Eu tenho o seu olde livro de 1993 que é um milhão de páginas de espessura. Embora ainda seja uma boa referência sobre algumas idéias do jogo genéricos, um lote de que é evitado pela disponibilidade de bibliotecas disponíveis gratuitos e estruturas que não existiam naquela época.

Boa sorte com seu projeto.

Uma vez que ainda não foi mencionado, por que não começar por olhar para um motor existente que foi lançado para a comunidade? Desde que você está falando 2D, eu iria caminho de volta e recomendar algo como Abuso . Sim, é antiga e a maior parte das coisas interessantes estão em Lisp - mas o jogo ficou muito popular por um tempo, o que significa que eles estavam fazendo algo certo.

Quando isso acontece, eu acho que o fato de que grande parte do jogo original em Lisp é uma lição muito útil. Escolha o mais robusto idioma / ferramenta e não se preocupar com o desempenho. Você sempre pode otimizar as partes lentas em C mais tarde.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top