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

Un programmeur de jeux est la personne qui prend 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 aussi avec les artistes pour que nos jeux soient magnifiques et performants sur les appareils.

Dans ce blog, je m'appuierai sur mes cinq ans chez Kwalee pour partager des idées et conseils essentiels sur le métier de programmeur de jeux. Je vous guiderai à travers certains 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 créent les concepts et les artistes créent les visuels, un programmeur crée l'expérience fonctionnelle et jouable. Nous optimisons la performance du jeu et résolvons les problèmes identifiés.

Nous veillons à ce qu'un jeu soit agréable et performant. Pour cela, nous devons nous assurer que le code est propre et extensible, ce qui est plus difficile qu'on ne le pense. Nous utilisons des normes de codage pour maintenir une qualité cohérente dans toutes nos équipes - un document qui peut contenir des normes de nommage, de formatage, etc. Cependant, parfois, les choses ne sont pas toujours simples et vous devrez peut-être réfléchir différemment pour respecter les délais.

Nos responsabilités incluent également de s'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 chauffent trop, donc nous travaillons avec les artistes pour optimiser les appels de dessin. Un appel de dessin est une commande envoyée du CPU au GPU pour rendre un objet à l'écran - il dit au GPU de dessiner des éléments graphiques comme les textures, les maillages ou les shaders. Nous devons minimiser ces appels dans notre jeu car en avoir trop peut provoquer des baisses de FPS ou des saccades. Il y a de nombreuses façons de résoudre cela, comme regrouper plusieurs objets en un seul appel de dessin ou réduire le nombre de textures et matériaux uniques. Ceci est particulièrement important pour mobile, car il y a tant de dispositifs 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 est passé à écrire des scripts dans un éventail de langages de programmation - nous sommes après tout des développeurs 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 en avez appris et maîtrisé un, vous pouvez définitivement en apprendre d'autres - le principal défi est d'entrer dans le métier.

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 déchets - donc il gère l'allocation de mémoire pour vous - très utile pour les 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 dispose de sa propre gestion de mémoire et collecte des déchets, ce qui facilite la gestion de la mémoire pour les 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 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 apps et 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 sur Android et iOS.

Comment Devenir Programmeur De Jeux ?

Il y a plusieurs façons de devenir programmeur de jeux. Mon parcours est assez classique - j'ai étudié le Design et la Programmation de Jeux à l'Université de Staffordshire. Au départ, je pensais me diriger vers l'art de jeu - j'ai toujours été passionné par l'art enfant, de plus, j'ai vraiment apprécié les modules d'art à l'université, mais là-bas j'ai découvert que j'aimais vraiment créer du gameplay. Il pouvait me falloir plusieurs jours pour créer un modèle en haute résolution, mais je pouvais faire voler un canard et exploser en deux fois moins de temps. Le prototypage me permet de voir le résultat rapidement devant moi.

Cependant, la beauté de programmer des jeux est que c'est accessible à la plupart, même si vous ne suivez pas une voie traditionnelle. J'avais des amis à l'université â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 appris principalement grâce à des vidéos YouTube et a créé un jeu pour le plaisir. Il y a tellement d'opportunités pour les talents frais et avides aujourd'hui. En regardant les portfolios des nouveaux étudiants, ils en ont beaucoup plus dans leur manche. Nous voyons passer des talents fantastiques et c'est un moment passionnant 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 s'améliore. Parfait si vous avez besoin d'une explication ou si vous êtes bloqué sur 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 un substitut à vos propres compétences.

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

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

Une journée typique dans mon monde est de se lever, prendre un latte, puis double-checker les bugs ou les obstacles pour l'équipe QA. Vérifier avec l'équipe si quelqu'un a besoin que je fasse quelque chose pour débloquer leur travail. Ensuite, la musique s'allume et la liste des tâches est visible. Nous partageons des vidéos de progrès via Slack pour obtenir des commentaires rapides, tout en jonglant entre 2-3 projets pour soutenir les membres de mon équipe. Nous investissons également beaucoup de temps 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 De Programmation De Jeux Pour Débutants

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

  • Il y a tellement à apprendre en ligne, sur YouTube et il y a tant d'exemples de jeux que vous n'avez pas d'excuse pour ne pas apprendre ! Les moteurs populaires sont gratuits et très amusants à utiliser !
  • À l'autre extrémité 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 auteurs surnommés Gang of Four, qui a introduit certaines des bases des motifs de jeu que nous utilisons quotidiennement en programmation.
  • Vous avez peut-être vos propres idées, mais assurez-vous de commencer simplement pour maîtriser les bases.
  • Lorsque 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 soyez très prudent de ne pas simplement télécharger le même travail universitaire standard, car nous verrons de nombreuses candidatures avec ceux-ci. Même passer une journée supplémentaire à refaire l'apparence et à ajouter plus de fonctionnalités vous aidera à vous démarquer.
  • Créer votre propre jeu réel est aussi une idée intelligente - c'est très bon marché pour mettre un jeu sur Google Play, alors sortez quelque chose que vous pouvez montrer aux recruteurs/éditeurs/famille/animaux sur votre téléphone. Vous pourriez même gagner quelques milliers de dollars par an jusqu'à ce que vous soyez en place avec un emploi à plein temps exclusif, 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, le QA et d'autres disciplines avec lesquelles vous interagirez. Par exemple, cela 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 quelqu'un qui a écrit le code et a une vue définie de comment vous vous attendez à ce qu'il "doit être joué". Soyez destructeur, essayez les choses aléatoires que les gens pourraient faire, appuyez sur des boutons aléatoires et d'autres comportements bizarres.

Conseils Pour Programmeurs Avancés

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

  • Vous pouvez toujours bénéficier de plus d'apprentissage, et rappelez-vous qu'à part des erreurs nous n'apprenons pas !
  • 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 l'utilisation des shaders graphiques pour étendre votre capacité à rendre des effets visuels complexes et utilisez les pipelines de rendu pour optimiser la performance ou 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'actifs 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, tel qu'un programmeur de gameplay, de serveur, de graphisme ou de multijoueur.
  • Alternativement, vous pouvez suivre la voie du management comme moi, et encadrer les personnes. Ma tactique pour progresser dans 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.. Puis j'ai simplifié les processus en utilisant des modèles pour gagner du temps lors de la création de nouveaux projets. Ensuite, j'ai pris goût au mentorat et à la gestion, ce qui m'a aidé à gagner plus de confiance et maintenant je participe à des revues par les pairs, des revues de code, des ateliers de formation et je dirige 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 des critiques constructives. Lors de la révision du code, il est bon de motiver les gens !

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

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

Contrôle de Source/Version

Tout comme vous avez des points de sauvegarde dans les jeux, il y a des points de sauvegarde dans le développement de projet. 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 un changement et le pousser sur le serveur. Cela nous permet de suivre ces changements et de revenir facilement en arrière si quelque chose devait se 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 en général, le contrôle de source se concentre sur le code et le contrôle de version inclut tous les fichiers de projet, actifs et 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 lorsqu'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 à sauvegarder 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, pour éviter une version de Toy Story 2 de Pixar - accidentellement supprimée puis récupérée à partir d'un disque dur chez le 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 comment nous voyons et interagissons avec les objets dans le monde réel. Cela aide à maintenir des systèmes complexes en organisant le code en classes distinctes que vous pouvez réutiliser, étendre et maintenir plus facilement.

Bien sûr, il y a débat sur si c'est bien ou non. Bien qu'il ne soit pas le plus performant, il fonctionne bien. Comme avec les langages, chacun a ses propres avantages et inconvénients et vous devriez en apprendre un pour commencer et comprendre comment fonctionnent les langages et les compilateurs (traducteurs de code humain en code machine). 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 étapes.

Motifs de Programmation

Ce sont des choses merveilleusement utiles - des solutions réutilisables qui peuvent aider avec les problèmes courants que vous rencontrerez dans votre conception logicielle. Ils vous donnent 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 motif de conception Singleton vous aide à assurer qu'il n'y a qu'une seule instance d'une classe telle qu'un gestionnaire de paramètres de jeu tout au long de votre jeu, et vous donne un point d'accès global. Le code pour ce motif signifie qu'il n'y a qu'une seule instance de la classe SettingsManager, donc vous n'avez pas besoin de la recréer ou de la dupliquer à chaque fois que vous en avez besoin.

Il y a aussi le motif 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 objets, en fonction de paramètres d'entrée, vous permettant de créer facilement plus d'objets d'un type similaire sans repartir 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 sur nos jeux mobiles ou l'édition et en savoir plus sur ce que nous publions en tant que développeur et éditeur.

Partager cet article: