Si vous parlez depuis le tout début, et notez que très peu de moteurs de jeux majeurs sont codés à partir de zéro, et notez que ceci est un exemple et pas nécessairement comment cela fonctionne toujours. . .
Le rendu:
Commencez par rendre un cube plat. Ajoutez-y des effets d'éclairage de base. Ajoutez un moyen de déplacer la caméra. Maintenant, vous pouvez voler autour d'un cube ennuyeux, suspendu dans un vide noir infini. Yay.
Ensuite, vous souhaiterez probablement importer un modèle. À tout le moins, votre artiste peut concocter un modèle de démonstration (une théière est étonnamment traditionnelle), mais il peut avoir un modèle de jeu réel qu'il peut vous remettre. Encore une fois, nous conservons un ombrage plat pour le moment, donc il semblera qu'il est fait de. . . enfin, pas de substance réaliste, mais une sorte de croisement entre le plastique mat et la porcelaine. Ceci , mais sans bon éclairage. Et nous en sommes toujours au point où ça ne bouge plus.
Les trois prochaines étapes principales peuvent être effectuées dans n'importe quel ordre.
Tout d'abord, vous voudrez du terrain. La plupart des jeux modernes divisent le rendu en «géométrie statique» et «acteurs», où la géométrie statique comprend des choses qui ne changent pas (murs, sol, lampadaires) et les acteurs incluent des choses qui changent (joueurs, véhicules, lampadaires destructibles). le concept de rendu de base est le même pour les deux, il y a des optimisations que vous pouvez faire pour la géométrie statique que vous ne pouvez pas faire pour les acteurs. Vous aurez besoin de terrain pour que les ingénieurs du gameplay commencent vraiment, donc s'ils vous attendent, il est temps de configurer au moins le rendu de terrain de base.
Deuxièmement, vous aurez besoin de texturer. C'est un sujet énorme et il est probable que vous atteindrez un jalon, que vous fassiez quelque chose de plus critique, puis que vous y reveniez à plusieurs reprises. Votre premier passage peut simplement ajouter des textures au modèle. Votre deuxième passage peut ajouter un éclairage et un comportement de surface améliorés. Votre troisième passage peut ajouter des ombres (je pourrais remplir une réponse entière en parlant d'ombres). Selon le type de jeu que vous jouez, cela peut devenir arbitrairement compliqué. Quelque part ici, vous pouvez également basculer votre moteur de jeu entier vers un rendu différé.
Troisièmement, vous aurez besoin d'animation. Vos animateurs (en supposant que vous ne vivez pas en 1995) auront mis en place des plates-formes d'animation pour leurs modèles, consistant en des os traversant le modèle et des informations sur la façon dont les os se déplacent pendant certaines animations. Vous commencerez probablement avec la possibilité de jouer des animations à la demande, puis ajoutez la possibilité de mélanger les animations ensemble.
Une fois que tout cela est fait, il est temps de travailler sur la compatibilité. Si vous travaillez sur un jeu AAA, vous avez un moyen de tester votre code sur de nombreux types de matériel - peut-être qu'il est en interne, peut-être vous sous-traiter à une société de test, peu importe. Une grande partie de votre code se brisera sur des cartes graphiques spécifiques ou des versions de pilotes spécifiques, et vous pourrez en corriger autant que possible.
Il est également temps d'envisager l'optimisation. Le rendu est un gros problème de vitesse, donc vous devez maintenant trouver comment exploiter le matériel au niveau le plus profond afin de fonctionner aussi vite que possible. Si vous pensez que cela peut entrer en conflit avec la "compatibilité", vous avez raison! C'est totalement le cas! Les meilleures optimisations, vous le constaterez, ne fonctionneront tout simplement pas sur certaines cartes. Vous arrivez à équilibrer tous ces facteurs.
Autour de ce point, vos artistes exigeront de nouveaux outils de texturation ou de nouvelles fonctionnalités d'animation, et vos concepteurs de niveaux voudront de nouvelles techniques de rendu de terrain. Revenez à "les trois prochaines étapes principales peuvent être effectuées dans n'importe quel ordre" et répétez jusqu'à ce que le jeu soit terminé.
Gameplay:
Je vais sauter les parties qui ne sont pas terriblement visibles visuellement. Tout d'abord, vous devez en quelque sorte attendre le rendu du terrain, bien qu'il y ait beaucoup de choses que vous puissiez faire jusque-là.
Une fois que vous avez cela, vous allez configurer des collisions de base. Cela prendra probablement la forme d'un vol vers un emplacement dans le jeu, puis en appuyant sur un bouton qui dépose un cube. Le cube tombe et touche le sol. Une fois que le cube atterrit sur le sol de manière cohérente, vous pouvez commencer à configurer le mouvement des joueurs, afin de pouvoir courir le monde de la même manière qu'un joueur.
Une fois que vous avez maîtrisé la physique des mouvements de base, vous êtes à nouveau dans l'un de ces segments "cela peut être fait simultanément":
Le combat doit être mis en œuvre. Vous avez besoin de choses qui peuvent tirer sur des choses, et toutes ces choses doivent se comporter de manière appropriée.
La physique doit être mise en œuvre. Vous avez des collisions qui fonctionnent, mais les collisions ne sont qu'un petit segment de la physique. Quand quelqu'un sort une jeep d'un char, tout doit se comporter à peu près comme prévu.
Les mécanismes de jeu doivent être mis en œuvre. Comment savez-vous quand vous avez gagné ou perdu? À quelle fréquence les choses apparaissent-elles et qu'est-ce qui contrôle cela? Si les communistes conquièrent un point d'apparition, pourquoi continue-t-il à engendrer des véhicules anarchistes? Ce genre de chose.
Tout cela peut prendre, encore une fois, un temps arbitraire, selon la quantité de choses que vos concepteurs veulent que vous fassiez. Vous passerez également une tonne de temps à traquer les bogues ("hé, regardez ce qui se passe quand je conduis un char sur l'aile de ce chasseur à réaction"). Notez que cela se produira en grande partie avec un monde non texturé, ou avec des modèles circulant dans la position de la plate-forme de personnage , ou avec des réservoirs qui ne sont que de grandes boîtes avec le mot "TANK" maladroitement peint au pistolet.
UI:
L'interface utilisateur peut en fait démarrer avant que le code de rendu principal n'entre, car l'interface utilisateur et le rendu du monde du jeu ont tendance à utiliser des chemins de code totalement différents. Au lieu de commencer par un cube, vous commencerez par une boîte, puis ajouterez des textures à la boîte, puis ajouterez du texte à la boîte.
À ce stade, votre vie est consacrée à essayer d'obtenir suffisamment de temps pour écrire des widgets à usage général, tout en laissant suffisamment de temps à l'interface utilisateur pour que les concepteurs et les développeurs de mécanique de jeu puissent tester le jeu dans un vague semblant de réalisme. À un moment donné, vos artistes de l'interface utilisateur trouveront une impression cohérente pour l'interface utilisateur, puis vous commencerez à travailler sur les éléments d'interface utilisateur finalisés, tout en testant ces éléments d'interface utilisateur sur des joueurs réels pour vous assurer qu'ils sont compréhensibles et utilisables.
Je peux en parler davantage au besoin, mais cela se transformera en une megaresponse si je le fais, donc pour l'instant, je ne le ferai pas :)