Pergunta

Estou procurando boas referências para aprender a modelar a física 2D em jogos. Eu sou não Procurando uma biblioteca para fazer isso por mim - quero pensar e aprender, não usar cegamente o trabalho de outra pessoa.

Eu fiz um bom pouco de Google e, embora encontrei alguns tutoriais sobre Gamedev, etc., acho seus tutoriais difíceis de entender porque eles são escritos mal, ou assumem um nível de entendimento matemático que eu não ainda possui.

Para detalhes específicos - estou procurando como modelar um jogo 2D de cima para baixo, como um jogo de combate de tanques - e quero modelar com precisão (entre outras coisas) aceleração e velocidade, acúmulo de calor de 'componentes', colisões entre colisões entre modelos e limites de nível e armas do tipo míssil.

Sites, livros recomendados, blogs, exemplos de código - todos são bem -vindos se ajudarem a entender. Estou pensando em usar C# e F# para construir meu jogo, então os exemplos de código em qualquer um desses idiomas seriam ótimos - mas não deixe que a linguagem o impeça de postar um bom link. =)

Editar: Não quero dizer que não entendo matemática - é mais o caso que não sei o que preciso saber para entender os sistemas envolvidos e realmente não sei como encontrar os recursos que vão Ensine -me de uma maneira compreensível.

Foi útil?

Solução

Aqui estão alguns recursos que reuni há alguns anos. De nota é a integração do Verlet. Também estou incluindo links para alguns mecanismos de física de código aberto e comercial que encontrei na época. Há um artigo do StackOverflow sobre este assunto aqui: 2D Game Physics?

Métodos de física

Livros

  • "Desenvolvimento de motores de física do jogo", Ian Millington - Eu possuo este livro e o recomendo. O livro constrói um mecanismo de física em C ++ do zero. O autor começa com a física básica de partículas e, em seguida, adiciona "leis do movimento", restrições, física de corpo rígido e assim por diante. Ele inclui o código -fonte bem documentado.

Motores de física

Outras dicas

Falando por experiência própria, a implementação de um mecanismo de física 2D é bastante difícil. Detalhei as várias etapas que tomei ao criar meu mecanismo.

  1. Detecção de colisão. A detecção de colisão pode ser um problema difícil, mesmo quando você não está lidando com mundos 3D ou simulações em rede. Para a física 2D, você definitivamente deseja usar o Teorema do eixo separando. Depois de implementar o SAT, você está no meio do caminho fazendo a parte da dinâmica do seu motor.

  2. Cinemática/dinâmica. Chris Hecker escreveu um excelente recurso online que me levou a uma resposta de colisão passo a passo.

  3. Todo o resto. Depois de concluir a detecção/resposta de colisão, é uma questão de implementar tudo o que você deseja no mecanismo. Isso pode incluir atrito, forças de contato, articulações, juntamente com o que mais você puder pensar.

Divirta-se! Criar sua própria simulação de física é uma experiência incrivelmente gratificante.

Este é um ótimo tutorial que demonstra conceitos de física 2D usando flash e não é específico para piscar.http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

Mesmo se você quiser aprender tudo de baixo para cima, uma biblioteca de física de código aberto que é bem codificado e documentado contém muito mais informações do que um livro. Como faço para lidar com a situação x ... Encontrar em arquivos pode ser mais rápido que um índice de papel.

Resposta original:

O que, sem menção a Box2d? É um projeto de código aberto de um funcionário da Blizzard, tem uma boa comunidade e funciona muito bem.

Na minha experiência (breve) com o Box2D, integrando -o ao Torque Game Builder, achei a API limpa para o uso, a documentação era clara, ela apoiava todos os objetos de física que eu esperava (as juntas em particular eram um requisito), e a comunidade parecia amigável e ativo (em algum momento do início de 2010).

A julgar pelos pôsteres do fórum, também parecia que os gerentes eram receptivos a contribuições de origem (que não carregavam bagagem de licença).

O solucionador baseado em ilha parecia bastante rápido, como eu esperava de sua reputação, não que fiz algum teste de desempenho importante.

F# tem um recurso chamado Unidades de medida que faz uma análise dimensional para você, fornecendo erros se você errar. Por exemplo, se você disser:

let distance : float<meters> = gravity * 3.0<seconds>

Isso produziria um erro de compilação, pois a gravidade é <metros/segundos^2> e não <meters>. Além disso, como F# é apenas .NET, você pode escrever seu código de matemática/física em uma biblioteca de classes e referenciá -la no seu C#.

Eu recomendaria que você confira estas postagens para mais informações:

Este é um ótimo recurso para escrever seu primeiro motor. Está em 3D, mas é muito fácil converter para 2D. Conheço pelo menos uma grande empresa que se seguiu a este tutorial para o motor interno, e pessoalmente segui seus passos para o meu próprio motor. Ele explica todos os conceitos básicos de física na física baseada na primavera/impulso e mostra como escrever seu próprio intergroter.

O diário F#.NET publicou dois artigos sobre isso:

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