Game designer à partir de zéro: comment commencer à créer des jeux sans expérience

Golubev Nikita, auteur commercial et traducteur, spécialement pour le blog Netology , a traduit un article de la développeur de jeux Angela He sur la façon de créer votre premier jeu sans compétences en programmation.

Il y a à peine 2 ans, j'étais une écolière de 17 ans et je ne connaissais rien à la programmation. Cela ne m'a pas empêché de commencer à apprendre et après quelques mois, j'ai sorti mon premier jeu sur Steam. Aujourd'hui, j'ai plus de 10 jeux pour PC, Internet et appareils mobiles et plus de 1,9 million de joueurs.

Peu importe ce que vous pouvez faire maintenant - si vous le souhaitez, vous pouvez également créer des jeux. Il y a deux ans, cela semblait impossible: c'était la chose la plus difficile que j'ai faite de ma vie et ça valait le coup. Maintenant, je comprends que dans le développement de jeux, comme dans toute autre entreprise, vous ne grandissez que lorsque vous essayez, faites des erreurs et améliorez.

J'ai appris tout ce que je sais moi-même et maintenant je vais vous enseigner.

Pour faire le jeu, vous devez passer par 6 étapes:


  • Concept
  • Graphisme
  • Programmation
  • Son
  • Préparation à la publication
  • Publication

Dans l'article de chaque étape, je soulignerai:
- Conseils que j'ai appris de ma propre expérience et de celle des autres.
- Les outils que je trouve les plus utiles.

image

Concept


Astuce


Vous avez une bonne idée. Mais comment le rédiger sur papier?

Chacun a sa propre façon. Certains composent des documents de conception de 60 pages, d'autres écrivent une feuille de notes illisibles. Je ne sais pas si cela vous convient, mais assurez-vous de corriger les problèmes suivants:

  • Chips. Qu'est-ce qui rend votre idée cool? Telle est la question la plus importante. Dès que vous pouvez l'attraper et le réparer, les étapes restantes sembleront plus faciles. Votre jeu soulève-t-il des sujets d'actualité? Deviendra-t-il un nouveau classique? Ou sera-ce différent de tout ce qui était avant?
  • La mécanique. Que fait un joueur et pourquoi? Ceci est votre gameplay. Cela peut être simple, comme appuyer sur les touches Q, W, O, P dans un jeu QWOP , ou complexe, comme les combinaisons dans Dwarf Fortress.
  • Légende Comment les joueurs se souviennent-ils de votre jeu? Avec quelles émotions vont-ils la laisser? Chaque jeu a une histoire. Si l'histoire n'est pas évidente, le joueur le créera lui-même. L'histoire peut être différente: une augmentation du nombre dans le jeu 2048, la montée des empires dans la civilisation ou des interactions silencieuses dans la Monument Valley. Pensez à la légende qui sera derrière votre jeu.
  • Humeur. Quelle impression fait le jeu? Quels effets visuels et quelle musique y contribueront? Ce qui compte, c'est la première impression qui peut accrocher le joueur puis le faire revenir au jeu. Vous voudrez peut-être un effet rétro avec des graphismes pixel et de la musique 8 bits ou un look moderne avec une géométrie plate - pensez-y.
  • Participez à des hackathons. Vous et les autres participants devrez faire le jeu dans le temps imparti. Au minimum, vous serez inspiré et rencontrerez des personnes partageant les mêmes idées. Essayez Ludum Dare , l'une des plus grandes gamejams.
  • Créez une liste d'idées. Enregistrez chaque nouvelle pensée. Dans les moments de stupeur, vous pouvez toujours consulter la liste et trouver quelque chose d'intéressant. Il ressemble à mes idées et notes personnelles de Google Doc .

Lorsque l'inspiration vient, laissez tomber tout et écrivez. La prochaine fois que cette pensée disparaîtra, vous n’avez pas besoin d’extraire des idées de votre doigt.

Les outils


Prendre des notes:

  • Remarques sur Mac OS.
  • Google Docs.
  • Trello.

Travail d'équipe:

  • Google Drive
  • Github Nécessite git et Unity .gitignore.
  • Unity Collab. L'outil le plus simple, mais avec des limitations dans la version gratuite.

Je fais des jeux sur Unity. Nous en parlerons plus loin, mais n'ayez pas peur d'utiliser un autre moteur.

Inspiration:


Graphisme


Astuce


Si vous ne savez pas comment programmer, lisez d'abord la section "Programmation". Il est peu probable que vous souhaitiez passer du temps sur le planning et le jeter car vous ne pouvez pas écrire de code pour cela.

Même si vous ne savez pas dessiner, le jeu peut être rendu magnifique en utilisant trois principes visuels: la couleur, la forme et le volume.



Thomas était seul - Un jeu simple et magnifique

Interface


Pensez à rendre le jeu unique avec son jeu de couleurs, ses polices et ses icônes sans perdre la commodité du joueur. Les informations importantes sont-elles compréhensibles et lisibles?


Police incorrecte et réussie

Animation 2D


L'animation peut être implémentée de deux manières:

  • Animation image par image. Lorsque vous dessinez chaque cadre. Pour ce faire, utilisez les tables de sprites et Sprite Packer dans Unity.
  • Animation squelettique. Chaque membre mobile est dessiné, puis sa position et ses virages sont animés. Il est plus rapide, plus léger et dépense moins de RAM. Pour l'animation 2D sur Unity, utilisez des pivots (points d'ancrage) ou le plugin Anima 2D .



Quoi d'autre pourrait être utile


Conseils qui s'appliquent non seulement aux graphismes du jeu, mais également à d'autres programmes:

  • Les objets tuiles sont utilisés pour créer des tuiles et nécessitent moins d'espace sur le disque dur.



Sans tuiles et avec une tuile

  • Les objets à 9 tranches avec des bordures non évolutives et un centre évolutif vous permettent d'agrandir les images sans remplir la mémoire.



Le spot se dilate, mais les angles restent les mêmes

  • Résolvez chaque objet pour qu'il divise par 4 ou soit une puissance de 2.
  • Dans Photoshop, vous pouvez enregistrer chaque calque dans un fichier distinct via Fichier> Exporter> Exportation rapide vers [format d'image].

Les outils


Création d'interface:

  • Photoshop
  • Esquisse

Les principes de création de l'interface:


Création d'objets 2D:

  • Photoshop
  • Gimp.
  • Paint Tool SAI - pour les graphiques de style anime.

Création d'objets 3D:

  • Blender est un logiciel puissant avec une formation sophistiquée.
  • Maya - pour l'animation.
  • Max - pour le rendu.

Atouts du jeu gratuit:

  • Behance - polices, icônes, etc.
  • KennyNL - objets de haute qualité, prêts à l'emploi dans les jeux.
  • Open Game Dev Art est une immense bibliothèque de graphiques créés par d'autres utilisateurs.

Inspiration:

  • Dribbble est une communauté fermée de designers.
  • Behance est une communauté de designers que tout le monde peut rejoindre.
  • itch.io est une communauté de fabricants de jeux indépendants.

Programmation


Astuce


Choisissez un moteur de jeu, un environnement de développement et commencez à plonger dans le code.

Les connaissances suivantes sont suffisantes pour commencer. Tous les exemples sont écrits en C ++, l'un des langages de programmation dans Unity3D. ( Note du traducteur: en fait, Unity utilise C #, qui est similaire à C ++ ).

  1. Types de données et variables. Le code est basé sur des données stockées dans des variables. Vous pouvez déclarer une variable comme celle-ci:

    int i = 0; 

    int - type de données, i - nom de variable, = 0 - valeur de variable.

    Types de données couramment utilisés:
    int et long - pour les entiers,
    float et double - pour les nombres à virgule flottante,
    string - données de chaîne.
  2. Conditions. À l'aide de l' instruction if, vous pouvez créer des conditions pour l'exécution de code:

     if (true){ //   !   doThings(); //   ,   ! } 

    À l'aide de l' instruction else , vous pouvez développer la condition et afficher ce qu'il faut faire si la condition n'est pas vraie:

     int i = 1; if (i == 0){  doThings(); } else if (i == 1){  doOtherThings(); //   ! } 

  3. Boucles For / While. Les boucles while répètent des parties du code tant que la condition reste vraie. Dès que la condition cesse d'être vraie, le cycle se rompt.

     while (someBool == true){ //   doThings(); //  ,    } 

    Les boucles For sont similaires aux boucles while. Pendant que nous écrivons comme ceci:

     int i = 0; while (i < condition){   doThings();   i++; // ,     } 

    Un équivalent de boucle serait:

     for (int i = 0; i < condition; i++){   doThings(); } 

  4. Structures de données. Nous avons des données avec lesquelles interagir. De plus, ils peuvent être stockés dans une structure spéciale - un tableau, une liste, une file d'attente, une pile ou un ensemble.
    Un exemple de tableau simple:

     /* ,      0  9.     ! */ int[] arr = new int[10]; /*  []    .     10   arr.    : arr = [ 0 0 0 0 0 0 0 0 0 0 ] */ for (int i=0; i<10; i++){   arr[i]=i; //    i  i. //,     ? } /*       : arr = [ 0 1 2 3 4 5 6 7 8 9 ] */ 

  5. Fonctions et exceptions. Une fonction est une courte ligne de code qui remplace un grand nombre de lignes de code. Par exemple, affichez la fonction EatBread () , qui contient les éléments suivants:

     void EatBread(){ //<---   breadAte=true;  printf("  ,    "); } 

Ensuite, lorsque la fonction est sortie, deux expressions sont exécutées à l'intérieur.

Si quelque chose ne va pas dans le code, des exceptions viennent à la rescousse. Ils disent en quelque sorte: «Attendez une minute, ici vous avez fait quelque chose d'illogique. Vérifiez à nouveau. "

Que devez-vous savoir d'autre:

  1. Langue. Dans quelle langue allez-vous programmer? Le plus souvent, les jeux sont écrits en C ++, JavaScript ou C #. Les langues diffèrent par leur syntaxe et leur portée.
  2. API (interface de programmation d'application). Une fois que vous vous êtes familiarisé avec la base, commencez à étudier l'interface du logiciel d'application pour un moteur de jeu spécifique. Ils sont une collection d'outils utiles regroupés dans des classes et des fonctions simples. L'API simplifie considérablement la vie d'un programmeur.
  3. Voir des exemples de projets sur le moteur de jeu sélectionné. Vous pouvez trouver de nombreux exemples gratuits de jeux sur les moteurs Unreal et Unity. Cela vous permettra de voir le résultat et l'ensemble du processus de travail, ainsi que de dessiner des idées pour votre futur jeu.

Un peu d'inspiration. Je sais que la programmation fait peur au début. Tout semble dénué de sens, vous trébuchez constamment et face aux erreurs constantes que vous voulez abandonner, mais cela ne signifie pas que la programmation n'est pas pour vous.

Le code est un défi pour soi. Et ne rien comprendre au premier abord est normal.

Comme toute compétence, la programmation doit être apprise. Et ce sera peut-être assez intéressant.

Autres bases de programmation importantes:

  • Programmation orientée objet. Rend le code plus naturel.
  • Convention de dénomination. Nommez les classes, les méthodes et les variables pour que vous et les autres programmeurs compreniez leur objectif. Par exemple, nommez la fonction d'attaque en mêlée,

     meleeAttack () 

    pas

     mA() 

    ou

     protecbutalsoattac() 

  • Décomposition. Créez une fonction à partir du code extensible et appelez-la au lieu de copier les lignes extensibles.
  • Motif de conception Singleton ("Loner"). Un modèle de programmation qui permet de stocker des données en un seul endroit.
  • Évitement des variables statiques. En plus d'utiliser des singletones, j'ai évité les variables statiques - elles ne vivent que pendant la durée du jeu, sont lentes et peuvent se comporter de façon imprévisible.
  • Design Pattern Observer ("Observateur"). Permet à un objet de connaître l'état d'autres objets sans perdre de temps à vérifier l'ordinateur.

Choses spécifiques à l'unité:

  • Coroutines. Ils vous permettent de commencer à exécuter une action, de continuer au bon moment, puis de vous arrêter. Je les utilise pour les effets visuels d'explosions, de mouvements brusques.
  • Classe ScriptableObject. Il stocke les données à un coût inférieur à la classe de base MonoBehaviour.

Les outils


Moteurs de jeu:

  • Moteur personnalisé en C / C ++. Seuil d'entrée bas. ( Note du traducteur: en fait, créer votre propre moteur demande beaucoup d'efforts et une connaissance approfondie des principes de programmation ).
  • Unité Prend en charge 2D / 3D. Nécessite une connaissance de JavaScript / C #. Seuil d'entrée moyen. Développement pour plusieurs plateformes.
  • Irréel Prend en charge 2D / 3D. Nécessite une connaissance de C ++. Seuil d'entrée moyen. Développement pour plusieurs plateformes.
  • pixi.js. 2D uniquement. Nécessite une connaissance de JavaScript. Seuil d'entrée moyen. Développement pour le navigateur.
  • GameMaker Studio. Prend en charge 2D / 3D. Nécessite la connaissance d'un moteur de langage spécial GML (Game Maker Language). Pour débutants. Développement pour plusieurs plateformes.
  • Corona. 2D uniquement. Nécessite la connaissance de Lua (similaire à JavaScript). Pour débutants. Développement pour plusieurs plateformes.

Environnement de développement:

  • Code Visual Studio (pour MacOS) - ne se fige pas, a des informations d'aide intégrées et des touches de raccourci pratiques.
  • Visual Studio (pour Windows).
  • MonoDevelop - installé avec Unity, se bloque parfois.

Actifs Unity gratuits:

Il existe de nombreux actifs gratuits dans Unity Asset Store, bitbucket et GitHub. Dans mes projets j'en utilise au moins deux. Ils simplifient la vie, mais loin d'être idéal. Nous avons remarqué une erreur - corrigez-la et informez-en le développeur.


Google est une source importante, voire la principale source de résolution de problèmes avec le code!

Son


Astuce


L'audio est capable de créer une ambiance et de s'immerger dans un jeu, mais il a besoin de mémoire.

Décidez d'abord: voulez-vous un son? Si c'est le cas, y aura-t-il de la musique, des effets sonores, des voix ou des contes dans le jeu.

Dans tous les cas, l'enregistrement et le mixage sont nécessaires pour que le son corresponde à l'ambiance du jeu. Par exemple, Bastion utilise des sons organiques et instrumentaux qui se marient bien avec le jeu. Crypt of the Necrodancer comprenait un mélange de rythmes électroniques et de rock 8 bits pour transmettre le rythme et la luminosité du jeu.
L'immersion décide. Si les sons ne correspondent pas à l'ambiance du jeu, il sera difficile pour le joueur de plonger dans votre monde.

Les outils


Applications audio:

  • Logic Pro (MacOS uniquement). Le prix est de 200 $.
  • FL Studio. Le prix est de 99 à 899 $. Il existe une version d'essai gratuite.
  • Reaper Le prix est de 60-225 $.
  • Audacity Programme gratuit. Il a peu de fonctionnalités, mais est utile pour nettoyer l'audio.

Création d'effets rétro:


Sons gratuits:

  • Soundcloud Ici, vous pouvez trouver une infinité de sons et de musique sous une licence Creative Commons. Commencez avec cette playlist . Vous pouvez l'utiliser gratuitement, mais n'oubliez pas d'indiquer la paternité.
  • Incompetech .
  • Bensound .

Préparation à la publication


Astuce


Il y a une faible probabilité - à 99,99%, que le jeu comporte des erreurs. Et cela signifie qu'il est temps de faire un test de bogue.

Comment tester le jeu pour les bugs?


  1. Laissez les autres jouer le jeu. Il est conseillé avec vous, au cas où ils rencontreraient une erreur et ne pourraient pas la comprendre ou l'expliquer.
  2. Découvrez le jeu sur différentes plateformes. L'éditeur n'est peut-être pas un problème, mais fonctionne-t-il là où il sera lancé? Soyez particulièrement prudent avec Linux et Android.

Donc, le bug est trouvé. Et maintenant



  1. Recherchez des exceptions dans la console. Si vous trouvez une exception, recherchez le fichier et la ligne où l'exception s'est produite. Si ça sonne martien, cherchez une solution sur le net et réfléchissez à la raison pour laquelle une exception est levée dans cette ligne.
  2. Écrivez sur la console. Essayez d'afficher les journaux (fichiers système) dans les emplacements d'erreur présumés. Entrez différentes variables et comparez les valeurs obtenues avec celles attendues. S'il y a un décalage, corrigez-le.
  3. Vérifiez les journaux. Les enregistrements système de votre projet donneront plus d'informations que la console. Lisez les lignes où l'exception s'est produite. Google tout ce que vous ne savez pas.
  4. Dors. Tout sera réparé le matin. C'est juste un mauvais rêve :)

Erreurs courantes


  • NullReferenceException.

     var.doThing(); //throws NullReferenceException: Object reference not set to an instance of an object 

    Quel est le problème: la fonction est exécutée avec une variable inexistante (nulle).
    Solution rapide: vérifiez si la variable est nulle.

     if(var != null)   {       var.doThing(); //   !   } 

  • SyntaxErrorException.
    Quel est le problème: les erreurs de syntaxe.
    Solution rapide: le message indique quel caractère a généré l'erreur. Trouvez-le et corrigez-le.

    Remarque: Vérifiez les devis que vous utilisez.
    "// guillemets valides;
    "// citations inutiles, elles vous apporteront beaucoup d'erreurs.
  • Écran rose ou noir.
    Problème possible: le shader n'a pas été traité.
    Raisons possibles: vous utilisez des shaders 3D dans un jeu 2D ou des shaders qui ne sont pas pris en charge par le système d'exploitation. Assurez-vous d'utiliser des shaders mobiles pour les jeux mobiles.

Une fois les erreurs terminées, commencez à optimiser les performances et l'utilisation de la mémoire. Les utilisateurs pourront exécuter le jeu plus rapidement et ne pas rencontrer de problèmes avec les appareils de chauffage.

Conseils d'optimisation


  • Réglez la fréquence d'images souhaitée. 20 images par seconde suffisent pour un roman visuel, mais 60 sont nécessaires pour un tireur. Une faible fréquence d'images passe moins de temps à restituer.
  • Animation / système de particules / traitement sélectif. Les objets invisibles à la caméra du joueur ne sont pas traités. Les personnages sont animés, les particules sont mises à jour, les modèles 3D ne sont traités que dans le champ de vision du joueur.
  • Compression des textures et des sons. Utilisez Crunch pour compresser les textures. La diffusion de musique en continu et le déballage des effets sonores surchargent le jeu. Essayez de réduire la qualité audio. La compression peut réduire considérablement la qualité des objets.
  • Ne laissez pas Raycast toucher des objets inutiles. Les raycasts sont comme de petits faisceaux qui sortent de vos doigts ou de votre souris lorsque vous touchez l'écran ou cliquez. Trouvez des objets qui ne devraient pas réagir aux actions du joueur et supprimez-les des calculs Raycast.
  • Utilisez le pool d'objets. La création et la suppression fréquentes d'un grand nombre d'objets réduisent les performances. Au lieu de cela, combinez-les dans une liste, une file d'attente ou une autre structure. Par exemple, les puces doivent être combinées en un seul tableau.
  • Optimisez les shaders. Définissez le matériel pour chaque visualiseur. Le jeu n'a pas à créer de nouveaux matériaux au début du jeu, ce qui permettra d'économiser des ressources. Laissez le visualiseur inclure uniquement ce qui est fonctionnellement nécessaire.
  • Utilisez AssetBundles (littéralement «ensembles d'actifs») au lieu de l'ancien système de ressources dans Unity. AssetBundles exporte vos fichiers depuis Unity et les place dans un seul fichier, économisant de la RAM.

Outils (Unity uniquement)


Scripts:


Graphisme:


Mémoire:


Optimisation de la plateforme:


Publication


Astuce


Il est temps de montrer au monde votre création.

La promotion est l'étape la plus excitante. En cas de doute, la communauté du game design vous aidera. N'oubliez pas que vous n'êtes pas seul et que tant de personnes ont réussi, vous devez terminer le travail jusqu'à la fin.

Vous ne saurez pas si le jeu deviendra un succès tant que vous ne l'aurez pas publié.

  1. La description

    Prenez des captures d'écran des pages "À propos du jeu" et créez des descriptions pour chaque plate-forme sur laquelle vous prévoyez de sortir le jeu.
  2. Réseautage

    Si vous voulez que tout le monde apprenne le jeu, écrivez des annonces pour les médias de jeu, participez à des festivals et à des conférences.

    Envoyez une description du jeu à la presse une semaine avant la sortie - donnez aux gens le temps d'écrire à ce sujet. Il peut arriver qu'ils n'écrivent pas à ce sujet, mais rappelez-vous: les journalistes adorent les belles histoires de développeurs, une idée unique ou conflictuelle et un kit média.

    Où trouver les adresses?
    • Retrouvez en ligne les contacts des auteurs que vous aimez: mail, LinkedIn, Twitter.
    • Recherchez le courrier de la publication dans la section À propos de nous ou en bas de la page.

    N'écrivez pas dans des publications de jeux qui ne couvrent pas votre genre ou votre plateforme de jeu cible.

  3. Streamers et blogueurs vidéo

    Ils feront une vidéo du jeu si:
    • Le jeu deviendra populaire sur les plateformes.
    • Vous écrirez directement. Ne parlez pas de vous, parlez brièvement, magnifiquement et de manière convaincante du jeu. Utilisez des gifs et des captures d'écran pour attirer l'attention.

    En règle générale, les adresses des blogueurs répertoriés sur la page. Sinon, essayez de trouver des contacts sur Internet.



    Une lettre au blogueur vidéo Markiplier, dont la chaîne compte plus de 21 millions d'abonnés



    Vidéo de jeu par Markiplier
  4. Réseaux sociaux

    C'est un excellent outil de promotion: Agar.io a gagné en popularité sur 4chan, Butterfly Soup a bondi dans les téléchargements après avoir suivi sur Twitter.

    Meilleur: publiez via l'éditeur ou vous-même. Vous voulez suivre le chemin Hotline Miami publié par Devolver Digital, ou apprendre de Farmville et du Doki Doki Literature Club?

    Pour collaborer avec un éditeur , vous devez d'abord le trouver. Après cela, il y aura une petite pile de paperasse, mais vous recevrez suffisamment de fonds pour le développement du jeu.

    Si vous avez l'intention de vous publier , soyez prêt à passer beaucoup de temps à étudier le marketing. Vous pouvez échouer dans la campagne de promotion, mais vous gagnerez ainsi de précieuses connaissances et économiserez de l'argent.



    Le nombre de paramètres de jeu augmente

    Je préfère publier moi-même des jeux. J'aime étudier et je crois qu'un très bon jeu réussira malgré les progrès.
  5. Cliquez sur le bouton "Publier"!

    Ça s'est avéré! Maintenant détendez-vous, prenez quelque chose de savoureux et détendez-vous. Vous avez travaillé sans relâche et le méritiez.

    N'ayez pas peur si le jeu n'a pas reçu l'attention attendue - c'est normal. Mon premier jeu n'a que 255 téléchargements sur Steam.

L'essentiel est que vous ayez créé le jeu et appris beaucoup de choses. Maintenant, cela suffit, et il y a toujours la possibilité d'essayer à nouveau avec de nouvelles connaissances.

Les outils


Le service presskit () aide les développeurs à écrire une description du jeu pour la presse.

Plateformes de publication:

  • Steam (PC) - 100 $ par poste.
  • Origine (PC).
  • GOG (PC) - publication gratuite après autorisation.
  • Mac App Store (MacOS) - 100 $ par an, nécessite un compte de développeur Apple.
  • itch.io (PC / Web) est une publication gratuite.
  • Game Jolt (PC / Web) est une publication gratuite.
  • Armor Games est une publication gratuite.
  • Kongregate (Web) est une publication gratuite.
  • Newgrounds (Web) est une publication gratuite.
  • GitHub (Web) est une publication gratuite sur un site se terminant par ___.imtqy.com .
  • Amazon (Web / Mobile) est une publication gratuite.
  • Google Play (mobile) - 25 $ par publication.
  • iOS App Store (Mobile) - Nécessite un compte de développeur Apple.

Journaux de jeu:


Festivals:


Conférences de jeu:


Conclusion


Il n'y a pas de moyen facile de créer un jeu. Il n'y a que votre détermination et vos efforts.

Derrière chaque Half-Life, Minecraft et Uncharted se trouvent des océans de sang, de sueur et de larmes.
Ken Levin, créateur de Bioshock

Vous ferez des erreurs, vous vous sentirez dans l'impasse et pleurerez. C'est normal - cela signifie que vous grandissez au-dessus de vous-même.

Des éditeurs


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


All Articles