Programmation de jeux: méthodes et modèles de conception communs [fermé]

9

J'ai commencé à écrire un moteur de jeu très simple pour mieux apprendre OpenGL 3.x mais comme mon inexpérience et ma maigre connaissance de la façon de concevoir un jeu 3D, je rencontre généralement des problèmes où je me rends compte que j'aurais dû concevoir mes cours différemment. D'autres problèmes auxquels je suis confronté sont de savoir comment suivre le temps de manière concise dans le jeu et mettre à jour le mouvement selon les besoins et comment dire au moteur de rendu qu'il doit redessiner. De plus, je continue d'avoir besoin de faire des fonctions Get et Set pour passer divers drapeaux d'un objet à un autre, est-ce une mauvaise pratique?

Donc, comme le titre l'indique, je suis intéressé par tous les livres ou articles / tutoriels et sources qui pourraient m'aider et expliquer certains modèles de conception courants dans la conception de jeux (par exemple, les gestionnaires d'état du jeu, les polices, etc.).

Btw, j'utilise toujours freeglut, recommanderiez-vous de passer à un meilleur système de fenêtrage avant de progresser ou après avoir une meilleure compréhension d'OpenGL?

Grieverheart
la source
12
Réponse standard "j'écris un moteur" = écrire des jeux, pas des moteurs. Les moteurs sont un trou de lapin profond dans lequel tomber. Quelles recherches avez-vous faites jusqu'à présent? Ici, vous obtiendrez les meilleurs résultats en choisissant un seul problème ciblé et en recherchant les questions passées. Continuez à rechercher les nouveaux problèmes au fur et à mesure qu'ils apparaissent lors de l'écriture de votre jeu, un à la fois. En remarque, le fait de réaliser que les classes ont besoin d'une refonte est courant et le processus de le faire est appelé «refactoring», cela signifie que vous apprenez au fur et à mesure et c'est une bonne chose.
Patrick Hughes
1
Merci pour votre réponse. Désolé si je n'ai pas été clair, je ne veux pas vraiment construire un moteur de jeu à part entière mais j'aimerais apprendre quelques modèles de conception de base utilisés dans la conception de jeux afin de mieux concevoir mes classes. Je suppose qu'il devrait y avoir des solutions communes aux problèmes courants. Plus j'approfondis la conception, plus les problèmes continuent de surgir et plus il est difficile de trouver des réponses. Jusqu'à présent, mes recherches n'ont pas été trop fructueuses, un bon tutoriel que j'ai trouvé qui va plus loin dans la composition d'un jeu est codeproject.com/Articles/27219/… .
Grieverheart
1
Je vois, mettre "méthodes communes du moteur de jeu" dans le titre tend à orienter la discussion vers ... moteurs =) Dans tous les cas, la raison pour laquelle vous avez du mal à obtenir ce que vous cherchez est qu'il y en a autant différents types de jeux car il y a des années dans un calendrier maya et chaque type a ses propres besoins. Vous obtiendrez peut-être de meilleurs résultats si vous recherchez un type de jeu spécifique, le jeu de tir à la première personne est très courant, pour donner aux moteurs de recherche une certaine traction.
Patrick Hughes
Un style FPS ou en itinérance libre serait ce que je recherche. En substance, je voudrais créer un monde où je peux expérimenter différents graphismes et techniques d'animation. J'ai déjà une caméra de base et des mouvements comme le saut et le mitraillage et le chargement de modèle, mais cela ne me semble pas tout à fait correct, par exemple, je mets l'animation de marche dans la classe de la caméra et j'utilise une variable interne pour compter les images. Je corrige principalement les trous et ne produit rien de robuste. Je suppose que cela fait partie du processus d'apprentissage et j'essaie peut-être d'aller trop vite.
Grieverheart
3
codage de jeu complet, l'architecture du moteur de jeu est deux livres sur le codage des jeux, vous aurez un aperçu général du pipeline de développement et de la technologie sous-jacente, ils touchent un peu à tout
dreta

Réponses:

11

J'écrirai une bonne réponse puisque j'étais à votre stade il y a environ 2 mois.

J'ai commencé à écrire un moteur de jeu très simple pour mieux apprendre OpenGL 3.x mais comme mon inexpérience et ma maigre connaissance de la façon de concevoir un jeu 3D, je rencontre généralement des problèmes où je me rends compte que j'aurais dû concevoir mes cours différemment.

Ne t'en fais pas. Avec votre manque d'expérience, vous ne pourrez jamais penser à toutes les possibilités et à la manière dont une classe donnée sera utilisée dans votre moteur. Il est préférable de considérer les principales fonctionnalités de la classe, de l'implémenter et de la restructurer ultérieurement. N'essayez pas de trop réfléchir, vous perdrez votre temps à ce stade. Mon premier match a été un gâchis complet, je suis sûr que c'était le cas pour la plupart des gens.

D'autres problèmes auxquels je suis confronté sont de savoir comment suivre le temps de manière concise dans le jeu et mettre à jour le mouvement selon les besoins et comment dire au moteur de rendu qu'il doit redessiner.

Ce dont vous avez besoin, c'est de savoir ce qu'est une boucle de jeu. C'est un bon point de départ. Une fois que vous commencez à écrire du code plus complexe comme la gestion de la physique, vous pouvez envisager des boucles avec des temps de trame variables, mais commencez petit. Une simple boucle de jeu à cadre fixe devrait vous suffire pour l'instant.

De plus, je continue d'avoir besoin de faire des fonctions Get et Set pour passer divers drapeaux d'un objet à un autre, est-ce une mauvaise pratique?

Il s'agit davantage d'une question de génie logiciel. Avec le temps, vous verrez quelles données vous devez protéger et lesquelles sont sûres. Il est probablement préférable de simplement implémenter une fonctionnalité, puis de voir ce qui n'est pas exposé à l'extérieur et peut être traité comme des données publiques.

C'est une question d'expérience. Vous écrirez une classe de caméra, puis vous verrez les fonctionnalités que vous en attendez à côté des matrices de transformation. Si vous voulez des conseils immédiats, je dois dire que mettre en œuvre des os nus, étendre plus tard.

Articles et livres:

  • Développement de moteur de jeu

Ces livres parlent de l'architecture des moteurs de jeu et des pipelines modernes. Ils vous donneront un bon aperçu de la technologie sous-jacente. Je recommande le premier livre si vous devez choisir, il est moins "biaisé" vers certaines technologies, bien qu'en fin de compte vous souhaitiez passer à travers les deux car ce sont de grandes sources de connaissances.

http://www.amazon.com/Game-Engine-Architecture-Jason-Gregory/dp/1568814135

http://www.amazon.com/Game-Coding-Complete-Third-Edition/dp/1584506806

  • OpenGL

http://ogldev.atspace.co.uk/index.html

http://www.arcsynthesis.org/gltut/index.html

http://www.opengl.org/sdk/docs/man3/

  • GLSL

http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/glsl-core-tutorial-index/

http://www.opengl.org/sdk/docs/manglsl/

  • Détection de collision

http://www.peroxide.dk/papers/collision/collision.pdf

(Je relie cela parce que j'ai trouvé difficile de trouver des articles sur la façon dont la détection de collision 3D est effectuée.)

Il y a plus de livres, mais au moment où vous en aurez terminé (en particulier l'architecture du moteur de jeu), vous saurez mieux ce que vous voulez.

Btw, j'utilise toujours freeglut, recommanderiez-vous de passer à un meilleur système de fenêtrage avant de progresser ou après avoir une meilleure compréhension d'OpenGL?

WinAPI, si vous sentez que vous avez le temps et la volonté d'apprendre la programmation Windows (si vous développez pour Windows). FreeGLUT est parfait pour l'apprentissage, mais vous voudrez éventuellement plus de fonctionnalités. Cependant, si vous souhaitez emprunter une toute autre voie, vous pouvez lancer OpenGL avec des bibliothèques comme SFML ou SDL. Restez avec FreeGLUT, sauf si vous êtes têtu comme moi. Je suis allé directement pour WinAPI.

dreta
la source
Hey dreta, merci beaucoup pour ta très belle réponse que j'attendais: P! Heureusement, je sais déjà faire de la détection de collision car j'ai déjà implémenté des algorithmes pour les simulations physiques :).
Grieverheart
@ user1294203 génial, j'étais perdu au début, alors viens de le poster au cas où
dreta
Je vote pour SFML, si vous ne voulez pas trop jouer avec le code spécifique à la plate-forme. C'est petit, facile, propre et vous pouvez facilement plonger dans le code pour comprendre comment il enveloppe WINAPI par exemple.
edin-m