Mémo à un développeur novice de jeux informatiques


Cet article s'adresse aux écoliers, aux étudiants et à ceux qui sont plus âgés, qui n'ont jamais essayé, mais qui veulent vraiment commencer à écrire des jeux informatiques. Qui dans l'enfance n'a pas joué à des jeux informatiques et n'a pas voulu écrire son propre jeu, qui sera meilleur que GTA ou Crysis? Et je le voulais, et, curieusement, je le veux toujours. Et pendant plusieurs années de pratique enseignant les mêmes programmeurs, j'ai reçu quelques notes sur où aller et quoi faire.

L'article ne prétend pas être complètement précis et fiable, il est écrit par une seule personne qui a accumulé son expérience en quelques années seulement. En outre, il ne prend en compte que le côté pratique et romantique: il ne couvre pas les problèmes de monétisation et de tirer des avantages de jeux autres que de satisfaire son bien-aimé, et éventuellement d'autres.

1. Par où commencer?


De la pratique. Vous pouvez commencer avec du C pur et OpenGL / DirectX, c'est la voie du samouraï, car l'apprendre à partir de zéro, sans aucune abstraction, est assez difficile.

Vous pouvez utiliser des frameworks comme SDL ou LibGDX / PyGame / LÖVE2D de niveau supérieur si C / C ++ semble trop confus. Ici, le niveau d'abstraction est un peu plus élevé, donc travailler un peu plus facilement, mais vous devez faire vous-même toute l'organisation de la structure interne du jeu, en réalisant ce qu'est une boucle de jeu et comment y organiser un système d'événements. Cette approche fournit un bon niveau de connaissances et de compétences, mais, au début, elle n'incite pas à grimper dans les profondeurs des étendues sauvages de fer.

Et enfin, vous pouvez prendre un moteur de jeu comme Unity / Unreal / CryEngine / Godot, et en faire un jouet.

Alors, comment choisit-on parmi toute cette diversité? Mais ce n'est qu'une petite partie. Le piège typique dans lequel tombe un novice mais non développeur est le choix d'un outil. Framework / moteur et langage. De nombreux articles sont lus, des didacticiels vidéo sont regardés, quelque part de grandes choses sont dites à propos de quelque chose, quelque part des choses désagréables sont dites à propos de la même chose ... Il n'y a pas de système idéal et n'existe pas, sinon le moteur de jeu idéal aurait été inventé il y a longtemps (avec Idéal Langage de programmation), et toutes les entreprises chercheraient simplement des «programmeurs», pas des programmeurs dans un écosystème particulier. Nous prenons simplement l'outil qui convient le mieux à notre tâche, ou tout simplement plus comme ça, et une personne qui ne peut pas choisir peut rester au même endroit que pendant des années, sans aucun progrès.
Alors comment choisir? Nous pouvons simplement prendre le premier et commencer à comprendre. Vous ne l'aimez pas lorsque vous l'utilisez pendant plus d'une semaine ou deux? Nous prenons ce qui suit et écrivons immédiatement quelque chose de simple comme un serpent, tout en lisant la documentation de l'outil sélectionné et en recherchant tout le reste dans Google, et en écrivant le document de conception de notre Super Game, qui tuera Diablo et Doom en même temps. Pourquoi commencer avec quelque chose de simple alors que nous avons déjà l'idée d'un Super Game? Tout est très simple, le niveau de compétence d'un développeur novice est toujours si faible qu'il réécrira son Super Game vingt fois, les résultats ne seront pas à la hauteur des attentes, et derrière cette frustration se cache un refroidissement complet à l'idée d'écrire votre jeu et votre programmation en général. Au début de l'entraînement, nous faisons des choses simples que vous pouvez immédiatement ressentir et jouer avec des amis sur place, en compétition dans des records. C'est notre motivation, c'est notre joie de l'auto-éducation et de l'activité cérébrale productive, c'est quelque chose qui ne nous permet pas de nous épuiser. Après le serpent, vous pouvez d'abord regarder ce serpent et essayer de le réécrire «de manière normale», car le premier serpent, même parfaitement fonctionnel, aura une structure interne semblable à un monstre, changer l'apparence du serpent sera très difficile, et l'ajout d'un nouveau bonus sera encore plus difficile . Et puis réécrivez-le à nouveau, ou passez à autre chose, sinon ce serpent est déjà assis dans le foie. Maintenant, nous allons faire, par exemple, une balle qui saute des murs, qui doit entrer dans le ring, peu importe ce qui, en fait, serait une idée.

Il n'y a que quelques conseils pour choisir: à mon avis, vous ne devriez pas prendre quelque chose de trop bas, car nous écrivons des jeux ici, plutôt que d'interrompre les indicateurs de bits et de se livrer à des pointeurs. Avec quelque chose de très bas niveau, il est très facile d'aller dans une jungle lointaine et de passer quelques mois presque gaspillés. Et ne prenez pas quelque chose de trop haut (comme les moteurs), car ils donnent un niveau d'abstraction trop élevé. Tant que nous ne savons pas comment les moteurs sont disposés, nous n'avons pas beaucoup de sens pour utiliser les développements des autres, nous devons comprendre comment cela fonctionne, car tout le monde dans le monde des moteurs a de nombreuses limitations internes que nous devrons gérer à l'avenir, et nous avons les mains et les pieds connectés manque d'information et de compréhension du processus, et dès qu'un trou dans le moteur fuit , nous ne pouvons rien faire avant d'avoir bien compris sa structure interne. L'équilibre entre la complexité de l'apprentissage et la liberté d'action.

2. Comment étudier?


Ici, une compétence extrêmement utile appelée «googler» nous est utile. Internet est une énorme source d'informations qui, pour une raison quelconque, dans ma mémoire, est généralement sous-estimée, et la deuxième page du moteur de recherche est déjà quelque chose d'inaccessible. Par conséquent, nous apprenons à poser de telles questions au moteur de recherche afin qu'il donne l'échantillon dont nous avons besoin. En général, au début, les didacticiels vidéo vont descendre. Et vous pouvez lire des manuels. Les cours vidéo ont l'avantage de donner immédiatement un résultat tangible en peu de temps, ce qui est très utile pour la motivation, mais ils ont de gros problèmes avec l'exhaustivité des informations, donc personne n'a annulé les manuels et la documentation. Vous pouvez rechercher et consulter des exemples de code sur le github, c'est une leçon extrêmement utile, à partir de laquelle vous pouvez apprendre autant que des manuels. Nous regardons tout ce qui est incompréhensible dans le code de quelqu'un d'autre et cherchons sur le net ce qu'il était juste ici. Ensuite, nous utilisons (ou non, hehe). Le vol d'idées et de concepts est uniquement encouragé (si le code était sous licence gratuite). Si quelque chose est assez compliqué, mais très nécessaire - il n'est pas interdit de contacter d'autres personnes dans les forums et les forums de discussion, mais il est très facile de commencer à abuser de cette méthode, donc ce n'est pas conseillé et seulement s'il est complètement cuit, et plusieurs heures de recherche compétente ont échoué. Dans le domaine des mathématiques, je vous conseille fortement de lire et de comprendre l'algèbre vectorielle, la géométrie analytique, la théorie des probabilités et beaucoup de mots intelligents, car ce sont des domaines assez universels qui ne sont pas seulement utiles dans les jeux. Parmi les langues - l'anglais évident, la plupart de la documentation est écrite en anglais. L'utilisation de traducteurs n'est pas interdite. Encore une fois, ici nous avons le plus besoin d'apprendre à apprendre et à rechercher des informations, elles seront utiles partout et toujours, pas seulement dans ce domaine. Cependant, la formation ne doit pas occulter la pratique et vice versa. Il est conseillé de maintenir le rapport de temps entre l'écriture et l'étude au niveau de 20/80, puis, la pratique ne peut être ajoutée, les étudiants éternels sont bons, mais peu pratiques. Temps d'équilibrage.

3. Vous vouliez quelque chose de plus sérieux?


Après la dernière étape et plusieurs (des dizaines) de prototypes de jeux, nous avons déjà appris à écrire assez bien, peut-être même avec un nombre peu élevé de si-elseif-elseif imbriqués. Nous avons trouvé et lu plusieurs dizaines de projets d'autres personnes, et même si la moitié ne comprenait pas, ce n'est toujours pas très effrayant, car nous semblons déjà prêts à faire quelque chose de sérieux, comme le Super Game? Tenez les chevaux. Nous avons plusieurs prototypes, et ils jouent même très bien, mais nous n'avons même pas essayé de terminer notre travail. Dès que quelque chose est devenu plus ou moins fonctionnel, nous sommes passés à quelque chose de plus intéressant, mais nous attendons toujours une étape extrêmement difficile, à laquelle de nombreux (dont moi, hehe) tombent en panne: la création du projet fini. En quoi est-il différent de nos prototypes? Et voici ce que: le projet terminé est le même prototype, mais il a été dépensé trois fois plus longtemps que la partie prototype, il a fait tous les menus, les paramètres, vérifié qu'il fonctionne bien à différentes résolutions d'écran et avec différents claviers, au moins une douzaine de niveaux ou un choix de niveau de difficulté pour qu'il soit intéressant de jouer non seulement à l'auteur et à ses amis, mais aussi à des gens au hasard à l'école ou à l'université. La partie la plus routinière, que dire, mais la volonté la plus utile et très bien entraînée de gagner. Si vous ne passez pas par cette étape, vous pouvez rester un prototype de rédacteur à vie. Vous équilibrer dans une routine et un plaisir.

4. Où chercher des bibliothèques?


Si vous lisez attentivement le deuxième paragraphe, la réponse semble évidente: en ligne, dans les référentiels et auprès d'autres personnes. Et comme si tout allait bien, nous gagnons du temps et faisons immédiatement quelque chose de cool. Mais pendant que nous étudions et que nous avons le temps, et nous avons la possibilité de construire des vélos - c'est un péché de ne pas saisir cette opportunité. Si la lecture de manuels et d'articles et la visualisation de leçons sont une extension de nos connaissances, alors écrire nos propres bibliothèques est un approfondissement, et sur plusieurs fronts à la fois: implémenter des API pratiques (couper les performances et la convivialité superflues et équilibrées), approfondir et explorer l'intérieur de notre écosystème langage-fer , et la création de petits modules finis, même s'ils dupliquent partiellement les fonctionnalités des modules existants. Mais l'essentiel ici n'est pas de faire des cycles. Nous écrivons toujours des jeux, et une boîte à outils pour eux, ici, vous pouvez tout aussi bien devenir écrivain de bibliothèque, et ne jamais faire un seul projet fini. Mais il y a aussi une énorme couche d'expérience générale.

5. Conclusion.


Il reste de nombreuses questions sans réponse, dont certaines trouveront une brève réponse ici.
Qu'est-ce qu'un document de conception et pourquoi est-il nécessaire? C'est un tel wiki pour un jeu pas encore créé, le plus complet sera le mieux. Et cette chose devrait être faite avant le début du jeu, en estimant approximativement le temps de développement par le nombre de personnes disponibles et en supprimant les fonctionnalités.

Pourquoi couper les fonctionnalités? En passant par les étapes précédentes, vous pouvez approximativement estimer le temps pendant lequel vous et votre équipe vous fatiguerez de faire ce projet. Si nous sommes dans une situation de développement indépendant du sous-sol sans financement et sans calendrier de travail, il y a un risque très élevé de confusion et de tremblement au lieu de mettre en œuvre le projet. Tous les trucs sympas sont mis en œuvre très rapidement, et il reste beaucoup de routine, qui doit néanmoins être fait, et notre tâche est d'équilibrer la fraîcheur et la routine afin de terminer tout de même.

Où chercher des artistes / musiciens / designers? Pour commencer, vous pouvez créer un projet presque terminé, sans graphiques ni sons, avec des sprites gribouillés dans msPaint et les mêmes animations maladroites et fuck-bangs à partir de ressources gratuites trouvées sur le réseau. Je ne recommande vraiment pas de charger d'autres personnes avec quelque chose qui n'est pas encore terminé et qui a de grandes chances de rester inachevé.

En fait, j'allais obtenir un emploi chez Valve, EpicGames ou ailleurs, et travailler là-bas, pourquoi ai-je besoin de tout cela? La plupart des programmeurs dans le monde sont autodidactes, souvent avec une vaste expérience de «sous-sol», en outre, les prototypes et les petits jouets sont un excellent portefeuille pour le placement dans de grandes entreprises, et pas seulement pour le poste de développeur de jeux.

Bonus: La plupart de ces techniques conviennent à n'importe quel domaine, non seulement pour la programmation de jeux, mais aussi pour la programmation. De plus, vous pouvez obtenir une éducation artistique ou apprendre à sculpter, en utilisant les mêmes instructions après de petites modifications dans la bonne direction.

Merci d'avoir lu, l'article est sujet à critiques et ajouts.

Source: https://habr.com/ru/post/fr470199/


All Articles