Comment nous sommes passés du développement Web au développement de jeux

Bonjour, Habr! Depuis près d'une décennie et demie, nous créons et développons des services Web. Vous en connaissez peut-être certains, avez une expérience de l'utilisation, aimez passionnément ou avez des sentiments mitigés, mais ce n'est pas le cas maintenant.


Nous avions donc 2 constructeurs de sites Web connus du marché - uCoz et uKit, plus de 90 % des inscriptions qui ne se sont jamais converties en création de votre propre site, un désir ambitieux de sauver au moins 5 % de cette audience, et également deux personnes et demie dans l'équipe qui ont une sorte de aucune expérience en développement de jeux. Non pas que c'était une fourniture nécessaire pour la sortie du jeu sur l'industrie du web ... Eh bien, vous comprenez.


image

Le début du chemin sinueux


59845 lignes de code sur le backend et 65675 frontends. Plus de 2 ans de développement, échecs et blocages, 7 options d'interface. Tout cela est maintenant derrière nous, même si cela peut prendre beaucoup de temps pour arriver à l'un des membres de l'équipe en rêve.


Comment se fait-il que des personnes et une entreprise qui traitent principalement avec des constructeurs de sites aient soudainement adopté (et l'ont fait!) Une stratégie multijoueur en ligne . Même si thématique: sur les sites et les webmasters?


À un moment donné, nous avons réalisé que uCoz, en tant que produit, commençait à devenir obsolète, et c'était l'un des motifs de la création d'uKit. Tout irait bien, mais il s'est avéré que le problème est plus profond et que ses racines ne vont nulle part, mais dans la psychologie humaine. Peu importe de quel constructeur de site parler - uKit, uCoz, Wix, Tilda, Jimdo, LPmotor (pardonnez tous les autres collègues que je n'ai pas nommés, nous sommes plusieurs centaines, je me souviens de tout le monde, j'aime tout le monde). La grande majorité des utilisateurs enregistrés ne créeront jamais de site . C'est un fait facilement vérifiable; il suffit de comparer le nombre d'inscriptions (compter sans bots) et le nombre de domaines / clients actifs qui sont réellement servis.


Pourquoi Une bonne question, à la recherche d'une réponse à laquelle nous avons téléphoné à nos utilisateurs et pas seulement. Parce que demain . Ou la semaine prochaine. Tout est clair, tout est pratique, mais il n'y a pas de temps. C'est comme aller au gymnase.


C'est alors qu'une pensée simple a surgi - pour ces personnes, pour leur attrait, nous avons déjà payé, et pour ne pas essayer de sauver au moins une partie de ce public en les laissant jouer dans la création de sites?


«Je pense que tous ceux qui sont en quelque sorte liés à la création de projets Internet devraient absolument jouer avec la gestion de site dans le cadre de cette stratégie économique. Pas étonnant qu'ils disent que les jeux peuvent apprendre quelque chose ... C'est l'un des rares cas où vous pouvez vraiment comprendre certains des principes de gestion d'une équipe de site et les fonctionnalités de travail sur de nombreux sites. Et pour ceux qui sont sur le point de se lancer dans cette industrie, étudier la mécanique présentée dans le jeu est un must! »

Dmitry G. aka Dimok (notoire dans les cercles étroits du webmaster Runet, blogueur)

Tout le monde veut créer un jeu pour lui-même.


Que personne ne me croie pleinement, mais ce n'était vraiment pas la condition préalable numéro un. Bien que l'histoire soit aussi vieille que le monde. "Je suis un musicien, créons un jeu pour les musiciens!", "Je suis un développeur de jeux, faisons Game Dev Tycoon!" - il existe de nombreux exemples de tels jouets, en particulier dans le genre indie.


Game Dev Tycoon, soit dit en passant, est un succès évident. En témoigne un tas de clones, le développement sur la foule. plates-formes. Nos jeux sont fondamentalement différents (d'autres mécanismes, un cadre différent), mais Web Tycoon est le plus souvent comparé à eux.


image

Première douleur


La décision est prise, nous faisons le jeu. Il a écrit sur l'expérience de l'équipe dans le premier paragraphe, en outre, les gars sont déjà occupés avec des projets en cours, ce qui est déraisonnable. Et alors? Il faut donc confier le travail à des professionnels. Ce fut notre première vraie douleur.


Tout d'abord, une tentative honnête a été faite pour embaucher un studio de développement de jeux bien développé pour le développement. Heureusement, il a été possible d'obtenir des recommandations de collègues-amis sur l'atelier qu'il est préférable de contacter. Au niveau de l'idée, tout le monde a aimé le projet et les studios étaient prêts à entreprendre un tel travail.


Voici quelques scénarios que nous avons rencontrés plus tard:


  • Oui, nous l'admettons, nos gamedes ne l'ont pas fait. Bonne chance avec le projet!
  • Vous voulez un jeu par navigateur? Faisons-le sur Unity, pas une question. Et le fait que l'utilisateur devra installer le plug-in dans le navigateur (à l'époque c'était seulement comme ça) n'est pas un problème, cela coûte presque tout le monde!

Deux studios n'ont pas payé le diz le moins cher. les quais. Reçu des résultats très volumineux. Beaucoup de travail a été fait, pas de questions. Cependant, il s'agissait d'un autre jeu. Peut-être même bon, mais différent. Pour la description, le populaire est le mieux adapté: "Quoi que fassent les Russes, tout se révèle être un fusil d'assaut Kalachnikov." Il était clair que les gens y étaient habitués et voulaient le faire dans un genre qui leur était connu, avec une mécanique bien connue et bien développée, et c'est pourquoi ils étaient figuratifs dans diz. doc


Cependant, il n'y a pas de doublure argentée. De cette étape de tournoiement de studio en studio, nous avons sorti un nom, mais très précieux. Le code d'origine était uWebmaster (le jeu concerne les webmasters, et nous sommes habitués à tout appeler par la lettre U). Une option évidemment plus pertinente a été proposée - Internet Tycoon, qui s'est ensuite transformé en Web Tycoon.


La deuxième douleur, faites-le vous-même


Quand nous avons dû admettre que rien ne fonctionnait avec les studios avec nous (ou avec nous), nous décidons de faire une maison. Une longue sélection de la personne fondamentale pour le processus, le game designer, commence. Qui saisirait l'idée, était initialement intéressé par un genre similaire, possédait les compétences nécessaires, etc.


Je ne veux pas parler longtemps d'un sujet très difficile, qui sont ces concepteurs de jeux. Comment et s'il faut écrire diz. les quais. Si un concepteur de jeu joue à son jeu, communiquez avec le public, soyez un gestionnaire. Il s'agit d'une conversation très distincte et holistique. Je dirai une chose: aujourd'hui, pour des raisons bien différentes, le projet et l'équipe ont survécu à 4 game designers (dont un junior).


Le recrutement n'a pas été facile sur tous les fronts. Pendant longtemps, son seul représentant était un gameplay solitaire (l'un des 4 mentionnés ci-dessus). La raison principale en est le «principe résiduel» avec des exigences assez élevées. Autrement dit, les développeurs ont d'abord besoin du projet principal, et là, ils ont été embauchés avec succès. Et le techdir du jeu ne s'est pas cristallisé. Bien sûr, cela ne peut pas être fait. Décidé de faire - de le faire. Mais nous avons continué ce râteau pendant longtemps.


Même lorsque le techdir est finalement apparu, il a longtemps été son propre chef d'équipe, architecte et, pour un ensemble complet, interprète. Corrigé le non-sens du personnel dur. Il a fallu environ six mois pour former une équipe à part entière. Aussi étrange que cela puisse paraître, ils recherchent depuis longtemps un illustrateur. Et soudain, notre chef de bureau est devenu eux.


Résumant un certain résultat dans cette partie de l'histoire, nous pouvons dire qu'il y a 2 ans, notre équipe de jeu est devenue vraiment fonctionnelle. C'était pour qui dessiner des interfaces, et pour qui écrire du code, et même Scrum a été introduit un peu plus tard, ce qui était déjà une pratique établie pour l'entreprise dans son ensemble.


Conception et interfaces


Maintenant, nous ressemblons à ceci:


image

C'est assez inhabituel pour le jeu, et on pourrait même dire que c'est ennuyeux et pas amusant. Mais c'est un choix significatif. Cela ressemble plus à un portail Web à première vue qu'à un jeu.


Les gens aiment:


image

Montrant des captures d'écran à des connaissances, j'entendais souvent quelque chose comme: "C'est donc le panneau d'administration", "Je pensais que c'était les statistiques de quelqu'un, pas un jeu." Ceux qui sont notre public sont immédiatement partis en fanfare. Ils voulaient quelque chose de vraiment authentique, pas des toons. Peut-être que nous perdons certains joueurs occasionnels en raison du style choisi, mais nous croyons en sa concision.


Il a finalement convaincu que le jeu ne devait pas ressembler à un jeu typique, un regard sur Football Manager. Le simulateur peut ne pas sembler très ludique, mais réussir. C'est le genre.


Dans le style choisi, il y avait plusieurs options pour les visuels. Vous trouverez ci-dessous différentes solutions de différents concepteurs.


image

image

image

image

image

image

Tout va mieux si vous ajoutez de l'IA


Les joueurs adorent les cosmétiques. Nous ne l'avons pas encore implémenté, mais nous avons déjà appris à générer un avatar pour un joueur à partir d'une photo. Plus intéressant, cela se produit avec une approche spécifique très innovante de l'apprentissage automatique et de la formation de modèles sans ensembles de données.


Il est généré à partir des éléments de notre concepteur d'avatar, et non stylisé à partir d'une photo à la Prisma. Et bien que la machine n'ait pas gagné un homme en termes de qualité, elle l'a rattrapé en termes de qualité, ce qui, vu la tâche, est considéré comme un succès.


image

La technologie elle-même prévoit de se développer. Cette histoire mérite un article séparé, voire aucun, et ce sera certainement sur Habré. Si quelqu'un est très impatient, frappez le PM, nous vous donnerons l'opportunité de jouer avec cela personnellement.


L'anglais d'abord, le mobile d'abord


Plus nous nous rapprochons de la sortie, plus nous réalisons que notre jeu s'intègre parfaitement sur les appareils mobiles. Quelque part encore mieux que sur le bureau. Dans le même temps, pendant la période de test, les joueurs de notre navigateur nous ont très satisfaits du public. Ils ont mené des conversations informatiques actives dans la salle de discussion du jeu, écrit des robots pour automatiser le jeu et choisi notre API non documentée.


Initialement, le jeu a été développé avec l'idée que nous faisons actuellement un navigateur, dans lequel nous testons la mécanique, l'équilibre, puis rapidement, grâce à l'API intégrée, nous collectons des applications natives. La réalité a fait des ajustements.


Il n'y avait pas de temps ni de budget pour ce merveilleux plan. Dans le même temps, presque tous les éditeurs avec lesquels nous avons parlé étaient principalement intéressés par le mobile et proposaient de venir vers eux lorsque nous en aurions un.


Il a fallu faire des compromis, car sur Cordova pendant quelques mois, nous avons assemblé des applications iOS et Android. Il est clair qu'ils ne sont pas standard (bien que très décents), mais vous pouvez jouer assez confortablement. Et il est possible de tester l'hypothèse «comment ça se passe» de façon absolument précise.


Problèmes avec l'App Store


Avec Apple et la modération dans l'App Store, j'ai dû lutter un peu. Au début, il y avait une rédaction avec la motivation: «Vous êtes une application web. "Les appareils Apple ont Safari et y vivent, ne vous embêtez pas." Mais nous l'avons gagné.


Puis, malheureusement, en raison des exigences d'Apple, j'ai dû renommer la monnaie de jeu accrocheuse Bitcoin en Webcoin. En toute honnêteté, ils ont raison, le trompe-l'œil est vraiment possible. Même si pour nous les sensations ne sont pas les mêmes.


Quant aux localisations, nous sommes tout à fait prêts à démarrer sur un public anglophone. Cependant, il est plus facile et moins cher pour nous de perfectionner et de tester sur notre marché natif russophone. Par conséquent, jusqu'à présent, nous n'avons commencé qu'en Russie, mais dans une semaine ou deux, nous prévoyons de revenir à l'anglais d'abord.


Points techniques


Migration de React et Redux vers Vue et Vuex


Je comprends que maintenant nous marchons sur la glace mince des holivars possibles, donc je ferai une réserve tout de suite que nous n'imposons rien ni n'affirmons rien, nous sommes sciemment d'accord avec "vous ne savez tout simplement pas comment les cuisiner". Ce n'est qu'une description de notre cheminement, des raisons du choix et de l'expérience.


La première révolution dans le processus de création du jeu, bien que très douce, a été la transition de React et Redux à Vue et Vuex.


Au sein de l'entreprise, nous essayons de développer tous les produits sur approximativement la même pile technologique. Il s'agit avant tout d'une expertise accumulée et, dans ce cas, d'un transfert aisé entre équipes de développement. Basique pour nous aujourd'hui: NodeJS, React et MongoDB.


Faire un jeu avec un tas de données et de connexions était initialement stupide chez NoSQL. En conséquence, cela a été sanglant pendant une semaine que nous y avons tous migré, mais d'abord.


Pourquoi à mi-chemin est-il passé de React à Vue?


L'avènement du nouveau concepteur de jeu a changé la mécanique centrale du jeu, ce qui a entraîné une sérieuse altération de la plupart des interfaces du jeu. Les nouvelles mécaniques ont été rapidement prototypées sur Vue, le critère de ce choix était le seuil bas pour entrer dans la technologie. Dans la même période, nous avons conçu et commencé à introduire un système vectoriel de croissance du trafic, de profit et d'énergie. Avant cela, ils écrivaient simplement des données à temps, mais ne fonctionnaient pas sur les taux de leur changement.


Au départ, en collaboration avec React, nous avons utilisé Redux. La propagation a augmenté très rapidement - chaque action de l'utilisateur avec un site Web dans le jeu a créé une nouvelle entrée. En conséquence, toute l'histoire a muté et des getters ont été racontés, et ils ont eu des calculs compliqués de trafic et de profit, en conséquence - tout cela a terriblement ralenti. Bien sûr, vous pouvez prendre MobX, refaire la logique de calcul, mais ce moment a coïncidé avec de graves modifications dans la mécanique centrale, ce n'était en quelque sorte pas avant. Ou les étoiles ont coïncidé. Là où ils ont essayé de résoudre les problèmes dans Redux en connectant plusieurs parties, dans Vuex, tout fonctionnait hors de la boîte et était divisé en un certain nombre de sous-modules sans gestes inutiles.


Le sucre de syntaxe et la flexibilité de Vue nous «frappent» vraiment. Par exemple, maintenant, afin de mettre à jour régulièrement une valeur dans un composant, nous avons au lieu de propriétés calculées


foo() { return bar + baz; } 

écrire


 foo() { return (this.oneTick, bar + baz); } 

Un peu de magie est cachée dans la propriété this.oneTick, qui est réactive et est mise à jour une fois par seconde, provoquant le rendu du composant si le résultat de l'expression bar + baz change.


Migration de base de données


Depuis le backend, nous avons eu une petite et une grande migration. Initialement, le projet était réalisé sur MySQL. Comme c'était rapide, je pensais simplement que nous avions besoin de relais et d'autres délices. Après cela, nous avons mûri un peu et nous sommes passés sans aucune difficulté à PostgreSQL.

Le passage à MongoDB a été plus étendu et complexe. La décision était due à une évolutivité facile et à des performances relativement supérieures. Il y a eu beaucoup plus de problèmes lors du deuxième déménagement, malgré la présence d'ORM. Mais la configuration même du ReplicaSet standard et d'AutoFailOver ne nous a pris qu'une heure.


Quelques mots sur les éditeurs


Pour commencer, nous les attendons. Jusqu'à présent, seul Mail.Ru a confiance en nous. Merci à mes collègues pour cela. Très bientôt, nous découvrirons comment notre version de navigateur atteint leur public.


Dans les livres intelligents et les podcasts, ils disent que les éditeurs doivent arriver à mi-chemin, et non au stade de la sortie. Nous l'avons fait, avons commencé à parler à l'avance, notamment en allant au DevGamm en novembre.


Qu'attendions-nous:


"Oui, ok, refaites ceci et cela, et nous voici et notre expertise!"


Ce que nous avons obtenu:


"C'est cool, quelque chose de frais et non standard, un cadre intéressant, mais comment commencer et il y aura des techniques de monétisation - venez."


image

En général, la théorie nous a échoué. Les tentatives pour comprendre pourquoi cela s'est produit ont donné la réponse: "Vous avez un non standard, alors le voici."


La main sur le cœur, je dirai qu'à mon avis, il n'y a pas tellement de non-standard, mais ils savent mieux.


En général, les représentants du jeu dev réagissent positivement à nous. On peut voir que le marché s'est lassé des prochains «Kill the Dragon» et «Conquer the Castle». Bien que cela puisse être une perception déformée des personnes de l'intérieur.


Finale


Avec un chemin si épineux et tortueux, nous sommes arrivés à un déjeuner doux. Ce n'est pas le cas lorsque les gagnants ne sont pas jugés et cela ne peut pas encore être qualifié de victoire. Par conséquent, nous attendons dans les commentaires vos commentaires et questions. Nous répondrons rapidement à tout!


Si vous êtes prêt à offrir une coopération, nous sommes même prêts à y réfléchir.

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


All Articles