Propre partie en 72 heures: râteau, béquilles et alpagas

Pour constituer une équipe de rêve, d'un seul coup pour entailler un jeu de chef-d'œuvre qui fera exploser les sommets. Ou, comme il sied à un seul génie, pour construire et diffuser dans le monde un phénomène de jeu pendant la nuit, un jeu est un aimant pour l'argent et la renommée. Comme il s'est avéré dans le fumoir et lors de diverses réunions informatiques, de tels fantasmes sombres tourmentent non seulement les jeunes étudiants, mais aussi les oncles respectables. C'est juste plus difficile pour eux de l'admettre.

Comment être un développeur dont le cheminement de carrière est aussi loin d'un développeur de jeux que le Hobbiton de la Black Gate? Éliminez l'obsession et terminez enfin la bibliothèque qui aurait l'air si importante dans le CV. Mais si vous enterrez vos propres rêves - pas votre chemin, bienvenue au chat. Vous trouverez une histoire honnête sur la façon dont Kick du monde de l'informatique s'exerçait devant un miroir et des ecchymoses. L'histoire du jeu, du contour à la sortie.

image

De vagues schémas de pensée à un concept fini


En première approximation, le plan était le suivant: en un minimum de temps pour passer par le cycle de développement du jeu, dont la dernière étape est la sortie d'une version complète.

Des délais raisonnables et la nécessité de publier le jeu aident à éviter le piège typique qui attend les noobs dans le développement de jeu: chasser l'image du "jeu de rêve"! Le plus souvent, le concept «idéal», une fois concrétisé, se transforme en projet hors de portée d'une équipe indépendante. L'idée même devient une imperfection qui sera tôt ou tard cachée timidement «dans le tableau».

Pour éviter l'échec peu glorieux avec le développement d'un simulateur de sous-marin ou d'un jeu de tir 3D en ligne, il est préférable de mettre en pause et de sortir un jeu simple. Soit dit en passant, la simplicité ne signifie pas une arcade primitive de bonjour, un clone de serpent tronqué et d'autres variations de métiers non jouables et non originaux.

Ferme quatre en ligne avec majordomes, plantes vs Hamsters ... Quelle idée exotique choisir comme ballon d'essai? Peut-être quelque chose à propos des balles. Et comme c'est la première crêpe, laissez le jeu plat, en 2D. La devise de tout événement douteux est moins de raisonnement, droit au but. Par conséquent, la première idée relativement saine a été corrigée. Donc, un croquis d'un mélange sauvage de billard et de hockey sur air dans le cadre d'une civilisation ancienne:

image
Concept de jeu

C'est l'arrangement des boules (zengs) au milieu du jeu. Le joueur vise un chat zeng dans un crocodile zeng pour le marteler dans l'une des six poches et voir un puissant effet spécial de l'explosion. Le premier à éliminer tous les zenges ennemis du terrain est Etsvatsephala (un grand gars). Ah oui. Le décor de la civilisation antique est toujours dans les coulisses.

Farine de choix: plate-forme cible et boîte à outils


Après que le concept du jeu ait été décrit en termes généraux, il n'a pas été difficile de déterminer la plate-forme et les outils.

La vue sur le marché des PC menace les problèmes liés aux services de distribution en ligne. Prenez au moins le système Steam Direct pour publication dans le populaire magasin Steam. Pour l'ajout de chaque produit, une taxe d' environ 6 000 roubles est prélevée et, du moment du paiement à la publication, il faut un mois aux employés de Valve pour «s'assurer qu'ils traitent». La modération du jeu avant sa sortie prend encore cinq jours.

La collaboration de l'indie igrodela avec GOG.com, un autre géant de la distribution numérique, commence par remplir un questionnaire sur le jeu. Il faut du temps pour que le jeu soit pris en compte par la boutique, et le risque de refus de publication est assez élevé: le jeu peut ne pas sembler assez unique, basique ou ne pas correspondre à un autre critère ...

Le bon sens veut qu'il soit logique de contacter des monstres comme Steam ou GOG.com si vous avez un produit prêt à l'emploi (ou presque prêt) de qualité appropriée. Mais la sortie du jeu pour un public mobile est une option plus rapide et plus abordable. Bien sûr, je fais allusion à Android: un paiement unique de 25 $ pour l'activation d'un compte de développeur et l'accès à la console développeur de Google Play est moins cher que les 99 $ annuels dans la tirelire d'Apple pour la publication sur l'Apple Store. J'ai un compte développeur Google Play depuis des temps immémoriaux, et cela a fait pencher la balance en faveur d'Android.

Quant à Android, les casse-cou, tournant sur une voie de développement glissante pour cette plate-forme, se retrouvent souvent à la croisée des chemins: que ce soit pour faire un jeu dans Canvas, apprendre l'API OpenGL ou faire face à un moteur de jeu à part entière. Pour moi, il n'y avait même pas de choix: il était beaucoup plus tentant de porter la souris dans le magnifique moteur graphique que de passer la nuit dans un débogueur et de rechercher pourquoi la scène ne se redimensionne pas, puis se fige.

Evidemment, il fallait choisir un moteur qui réponde aux exigences:

  • La possibilité de porter des jeux pour une sortie sous Android
  • Gratuit
  • Seuil d'entrée bas
  • Vitesse de prototypage
  • Documentation fraîche et claire ou communauté active

Après quelques recherches, trois moteurs ont suscité l'intérêt: Cocos2D, Unreal Engine et Unity. Cocos2D impressionne par sa légèreté et C ++ en tant que langage de développement, mais écrire un jeu dessus ne promet pas d'être rapide. Un choix difficile entre Unreal Engine et Unity s'est terminé par la victoire d'Unity: à la première connaissance, il semblait qu'il était plus facile pour un débutant de comprendre ce moteur. Ce qui vaut au moins un tutoriel en ligne chic sur la création de jeux 2D!

Pour le développeur indépendant, Unity est disponible dans le cadre du plan tarifaire personnel, c'est-à-dire gratuitement. Les entreprises dont le chiffre d'affaires annuel ou le montant des fonds levés dépasse 100 000 $ sont invitées à utiliser un abonnement payant. Eh bien, dès que, donc tout de suite, mais pour l'instant, lancez Personal.

Développer un jeu seul: où le temps disparaît


À la suite du basculement entre différentes plates-formes et moteurs sur l'ordinateur, Unity 2017, Visual Studio Community et Android Studio ont été enregistrés. Soit dit en passant, les versions officielles d'Unity sont disponibles pour l'installation sur Linux et mon openSUSE Leap installé sans aucun problème. Cependant, l'essentiel du développement du jeu s'est fait sous Windows car Photoshop est là. Et le seul développeur du projet à temps partiel est le seul concepteur qui apporte une touche spéciale au processus gamedev.

Par exemple, vous deviez souvent basculer entre deux tâches: écrire du code et dessiner des graphiques. Dès que le processus de développement a été bloqué par la nécessité d'ajouter de nouveaux graphismes à la scène, il a fallu tout remettre à plus tard et concevoir. Pour paralléliser ces processus, des images «stubs» ont été activement utilisées, esquissées d'une manière ou d'une autre et jusqu'au dernier graphique à part entière remplaçant.

image
Développement progressif des graphiques

Il y a eu aussi des coups dans l'impasse créative lorsque les graphismes, considérés comme définitifs, ont provoqué le rejet de l'auteur ou des joueurs, et on ne savait pas comment régler la situation. La pratique a montré que quelques nouveaux concepts artistiques contribuent à sortir de l'impasse. Ils vous indiquent dans quelle direction refaire l'image ou la remplacent complètement.

Dans tous les cas, une énorme quantité d'art n'entrera pas dans l'assemblage final du jeu, et c'est normal. Car sur une tonne de croquis infructueux, un est né que tout le monde regarde et dit: «Oui, c'est ça. Ce même alpaga. "

image
Le même alpaga

Et voici le terrain de jeu après de nombreuses itérations de refonte:

image
Capture d'écran du terrain de jeu

Il s'est avéré que sur 72 heures, environ 40 ont été consacrées uniquement au dessin et à la conception. Le temps restant a été consacré au cycle de test de développement, accéléré par trois facteurs:

Disponibilité du point de contrôle du jeu pour sa sortie. Un jeu dont les fonctionnalités n'ont pas honte d'être considérées comme terminées, prêt à passer par l'utilisateur qui le voit pour la première fois? Cela cesse-t-il de l'être si vous abandonnez une ou deux fonctionnalités? S'il n'y avait pas les savoirs traditionnels en lecture seule précédemment compilés et traduits mentalement, le jeu pourrait être amélioré et développé pour les âges. Alors qu'ils discutaient de leurs impressions avec les joueurs et de l'émergence de leurs propres idées, une nouvelle liste de souhaits apparaissait presque toutes les heures, puis enregistrait la liste des fonctionnalités pour le point de contrôle.

Refus d'un beau code. On peut contester cela, cette pratique peut être considérée comme nuisible à la fois pour le projet et pour le développeur, et je suis d'accord avec la plupart des arguments ... Mais le fait est clair: si le projet est petit et que le temps est compté, la pureté du code s'efface en arrière-plan. L'essentiel est que le code source soit toujours compréhensible. Mais le code spaghetti et le copier-coller gras ne sont pas si dangereux si vous ne commandez pas une double portion.

Gamme pour pièces courantes. L'ordre de temps a-t-il été consacré à l'explosion, mais elle ne remporte toujours pas le prix des meilleurs effets visuels? Les bizarreries de l'animation d'image-objet ne sont-elles visibles que maintenant, car d'autres objets attiraient l'attention sur eux-mêmes? Débogage de sections complexes, réglage d'effets spéciaux, exécution d'animations ... Pour de tels événements, une bonne approche consiste à isoler le bloc d'intérêt autant que possible et à le placer dans un projet propre (ou au moins dans une scène séparée). Tout d'abord, cela élimine les effets secondaires des autres entités de jeu. Deuxièmement, il permet de se concentrer sur la tâche en cours, d'expérimenter sans risque de gâcher et de casser quelque chose dans le quartier. Par exemple, dans une scène distincte, il était pratique d'ajuster les paramètres des effets des explosions lorsqu'un zeng frappait une poche, et dans le projet de test, sélectionnez des options pour texturer l'arrière-plan.

Des erreurs qui ne sont jamais devenues fatales


Chutes sans compromis dans les tests bêta ouverts, référence nulle aux œufs de Pâques près des lignes avec la phrase "// TODO", glissant comme de l'eau à travers les doigts, les insectes ... Le triste fait: la plupart des erreurs sont le résultat de la négligence et du manque de possession de l'instrument. Unity dispose d'une documentation détaillée, et pour cause. De nombreuses solutions techniques d'Unity ne sont pas évidentes. Le colmatage de la documentation génère des heures supplémentaires de débogage et d'errance dans Google ... ce qui vous ramène à la documentation en ligne.

Mesdames et Messieurs, voici le «Top 3» des erreurs les plus savoureuses et chronophages qui ont orné le processus de développement d'El Zengo. Ils sont curieux en ce qu'il s'agit de cas particuliers de problèmes typiques qui surviennent lors du développement rapide du manque de temps pour une étude détaillée du sujet.

3. Ça ne marche pas comme je veux


Ooh, combien de temps a été perdu sur le débogage des simulations de collision de zengs ... Bien sûr, dans Unity, tout le calcul du mouvement des corps fonctionne hors de la boîte. Et dans le prototype brut du jeu, il était très exploité: les zenges roulaient autour de la scène sans gravité, rebondissaient les uns sur les autres et sur les côtés, et il n'était pas question de leurs trajectoires après les collisions. Mais le moment crucial est venu de dessiner les vecteurs zengi, et tout à coup, il a été révélé que le rebond réel des zenges les uns des autres (l'arc gris dans la capture d'écran) est différent de celui attendu (ligne blanche):

image
Chemins de rebond zenga attendus et réels

Zeng s'est écarté de la trajectoire prévue en raison de trop de frottements et du moment de torsion qui en résulte, dont la cause est pour l'instant un mystère. Le fait est que chaque zeng est un gameObject généré lors du chargement de la scène, auquel sont ajoutés les composants Rigidbody 2D et Circle Collider 2D.

Rigidbody, un «corps solide», définit la physique du comportement d'un objet dans le monde du jeu: masse, résistance, gravité et autres caractéristiques utiles. Collider - le composant responsable du calcul des limites de l'objet et des collisions avec d'autres corps. Les deux composants ont la propriété «matière» pour régler le coefficient de frottement et l'élasticité.

Ainsi, la correction du rebond incorrect des zengs se résumait à la question: si deux composants sont attachés à gameObject, Collider et Rigidbody, et chacun d'eux a la propriété «matériel», quel matériau sera appliqué?

image
Propriétés des matériaux de collisionneur et de corps rigide dans Unity

Donc, si Collider n'a pas de matériau défini, alors le matériau Rigidbody est utilisé. S'il est défini, la propriété prioritaire du collisionneur. Pour les matériaux non explicitement spécifiés, le Rigidbody utilise un matériau avec des valeurs d'élasticité et de friction par défaut. Ainsi, l'erreur était l'hypothèse erronée que la propriété Rigidbody avec un frottement presque nul serait appliquée avec le matériau Collider spécifié. Et elle valait bien le samedi soir passé.

2. Il se comporte différemment sur différents appareils.


Un comportement différent sur les appareils avec différentes versions de l'API est apparu par hasard lors du rendu des ombres de texte. Un texte avec le nom du jeu a été ajouté à la scène. Le composant Shadow est attaché au texte:

image
Composant d'ombre ajouté au texte dans Unity

Couleur foncée, transparence. Il ombrage parfaitement le texte sur tous les appareils ... sauf pour l'ancien Android avec API 15, sur lequel l'ombre semblait obstinément bleu pâle au lieu de bleu:

image
Ombre mal dessinée dans l'interface de jeu

Il n'a pas été possible de déterminer rapidement la cause de l'erreur et les remèdes, donc pour des raisons de vitesse de développement, l'ombre a dû être abandonnée.

Conclusion: restez vigilant. Sur différents appareils, même les éléments triviaux du jeu peuvent avoir une apparence et un fonctionnement différents. Cela se manifeste souvent par des bagatelles à peine perceptibles.

1. Il ne démarre pas sur un appareil spécifique


La nuit avant la sortie (ou comment est-il habituel de commencer de telles histoires?) Il a été découvert que sur l'un des smartphones, le jeu ne voulait pas démarrer. J'ai dû de toute urgence m'accrocher au débogueur et voir ce qui n'allait pas.

De par sa conception, le jeu est lancé de force en orientation paysage. Dans Unity 2017, le paramètre d'orientation par défaut (Édition -> Paramètres du projet -> Lecteur -> Orientation) est responsable de ceci:

image
Définition de l'orientation de l'écran dans Unity

Lors de l'exportation vers un projet pour Android Studio, le paramètre d'orientation par défaut devient la propriété screenOrientation spécifiée dans le manifeste:

android:screenOrientation="landscape" 


Il semblerait que ce qui pourrait mal tourner? En effet, sur tous les appareils, le vol est normal ... Sauf pour Android 8.0.0 (API 26), sur lequel l'application plante lors du lancement à l'exception:

java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

Il est corrigé en désactivant la transparence dans le style spécifié dans styles.xml:

 <item name="android:windowIsTranslucent">false</item> 


Crash absolument accidentellement détecté qui mène à la moralité: l'exactitude de l'opération doit être vérifiée sur toutes les API prises en charge par l'application.

A propos de la promotion et de la monétisation, ou «Aujourd'hui j'ai beaucoup compris»


Après avoir préparé un épais paquet de matériel promotionnel pour le placement dans la boutique Android, sous les cris joyeux d'un programmeur et concepteur, une sortie a eu lieu. Cependant, il est vite devenu évident qu'en plus du nom du jeu dans le Play Store, il était impossible de le trouver. El Zengo, comme un galion englouti avec des doublons d'or, se reposait quelque part au fond de l'océan des jeux et attendait son plongeur ... Apparemment, les plongeurs ne plongent pas si profondément.

Zéro téléchargement par semaine est allé à l'encontre des attentes. Remarque: les attentes n'étaient pas des fantasmes sans fondement, mais reposaient sur une expérience réelle, quoique dépassée. En 2014, lorsque Google Play développait activement et attirait de nouveaux développeurs, l'auteur a publié un jeu de logique sans précédent. Et bien que le but principal de la publication soit une utilisation personnelle pour des fêtes avec des amis et des collègues, et que le design laisse à désirer, les affaires du jeu se sont étonnamment bien déroulées. Elle a surgi dans la section des nouvelles, d'où elle a rampé dans les sommets des jeux par catégorie en Russie et dans les pays voisins. Et tout cela sans le moindre effort.

Depuis lors, Google Play regorge d'applications, les développeurs ont commencé à prévoir d'énormes quantités à évacuer de bas en haut, et tentent de faire connaître le jeu afin que, pour un utilisateur potentiel, il puisse au moins se retrouver dans une entreprise.

image
Elephant Business. Prince attend une aventure imprévue

Les entreprises proposant des services de promotion, des critiques vidéo de YouTube, des critiques sur des portails de jeux, de la publicité sur diverses plateformes ... Si vous ne refusez absolument pas la promotion payante, vous serez agréablement surpris par le nombre de façons de se débarrasser de quelques salaires avec style. Mais quelle est leur efficacité, dans quelles combinaisons et proportions donnent le meilleur effet pour un jeu particulier? La question reste ouverte.

Des moyens gratuits essayés, y compris des sujets sur les forums de jeux, des relations publiques modérément impudentes dans les réseaux sociaux et une propagande rampante dans le cercle de la communication, ont apporté des résultats modestes. La conclusion se suggère: si vous pensez vraiment à la promotion du jeu, faites-le à l'avance et allouez les ressources appropriées. En même temps, tous les efforts peuvent être réduits à zéro si vous ne vous tenez pas au courant des tendances du marché et des caractéristiques du public cible.

Épilogue


Est-il possible dans quelques mois de sortir le jeu vous-même ou une petite équipe, sans préjudice du travail et de la vie personnelle? Et de sorte que sans dépassement de soi et "triomphe de la volonté" sur le manque de sommeil. Oui, tout à fait! Et avec des moteurs modernes, un IDE et un stackoverflow, c'est plus facile que jamais.

Mais si le développement d'un jeu indépendant n'est pas une fin en soi et que des questions se posent sur sa promotion et sa monétisation, alors ... il y a des nuances. Promotion - un monstre à trois têtes: une science distincte dans laquelle une petite erreur de calcul est déjà une perte; un processus continu qui nécessite une surveillance constante; trou noir pour le temps, l'effort et l'argent.

Et enfin. Le développement indépendant ne concerne pas seulement le code, les graphiques et un cours de géométrie qu'il serait bon de relire. C'est aussi la communication avec des personnes enthousiastes qui sont prêtes à laisser des commentaires et même à participer au projet sur un enthousiasme pur. Par exemple, une tonne de conseils et de critiques sur le gameplay et l'interface utilisateur ont été donnés par le développeur, qui est généralement cool à propos des tueries occasionnelles. Et la musique de la deuxième version d'El Zengo a été créée par le compositeur, qui a aimé le jeu. Si vous vous fatiguez et cherchez, il y a sûrement ceux qui veulent tester le jeu et laisser un commentaire. Et avec un bon choix d'outils et en observant les règles simples du ventilateur depuis le développement, l'inspiration de la sortie et le pompage non faible de l'expérience sont simplement fournis.

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


All Articles