Une question assez simple: à quels calculs tous les programmeurs de jeux doivent-ils avoir une solide compréhension pour réussir?
Je ne parle pas spécifiquement du calcul mathématique ou de quoi que ce soit dans les créneaux de la programmation de jeux, plus précisément de choses que même les programmeurs de jeux devraient connaître, et s'ils ne le font pas, ils le trouveront probablement utile.
Remarque: comme il n’existe pas une seule bonne réponse , cette question (et ses réponses) est un wiki de communauté.
De plus, si vous souhaitez utiliser des équations mathématiques en latex sophistiquées, n'hésitez pas à utiliser http://mathurl.com/ .
Réponses:
Il existe de nombreuses autres formes de mathématiques utiles, mais vous devez au minimum les connaître:
Celles-ci sont assez basiques, mais si vous ne les connaissez pas, vous n’aurez aucune chance d’être un programmeur, encore moins un développeur de jeux.
Les objets d'un monde de jeu sont représentés par des vecteurs. Un vecteur représente des éléments tels que la position d'un objet, sa direction et sa vitesse. Calculs mathématiques Vector tels que le produit Dot , Cross produit et normalisation Vector sont essentiels.
Comment déplacer mon objet de jeu? Le novice pourrait dire:
"Je sais! Je vais juste faire:"
object.position.x++
.Non non Non. Vous devez utiliser un calcul vectoriel. L'objet a besoin d'un vecteur de position, de direction et d'accélération que vous pouvez utiliser pour le déplacer. Si vous faites la chose novice, vous allez être coincé dans un gâchis incontrôlable, et comment le faites-vous bouger dans une direction non alignée avec l'axe XYZ du monde?
La principale raison pour laquelle les jeux utilisent les quaternions est qu’ils représentent des rotations presque aussi économe en espace que les angles d’Euler, sans souffrir du blocage de Gimbal . Le blocage du cardan commence quand un angle d'Euler atteint une rotation de 90 degrés autour de n'importe quel axe: vous perdez immédiatement un degré de liberté. Quaternions résout ce problème en ajoutant une quatrième dimension. Si vous vous en tenez aux angles d'Euler, vous devrez limiter un axe pour ne jamais faire plus de 89 ° de rotation.
Si vous programmez les maths pour les réponses de physique dans un jeu, alors suivre un cours de physique n'aurait pas été une mauvaise idée.
Raisons pour lesquelles vous aurez besoin de connaître les équations de la physique:
Si vous utilisez un moteur physique (ou un moteur de jeu dans lequel le moteur physique est incorporé), vous pouvez en savoir très peu sur la physique. Néanmoins, il est bon de savoir quand vous devez vous salir les mains car le moteur physique ne fonctionne pas correctement.
la source
Je rêve du jour où le développement de jeux est aussi basé sur les données que la production artistique. Je ne le vois nulle part à l'horizon, donc pour le moment, savoir que quelques mathématiques semblent être une nécessité.
Les maths sont comme la technique, plus il y en a, mieux on peut l'appliquer.
Voici l'ordre d'importance que je vois.
Je pourrais continuer. Plus vous en saurez, mieux ce sera, mais apprendre un tas de mathématiques ne signifie pas que vous ferez un bon jeu, mais cela peut vous aider.
la source
Le théorème de Pythagore est très fondamental. Aussi connu sous le nom de formule de distance.
où
a
etb
sont les arêtes d'un triangle rectangle etc
est l'hypoténuse. Cela signifie que pour trouver la longueur d'un vecteur, procédez comme suit:Une autre remarque intéressante est que, si vous ne faites que comparer les distances, vous n’avez pas à prendre la racine carrée (qui peut être relativement coûteuse). C'est pourquoi la plupart des frameworks ont une fonction "distance au carré" ou "longueur au carré" pour leurs vecteurs.
la source
sqrt(V dot V)
est sa longueur. Donc, la distance entre deux points est la suivante:sqrt((A-B) dot (A-B))
Même si vous n'êtes pas le type graphique, vous utiliserez des vecteurs et des calculs vectoriels 80% du temps. Ils sont les oignons de notre amusant bolognaise.
la source
La prise ferme
+
,-
,*
et/
. Sans eux, vous êtes complètement foutus.la source
Oui, la programmation de jeux a tendance à être plutôt mathématique. Ce dont tu as besoin dépend de ce sur quoi tu travailles. L'arithmétique de base est un must, bien sûr, comme dans toute programmation. Au-delà de ça:
La géométrie est essentielle à tout travail graphique. Si vous souhaitez afficher des éléments à l'écran, vous devez comprendre les systèmes de coordonnées. Et si vous voulez les déplacer ailleurs que dans les directions cardinales, vous serez complètement perdus sans une compréhension solide des sinus, des cosinus et des vecteurs (trig de base). Et si vous devez travailler en 3D, les exigences en matière de géométrie et de trigonométrie deviennent beaucoup plus compliquées.
Si vous voulez modéliser une quelconque physique à distance réaliste, vous avez besoin de calcul pour cela. (C'est ce qui a poussé Newton à inventer le calcul, après tout.)
Tout type de calcul de probabilité nécessite la connaissance des statistiques et de la théorie des probabilités afin d’obtenir des résultats sains sans trop d’essais en essais et erreurs.
Il y en a probablement beaucoup plus, mais c'est ce qui me vient à l'esprit.
la source
s=u.t + a.t.t/2
. Vous avez cependant besoin de trig pour obtenir la vitesse initiale (u).À tout le moins, vous aurez besoin.
Vous voudrez également au moins avoir une connaissance pratique des opérations vectorielles et savoir ce qu'est une matrice et à quoi elle peut être utilisée, bien que les détails ne soient pas strictement nécessaires.
Si vous souhaitez vous lancer dans la programmation graphique, vous aurez besoin de beaucoup plus de connaissances en mathématiques, mais la programmation de jeu en général ne doit pas nécessairement être aussi intensive en mathématiques.
la source
Numérotation binaire et hexadécimale , et comment les convertir en / à partir de nombres décimaux.
Bien que vous n’ayez généralement pas besoin de travailler avec des nombres binaires bruts , ils sont fréquemment utilisés pour les variables Flag, qui nécessitent une logique booléenne et un transfert de bits.
Hex n'est pas tout à fait aussi important (à moins que vous ne souhaitiez traiter 0xDEADBEEF ), mais au minimum, vous voudriez reconnaître quand ils sont utilisés et pourquoi.
la source
Boolean
etbinary
mélangé. Pas sûr qu'ils soient absolument nécessaires pour la programmation de jeux.Aucune mention des mathématiques fondamentales de la programmation informatique? La théorie des graphes, la théorie des nombres, la théorie des ensembles et les mathématiques concrètes sont généralement regroupées dans une classe douloureuse et mal enseignée appelée "mathématiques discrètes" à l'université.
Les "astuces sur les bits stupides" permettent d'économiser tout type de temps de programme (et elles sont généralement équivalentes à certaines astuces sur les cordes et à définir des astuces), les types de graphes et les parcours sont utilisés partout (même si vous ne choisissez que des conteneurs STL), et la complexité algorithmique est la clé de l'optimisation à mesure que les langues atteignent des niveaux plus élevés.
la source
Je pense que la matrice de gains est un outil assez essentiel. Les jeux sont souvent plus amusants lorsqu'ils s'approchent d'un équilibre intéressant de fair-play à somme nulle, et les matrices de gains vous aident à quantifier cela dans des cas compliqués. Je suppose que cet article sur wikipedia est aussi bon que n'importe quel autre, et comprend le concept de base nécessaire: http://en.wikipedia.org/wiki/Normal-form_game
la source
Comprendre le produit scalaire: Si deux vecteurs ont à peu près la même direction (thêta <90 degrés), alors le produit scalaire est positif ou négatif. Il peut être utilisé pour tester chaque fois que le joueur est en vue (en supposant que le FOV est à 90 degrés).
Et généralisez votre jeu 2D à des dimensions plus élevées. (utilisez des calculs vectoriels)
Si vous pouvez implémenter vous-même un moteur 3D, vous êtes prêt à partir.
la source
Cela dépend de ce que vous faites .
Tous les programmeurs de jeux devraient connaître au moins l'algèbre du lycée. Cela signifie:
Vos programmeurs graphiques doivent savoir:
Vos programmeurs de physique doivent savoir:
la source
Outre les sinus et les cosinus (que 50 à 75% des programmeurs que j'ai rencontrés ne savaient pas utiliser), découvrez la fonction magique arc-bronzage et comment l'utiliser pour obtenir l'angle d'un vecteur.
la source
atan2
car cela gère le traitement du quadrant lui-même.Je suis surpris que personne n'ait mentionné les Quaternions . Je n'ai pas beaucoup d'expérience avec différents moteurs, mais au moins JME l'utilise partout et j'ai l'impression qu'ils constituent un concept assez important.
la source
Faire des jeux, c'est apporter de la "vraie" vie à la réalité virtuelle. Il vaut mieux en savoir plus sur le monde réel / l'univers que sur moins :) .. Les mathématiques ne sont qu'un outil. Et si vous établissez un plan, vous devez également prévoir du temps pour étudier.
ÉDITÉ: J'ai vu un malentendu :) .. Je pense que cet ensemble d’acquis en mathématiques que vous devez gouverner dépend de choses concrètes que vous voulez décrire. Personne ne sait tout. Et une meilleure façon de le faire est. Ne pas tout apprendre au début, mais apprendre un petit morceau, utiliser, apprendre, utiliser, etc. Ensuite, vous pouvez le faire pendant le développement, si vous avez un bon plan.
la source
Réponse simple: BEAUCOUP!
Réponse détaillée:
Arithmétique, algèbre élémentaire et linéaire, dans la plupart des cas Trig, si vous créez un jeu en 3D, DEFINITELY Calculus, and Physics (La physique nécessite Calculus)!
la source