9
votes

Comment vous démarchez-vous lorsque vous essayez de comprendre le code d'un moteur de jeu 3D (comme ID Tech 3)?

Je suis un développeur C # pour la plupart. De retour au collège, j'avais des cours sur C / C ++ alors je "connaissez C" et c'est une bonne morceine de la raison pour laquelle je suis un développeur C #.

Cependant, je n'ai jamais eu la chance de coder en C / C ++ de manière professionnelle et j'aimerais étudier comment un moteur de jeu moderne fonctionne, ainsi que la manière dont une application de qualité industrielle C / C ++ fonctionne.

Le problème est que je ne sais pas où commencer. Comme dans, j'ai téléchargé le moteur Quake 3 Moteur Code source (qui a été rétronymed ID Tech 3 ) et je ne suis même pas sûr d'où commencer avec ça.

Comment un C # / Winforms à l'abri d'attaquer une base de code C masque comme ID Tech 3 ou un autre moteur AAA massive?


2 commentaires

Juste FYI: La source Quake 3 est "terrible" BTW si vous êtes intéressé par un code de nettoyage agréable. Je veux dire que cela fonctionne, c'est très efficace. Mais vraiment, c'est horrible, comme le plus de code de jeu de production est. Cela dit que je voudrais juste sauter et faire "quelque chose" - je ne peux personnellement pas comprendre le code juste en regardant.


Oui, je suis moins intéressé par le code de nettoyage et plus intéressé par la façon dont les moteurs de jeu 3D modernes fonctionnent. Même si la façon dont ils font les choses dans le Quake 3 est désupéré, c'est un départ


6 Réponses :


12
votes

Essayez de faire le programme le plus simple 3D "Hello World" qui utilise le sous-ensemble le plus élémentaire du moteur. Cela vous apprendra probablement des charges.

Avec les basses bases de code Il est préférable de ne pas essayer de apprendre tout à la fois. Il suffit de plonger avec une question très spécifique que vous devez vous répondre (ou peut rechercher sur Internet) ou une tâche très spécifique que vous devez accomplir. Cette approche vous donne le but et la motivation dont vous avez besoin pour effectuer une programmation. L'apprentissage viendra seul.


1 commentaires

+1 Absolument - comme le premier jour d'un nouvel emploi de codage, la meilleure chose à faire est de lancer et de commencer à réparer les bugs - vous découvrez rapidement tout ce que vous devez savoir.



4
votes

écrire un mod serait un bon point de départ.

Démarrer sur le territoire cartographié: le jeu de vanille. Changer de choses. Regardez le code de rebond de la grenade. Faites-le rebondir plus loin. Ajouter une prédiction côté client (quels projectiles non gonflés ont déjà).

Ajouter une arme de téléportation. Il vous en dira plus sur la détection de collision que vous ne voudriez savoir.

Il y a quelques fonctions clés qui gèrent la plupart des jeux: les exportations du moteur, les appels Trap_ * *. Cela pourrait aider beaucoup à savoir à savoir ce que font exactement les mods avec eux avant d'ouvrir le code moteur et de regarder leur mise en œuvre.

Par exemple, cela pourrait vous en dire plus sur le moteur de savoir que vous devez appeler linkentité à chaque fois qu'une entité se déplace ou que sa position dans l'arborescence du jeu BSP n'est pas mise à jour et que les appels de moteur suivants pourraient l'ignorer, que de savoir exactement comment l'arborescence est stockée et accessible.


0 commentaires

1
votes

Juste au cas où vous recherchez d'autres moteurs de jeu 3D et que vous voudrez peut-être les comparer les uns avec les autres, voir DIM3:

http://code.google.com/p/dim3/


0 commentaires

3
votes

Cela ressemble à une blague, mais: trouver la fonction principale () . C'est le point de départ bien défini de l'exécution du programme et vous devriez pouvoir tout suivre de là.

Cela devrait vous aider à déterminer quels sous-systèmes dépendent de ce qui, étant donné que l'ordre de leur initialisation sera typiquement ascendant. Par exemple, un moteur typique initialisera sa mémoire, ses sous-systèmes de débogage et de traçage plus tôt, car la plupart des autres systèmes nécessitent ces services pour être opérationnel.

Vous devriez également être capable de comprendre le chemin de la boucle principale du jeu et de comprendre ce qui est nécessaire avant que la boucle ne reçoit le contrôle.


1 commentaires

Cela lie à mon manque d'expérience avec les programmes Windows C ++ - j'ai trouvé la fonction WinMain, mais on ne sait pas comment cela fait quoi que ce soit. Je suppose qu'il est temps de commencer à marcher ...



1
votes

Andre Lamothe m'a pratiquement appris tout ce que je sais sur la programmation du jeu. Une fois que vous avez traversé ces deux livres, vous savez presque tout ce que vous devez savoir sur les moteurs 3D.

  1. Tricks of the Windows Game Programming Gurus
  2. Tricks of the Gurus de programmation de jeu 3D - Graphiques 3D avancés et rasterisation

    Sinon, essayez simplement d'écrire votre propre petit moteur pour le plaisir, voyez à quelle distance vous obtenez, ce qui vous manque, et vous commencerez bientôt à comprendre le but de l'autre code que vous regardez,

    peut également vouloir essayer de regarder le Tutoriels NEHE GAMEDV .


0 commentaires

0
votes

Je n'ai jamais été un grand fan de lecture d'un grand produit fini. Et surtout la base de code de séisme. Il y a une bonne chose que vous puissiez en apprendre à coup sûr, mais cela ne devrait pas être votre point de départ. Vous devez apprendre d'abord quelques nouveaux concepts utilisés dans la programmation du jeu.

Je vais suggérer de mettre C ++ un peu en attente (si vous voulez faire un jeu, vous devez vraiment y retourner à un moment donné), mais pour l'installation de XNA. C'est aussi grand cadre que tout .net. Il y a beaucoup de tutoriels sur le jeu Xna.


0 commentaires