Vous souhaitez donc vous lancer dans le développement de jeux. Ou, plus précisément et simplement : vous aimeriez devenir développeur de jeux travaillant sur l’aspect technique des choses. Eh bien, tout le monde se poserait des questions sur la façon de procéder !
Par exemple:
Il existe des tonnes d'informations sur ces sujets, à tel point que cela peut facilement surcharger votre cerveau, rendant ainsi difficile la prise de choix valables.
Je m'appelle Andrey Mikheev et je suis le développeur backend senior chez Pixonic, MY.GAMES. Je suis dans l'industrie du jeu vidéo depuis 20 ans. J'ai d'abord essayé de créer des jeux dans les années 90 sur le très populaire ZX Spectrum. Dans cet article, j'exposerai les options dont vous disposez lorsque vous passez au développement de jeux et j'expliquerai en quoi ces options diffèrent.
Dans cet article, nous partirons du principe que le lecteur commence tout juste son parcours dans l'industrie. Il est impossible de tout apprendre simultanément et vous devrez donc établir des priorités et choisir la manière de mener vos études. Bien sûr, chacun vit une expérience différente ; il y a plus d’une voie à développer dans cette profession.
La beauté du développement de jeux (et de nombreux autres domaines de l'informatique) réside dans le fait qu'il existe de nombreux domaines dans lesquels vous pouvez appliquer vos compétences : vous pouvez devenir producteur, spécialiste du marketing, artiste, concepteur, scénariste, modélisateur, analyste, développeur côté client, développeur principal, développeur de métaservices, développeur de rendu, etc. En fait, dans le monde des jeux indépendants, vous devez combiner presque toutes les compétences mentionnées ci-dessus – mais c'est un sujet pour un autre jour.
Lorsqu’on envisage de démarrer une carrière dans le développement de jeux, les gens se concentrent souvent sur les aspects technologiques : le moteur à maîtriser, le langage de programmation à choisir en premier ou les compétences spécifiques à travailler.
Mais gardez à l’esprit que la technologie n’est qu’un outil ; vous n'êtes pas obligé de construire toute votre identité de développeur autour d'une chose en particulier ; un mécanicien n'est pas la clé. Aujourd'hui, c'est un tournevis cruciforme, demain c'est un électrique, après-demain c'est un outil pneumatique. Le but n'est pas d'apprendre à utiliser un tournevis spécifique, mais de comprendre la structure des voitures, et comment les assembler et les réparer.
Remplacez ces clés par des moteurs de jeu, des langages de codage et d’autres éléments – et le point ne changera pas. Ce ne sont que des outils que vous pouvez utiliser
Donc, à mon avis, les compétences générales sont la chose la plus importante à ce stade. Parce que vous n'êtes pas chargé de créer un « jeu », mais d' écrire du bon code .
L'objectif n'est pas de créer un jeu à succès qui vaut un milliard de dollars, mais de grandir en tant que développeur. De toute façon, créer un jeu valant un milliard de dollars n'est pas tant une question de développement que d'idées et de marketing ; le code est une chose secondaire par rapport à cela. Bien sûr, ces deux objectifs ne se contredisent pas, mais je ne définirais pas un succès éclatant comme votre premier objectif : faites-le et vous pourriez rapidement vous retrouver déçu par l'ensemble de l'entreprise en général.
De retour au sujet du code, il est important de se concentrer de manière générale sur le code, car un code de haute qualité sera toujours très demandé dans n'importe quel secteur, et cela a de nombreuses applications : jeux, fintech, algorithmes de contrôle de robots, lancement de fusées dans l'espace. Certains pourraient dire qu’un code de haute qualité entraîne d’énormes retards et que le temps est essentiel dans ce domaine. N'y croyez pas. Si vous pouvez écrire du bon code, il n’y aura pas de temps d’arrêt.
Une autre chose est que si votre code est bâclé, alors pour créer un produit de haute qualité, vous devrez corriger vos habitudes, ce qui prendra beaucoup de temps et d'efforts.
Un autre point très important concerne le timing : le temps passé à créer un bon code est toujours compensé par la réduction du temps consacré à sa maintenance . Après tout, un jeu, et surtout un multijoueur, est un produit qui dure longtemps, et la qualité du code est d'une grande importance dans ce cas.
D'autres spécialistes doivent être capables de comprendre facilement votre code , de pouvoir l'adapter, sans avoir besoin de le réécrire. Et vous devriez également pouvoir le lire facilement si vous décidez soudainement de changer quelque chose dans quelques années. À titre d'exemple approximatif : il est préférable de passer quelques mois à écrire du code de haute qualité une fois et d'être capable d'apporter rapidement des modifications en quelques jours, plutôt que d'écrire quelque chose d'incompréhensible en une semaine, puis d'avoir besoin d'un mois pour chaque mineur. modifier à l'avenir.
En un mot, code propre, architecture propre, ECS, SOLID, KISS, OOP, algorithmes et structures de données — tous ces sujets doivent faire l'objet d'une attention particulière si vous voulez être un bon spécialiste technique dans le domaine du développement de jeux.
Oui, les algorithmes peuvent causer des maux de tête à certaines personnes. Mais il existe bien plus de ces « algorithmes et structures » dans le développement de jeux que dans les projets Web classiques, et si vous les maîtrisez, ils vous simplifieront grandement la vie.
Une compréhension plus approfondie de ces concepts ne viendra naturellement qu’avec l’expérience. Au fil du temps, vous aurez participé à une variété de projets, vous commencerez à comprendre comment travaillent d'autres spécialistes et vous verrez ce qui vous dérange personnellement lorsque vous travaillez avec le code du jeu.
Apprendre des expériences des autres est essentiel . Étudiez des projets open source, écoutez des conférences données par des experts du secteur et n'oubliez pas qu'il existe actuellement de nombreuses sources d'informations. Mais ce que vous ne devriez pas faire, c'est mijoter dans le jus de votre projet, surtout si vous n'avez pas un bon mentor dans votre équipe. Aucun développeur compétent ne peut travailler dans le vide. L'essentiel ici est de ne pas en faire trop et de commencer à utiliser le code d'autres projets sans comprendre ce que vous faites et pourquoi.
Et encore un point important : réécrire du code est normal, n'ayez pas peur de le faire . De plus, pendant la période de formation, cela revêt une importance cruciale. Vous verrez comment l'utilisation de bonnes pratiques vous permettra d'améliorer votre code et de le rendre plus maintenable.
Le processus d’amélioration de vos compétences générales en programmation n’est pas rapide. Cela peut prendre des mois, voire des années. Alors soyez prêt à cela, car vous ne pouvez tout simplement pas vous en passer.
Si vous avez la possibilité d' obtenir un stage dans un bon studio, cela accélérera considérablement votre croissance . Vous aurez la chance d'apprendre différents aspects du développement de jeux et d'obtenir des réponses à vos questions auprès de mentors. Mais soyons honnêtes, ce n’est pas la méthode la plus courante.
Rechercher un premier emploi dans l’industrie du jeu vidéo en partant de zéro est un autre défi. Le fameux paradoxe : pour obtenir un emploi, il faut de l'expérience, et pour acquérir de l'expérience, il faut un emploi. Dans ce cas, cela vaut la peine d'envisager l'auto-apprentissage . Écartons d'emblée l'idée des cours payants : ils ne conviennent pas à tout le monde pour de nombreuses raisons. Heureusement, il existe des dizaines et des centaines de guides sur Internet pour tous les aspects du codage de jeux.
Une fois que vous avez répondu à ces questions de base et compris ce que vous allez apprendre et comment, il est temps de décider avec quel moteur de jeu vous travaillerez, et cela déterminera également le langage de programmation que vous devrez apprendre.
Ce sujet est trop vaste pour être abordé dans un seul article. De plus, en tant que développeurs, nous ne nous intéressons pas tant aux moteurs qu'aux langages de programmation. Si vous souhaitez approfondir le sujet, je vous conseille de lire ceci
Au début de votre voyage, vous n'êtes pas obligé de choisir immédiatement un moteur gros et sérieux comme Unreal Engine ou Unity. Si vous n'avez aucune formation théorique ou pratique, un moteur pour jeux Web suffira : quelque chose comme PlayCanvas ou ses analogues.
Le moteur Defold peut également être une bonne option pour débuter . C'est plus simple que Unity et plus axé sur les jeux 2D. Il utilise un langage très simple, Lua, facile à apprendre.
Pour vous faire gagner du temps, je vais simplement décrire certains aspects des langues et les classer par ordre de priorité, comme je les apprendrais ; cet ordre ne parle pas de la qualité de la langue ou de ses problèmes. Il s'agit plutôt de mon évaluation de l'équilibre entre la complexité, la pertinence et les capacités des langages.
Par exemple, Lua est un langage très intéressant, facile à apprendre, on peut écrire un jeu avec en utilisant le moteur Defold. Mais vous ne pouvez pas le choisir comme langage principal pour votre expérience de développement. C'est un langage auxiliaire utilisé avec des langages plus populaires comme C++ ou C#.
Bien entendu, il ne s’agit pas d’une liste complète de tous les langages de programmation. Il y en a plus d'une douzaine. Mais c'est ce que j'ai envie de vous signaler. Voici donc ce que j'apprendrais et dans quel ordre :
C# : Si vous envisagez de travailler sérieusement et pendant longtemps dans le développement, il est préférable de commencer par des langages généralistes populaires. C# en fait partie. C'est également un langage adapté à votre plan de sauvegarde : même si vous vous ennuyez soudainement du développement de jeux, vous pouvez écrire une variété de logiciels en C#, comme la fintech, des applications métiers, etc.
C# vous permettra de vous familiariser avec les concepts de programmation standards et de mettre en œuvre diverses approches de développement. Vous apprendrez tout sur ces abréviations apparemment effrayantes comme OOP, CQRS, DDD, ECS. Bien entendu, la plupart de ces approches peuvent être implémentées dans n’importe quel langage de programmation. Mais il y a des nuances. Par exemple, toutes les langues n'ont pas le concept de « classe » et, par conséquent, les concepts sont implémentés différemment. Cela peut époustoufler un développeur novice et créer un tas de problèmes inutiles, y compris des problèmes de motivation. Ainsi, à mon avis, C# est le meilleur choix (mais pas le plus simple) pour démarrer une carrière dans le développement par rapport, par exemple, à JavaScript.
Java : Comme C#, Java est un langage généraliste. Mais dans le développement de jeux, cela concerne principalement les serveurs. Il existe bien sûr des moteurs de jeux Java (par exemple, LibGDX), mais ils ne sont pas aussi populaires que Unity pour le développement de jeux.
Encore une fois, ces langages généraux conviennent à une situation où vous connaissez déjà Java, mais travaillez, par exemple, dans la Fintech – et puis tout à coup vous décidez de créer un jeu. Vous ne voudriez pas apprendre une nouvelle langue à partir de zéro juste pour le plaisir d’une expérience, n’est-ce pas ?
JavaScript : Comme l'a dit Jeff Atwood, l'un des fondateurs de Stack Overflow : « Tout ce qui peut être écrit en JavaScript sera écrit en JavaScript. »
C'est triste mais vrai que de plus en plus de projets de jeux soient écrits dans ce langage. Le fait est que JavaScript est très simple, surtout pour les débutants. Et si vous travaillez sur une sorte de moteur Web, on vous indiquera probablement même où saisir vos lignes de code.
Malgré sa simplicité, je ne pense pas que JavaScript soit un bon point de départ pour commencer votre parcours dans le développement de jeux. Il est trop différent des autres langages à usage général, et cela peut jouer des tours aux développeurs. Il y a cette idée qu'un développeur réfléchit en termes de concepts de son premier langage de programmation . Il y a une part de vérité là-dedans, donc au tout début, il est préférable d'apprendre des techniques et des approches plus générales. Mais si vous décidez de vous lancer dans les jeux Web, vous ne pourrez probablement pas vous passer de JavaScript. Il règne dans le monde du web. Dans ce cas, je vous conseille de faire attention à TypeScript. Ce langage est très similaire au C# et facilitera le passage à un autre langage à l’avenir.
Lua/Python : Pourquoi les ai-je assemblés ? Ce sont des langages de script, généralement utilisés pour scripter des parties individuelles de la logique du jeu. (Oui, il existe des moteurs comme Defold où ce sont les principaux langages de développement. Mais ce sont des exceptions à la règle.) Par exemple, Python est un outil très populaire pour les scripts en ligne, et il est utilisé dans l'éditeur 3D Blender.
Connaître et pouvoir utiliser Lua et Python est utile, mais comme je l'ai mentionné plus tôt, ce sont des langages auxiliaires et je les garderais pour plus tard. À moins bien sûr que vous ayez choisi le moteur Defold pour votre premier projet, alors Lua est indispensable.
C++ : Certains d'entre vous seront peut-être surpris que le C++ figure en bas de la liste. Et ce n’est pas parce que la langue est mauvaise, mais son chemin est le plus difficile. C'est le langage le plus puissant parmi ceux présentés, mais aussi le plus compliqué, avec ses propres fonctionnalités.
Le C++ est utilisé pour réaliser des jeux AAA, et il permet de tirer le meilleur parti du matériel. Mais je ne suggérerais pas cela à un développeur novice : il y a de fortes chances que vous soyez déçu par l'industrie. Mais si vous savez vraiment que le C++ est ce dont vous avez vraiment besoin — et que vous n'avez pas peur des difficultés impliquées et que vous avez un plan d'action clair — alors allez-y !
Le choix d'un langage de programmation est important, mais n'oubliez pas que vous devez avant tout améliorer votre anglais technique : cela vous aidera à naviguer dans les guides, cours et autres sources d'informations précieuses.
À mon avis, c’est la prochaine décision qu’un développeur de jeux doit prendre. (Ce n'est pas quelque chose comme le choix entre développer des jeux mobiles, AAA ou des jeux Web.) La raison est simple : au tout début de votre voyage, vous n'aurez presque certainement pas le choix de créer de gros jeux. Pensez-y, comment pourriez-vous travailler sur une sorte d’Escape from Tarkov ou Call of Duty sans aucune expérience à votre actif ? Votre premier jeu ne doit pas être grand et complexe, sinon vous ne le terminerez pas. Vous allez simplement vous épuiser et quitter le développement de jeux.
Il est bon de comprendre exactement ce que vous voulez faire. Pour un développeur expérimenté, ce n'est pas si important, mais au début, la réponse à cette question affinera les voies d'études possibles.
En termes de solo ou multijoueur : du point de vue du développement client (c'est-à-dire la partie du jeu avec laquelle le joueur interagit directement), la différence pour un développeur n'est peut-être pas si grande. Mais le multijoueur nécessite un backend et tous les problèmes qui y sont associés, et c'est également un sujet distinct et vaste.
Un jeu solo est plus facile à cet égard car vous n'avez pas à vous soucier de la synchronisation de l'état du monde pour les autres joueurs, de la séparation de la logique du jeu ou d'autres problèmes similaires.
En termes de mécanismes de jeu, un jeu solo peut également être beaucoup plus simple qu'un jeu multijoueur – et plus le projet est simple, plus il vous est facile de le terminer. Et terminer ce que vous avez commencé est une compétence essentielle dans toute entreprise !
Pour résumer, je conseillerais de commencer par des jeux solo – ce sera simplement plus facile . Mais si vous voulez vraiment créer un jeu multijoueur simple pour jouer avec des amis, alors pourquoi pas ? Vous devez juste comprendre que cela prendra plus de temps pour obtenir votre première version fonctionnelle. Cependant, la motivation interne d'une personne est une chose très complexe : peut-être que créer des jeux en ligne vous motivera bien plus que des jeux solo, augmentant ainsi les chances de terminer votre premier projet.
Eh bien, nous arrivons ici à la question principale : par où commencer exactement si vous voulez créer des jeux ?
Disons que nous comprenons déjà à peu près le type de jeu que nous voulons créer en premier lieu. Nous savons quels types de langages de programmation sont principalement utilisés et dans quels moteurs ils sont utilisés. C’est l’étape où cette langue et ce moteur doivent être sélectionnés. (Je vous conseillerais de commencer par C#. Vous aurez besoin de C++ pour créer des hits AAA, mais gardons cela pour plus tard, lorsque nous aurons acquis de l'expérience.) Ainsi, notre combinaison langage-moteur pourrait être C# + Unity . Ceux-ci sont très demandés et constituent un excellent choix.
C'est un point important : ne démarrez pas avec un moteur, sélectionnez d'abord la langue . Sans langue, vous ne pourrez pas du tout apprendre le moteur efficacement ; vous ne comprendrez tout simplement rien dans les exemples et la documentation et vous ne ferez que vous perdre. Idéalement, vous ne commenceriez pas à apprendre un moteur de jeu avant de maîtriser le langage et de pouvoir écrire des programmes simples en toute confiance.
Pour améliorer vos compétences en programmation, consultez des projets comme
Après avoir maîtrisé un peu votre langue, vous pouvez enfin commencer à étudier le moteur. En 2023, les informations ne manquent pas sur ce sujet : Internet regorge de ressources ; des dizaines de chaînes YouTube pour tout ce que vous choisissez. De plus, comme je l'ai dit, Unity est très populaire, donc le matériel ne manque pas.
Vous pouvez trouver une solution vidéo à tout problème par les créateurs du moteur (disponible directement sur Unity Hub, que vous installerez au début),
Ce sont les trois étapes de base pour commencer, et à partir de là, votre chemin peut continuer. Permettez-moi d'en donner un aperçu approximatif.
Une fois que vous avez appris un peu le langage et le moteur que vous avez choisis, essayez de créer un jeu simple . N'importe quel jeu, même le tic-tac-toe. Faites tout comme vous le souhaitez – sans limites. Vous devez écrire le code vous-même. (Évitez de copier-coller depuis Stack Overflow , qui est néanmoins une ressource très utile). Le critère principal est que le jeu fonctionne.
Ensuite, proposez de nouvelles fonctionnalités pour le jeu et essayez de les ajouter . Par exemple, si vous créez un jeu de plateforme, essayez de créer une fonctionnalité qui modifie la gravité du niveau lorsque vous appuyez sur un bouton ; ou la possibilité de se téléporter d'une partie du niveau à une autre.
Essayez de noter à quel point il a été facile/difficile d'ajouter quelque chose de nouveau à votre brouillon de travail. le montant dont vous aviez besoin pour modifier la structure du code, et ainsi de suite. Après cela, étudiez les meilleures pratiques, voyez comment d'autres développeurs suggèrent d'organiser le projet et le code (POO, SOLID, KISS), et réécrivez le jeu en tenant compte de vos nouvelles connaissances.
Ensuite, proposez à nouveau une nouvelle fonctionnalité et créez-la en utilisant ces nouvelles connaissances . Tenez compte de la manière dont le code amélioré facilite ou complique l’ajout d’une nouvelle fonctionnalité et du nombre de bogues que vous pouvez trouver.
Petit à petit, au fil de plusieurs itérations, ajoutez de la complexité au projet et réécrivez-le avec les leçons que vous avez apprises.
En supposant que vous ne lésiniez pas sur les raccourcis, vous verrez comment les décisions que vous prenez interfèrent avec ou aident à mettre en œuvre de nouvelles fonctionnalités. L'un des principaux critères de qualité du code est la facilité avec laquelle il est possible d'apporter des modifications au projet. Malheureusement, il n’existe pas de lois claires à ce sujet ; tout vient avec l'expérience.
Si vous n'avez pas envie de créer des jeux simples, vous pouvez commencer par coder des mécanismes individuels . Par exemple, vous pourriez commencer par fabriquer une « voiture » rudimentaire composée de quelques cubes roulés sur une surface – puis ajouter progressivement d’autres mécanismes au mélange.
Après cela, vous pouvez créer un jeu plus complexe et recommencer plusieurs itérations pour améliorer le projet. Si vous obtenez un résultat intéressant, vous pourrez éventuellement essayer de sortir ce jeu en magasin.
Vous pouvez essayer de publier via
Je peux vous proposer une petite astuce concernant les sorties de jeux : les jeux web/navigateur . Bien que ce format semble avoir perdu en popularité étant donné que les utilisateurs jouent désormais principalement sur des appareils mobiles, des PC ou des consoles, les jeux Web ont encore une audience suffisante pour que vous puissiez essayer de lancer votre premier projet en tant que tel. C'est également beaucoup plus simple que de le publier en tant que jeu natif sur les appareils mobiles.
La concurrence dans les jeux mobiles est féroce et votre jeu risque de passer inaperçu, à condition qu'il ne soit pas promu – et il est très difficile de promouvoir un projet sans éditeur. Pour les jeux web, il existe des portails spéciaux (par exemple : Armor Games, Newgrounds, WebGames ) qui hébergent ces projets : il est très simple d'y sortir, et vous pouvez même gagner quelque chose en publicité. N'espérez pas, mais quand même, si cela se produit, c'est un bonus agréable.
Maintenant, un petit avertissement. De nos jours, l’approche « no-code » est très populaire. C'est lorsqu'un projet est créé sans écrire de code. (Cela est également appelé « programmation par clic de souris »). Mon conseil? Mieux vaut rester à l’écart de cette approche.
Ces approches sans code sont idéales pour tester des mécanismes de jeu ou construire un prototype simple. Mais nous avons un objectif global différent – et assembler un jeu simple sans code ne vous rapprochera pas du statut de développeur.
N'oubliez pas : aucune lecture d'articles ni visionnage de guides YouTube ne peut remplacer la pratique. Ce n’est qu’en créant plusieurs (et en réalité plusieurs, pas un seul) projets que vous apprendrez quelque chose de significatif. Pour tracer votre chemin en tant que programmeur dans le développement de jeux, la mante ici est de procéder étape par étape, du simple au complexe.
J'ai essayé de donner quelques conseils pour vous lancer dans le développement de jeux et commencer à programmer des jeux. Choisir le bon langage et le bon moteur, la persévérance et la persévérance, la collecte de commentaires et l'introspection, tout cela est très important. Mais il y a un autre élément à ne pas négliger dans ce processus : s’amuser.
Si vous n'êtes pas passionné par les jeux et que vous n'y jouez pas, il est fort probable que cette entreprise ne débouchera sur rien ; une triste vérité qui s’applique à pratiquement tout travail créatif. Sans plaisir, cela deviendra juste une routine pour gagner de l’argent. Bien sûr, vous risquez de perdre tout intérêt des années plus tard, mais j'espère que d'ici là, vous aurez déjà accompli et pourrez choisir entre un travail connexe, ou vous aurez gagné suffisamment pour faire quelque chose de nouveau et d'intéressant pour vous à ce stade.
Surtout au début de votre voyage, tout travail et aucun jeu mèneront certainement à l'épuisement professionnel et à la déception.
Alors, mon dernier conseil : recherchez ce qui vous passionne , ce qui vous pousse à travailler sur un projet pendant des jours et des nuits (bien sûr, il ne faut pas le faire littéralement !). Une fois que vous avez trouvé votre motivation de conduite, celle qui ce qui serait autrement une routine typique se transformera en un défi intéressant et engageant — et cela ne manquera pas d'accélérer votre croissance professionnelle !
Également publié ici.