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?
fonte
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
fonte