Pensez-vous qu'il est possible de passer du C ++ directement à la 3D (sauter la 2D)


8

Pensez-vous qu'il est possible de passer directement de la programmation C ++ expérimentée (environ 5 ans) directement à l'apprentissage de DirectX 3d?

Je veux dire ... je commencerais par les bases, je suis plus intéressé par la mise en place de démos (comme obtenir une bonne démo sur l'eau et autres) que de faire un jeu complet.

Pensez-vous que c'est possible?


3
Possible, oui. Facile? En aucune façon.
The Communist Duck

Réponses:


16

C'est absolument possible. Un excellent point de départ Introduction à la programmation de jeux 3D avec DirectX 10 par Frank D. Luna . Il est très facile à lire, vous permet d'implémenter rapidement de nombreuses fonctions courantes et sert de base idéale pour en savoir plus sur DirectX et la programmation de jeux.


1
C'est le livre exact que j'allais commencer par lol.

2
Un autre +1 pour ce livre, très bonne lecture. De là, je recommanderais des livres de Wolfgang F. Engel. ses livres Shader X en particulier ont été très utiles au fil des ans.
James

C'est un excellent livre que j'ai également recommandé.
reverbb

2

Bien sûr, bien que je recommande de commencer avec une application 2D très, très simple car la courbe d'apprentissage initiale (le simple fait de lancer une application DX peut être une corvée) peut être assez raide, et il est utile de savoir si les problèmes que vous voyez sont Spécifique à la 3D ou si vous manquez quelque chose de très basique.

Implémentez Pong - vous apprendrez les bases telles que la mise en place et le fonctionnement d'une application DX, le traitement des entrées, la détection de collision de base et, surtout, comment dessiner des éléments sur l'écran.

Si c'est votre première application, cela devrait vous prendre moins d'une semaine pour le faire fonctionner. À ce stade, vous devez comprendre les bases du cadre DX et être prêt à démarrer un autre projet où vous pouvez vous concentrer sur les aspects 3D - matrices de transformation, gestion des objets / états, élimination, éclairage, etc. Peut-être implémenter 3D pong, ou racquetball.


0

Bien sûr, c'est possible. Il est également possible d'apprendre le C ++ comme premier langage de programmation. Mais ce n'est probablement pas le moyen le plus rapide pour y arriver.

Passer de la «programmation» à la «programmation de jeu» nécessite d'apprendre quelques éléments indépendamment des graphismes: boucles de jeu, saisie en temps réel, etc. Celles-ci sont BEAUCOUP plus faciles à apprendre si vous n'avez pas à gérer l'apprentissage d'une nouvelle bibliothèque graphique en même temps. Apprenez une chose à la fois et vous aurez probablement beaucoup plus de facilité. (Et si vous êtes un programmeur expérimenté, l'apprentissage des trucs 2D ne devrait vraiment pas prendre autant de temps de toute façon.)


0

Qu'est-ce que la 2D a en commun avec la 3D? Pas tant. La 2D est un monde plat ou une 3D truquée qui, tout en ayant une apparence visuelle ressemblant quelque peu à la 3D, a un code très différent de la vraie 3D.

Même pour les choses qu'ils ont en commun, comme la détection de collision, est-il difficile d'étendre le code en 3D? Plutôt facile.

Autrement dit, l'apprentissage de la 2D ne vous aidera pas autant que vous le pensez dans votre voyage pour apprendre la conception de jeux ou de moteurs 3D. Ils ont peu de choses en commun, et pour ce qu'ils ont en commun, la 2D n'est pas vraiment un «tremplin» facile pour passer à la 3D.

Comme l'a suggéré David Lively, vous voudrez peut-être commencer avec un jeu 2D très basique tel que Pong, mais ne pensez pas que vous devrez recréer Final Fantasy, Super Mario Brothers, Zelda, etc. avant de pouvoir passer à aborder la 3D. Même un travail d'introduction tel que celui-ci n'a pas pour but d'acquérir beaucoup d'expérience 2D, mais plutôt dans le but de rendre tout aussi simple que possible afin que vous puissiez voir les concepts et méthodes de base (détection de collision, initialisation de la bibliothèque graphique, etc. .,) qui ont autant à voir avec la 3D qu'avec la 2D, le plus rapidement possible afin que vous puissiez passer à l'étape suivante. La prochaine étape pourrait être de créer un menu "Nouveau / Enregistrer / Charger / Quitter", que vous rendrez une fois de plus aussi simple que possible, puis vous continuerez à ajouter des éléments (+1 dimension au mouvement, modèles,

Disons-le simplement de cette façon, cependant. Après avoir appris une théorie dans un cours universitaire sur la conception de jeux, nous avons été chargés de créer un moteur 3D. Je l'ai fait en environ une semaine. Il a dessiné des objets 3D, projeté des ombres, dessiné des textures, fait du mipmapping, détecté des collisions, vous a permis de sauter et fait apparaître un menu si vous cliquez avec le bouton droit ou appuyez sur {ENTER} ou {ESC}.

La partie qui prend du temps le rend fantaisiste ... qu'il s'agisse de peaufiner le moteur ou de créer des modèles / textures / animations, du contenu de jeu, etc.


0

Oui. Puisque vous connaissez déjà le C ++, il ne vous reste plus qu'à apprendre une API et une théorie. Le principal obstacle à l'apprentissage de la 3D en particulier est probablement les mathématiques impliquées. Alors que les mathématiques 2D sont assez faciles à comprendre à un niveau minimum, la 3D nécessite une compréhension plus complexe. Il y a aussi une tonne de trucs comme les shaders qui sont certainement plus pertinents pour la 3D que pour la 2D. Si vous envisagez de créer un jeu, je prendrais un itinéraire 2D rapide juste pour avoir une idée de la création d'un jeu du début à la fin (et peut-être obtenir un système graphique fonctionnel que vous pouvez porter!) Avant de passer en 3D.


IME, le plus grand obstacle à l'apprentissage d'une API 3D est d'arriver au point où vous avez réellement quelque chose à regarder. J'ai passé un peu de temps à essayer de comprendre pourquoi je ne pouvais rien voir au début de l'opengl; il est difficile de déboguer un écran vide.
StarWeaver
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.