Duplicata possible:
où puis-je trouver de bons exemples (bien organisés) de code de jeu?
J'ai codé plusieurs jeux C ++ et maintenant je construis mon propre moteur de jeu et éditeur.
J'ai quelques doutes sur le design et je souhaite trouver de bons exemples à suivre.
Quel est le mieux conçu à votre avis?
Doit être orienté objet. Le langage de programmation n'a pas d'importance, mais je préfère dans cet ordre: C ++, C #, Java ou un autre similaire.
EDITÉ: Pour clarifier davantage, je ne suis pas intéressé par le code spécifique au jeu. Je veux des moteurs de jeux à usage général.
EDITÉ: Cet article explique ce qu'est un moteur de jeu: moteur de jeu sur wikipedia et voici une liste des moteurs de jeu connus: liste des moteurs de jeu sur wikipedia
Réponses:
Je pense que la meilleure façon de construire un moteur de jeu est de commencer par ce que vous savez déjà assez bien et d'ajouter ces fonctionnalités fastidieuses ou répétitives.
Par exemple, je fais beaucoup avec Python / pygame (qui est un wrapper SDL). J'apprécie un peu le système, mais il y a trois choses qui me dérangent:
pourrais facilement ajouter à mes jeux.
Il était relativement facile de créer un wrapper orienté objet autour de ces fonctionnalités. Jetez un œil au chapitre 10 et à la documentation de Game Engine disponible ici: http://aharrisbooks.net/pythonGame/
(Cela a été écrit dans le cadre d'un livre, mais vous êtes le bienvenu dans le moteur de jeu même si vous ne voulez pas du livre.)
Le chapitre 10 explique la motivation et les techniques de construction d'un moteur de jeu 2D de base. Vous pourriez en profiter en construisant le vôtre. Le langage réel n'est pas si important (sauf bien sûr, vous aurez besoin d'un langage OOP pour prendre en charge OOP.) Si vous utilisez déjà SDL avec C ++, vous pouvez commencer par adapter mon moteur à C ++ / SDL.
la source
La vénérable conception de moteur Quake (ID tech) a résisté à l'épreuve du temps et est probablement la conception de moteur de jeu la plus réussie de tous les temps. À part le rendu, tout est resté pratiquement inchangé depuis la fin des années 90 et est toujours utilisé dans les jeux modernes comme ETQW.
Le code source complet pour quatre itérations de ce moteur (Quake 1 à 3, plus Wolf ET) est disponible sous la GPL. Il existe probablement plus d'une centaine de moteurs de jeu basés sur Quake, développés activement et soutenus par la communauté, qui les maintiennent pertinents à l'ère moderne. XreaL pour son rendu fantastique et ioQuake3 pour sa maintenance fidèle de Quake 3 optimisé pour le matériel moderne méritent particulièrement un coup d'œil. De plus, pour les versions d'ID "officielles" plus récentes du moteur, la logique du jeu (pas le moteur entier) est également disponible.
Même si vous ne finissez pas par utiliser ce moteur de jeu, il mérite d'être étudié pour son architecture de séparation client-serveur bien pensée et la ségrégation de la logique de jeu des détails de bas niveau.
la source
La bibliothèque de rendu Ogre3D est assez proche du code moteur et de tous les comptes que j'ai entendu est très bien conçue et très OO.
http://www.ogre3d.org/
la source
En parlant de moteur de jeu, je pense que vous pensez à tout ce qui n'est pas le moteur de rendu, le moteur sonore, le moteur physique, le moteur d'entrée, etc.
Donc, vous pensez peut-être à l'architecture de jeu, à l'IA ou à des modèles / systèmes de conception, etc., qui sont utilisés pour structurer un logiciel en gestion de données et d'autres composants pour créer une sorte de scène / dégel / illusion, produisant ainsi un ensemble de règles gérables pour peaufiner pour créer un véritable "jeu vidéo".
C'est la couche supérieure d'un jeu vidéo, et j'ai même essayé d'en apprendre un peu, c'est vaste, compliqué et nécessite beaucoup de connaissances dans tous les autres sujets. Imaginez que vous vouliez recréer une réalité alternative à partir de rien, suivre et calculer chaque événement et régénérer des données précises à partir de ceux-ci, à tout moment: pour chaque type de jeu, il existe une sorte de moteur de jeu de sous-ensemble, et je ne le fais pas. Je pense qu'il est en fait possible de créer un moteur générique suffisamment rapide mathématiquement. Même pour un jeu où vous contrôlez un seul personnage, il y a encore beaucoup de choses qui peuvent varier et peuvent encore nécessiter que le jeu change l'architecture entière.
L'industrie du jeu n'est pas aussi bien servie par l'open source que d'autres domaines de l'informatique, simplement parce que le divertissement a différents types de licences, qui impliquent des licences artistiques: le produit de jeu n'est payé que par un client, et AFAIK, il n'y a que quelques moteurs qui semblent assez bons pour fonctionner pour vous: Hord3d, NeoAxis, blendelf, Panda3D. Mais je ne peux pas vous assurer qu'ils seront aussi faciles à utiliser que des outils comme Unity, Torque, C4 et autres; gardez à l'esprit qu'un moteur de jeu est, avec le rendu graphique, je pense que le type de logiciel le plus difficile que vous trouverez dans la création de jeux.
la source
Pour moi, utiliser Python avec Pygame est une bonne solution. Peut-être que Python est un peu lent, mais pour les ordinateurs d'aujourd'hui et si vous essayez simplement d'optimiser votre jeu, cela n'a pas d'importance. Pygame a une très bonne documentation sur le site d'origine de pygame. Mais prenez d'abord le début d'un tutoriel pour apprendre quelques notions de base. Pour l'optimisation de la vitesse (conversion d'images, ...), vous aurez besoin d'autres exemples faciles à trouver.
la source