Pergunta bastante simples: de que matemática todos os programadores de jogos devem ter uma compreensão firme para ter sucesso?
Não estou falando especificamente sobre renderizar matemática ou qualquer coisa nas áreas de nicho da programação de jogos, mais especificamente apenas coisas que até os programadores de jogos devem saber e, se não o fizerem, provavelmente acharão útil.
Nota: como não há uma resposta correta , esta pergunta (e suas respostas) é um wiki da comunidade.
Além disso, se você quiser equações matemáticas sofisticadas de látex, sinta-se à vontade para usar http://mathurl.com/ .
software-engineering
mathematics
Tetrad
fonte
fonte
Respostas:
Existem muitas outras formas de matemática que são úteis, mas no mínimo absoluto você precisa saber estas:
Isso é bastante básico, mas se você não os conhece, não terá chance de ser um programador e muito menos um desenvolvedor de jogos.
Objetos em um mundo de jogo são representados com vetores. Um vetor representa coisas como a posição de um objeto, a direção e a velocidade da aparência. Cálculos Vector matemática como o Dot produtos , entre vários produtos , e Vector normalização são essenciais.
Como movo meu objeto de jogo? O novato pode dizer:
"Eu sei! Eu vou fazer:"
object.position.x++
.Não não não. Você precisa usar um cálculo vetorial. O objeto precisa de um vetor de posição, direção e aceleração que você possa usar para mover o objeto. Se você faz o que é novato, fica preso em uma bagunça insustentável e como faz com que ele se mova em uma direção não alinhada com o eixo XYZ do mundo?
A principal razão pela qual os jogos usam quaternions é porque eles representam rotações quase com a mesma eficiência de espaço que os ângulos de Euler, sem sofrer o bloqueio do cardan . O bloqueio do cardan começa quando qualquer ângulo de Euler atinge uma rotação de 90 graus em torno de qualquer eixo: você perde imediatamente um grau de liberdade. Os quaternários tratam dessa questão adicionando uma quarta dimensão. Se você mantiver os ângulos de Euler, precisará restringir um eixo para nunca girar mais de ~ 89 graus.
Se você estiver programando a matemática para respostas de física em um jogo, participar de uma aula de física não seria uma má idéia.
Razões pelas quais você precisará conhecer as equações da física:
Se você usa um mecanismo de física (ou um mecanismo de jogo que possui o mecanismo de física embutido), pode se dar bem com pouco conhecimento sobre física. Ainda assim, é muito bom saber quando você precisa sujar as mãos porque o mecanismo de física não está funcionando adequadamente.
fonte
Sonho com o dia em que o desenvolvimento de jogos é tão impulsionado por dados quanto a produção artística. Eu não vejo isso em nenhum lugar no horizonte, por enquanto, saber um pouco de matemática parece ser uma necessidade.
A matemática é como técnica, quanto mais, melhor, desde que você possa aplicá-la.
Aqui está a ordem de importância que eu vejo.
Eu poderia continuar. Quanto mais você souber, melhor, mas aprender um monte de matemática não significa que você fará um ótimo jogo, mas pode ajudar.
fonte
Muito básico é o teorema de Pitágoras. Também conhecida como fórmula de distância.
onde
a
eb
são as arestas de um triângulo retângulo ec
é a hipotenusa. Isso significa que, para encontrar o comprimento de um vetor, faça o seguinte:Outra nota de interesse é que, se você estiver apenas comparando distâncias, não precisará usar a raiz quadrada (que pode ser relativamente cara). É por isso que a maioria das estruturas possui uma função "distância ao quadrado" ou "comprimento ao quadrado" para seus vetores.
fonte
sqrt(V dot V)
é o seu comprimento. Assim, a distância entre dois pontos é:sqrt((A-B) dot (A-B))
Mesmo se você não é o cara dos gráficos, vai usar vetores e matemática de vetores 80% do tempo. São as cebolas do nosso divertido bolonhesa.
fonte
Um aperto firme de
+
,-
,*
, e/
. Sem eles, você está completamente ferrado.fonte
Sim, a programação de jogos tende a ser bastante intensiva em matemática. O que você precisa de matemática depende do que você está trabalhando. A aritmética básica é uma obrigação, é claro, exatamente como em toda a programação. Além disso:
A geometria é vital para qualquer trabalho gráfico. Se você deseja exibir itens na tela, precisa entender os sistemas de coordenadas. E se você quiser movê-los em qualquer direção, exceto nas direções cardinais, ficará completamente perdido sem uma compreensão sólida de senos, cossenos e vetores (trigonometria básica). E se você precisa trabalhar em 3D, os requisitos de geometria e trigonometria ficam muito mais complicados.
Se você deseja modelar qualquer tipo de física remotamente realista, precisa de cálculo para isso. (Foi o que levou Newton a inventar o cálculo, afinal).
Qualquer tipo de cálculo de probabilidade requer conhecimento de estatística e teoria das probabilidades, a fim de obter resultados sãos sem quantidades insanas de tentativa e erro.
Provavelmente há muito mais, mas é isso que me vem à cabeça.
fonte
s=u.t + a.t.t/2
. Você precisa de trig para obter a velocidade inicial (u).No mínimo, você precisará.
Você também deseja ter pelo menos um conhecimento prático das operações de vetor e saber o que é uma matriz e para que ela pode ser usada, embora os detalhes não sejam estritamente necessários.
Se você quiser entrar na programação gráfica, precisará de muito mais conhecimentos de matemática, mas a programação geral de jogabilidade não precisa ser tão intensiva em matemática.
fonte
Sistemas de numeração binária e hexadecimal e como convertê-los para / de números decimais.
Embora você geralmente não precise trabalhar com números binários brutos , eles são freqüentemente usados para variáveis Flag, que exigem lógica booleana e troca de bits.
Hex não é tão importante (a menos que você queira processar 0xDEADBEEF ), mas, no mínimo, você gostaria de reconhecer quando eles estão sendo usados e por quê.
fonte
Boolean
e sebinary
confundiu. Não tenho certeza se eles são absolutamente necessários para a programação de jogos.Nenhuma menção à matemática básica da programação de computadores? Teoria dos grafos, teoria dos números, teoria dos conjuntos e matemática concreta, geralmente todos agrupados em turmas dolorosas e pouco ensinadas, chamadas "matemática discreta" na universidade.
Os "truques estúpidos" economizam todo tipo de tempo do programa (e geralmente são equivalentes a alguns truques de string e truques), tipos de gráficos e travessias são usados em todo o lugar (mesmo que você esteja apenas escolhendo contêineres STL), e a complexidade algorítmica é essencial para a otimização, à medida que as linguagens atingem níveis mais altos.
fonte
Eu acho que a matriz de pagamento é uma ferramenta essencial. Os jogos costumam ser mais divertidos quando se aproximam de um saldo interessante de fair play de soma zero, e as matrizes de pagamento ajudam a quantificar isso em casos complicados. Acho que este artigo da wikipedia é tão bom quanto qualquer outro, e apresenta o conceito básico necessário: http://en.wikipedia.org/wiki/Normal-form_game
fonte
Entenda o produto escalar: se dois vetores têm aproximadamente a mesma direção (teta <90 graus), o produto escalar é positivo, ou negativo. Pode ser usado para testar sempre que o jogador está à vista (assumindo que o FOV é de 90 graus).
E generalize seu jogo 2D para dimensões mais altas. (use cálculos vetoriais)
Se você pode implementar um mecanismo 3D sozinho, está pronto.
fonte
Depende do que você está fazendo .
Todos os programadores de jogos devem conhecer pelo menos a álgebra do ensino médio. Que significa:
Seus programadores gráficos devem saber:
Seus programadores de física devem saber:
fonte
Além de senos e cossenos (que 50-75% dos programadores que conheci não sabiam usar), aprenda a função mágica do arco-bronzeado e como ela pode ser usada para obter o ângulo de qualquer vetor.
fonte
atan2
pois isso cuida sozinho da manipulação do quadrante.Estou surpreso que ninguém tenha mencionado Quaternions . Não tenho muita experiência com mecanismos diferentes, mas pelo menos o JME o usa em todos os lugares e tive a impressão de que eles são um conceito muito importante.
fonte
Fazer jogos é trazer vida "real" à realidade virtual. É melhor saber mais sobre o mundo real / universo do que menos :) .. A matemática é apenas uma ferramenta. E se você está fazendo um plano, também precisa dedicar tempo para estudar os planos.
EDITADO: Eu vi alguns mal-entendidos :) .. Eu acho que esse conjunto de aquisições matemáticas que você precisa governar depende de coisas concretas que você deseja descrever. Ninguém sabe tudo. E melhor maneira de fazê-lo é. Não para aprender tudo no começo, mas aprenda pouco, use, aprenda, use etc. Então você pode fazer isso durante o desenvolvimento, se tiver um bom plano.
fonte
Resposta simples: MUITO!
Resposta detalhada:
Álgebra Aritmética, Elementar e Linear, na maioria dos casos Trig, se você estiver fazendo um jogo em 3D, DEFINITIVAMENTE Cálculo e Física (Física requer Cálculo)!
fonte