Quais são os conceitos específicos de matemática, física, IA e conceitos gerais que um programador deve conhecer para desenvolver um mecanismo de jogo? [fechadas]

9

Como programador de aplicativos centrados na Web e em banco de dados, tenho conhecimento em estruturas de dados, como listas, árvores, gráficos, etc. Sinceramente, uso muito pouco desses algoritmos de estrutura de dados em minha codificação, exceto para classificar coisas em matrizes simples, pois trabalhou quase inteiramente com estruturas orientadas para o cliente, nas quais toda a funcionalidade principal estava embutida. Eu sei C, PHP, Java, HTML, PL / SQL e MySQL. Atualmente, estou aprendendo Python.

Eu quero começar com o desenvolvimento de jogos. Eu já vi outras perguntas sobre sugestões, dicas e abordagens para o desenvolvimento de jogos para iniciantes. Eu entendo esses pontos e sou claro com as respostas. Alguns dias após a publicação, li o artigo Write Games, Not Engines e percebi que eu deveria implementar um jogo antes de criar um mecanismo de jogo. Ainda tenho perguntas.

Meu objetivo é

  • Melhorar minhas habilidades de programação de nível básico, incluindo o uso de algoritmos de estrutura de dados, conceitos de matemática e física.
  • Implemente um bom mecanismo de jogo, para me entregar à codificação em nível de núcleo.
  • Para abrir meu caminho no campo de pesquisa de IA.

Quais são os conceitos específicos de matemática, física, IA e conceitos gerais que um programador deve conhecer para desenvolver um mecanismo de jogo?

droidsites
fonte

Respostas:

11

Estruturas de dados: certamente é uma pergunta válida. No entanto, enquanto algumas estruturas de dados são úteis para qualquer tipo de jogo (como as que você já mencionou, listas, árvores ...), há outras que são muito específicas. Por exemplo, o Octrees pode ser muito útil na programação 3D, mas em um ambiente 2D puro, você provavelmente não precisará deles.

Algoritmos : A mesma regra geral se aplica. Por exemplo, em um ambiente 2D puro, a detecção de colisão funciona de maneira muito diferente do que em 3D.

Áreas Matemáticas Importantes: A área mais importante para um desenvolvedor de motores se familiarizar é com a Álgebra Linear e os Tópicos de Álgebra mais avançados (Quaternions). Muito simples, na verdade, se você se sente confortável com a Álgebra Linear (e eu quero dizer além da simples multiplicação de matrizes), você está começando bem.

Next ist Geometry, que se conecta bem à Álgebra Linear no Engine Dev de qualquer maneira, e provavelmente não precisa ser mencionado.

Além disso, nunca é demais ter uma sólida compreensão do Cálculo Básico. Isso é útil ao lidar com o mecanismo de física ou tópicos de sombreamento mais avançados.

Outros tópicos de interesse devem ser: Combinatória, Estatística

Física: não é obrigatório, se você pretende fazer jogos simples. Não dói, mas você vai se dar bem com a física do ensino médio neste caso.

Se você está pensando em escrever um mecanismo de física ou implementar uma arquitetura existente, então sim, é obrigatório. Mas não tema, existem muitos livros de física escritos especificamente para desenvolvedores de jogos. Basta ter em mente, leia isso ANTES de começar a codificar um jogo com a física. Se o seu jogo tiver física, esses mecanismos se vincularão profundamente à sua arquitetura principal.

AI: Para ser totalmente honesto, se a IA for seu principal interesse, eu não me incomodaria em escrever um mecanismo inteiro. A IA é muito mais divertida quando você tem uma arquitetura existente para brincar. Escrever um mecanismo será uma dor e levará um bom tempo até que você possa implementar algoritmos de IA divertidos.

Que tipo de jogo você deseja desenvolver? Talvez eu possa elaborar mais sobre esses pontos com essas informações.

Michael Kissner
fonte
Obrigado pela sua resposta elaborada. Como resposta à sua pergunta ... bem, neste momento, eu não tenho nenhuma idéia no meu cérebro, mas quero desenvolver algum mecanismo de jogo em 3D. Mas pense melhor para começar com um jogo 2D e conhecer o meio ambiente. Antes de tudo isso, eu deveria jogar alguns jogos para conhecer a aparência dos jogos (como nunca joguei jogos de vídeo :-)). Para que seja fácil para mim entender a terminologia dos livros e outras coisas. Achei o abaixo muito útil,
droidsites
desculpe, perdi o link no meu comentário anterior: gamedev.stackexchange.com/questions/8502/…
droidsites
No passado, eu recomendaria que você iniciasse primeiro com jogos 2D, se quiser desenvolver jogos em 3D. No entanto, com o levante de arquiteturas como o XNA, acredito que é mais divertido mergulhar diretamente no 3D. Você já deu uma olhada no C # / XNA? Não deve ser um problema dado o seu fundo de programação
Michael Kissner
Não, eu não tinha verificado. Sim ... não é problema usar C #. Mas eu estou muito interessado em espécie python de coisa :-)
droidsites
Se você está interessado em Python e está mais interessado em construir um jogo do que em construir a tecnologia para a construção de um jogo, confira o Panda3D ou o Blender Game Engine.
Sean Middleditch 21/09
1

Embora possa ser válido perguntar quais estruturas de dados são mais usadas no desenvolvimento de jogos, é muito mais válido perguntar quais estruturas de dados são usadas para problemas específicos. Posso afirmar facilmente que as tabelas de hash são super comuns nos jogos, mas isso não informa nada de útil em termos de quando e onde usar (e não usar!) Uma tabela de hash no seu próprio código. :)

Em termos de matemática, você precisa ter uma compreensão muito forte da álgebra linear (vetores, matrizes, resolução de sistemas lineares etc.), uma compreensão muito forte da trigonometria e pelo menos uma compreensão básica do cálculo (derivadas simples e integração) . Qualquer curso introdutório de álgebra linear em nível de faculdade deve colocá-lo no caminho certo, se não lhe ensinar tudo o que você precisa saber para começar a trabalhar com os princípios comuns de gráficos 3D. Também vinculo um livro abaixo do qual você pode achar bastante útil.

Para a física, você vai dar uma volta. A física pode ser dividida em duas categorias diferentes: detecção de colisões e resposta a colisões. Você absolutamente deve conhecer a matemática por trás da detecção de colisão, pois essa matemática é mais ou menos idêntica ao que você precisa para fazer gráficos (especialmente para a construção de árvores e mapas necessários para oclusão), e você usará esse material para muito da sua lógica de jogo também.

A resposta à colisão pode variar de níveis "simples" a ridículos de complexidade, e mesmo as coisas simples podem não ser intuitivas a princípio. Eu recomendo muito, altamente, que você deixe essas coisas para uma biblioteca existente, como Bullet, Havok, PhysX ou assim por diante (ou Box2D, se você estiver trabalhando em jogabilidade 2D) até e a menos que esteja confortável com sua matemática e algoritmo existentes conhecimento e decida que deseja aprender como os mecanismos de física funcionam. Eu recomendaria que você construa um mecanismo de física 2D muito simples como sua primeira tentativa. Os mecanismos de física 3D são bestas incrivelmente complexas e são (sem dúvida) a parte mais complicada e difícil da programação de jogos, e é por isso que os mecanismos de física são a tecnologia de terceiros mais comumente licenciada usada nos jogos. Você simplesmente não vê muitos jogos que não são • usar o Havok ou o PhysX no mundo profissional, apesar de quantos jogos possuam mecanismos gráficos caseiros do zero e código do mecanismo principal. Mesmo empresas que não fazem nada além de criar mecanismos de jogos geralmente licenciam um mecanismo de física, por exemplo, a Unreal apenas usa o PhysX em vez de incluir seu próprio mecanismo de física.

Eu recomendaria os seguintes livros para você começar. O primeiro é um livro de nível introdutório sobre a matemática básica que você precisa conhecer como programador de jogos em 3D:

http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869

O segundo é um livro detectado sobre algoritmos de detecção de colisão (não resposta de colisão!), Que ajudará na codificação gráfica e na física:

http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323

Sean Middleditch
fonte