Étant programmeur d'applications Web et centrées sur la base de données, j'ai des connaissances dans les structures de données telles que les listes, les arbres, les graphiques, etc. J'utilise honnêtement très peu de ces algorithmes de structure de données dans mon codage, sauf pour trier les choses dans des tableaux simples, comme je fonctionnait presque entièrement avec des cadres orientés client où toutes les fonctionnalités de base étaient intégrées. Je connais le C, PHP, Java, HTML, PL / SQL et MySQL. J'apprends actuellement Python.
Je veux commencer par le développement de jeux. J'ai vu d'autres questions concernant des suggestions, des conseils et des approches de développement de jeux pour les débutants. Je comprends ces points et suis clair avec les réponses. Quelques jours après la publication, j'ai lu l'article Write Games, Not Engines et j'ai réalisé que je devais implémenter un jeu avant de créer un moteur de jeu. Pourtant, j'ai des questions.
Mon objectif est de
- Améliorer mes compétences de programmation de base, notamment en utilisant des algorithmes de structure de données, des concepts mathématiques et physiques.
- Mettre en œuvre un bon moteur de jeu, pour me faire plaisir dans le codage de niveau de base
- Pour ouvrir ma voie dans le domaine de la recherche sur l'IA.
Quels sont les mathématiques, la physique, l'IA et les concepts généraux spécifiques qu'un programmeur doit connaître pour développer un moteur de jeu?
la source
Bien qu'il puisse être valide de demander quelles structures de données sont les plus utilisées dans le développement de jeux, il est beaucoup plus valable de demander quelles structures de données sont utilisées pour des problèmes spécifiques. Je peux facilement affirmer que les tables de hachage sont super communes dans les jeux, mais cela ne vous dirait rien d'utile en termes de quand et où utiliser (et de ne pas utiliser!) Une table de hachage dans votre propre code. :)
En termes de mathématiques, vous devez avoir une très bonne compréhension de l'algèbre linéaire (vecteurs, matrices, résolution de systèmes linéaires, etc.), une très bonne compréhension de la trigonométrie et au moins une compréhension de base du calcul (dérivées simples et intégration) . Tout cours d'introduction à l'algèbre linéaire de niveau collégial devrait vous mettre sur la bonne voie, sinon vous enseigner tout ce que vous devez savoir pour commencer à travailler avec les principes graphiques 3D communs. Je joins également un livre ci-dessous que vous trouverez peut-être très utile.
Pour la physique, vous allez faire un tour. La physique peut être divisée en deux catégories différentes: détection des collisions et réponse aux collisions. Vous devez absolument connaître les maths derrière la détection de collision, car ces maths sont plus ou moins identiques à ce que vous devez faire des graphiques (en particulier pour construire les arbres et les cartes dont vous avez besoin pour l'occlusion), et vous allez utiliser ces trucs pour beaucoup de votre logique de jeu aussi.
La réponse aux collisions peut varier de «simple» à des niveaux ridicules de complexité, et même les éléments simples peuvent être non intuitifs au début. Je recommande fortement, fortement de laisser ce genre de choses à une bibliothèque existante comme Bullet, Havok, PhysX, etc. (ou Box2D si vous travaillez sur un gameplay 2D) jusqu'à ce que et à moins que vous ne soyez à l'aise avec vos mathématiques et algorithmes existants connaissances et décidez que vous voulez apprendre comment fonctionnent les moteurs physiques. Je vous recommanderais alors de créer un moteur de physique 2D très simple comme première tentative. Les moteurs physiques 3D sont des bêtes incroyablement complexes, et sont (sans doute) de loin la partie la plus compliquée et la plus difficile de la programmation de jeux, c'est pourquoi les moteurs physiques sont la technologie tierce la plus utilisée sous licence dans les jeux. Vous ne voyez tout simplement pas beaucoup de jeux qui ne sont pas t utiliser Havok ou PhysX dans le monde professionnel, malgré le nombre de jeux dotés de moteurs graphiques maison et d'un code moteur de base. Même les entreprises qui ne font que construire des moteurs de jeux proposent généralement un moteur physique, par exemple Unreal utilise simplement PhysX plutôt que d'inclure son propre moteur physique.
Je recommanderais les livres suivants pour vous lancer. Le premier est un livre de niveau d'introduction sur les mathématiques de base que vous devez connaître en tant que programmeur de jeux 3D:
http://www.amazon.com/Mathematics-Programming-Computer-Graphics-Third/dp/1435458869
Le second est un livre détecté pour les algorithmes de détection de collision (pas la réponse à la collision!) Qui vous aidera à la fois avec votre codage graphique et votre codage physique:
http://www.amazon.com/Real-Time-Collision-Detection-Interactive-Technology/dp/1558607323
la source