Je pense que tous les développeurs de jeux devraient utiliser tous les outils possibles pour améliorer leur flux de travail, plutôt que de tout faire à la main ou à partir de rien. Mais qu'est-ce que je veux dire par outils? Éditeurs de niveaux, débogueurs, analyses…? Tous ceux-là et plus encore! Dans cet article, je vais détailler les différents types d’outils disponibles pour les développeurs de jeux et expliquer pourquoi vous souhaitez les utiliser..
Lorsque vous développez un jeu, le moment viendra certainement où vous devrez commencer à ajouter du contenu. Cela peut être une tâche facile au début: configurez simplement des tableaux et des objets dans votre code. Mais au fur et à mesure que votre développement progresse, je peux presque vous garantir que votre code de contenu commencera à paraître compliqué..
Imaginez que vous disposiez de dix niveaux de jeu de plate-forme disposés en code, avec les positions, les objets, les objets, les tuiles et tout le reste de l’ennemi. En le testant, vous remarquerez que vous devez modifier la position d'apparition d'un ennemi. Le contenu du niveau est dans ce gros fichier avec toutes les informations pour tous les niveaux. Cela ressemble sûrement à un casse-tête de parcourir tout le code à la recherche de la ligne exacte à modifier. Et cela n’envisage même pas les changements qui pourraient affecter d’autres changements - comme la position d’une plate-forme sur laquelle un ennemi se tient debout..
Bien sûr, vous pouvez également visualiser votre niveau et pouvoir le modifier à la volée. Ce n'est pas possible en regardant le code.
Écrire des outils pour vous aider dans votre processus de développement de jeux est une approche plus compliquée mais plus gratifiante. Vous pourriez écrire un outil qui traduirait visuellement tout ce code de contenu dans le niveau lui-même et, à mesure que vous le modifieriez, l’outil modifierait le code de contenu. Vous pouvez également créer des outils permettant de créer davantage de contenu pour votre jeu, de déboguer votre jeu et même de faciliter le déploiement sur plusieurs plates-formes. Ou vous pourriez monter d'un niveau supérieur et rendre l'outil disponible à vos joueurs et les laisser créer du contenu pour votre jeu également!
Cela peut même augmenter le succès de votre jeu, comme vous pouvez le constater si vous regardez autour de vous pour des jeux récents qui le font déjà..
Jetons un coup d'œil aux différents outils que vous pouvez créer, à la manière dont chacun peut vous aider à ajouter et à gérer du contenu à votre jeu, ainsi qu'aux difficultés rencontrées pour les créer..
C'est la section la plus large. Un outil de création est tout ce qui ajoute du contenu à votre jeu - éléments, personnages, niveaux, musique… Ces outils sont ceux avec lesquels vous passerez le plus de temps, car la finition de votre jeu s'articulera autour d'eux: création des niveaux, des éléments et ennemis; mettre tout ensemble polir chaque détail dans ses moindres détails. Chacune de ces tâches peut impliquer un outil de création..
Même si l'éditeur de niveau ne sera utilisé que par vous ou votre équipe, vous devez rendre son interface intuitive et facile à utiliser..
Supposons que vous ayez un jeu basé sur les niveaux. Afin de créer un bon outil pour éditer vos niveaux, la première tâche consiste à faire en sorte que l'outil représente visuellement le niveau pour vous. Cela signifie qu'il doit vous montrer exactement à quoi ressemblera le niveau de vos joueurs. Après cela, il doit vous permettre d’éditer le contenu d’une manière ou d’une autre pour que vous puissiez réellement créer le niveau. Cela se fait via une interface. Lisez-les attentivement car c’est important: même si l’éditeur de niveaux ne sera utilisé que par vous ou votre équipe, vous devez rendre son interface intuitive et facile à utiliser. Pourquoi? Parce que personne n'aime travailler avec quelque chose qui nécessite que vous appuyiez sur une combinaison de boutons ou que vous cliquiez sur un tas de boutons afin d'ajouter quelque chose d'aussi simple qu'un objet à l'écran. Et cela inclut vous et votre équipe.
Même si c'est vous qui l'avez créé et que vous connaissez tout sur l'éditeur, créer une interface facile à utiliser aide tout le monde à ajouter du contenu au jeu. Et si quelqu'un oublie le raccourci pour marquer un objet comme "collidable", par exemple, alors avoir une interface intuitive sera une aide précieuse.
Voici un exemple concret: un éditeur de niveau simple que j'ai créé pour un jeu à réaction en chaîne Windows Phone 7:
Comme vous l'avez peut-être remarqué, l'intégralité de l'éditeur de niveaux existe dans le logiciel Adobe Flash Professional. Je n'ai pas créé d'application distincte. Flash Pro était un environnement parfait: il ne nécessitait aucun effort pour créer quelque chose qui gérait pour moi les graphiques à l'écran, car je cherchais un outil simple pour m'aider à créer les niveaux du jeu. La seule chose que je devais faire était de créer une extension très simple (comme vous pouvez le voir sur la vidéo) pour enregistrer toutes les informations de niveau quelque part pour moi (j'ai utilisé un fichier XML).
Flash Pro s’occupait de tout le reste: je pouvais régler la taille de l’écran exactement comme celle de mon jeu, je pouvais placer tous les objets à leur taille réelle sur l’écran et insérer des guides pour m'aider à visualiser où iraient les coups après un objet avait explosé. Le processus de test était aussi simple que de "compiler" le projet en Flash, ce qui ouvrirait une fenêtre vous demandant où sauvegarder le fichier XML; quand je compilerais à nouveau mon jeu, il lirait le XML mis à jour.
Maintenant, imaginons que vous avez un jeu de tir-up. Avez-vous déjà essayé d'en créer un auparavant? Il est ennuyeux (et compliqué) de configurer tous ces mouvements ennemis et ces schémas de tir à l'aide du code lui-même, et il est également fastidieux de définir le minutage..
Voici un éditeur de niveau shoot-'em-up que j'ai créé comme une autre expérience:
Ceci est un exemple de quoi ne pas faire. Bien que mon éditeur ait la fonctionnalité de base de vous permettre de configurer les schémas de déplacement de l'ennemi à votre guise et même d'y inclure des fonctions d'aide (dans ce cas, reflétant l'ennemi, je l'ai modifié pour créer un effet de "miroir" lorsque les ennemis sont apparus dans le jeu), l'interface était un échec complet.
Je n'avais aucun moyen de visualiser tout le niveau en même temps: tout ce que je pouvais faire était de visualiser vague par vague. Avez-vous déjà imaginé combien il serait douloureux de changer quelque chose de la sorte? Si, par exemple, je voulais retarder de 400 millisecondes le temps de réapparition entre les ennemis de la vague actuelle, j’aurais besoin de passer par toutes les vagues suivantes et d’ajouter (400ms * nombre d'ennemis changés
) à toutes les heures de ponte initiales des autres vagues. Pour cette raison très fondamentale, j'ai fini par devoir recréer l'outil à partir de zéro..
Créer des outils de création est une tâche très difficile. Peut-être que ce sont les plus difficiles de tous les autres outils à créer, puisque vous allez les utiliser quotidiennement pour créer votre jeu. Vous devez les rendre aussi rapides et faciles à utiliser que possible, et ils ne doivent pas entraver la création du contenu de votre jeu. Si vous constatez que vous devez passer des minutes, voire des heures, à modifier des éléments de votre éditeur parce que vous avez modifié quelque chose qui devait être corrigé, vous voudrez peut-être repenser si l'outil remplit son objectif..
Une excellente approche consiste à créer des éditeurs dans le jeu. Ces outils vous permettent de modifier le contenu pendant l'exécution du jeu et de tester ce que vous avez modifié au moment de l'exécution..
Des outils tels que ceux-ci poussent votre productivité à la limite, car vous avez un retour instantané sur les modifications que vous avez apportées. Certains éditeurs vous permettent de modifier même la valeur des attributs au fur et à mesure de l'exécution de votre jeu, vous permettant ainsi d'exécuter des commandes en temps réel et de regarder les résultats. Vous pouvez également "plier le temps" et enregistrer les actions que vous avez effectuées dans le jeu, puis modifier les attributs de votre jeu (gravité, par exemple) et voir à quoi ressemblerait le mouvement du joueur effectuant les mêmes actions dans ce nouvel environnement..
Jetez un coup d'œil à cet exemple d'éditeur de carte intégré à un jeu en développement, Concerned Joe:
Ce sont probablement les meilleurs amis du programmeur. Lorsque quelque chose ne va pas avec un jeu, les outils de débogage vous aident à savoir ce que c'était. Ils peuvent également afficher des statistiques sur votre jeu, examiner le temps de traitement de chaque fonction appelée dans votre code, fournir des vidages de la mémoire en cas de défaillance, créer des journaux tant que l'application est en cours d'exécution, etc..
Lors de la programmation d'un jeu, un programmeur utilise souvent bon nombre de ces outils, notamment le propre débogueur de l'environnement de développement, le cas échéant. Cependant, de nombreux autres outils peuvent être conçus pour faciliter le processus de développement de jeux dans ce domaine..
Pour un jeu très complexe, vous voulez souvent pouvoir récupérer la pile d'appels de fonction en cas de plantage (pour savoir exactement quelles lignes de code ont provoqué le plantage) et générer des journaux aussi souvent que vous le pouvez. Bien entendu, vous devez pouvoir interpréter ces journaux. Peut-être qu'un outil pour vous aider à analyser les journaux pourrait être utile…
Par exemple, regardez cet outil créé par Adobe, appelé SWF Investigator:
Cet outil, créé pour analyser les fichiers SWF, permet au développeur d’examiner divers aspects de son jeu, y compris l’analyse de code (il est capable de désassembler le fichier SWF afin d’examiner exactement ce que fait l’application), ce qui est très important pour un ordinateur. développeur de jeux - en particulier lors de l'optimisation de code.
La tâche d'écrire un outil de débogage est cependant très difficile. Pas parce qu'il doit avoir une interface "parfaite" comme les outils de création; souvent, ces outils ne sont utilisés que par les programmeurs et l'équipe de développement principale, et l'interface importe peu cette beaucoup. (Bien sûr, il doit toujours être en mesure de vous montrer tout ce qui est important et de vous permettre de manipuler les choses avec facilité.) Non, c'est difficile en raison de l'énorme quantité de détails techniques qui doivent y figurer..
Cependant, ces outils pourraient vous aider à rendre votre jeu plus performant sur les plateformes de vos joueurs, ce qui est bien sûr très important..
Les outils de déploiement sont nécessaires lorsque vous avez une équipe travaillant sur différents aspects du jeu (peut-être un artiste et un programmeur) et lorsque vous développez pour plusieurs plates-formes. Lors du développement pour plusieurs plates-formes, vous devez prendre en compte la taille de l'écran de chaque appareil (en particulier pour les jeux mobiles) et les limites techniques de chaque plate-forme..
Imaginez développer un jeu pour smartphone avec une résolution de 1280x768 et une tablette avec une résolution de 1920x1200. Vous voudrez probablement utiliser deux ensembles d’images différents pour chaque appareil, car vous ne voulez pas utiliser d’images pour le smartphone, ni les redimensionner pour la tablette - c’est moche. De plus, votre smartphone ne dispose probablement pas de suffisamment de mémoire et de puissance de traitement pour gérer les grandes images que vous utilisez pour votre tablette. Pour cette raison, un outil de déploiement est nécessaire pour vous aider à gérer les actifs de votre jeu..
En parlant de gestion des ressources, supposons maintenant que vous travailliez dans une équipe composée d'un artiste et d'un programmeur. L'artiste va certainement créer beaucoup de ressources artistiques, mais comment le programmeur va-t-il gérer le référencement de ces fichiers artistiques dans le jeu? L'approche la plus paresseuse serait simplement de modifier ou d'ajouter le nom du fichier à chaque endroit où le code l'utilise chaque fois que l'artiste modifie ou ajoute des fichiers artistiques. Cependant, pour les grands projets, cela n’est pas possible car cela prendrait beaucoup de temps de développement.
Un bon moyen de le gérer serait de créer un outil de gestion des actifs artistiques pour l’équipe: l’artiste spécifie simplement quel fichier art se réfère à quoi, et l’outil convertira automatiquement les noms des fichiers en un nom prédéfini défini par l’outil lui-même. . De cette façon, le programmeur n'a pas besoin de s'inquiéter de changer de nom dans le code chaque fois que l'artiste change quelque chose.
Ces outils sont faciles à négliger, mais vous devez absolument les utiliser dans vos jeux. Des outils post-publication vous aident à suivre l'évolution de votre jeu sur le marché et à en recevoir les performances..
Ceci est très important pour les jeux viraux sur le Web et sur mobile, mais les jeux pour ordinateurs de bureau peuvent également tirer un grand profit de ces outils. Ils vous laisseront savoir où le jeu est disponible et combien de joueurs ont joué votre jeu. Ils peuvent aller encore plus loin: des outils tels que Playtomic, Mochi Analytics et GamesAnalytics permettent de savoir combien de fois un niveau donné a été joué, combien de fois un bouton a été cliqué, combien de joueurs ont abandonné votre jeu (à la première minute, aux cinq premières et ainsi de suite) et plus encore. Vous pouvez ensuite utiliser ces informations pour déduire qu'un niveau particulier est trop difficile (en fonction du nombre de joueurs qui ne l'achèvent pas), puis résoudre le problème..
Et bien plus encore: vous pouvez également créer des outils permettant de suivre la réception publique de votre jeu sur Internet, en utilisant des robots collectant des informations sur des publications Facebook ou des Tweets contenant le nom de votre jeu, en vous indiquant les sites de critiques qui ont examiné votre jeu, etc. N'oublions pas non plus Google Alerts, un excellent outil qui vous avertit lorsqu'un terme spécifique apparaît sur le Web..
Bien que vous ayez vraiment besoin de utilisation outils pour aider votre processus de développement de jeu, parfois vous constaterez que vous n'avez pas besoin de réellement créer eux, car la communauté des développeurs de jeux a déjà créé de nombreux outils.
De nombreux excellents outils de développement de jeux sont disponibles en ligne, vous pouvez les utiliser - cela prend un peu de temps pour les trouver. Mais utilisez-les avec prudence: si vous estimez qu'un outil ne fait pas exactement ce dont vous avez besoin, il peut être préférable d'écrire le vôtre plutôt que de perdre du temps à le tordre pour l'adapter à votre jeu. C'est souvent le cas des outils spécifiques à un jeu ou à un genre..
En fait, créer un outil est un sujet énorme qui mérite plusieurs articles, mais je vais vous donner un conseil: vous aurez souvent besoin de normaliser la façon dont vous gérez le contenu de votre jeu. Cela signifie que vous devez trouver un moyen de stocker les informations de votre jeu, de pouvoir les charger et de les sauvegarder. La plupart des gens utilisent XML ou JSON pour décrire des informations, mais vous pouvez créer votre propre format binaire si vous avez besoin d'un moyen plus spécifique de décrire les choses..
C'est la fin de mon analyse des différents outils que vous pouvez utiliser pour vous aider dans le développement de votre jeu. J'espère que vous avez apprécié l'article et en avez tiré les leçons! Si vous avez des questions, n'hésitez pas s'il vous plaît à demander.
Note de l'éditeur: Nous allons dresser une liste d’excellents outils tels que Ogmo Editor, Tiled et SFXR. Si vous avez des suggestions, laissez-nous savoir!