Ressources pour aider à l'étude du moteur Quake 3 [fermé]

14

Existe-t-il de bonnes ressources (manuels, tutoriels, etc.) pour commencer à étudier le code du moteur Quake 3 au-delà du code lui-même?

Je suis très intéressé de savoir comment il est structuré à des fins éducatives et peut-être de faire quelques modifications.

momboco
la source

Réponses:

13

Donc, vous devriez commencer par consulter l'article de Wikipedia sur id Tech 3 . Cela peut être augmenté par le résumé de la discussion GDC de Brian Hook et quelques vieux trucs sur le blog Element 61 . En plus de cela, vous devrez parcourir un tas de vieux tutoriels de mod que vous pouvez trouver pour essayer de reconstruire ce qui se passe.

Je suggère de partir de la version d'origine de id, au lieu de ioquake3 ou what-have-you, afin de vraiment voir le contexte de ce qui se passe (comment les entrées sont gérées et dirigées à l'intérieur du moteur, quel type d'événement sous-jacent structure, etc.).

Quelques points clés qui m'ont aidé lorsque je travaillais avec:

  • Il y a toujours un serveur; il peut également y avoir une logique client au-dessus de la gestion d'une trame.
  • L'entrée est dirigée d'abord vers une console, si vous êtes intéressé, puis vers l'interface graphique, puis vers le jeu proprement dit.
  • Le moteur lui-même est séparé (dur!) De la logique du jeu, en utilisant des fonctions de piège. Regardez (si la mémoire est bonne) les projets de jeu et de rendu pour trouver le code moteur réel.
  • La logique du jeu peut être entièrement écrite pour s'exécuter dans la machine virtuelle Quake 3. Lors de la modification et de l'utilisation de DLL natives, vous devrez exécuter le jeu comme quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0pour permettre au moteur d'exécuter du code natif au lieu du code VM.
  • L'interface utilisateur du système de menus est une pile de structures et de rappels étranges, maléfiques et tordues. Il est utilisable une fois que vous l'avez découvert, mais cela peut prendre des essais et des erreurs. Rappelez-vous, c'est une pile.
  • Si vous écrivez du code en .dll natif, n'hésitez pas à allouer de la mémoire, à écrire en C ++ ou quoi que ce soit d'autre qui fait flotter votre bateau. Vous pouvez également utiliser la STL - il n'y a aucune raison de suivre rigoureusement les idiomes C, sauf lorsque vous vous connectez directement au moteur.

Certaines choses intéressantes que j'ai faites pour cela avec un collègue:

  • Interface de ligne de commande simple pour appeler des commandes shell à partir de la console et sauvegarder les flux stdout / stderr vers la console (la console Quake).
  • Interface avec une base de données SQL pour extraire et afficher des enregistrements.
  • Fenêtre flexible et boîte à outils de widget pour faire des affichages flexibles sur le hud du client (en utilisant des graphiques à barres, des zones de texte, des zones d'image, des menus contextuels, des fenêtres redimensionnables, etc.).
  • Fusées lentes. :)

Personnellement, j'ai trouvé que le moteur était une excellente combinaison de choses vraiment intelligentes faites de manière vraiment stupide, de choses vraiment stupides faites de manière vraiment intelligente et de choses vraiment intelligentes faites de manière vraiment intelligente. C'est un excellent exemple de la façon d'avoir la modularité et une bonne conception structurée dans un projet C à moyenne échelle.

Enfin, ne vous sentez pas mal s'il faut du temps pour grogner. Il m'a fallu peut-être un mois pour vraiment savoir où trouver ce que je cherchais dans le moteur; si tout le reste échoue, commencez par l'initialisation de l'application et descendez dans les fonctions, en vous laissant des commentaires sous forme de panneaux indicateurs. Mon moniteur a fini par être recouvert de post-it roses avec des noms de fonction, des numéros de ligne et de courtes descriptions de ce qu'ils ont fait.

ChrisE
la source
3

Le livre Focus On Mod Programming in Quake III Arena vous aidera à comprendre comment les logiques client et serveur sont découplées, la prédiction client, les effets graphiques côté client, etc.

xx
la source
1

Absolument.

http://en.wikipedia.org/wiki/Quake_engine est un bon aperçu de ce qui existe, mais vous pouvez entrer dans les détails de son architecture assez rapidement grâce à ses citations.

Puis-je également suggérer quelques livres sur l'architecture du moteur de jeu qui peuvent être plus en phase avec ce que vous recherchez. Bien qu'ils ne soient pas spécifiques à Quake, ils entrent dans les détails de la conception du moteur et fonctionnent parallèlement à de nombreux aspects des moteurs Quake:

  • Architecture du moteur de jeu 3D - 978-0122290640
  • Programmation du moteur de jeu 3D - 978-1592003518
Bob_Gneu
la source