Quel est le moteur de jeu open source le mieux conçu pour prendre l'exemple? [fermé]

15

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

Dani
la source
3
Comprenez-vous réellement ma question? Je souhaite des moteurs de jeux (pas seulement des jeux ). Et j'ai demandé Doit être orienté objet . Dans le fil que vous avez dit, les réponses ne concernent que les jeux (Doom3, Prototype, etc.) Et il y a aussi une boîte à outils graphique (OpenSceneGraph) mais il n'y a rien de spécifique sur les "moteurs de jeu" sur ce fil ... Vous pouvez fermer ou supprimez ma question si vous ne l'aimez pas, mais je ne comprends pas le vote négatif ... :( Ma question n'est pas la même
Dani
2
Pour clarifier encore plus, je ne suis pas intéressé par le code spécifique au jeu. Je veux des moteurs de jeux à usage général.
Dani
3
Il y a une différence: tous les jeux ne fonctionnent pas avec un moteur à usage général. Doom3 a un moteur spécifique FPS, Prototype est différent, et ainsi de suite ... Peut-être qu'ils ont des choses en commun (gestion des ressources, scripts ...) mais cela n'est pas pertinent pour ma question. Ma question commence par la phrase "J'ai codé plusieurs jeux C ++". Je répète: mon besoin est de trouver un bon code source de moteur de jeu à usage général. Pas une source de jeu pour rechercher du code réutilisable.
Dani
1
Doom 3 a un "moteur spécifique FPS" mais a également toutes les pièces dont un moteur générique a besoin - comme vous le dites, la gestion des ressources et les scripts, le rendu 3D, la physique, etc. C'est un moteur générique et plus , pas moins.
2
@Joe Wreschnig Je suis enclin à être d'accord avec @Dani sur ce sujet. Bien que tous les jeux soient alimentés par une certaine forme de moteur, les modèles architecturaux utilisés pour un moteur "unique" et un moteur conçu pour fonctionner sur plusieurs titres sont assez différents, même s'ils ont tous deux des scripts, une gestion des ressources, un rendu 3D, etc. composants. De plus, regarder le code d'un jeu construit sur un moteur développé par le même studio n'est probablement pas le choix le plus sage, car cela ne vous donnera pas une indication réelle de la flexibilité et de la facilité d'utilisation du moteur dans un environnement tiers.
Ari Patrick

Réponses:

6

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:

  • Construire la boucle d'animation est fastidieux et ils sont tous à peu près les mêmes.
  • L'objet sprite de base est très limité. Je voulais un sprite amélioré avec direction et vitesse, capacité à gérer diverses conditions de bord d'écran, plusieurs images et plusieurs schémas de collision.
  • Pygame n'a pas de fonctionnalités d'interface utilisateur. Je voulais des étiquettes simples, des boutons et un sélecteur de numéro que je
    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.

Deux pi
la source
8

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.

Max E.
la source
1
Je n'appellerais pas exactement orienté objet technologique pré-Doom3 id, cependant.
Tetrad
3
Non, pas orienté objet, mais comme je l'ai dit, cela mérite d'être étudié. Je veux dire, allez, juste parce que c'est procédural ne veut pas dire qu'il vous donnera un cancer des yeux si vous le regardez! ;)
Max E.
6

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/

Tetrad
la source
+1 Excellent moteur. Merci Tetrad! Je le sais déjà, mais je n'ai jamais utilisé ni vu son code source. Savez-vous s'il a intégré l'IA (c.-à-d. Recherche de chemin, etc.)
Dani
3
Je pense que tout est lié au rendu.
Tetrad
2
Ogre est une bibliothèque de rendu graphique uniquement. Moteur de rendu graphique orienté objet.
Jonathan Sternberg
0

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.

jokoon
la source
0

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.

nmin
la source