Guide de Programmation de Jeux - Conseils, Outils et Carrières

par Connor Taylor

Un programmeur de jeux est la personne qui réalise la vision d'un designer et la fait fonctionner dans le moteur de jeu que nous utilisons. Je travaille dans l'équipe de programmation de jeux mobiles chez Kwalee, donc pour nous c'est principalement Unity. Par exemple, si le designer veut qu'un dé roule d'une certaine manière, j'écrirai le script pour gérer la logique. Nous collaborons également avec les artistes de jeux pour s'assurer que nos jeux sont à la fois magnifiques et performants sur l'appareil.

Dans ce blog, je vais m'appuyer sur mes cinq années chez Kwalee pour partager des idées essentielles et des conseils sur le métier de programmeur de jeux. Je vous présenterai certains des langages, outils et principes que nous utilisons, mes conseils de carrière, ainsi que des astuces pour débutants et avancés.

Que Fait Un Programmeur De Jeux ?

Nous écrivons le code et aidons le jeu à devenir une réalité. Alors que les designers de jeux créent les concepts et les artistes de jeux créent les assets, un programmeur créera l'expérience fonctionnelle et jouable. Nous créons et optimisons les performances du jeu et résolvons les problèmes identifiés.

Nous veillons à ce qu'un jeu soit agréable et fonctionne avec une haute performance. Pour cela, nous devons nous assurer que le code lui-même est propre et extensible, ce qui est plus difficile qu'il n'y paraît. Nous utilisons des normes de codage pour maintenir une qualité constante dans toutes nos équipes - un document qui peut contenir des normes de nommage, de formatage, etc. Cependant, parfois les choses ne sont pas toujours aussi simples et de temps en temps, vous devez penser en dehors des sentiers battus pour faire avancer les choses à temps.

Nos responsabilités incluent également de nous assurer que le jeu fonctionne bien sur le matériel de l'utilisateur final. Par exemple, dans nos jeux mobiles, nous devons éviter que les appareils plus anciens ne surchauffent, donc nous travaillons avec les artistes pour optimiser le nombre d'appels de dessin. Un appel de dessin est une commande envoyée par l'Unité Centrale de Traitement (CPU) au Processeur Graphique (GPU) pour rendre un objet à l'écran - il indique au GPU de dessiner des éléments graphiques comme des textures, des maillages ou des shaders. Nous devons minimiser le nombre de ces appels de dessin dans notre jeu car en avoir trop peut causer des problèmes comme des baisses de fréquence d'images ou des saccades. Il existe de nombreuses façons de résoudre ce problème, mais des choses comme regrouper plusieurs objets en un seul appel de dessin ou réduire le nombre de textures et de matériaux uniques peuvent aider. C'est particulièrement important pour le mobile, car il existe tant d'appareils différents sur le marché, tous avec des spécifications techniques variées.

Quels Sont Les Principaux Langages De Programmation De Jeux ?

La plupart de notre temps en tant que programmeurs de jeux au quotidien est consacré à écrire des scripts dans une gamme de langages de programmation - nous sommes après tout des développeurs de logiciels d'un type différent. Il y a beaucoup de langages à choisir. Certains semblent plus faciles que d'autres, mais une fois que vous avez appris et maîtrisé un, vous pouvez certainement en apprendre d'autres - le principal défi est de mettre le pied dans la porte.

Voici une introduction à certains des langages de programmation de jeux les plus populaires :

  • C# - un langage de programmation polyvalent et populaire largement utilisé dans le développement de jeux. C'est l'un des plus faciles à apprendre si vous êtes débutant. L'une de ses meilleures fonctionnalités est la collecte automatique des ordures - il gère l'allocation de mémoire pour vous - très utile pour des programmeurs occupés comme nous.
  • C++ - en revanche, c'est un langage non géré, vous devez donc allouer et désallouer manuellement la mémoire, ce qui le rend plus complexe et difficile. Cependant, il permet une plus grande vitesse, contrôle et performance.
  • Java - comme C#, Java a sa propre gestion de la mémoire et collecte des ordures, ce qui facilite le travail des développeurs sans se perdre dans les détails. Il est largement utilisé dans le développement web et les applications d'entreprise, et bien qu'il ne soit peut-être pas (de manière discutable) le premier choix pour le développement de jeux, il reste une option solide pour créer des applications évolutives et efficaces.
  • Swift - c'est le langage natif d'Apple pour créer des applications et des jeux pour iOS et macOS. Cependant, cela signifie qu'il est moins utile pour le développement multiplateforme - puisque nous visons toujours à publier nos jeux mobiles à la fois sur Android et iOS.

Comment Devenir Programmeur De Jeux ?

Il existe une gamme de façons différentes de devenir programmeur de jeux. Mon parcours est assez conventionnel - j'ai étudié le Design et la Programmation de Jeux à l'Université de Staffordshire. À l'origine, je pensais me diriger vers l'art du jeu - j'ai toujours été très passionné par l'art enfant, et j'ai vraiment apprécié les modules d'art à l'université, mais j'ai découvert que j'aimais vraiment créer du gameplay. Il me fallait plusieurs jours pour créer un modèle haute poly, mais je pouvais faire voler un canard et exploser en moitié moins de temps. Le prototypage me permet de voir le résultat rapidement devant moi.

Cependant, la beauté de la programmation de jeux est qu'elle est accessible à la plupart des gens même si vous ne passez pas par un parcours traditionnel. J'avais des amis à l'uni âgés de 50 ans et plus - il n'est jamais trop tard pour découvrir quelque chose de nouveau. Chez Kwalee, nous avons même embauché quelqu'un qui a principalement appris via des vidéos YouTube et créé un jeu pour le plaisir. Il y a tant d'opportunités pour les nouveaux talents enthousiastes aujourd'hui. En regardant les portfolios des nouveaux étudiants, ils ont tellement plus à leur actif. Nous voyons passer de formidables talents et c'est une période passionnante dans l'industrie.

Une question que vous vous posez probablement - l'IA affectera-t-elle la programmation en tant que carrière ? Elle peut être extrêmement utile, et elle s'améliore. Parfait si vous avez besoin de quelque chose expliqué ou si vous êtes coincé dans un problème. Vous pouvez l'utiliser pour résoudre des bugs ou refactoriser ("nettoyer") votre code en le collant dans le dernier ChatGPT. Cependant, lorsque nous examinons les portfolios, nous voulons voir le travail que vous avez fait et dont vous êtes fier, l'IA est bien à utiliser, mais essayez de ne pas l'utiliser comme substitut de vos propres compétences.

Quelle Est Une Journée Typique Dans La Vie D'un Programmeur De Jeux ?

Laissez-moi vous donner un exemple basé sur ma vie. Je suis Lead Programmeur (je l'appelle mon travail de rêve) donc c'est un excellent mélange de pratique et de gestion d'autres programmeurs !

Une journée typique dans mon monde est d'arriver, prendre un latte, puis vérifier les bugs ou blocages pour l'équipe QA. Vérifiez avec l'équipe si quelqu'un a besoin de moi pour débloquer son travail. Ensuite, la musique s'allume et la liste des tâches est affichée. Nous partageons des vidéos de progression via Slack pour obtenir des retours rapides, tout en passant entre 2-3 projets pour soutenir les membres de mon équipe. Nous passons également beaucoup de temps à investir dans des systèmes partagés pour rendre notre programmation plus efficace - tout doit être maintenu, mis à jour et réparé régulièrement pour que tout fonctionne bien.

Conseils Pour Débutants En Programmation De Jeux

Si vous débutez et aspirez à devenir un programmeur à part entière, voici mes conseils pour débutants !

  • Il y a tellement à apprendre en ligne, sur YouTube et il y a tellement de jeux d'exemples que vous n'avez pas d'excuse pour ne pas apprendre ! Les moteurs populaires sont gratuits et sont très amusants à utiliser !
  • À l'opposé complet du spectre, il peut avoir 30 ans, mais vous devriez essayer de lire le livre influent "Design Patterns: Elements of Reusable Object-Oriented Software" par les soi-disant auteurs Gang of Four, qui a introduit certaines des bases des motifs de jeux que nous utilisons tous les jours en programmation.
  • Vous pouvez avoir vos propres idées, mais assurez-vous de commencer simple pour vous ancrer dans les bases.
  • Quand vous n'êtes pas lié à un projet commercial, vous pouvez écrire autant de code que vous le souhaitez, alors amusez-vous à créer des choses folles.
  • Construire un portfolio est vraiment essentiel (et c'est comme ça que j'ai obtenu mon emploi). Mais faites très attention à ne pas simplement télécharger le même vieux travail standard de l'université, car nous verrons beaucoup de candidatures avec ceux-ci. Même passer une journée supplémentaire à re-skinner et ajouter plus de fonctionnalités vous aidera à vous démarquer.
  • Créer votre propre jeu réel est également une idée intelligente - c'est très bon marché d'obtenir un jeu sur Google Play, alors sortez quelque chose que vous pouvez montrer aux recruteurs/éditeurs/famille/animaux de compagnie sur votre téléphone. Vous pouvez même gagner quelques milliers de dollars par an jusqu'à ce que vous soyez installé avec un travail exclusif à temps plein, c'est un bonus ! Ou cela pourrait vous tenter de créer votre propre jeu complet et de vous associer à un éditeur.
  • N'apprenez pas seulement la programmation - apprenez l'art, le design, QA et d'autres disciplines avec lesquelles vous interagirez. Par exemple, il vaut la peine de comprendre les méthodes de QA car vous pouvez tomber dans le piège de supposer que quelque chose fonctionne, mais vous devez le jouer en tant qu'utilisateur, pas en tant que personne qui a écrit le code et a une vue définie de comment vous vous attendez à ce qu'il "devrait être joué". Soyez destructif, essayez les choses aléatoires que les gens pourraient faire, en appuyant sur des boutons au hasard et d'autres comportements bizarres.

Conseils Pour Programmeurs Avancés

Voici quelques conseils qui m'ont aidé à passer de junior, à programmeur, à senior à lead.

  • Vous pouvez toujours bénéficier de plus d'apprentissage, et rappelez-vous que sans erreurs nous ne pouvons pas apprendre !
  • Si vous êtes vraiment passionné par quelque chose - vous pourriez devenir plus spécialisé. Par exemple, si vous aimez jouer avec les shaders et les pipelines de rendu, apprenez-en plus sur la façon d'utiliser les shaders graphiques pour étendre votre capacité à rendre des effets visuels complexes et utilisez les pipelines de rendu pour optimiser la performance ou pour créer des effets impressionnants.
  • Vous pourriez créer quelque chose de vraiment cool, comme un système complexe, le télécharger sur un magasin d'assets pour le présenter si votre contrat le permet et montrer votre travail avancé. Vous pourriez développer une niche en tant que type particulier de programmeur, comme un programmeur de gameplay, programmeur serveur, programmeur graphique ou programmeur multijoueur.
  • Sinon, vous pouvez prendre la voie de la gestion comme moi, et encadrer les gens. Ma tactique pour faire progresser ma carrière a été d'absorber de nouvelles responsabilités. D'abord, j'ai commencé à améliorer de petites choses, c'est-à-dire de petits changements de workflow. Ensuite, j'ai facilité les processus en utilisant des modèles pour gagner du temps lors de la création de nouveaux projets. Puis j'ai pris goût au mentorat et à la gestion, ce qui m'a aidé à gagner plus de confiance et maintenant à participer à des revues par les pairs, des revues de code, à animer des ateliers et à diriger des équipes sur des projets.

Que vous travailliez en équipe ou en tant que manager, il est tout aussi important de donner des éloges que de donner des critiques constructives. Lors de la révision du code, il est bon d'encourager les gens !

Quels Sont Les Principes Clés De La Programmation De Jeux ?

Il y a des sujets clés qui doivent absolument figurer dans un blog sur la programmation de jeux. Voici quelques-unes des choses les plus importantes que nous considérons.

Contrôle de Source/Contrôle de Version

Tout comme vous avez des points de sauvegarde dans les jeux, il y a des points de sauvegarde dans le développement de projets. Ils agissent comme un stockage général pour le projet et signifient que trois ou quatre programmeurs peuvent travailler sur un système simultanément, créer une modification et la pousser vers le serveur. Cela nous permet de suivre ces changements et de revenir facilement en arrière si quelque chose devait casser. Si deux développeurs travaillent sur le même fichier, ce fichier fera partie d'une fusion, s'il y a des conflits, nous pouvons alors les résoudre manuellement ou choisir les changements d'un individu à appliquer. Cela arrivera souvent lors de l'utilisation de Prefabs ou de Scènes dans Unity.

Ces termes se chevauchent parfois, mais généralement, le contrôle de source se concentre sur le code et le contrôle de version inclut tous les fichiers du projet, les assets et la documentation.

Lorsque vous commencez à utiliser le Contrôle de Source, cela peut sembler un peu effrayant au début, cela peut sembler très accablant et quand il s'agit de conflits, vous pouvez vous retrouver incertain sur ce qu'il faut faire. Mais la nature du contrôle de version vous aide à enregistrer des moments dans le temps, donc si vous mettez à jour fréquemment et utilisez des messages de commit détaillés, c'est incroyablement utile et sûr. Vous pouvez revenir à plusieurs points, avoir plusieurs branches, etc. Pensez-y comme le filet de sécurité des développeurs, nous pouvons donc éviter une version de Toy Story 2 de Pixar - supprimée accidentellement et ensuite récupérée à partir d'un disque dur chez leur directeur technique, au lieu de cela, tout est en sécurité sur le serveur.

Programmation Orientée Objet

C'est le type de programmation que nous utilisons principalement chez Kwalee. Il utilise des objets pour représenter des choses réelles ou des concepts abstraits et vise à organiser la base de code en utilisant des principes qui reflètent la façon dont nous voyons et interagissons avec les objets dans le monde réel. Il aide à maintenir des systèmes complexes en organisant le code en classes distinctes que vous pouvez réutiliser, faire évoluer et maintenir plus facilement.

Bien sûr, il y a débat sur si c'est bon ou non. Bien qu'il ne soit pas le plus performant, il fonctionne bien. Tout comme avec les langages, chacun a ses propres avantages et inconvénients et vous devriez en apprendre un pour commencer et vous familiariser avec la façon dont les langages et les compilateurs (traducteurs de code humain en code machine) fonctionnent. Vous pouvez également envisager d'autres types, tels que la programmation fonctionnelle qui la traite plus comme des maths, la programmation logique qui utilise des faits et des règles ou la programmation procédurale qui utilise des données étape par étape.

Modèles de Programmation

Ce sont des solutions réutilisables très utiles qui peuvent aider avec les problèmes courants auxquels vous ferez face dans votre conception logicielle. Ils vous offrent un modèle pour résoudre un problème, vous n'avez donc pas à réinventer la roue à chaque fois et pouvez suivre des solutions éprouvées.

Par exemple, le modèle de conception Singleton vous aide à vous assurer qu'il n'y a qu'une seule instance d'une classe telle qu'un gestionnaire de paramètres de jeu dans tout votre jeu, et vous donne un point d'accès global à celui-ci. Le code pour ce modèle signifie qu'il n'existe qu'une seule instance de la classe SettingsManager, vous n'avez donc pas besoin de la recréer ou de la dupliquer chaque fois que vous en avez besoin.

Il y a aussi le modèle Factory qui peut vous aider à créer des objets de manière plus organisée et flexible. Vous pouvez définir des méthodes pour générer des types spécifiques d'objets, comme des personnages ou des éléments, en fonction de paramètres d'entrée, vous permettant de créer facilement plus d'objets d'un type similaire sans partir de zéro à chaque fois.

J'espère que ce blog vous a donné un avant-goût de la programmation de jeux, que vous soyez nouveau dans le domaine ou un programmeur expérimenté ! Si vous êtes une personne travailleuse mais amusante, vous conviendrez à notre équipe, alors découvrez-en plus sur les carrières chez Kwalee. Sinon, vous pouvez en apprendre plus sur nos jeux mobiles ou édition et découvrir ce que nous publions en tant que développeur et éditeur.

À propos de l'auteur:

Connor Taylor, Lead Game Programmer chez Kwalee, excelle à créer des jeux et à encourager une équipe solidaire et amusante. Avec 5+ ans d'expérience, il a créé des succès comme Jetpack Jump et guide d'autres en développement Unity.

Partager cet article: