Pourquoi écrire votre propre moteur de jeu?

En décembre dernier, lors de la conférence Games Gathering 2017, nous avons fait un rapport dans lequel nous parlions de la nécessité pour les entreprises travaillant dans l'industrie du jeu d'écrire leurs propres moteurs.



L'unité face à une variété de moteurs de jeu



Pourquoi dans le monde moderne, dans lequel existent des géants comme Unity, fait quelque chose de son propre chef, écrit ses propres moteurs de jeu?

Voici une diapositive contenant des données d'Unity Technologies sur l'utilisation de divers moteurs de jeu en 2017. L'année prochaine, la situation, comme vous le comprenez, va changer. Ce qui nous intéresse ici, c'est 41%, c'est-à-dire des moteurs de notre propre conception. Si vous regardez les 5 plus grandes entreprises représentées à la conférence, chacune d'entre elles aura son propre moteur. Il s'avère que dans la plupart des entreprises représentant l'industrie du jeu, une sorte de développement interne est utilisé. Ce n'est pas toujours la décision la plus raisonnable au monde, mais elle l'est.

Quelles technologies de base les entreprises qui envisagent de développer un projet de jeu peuvent-elles choisir?

Armée des Sept Nations



La pyramide que vous voyez sur la diapositive peut être poursuivie de haut en bas. Cela vous limite clairement. En bas - le système d'exploitation, encore plus bas - une technologie de base. Vous trouverez ci-dessus des modules complémentaires sur les moteurs, une boîte à outils prête à l'emploi fournie avec des jeux, tels que les outils Neverwinter Nights. Quoi que vous fassiez, d'une manière ou d'une autre, vous vous retrouvez à l'intérieur de cette chose.

Supposons que je veuille être au deuxième niveau de cette pyramide ci-dessous. Cependant, tous les chemins mènent finalement au sommet de la pyramide. Nous utiliserons quelque chose de l'existant, mais il est très important que nous puissions voir dans le coin supérieur gauche du niveau supérieur de la pyramide, c'est-à-dire des moteurs de notre propre conception.

Nous analysons maintenant le temps, les efforts et l'argent nécessaires pour développer le jeu.

Retour aux sources



Si le graphique à secteurs affiché sur la diapositive est un jeu, le moteur est son secteur bleu. Dans un monde idéal, lors du développement d'un jeu, vous pouvez supprimer ce secteur bleu et y mettre du rouge, du jaune ou du vert. Vous pouvez changer un grand «U» en un autre grand «U», ou prendre un petit «x», et ce que vous choisissez fonctionnera là. En réalité, ce n'est pas le cas, mais nous devons nous efforcer de le faire. Une image similaire, en ce qui concerne les projets réels, est constamment observée dans l'industrie du jeu. Il arrive également que l'ensemble du diagramme soit occupé par le moteur, mais cela n'est vrai que pour certains produits de démonstration.

Dans ce cas, l'argent, le temps et tout le reste sont distribués de cette façon. Quoi que vous fassiez, vous devez gérer tout ce qui tombe dans la zone verte du diagramme. Il ne change pas de moteur en moteur. Par conséquent, si vous disposez de ressources suffisantes pour prendre en charge l'ensemble du processus de travail sur un projet de jeu, le développement du moteur ne sera pas si coûteux. Cependant, si quelqu'un dans l'entreprise commence à parler de développer son propre moteur, il rencontrera très probablement un certain ensemble d'objections. Considérez-les.

Mois-homme mythique



Supposons que vous décidiez de créer votre propre moteur et que vous en parliez au décideur. En réponse, vous entendrez la même chose que l'on peut voir sur la diapositive: "Vous le ferez pendant longtemps, c'est très risqué, c'est irrationnel, cela ne nous aidera pas à atteindre nos objectifs." Que peut-on répondre? Le fait est que toutes ces objections, à l'exception de la dernière, ne résistent pas à la critique.

Long développement du moteur? Mais si le développement avec son propre moteur va plus vite, ce n'est pas un argument. Peut-être, en général, personne ne sait ce qu'est le «rationnel». Par conséquent, toutes ces objections sont très subjectives.

Le dernier point concernant la contribution de votre moteur à la réalisation des objectifs est très important. Si votre objectif est de gagner grâce à une subvention d'Unreal 4, vous n'avez probablement pas besoin de créer votre propre moteur, car cela ne mène pas à cet objectif. Si vous avez un objectif, dans le cadre duquel vous devez faire quelque chose sur certaines technologies, vous n'avez pas besoin d'écrire votre propre moteur - vous devez prendre ce qui est. Mais il est loin d'être toujours possible d'utiliser efficacement des moteurs prêts à l'emploi. Pourquoi, tout de même, écrire votre propre moteur?

13 raisons pour lesquelles



Quand pourriez-vous avoir besoin de votre propre moteur? Analysons cette diapositive par points:

  • Time to Market - délai de commercialisation d'un produit. C'est vraiment grave. La moitié des moteurs qui sont maintenant utilisés dans les grandes entreprises ont été développés précisément parce qu'à ce moment où cette entreprise devait occuper rapidement une niche, développer la sienne était plus rapide que de prendre autre chose et de la maîtriser.

Voici une histoire pour vous. Une entreprise avait une tâche pour les programmeurs sur le site qui ressemblait à ceci: «Les gars, si vous voulez travailler avec nous, veuillez écrire Asteroids, qui devrait fonctionner sur la plate-forme Android sans utiliser de bibliothèques externes. Nous pensons que 8 heures vous suffisent. Le moment est venu. " Ensuite, le temps a été porté à 12 heures. Peut-être que ça a l'air drôle. Au début, j'ai regardé cela, de l'extérieur, puis j'ai regardé cette entreprise et m'a demandé de vous dire ce qu'elle avait envoyé sous forme de réponse à cette tâche. Il s'est avéré que plus de deux cents programmes ont été sélectionnés, c'est-à-dire que ces programmes ont été lancés et ont fonctionné. Cela signifie que si vous souhaitez soudainement publier "Asteroids" pour Android, alors au moins 200 personnes peuvent le faire en 8 heures. Je ne dis pas qu'il peut être vendu. Mais j'ai raconté cette histoire au fait que très souvent, en fait, le moteur est Time to Market. Dites, tout simplement parce que vous avez des besoins si petits que vous étudierez la documentation pour le même Unreal plus longtemps que de simplement prendre et créer la vôtre.

  • Lord of the Platform est le maître de la plateforme. Il existe des plates-formes pour lesquelles il n'y a pas d'outils prêts à l'emploi. Par exemple, STB, décodeur (récepteur de télévision numérique) - un boîtier pour la télévision par câble, qui est sur la table chez un tiers des Américains.

Warner compte 120 millions d'utilisateurs de ce service. Si vous écrivez des logiciels, y compris des jeux, vous avez un dollar dans la boîte. C'est 120 millions de dollars par an. En même temps, personne d'autre ne peut écrire pour cette chose sauf vous. Parce qu'il n'y a pas de DirectX, il n'y a rien du tout. Si vous pouvez écrire des programmes pour STB, alors vous êtes le maître de la plateforme, vous avez ces cent vingt millions de dollars par an. Pourquoi ne pas écrire votre propre moteur?

Il est clair que nous parlons maintenant plus de quelque chose comme des jouets de console, mais, néanmoins, dans certaines situations, cela peut être nécessaire. Ici, par exemple, les machines à sous. Bien sûr, là maintenant, principalement des ordinateurs. Mais nous avons devant nous un appareil de fer séparé et un énorme marché, pour lequel il est tout à fait possible d'écrire quelque chose de notre cru.

On peut dire qu'on s'intéresse aux téléphones, mais on parle de millions de dollars. Pourquoi ne pas écrire pour d'autres appareils? En conséquence, il y a des raisons absolument claires de le faire.
Ou, par exemple, nous avons les dernières montres intelligentes. Le SDK n'est pas encore venu à eux, personne ne sait quoi faire avec eux, et si vous pouvez, par vous-même, écrire un produit de qualité pour eux, alors vous gagnez, disons, un dollar avec chacun de ces appareils. S'ils seront vendus deux millions - alors vous obtiendrez deux millions de dollars. L'écriture n'est pas difficile, mais pour cela, vous devez créer votre propre moteur, car il n'y a pas d'étrangers, et les fabricants de tels appareils ne feront pas pour eux de moteurs publics de développement.

  • Les appareils faibles mais fiers sont des appareils petits mais fiers. Si vous créez des jeux pour téléphones mobiles, collectez au moins quelques statistiques, alors vous savez qu'avec le matériel des appareils Apple, tout est plus ou moins normal, mais avec la plate-forme Android, c'est juste un désastre.

La moitié des appareils sur le marché sont basés sur le chipset ARM Mali-400, tout téléphone économique est un Mali-400. Et si vous êtes payé pour ce que vous faites avec les applications téléphoniques, alors vous devriez écrire pour ces petits appareils fiers qui ne vont pas encore quitter le marché et le quitteront très bientôt.

De plus, dans le cas de l'iPhone, vous pouvez faire au moins quelques paris sur la progression. Par exemple, il est prévu qu'Unreal fonctionnera sous l'iPhone 10, bien que jusqu'à ce que cela soit rappelé, il y aura déjà des iPhone 12, 15 ou 17. Mais dans le cas du monde en général, il est plus difficile de progresser à court terme. Parce que la mise à niveau des appareils est très lente.

Si vous voulez une image compétitive, et si elle est très importante, vous n’allez pas opter pour des appareils à faible consommation. Mais vous devez garder à l'esprit que tous les moteurs modernes ne sont pas très réduits. Si vous ne voulez pas d'une image compétitive, alors, prenez en compte les capacités des téléphones faibles. Par conséquent, si vous êtes dans une situation où vous n'êtes pas intéressé par les appareils les plus rapides, par exemple, vous êtes le seul distributeur quelque part au Portugal ou au Brésil, alors vous devrez y penser.

  • Propre langue pour ses propres idées - propres langues pour ses propres idées. Lorsque vous fabriquez le moteur vous-même, vous pouvez utiliser ce concept. Le fait est que le principal problème de notre industrie est que le domaine du game designer est la philologie. Il pense en langage ordinaire. Il ne peut rien faire d'autre. Mais le programmeur pense dans le domaine de la programmation et il y a un écart entre eux. Par conséquent, une certaine itération, qui doit être répétée en continu, coûte, par exemple, deux dollars. Et vous dépensez constamment cet argent.

Les moteurs standard essaient de couvrir tout le monde. En fait, nous voyons comment ils essaient de faire des transformations de domaine naturel d'un langage à l'autre et d'un espace à l'autre. Mais pour tout le monde. Et vous avez vos propres idées, et vous pouvez les mettre en œuvre directement, en créant votre propre ensemble d'outils. Il est clair que tout cela, sous forme de plug-ins, peut se faire par-dessus les moteurs existants, mais son moteur ouvre des possibilités complètement différentes.

  • Mécanique unique = moteurs uniques - mécanique unique = moteurs uniques. Mes amis ont écrit Minecraft la quinzième année en utilisant Unity. Y avait-il un intérêt à faire tout cela - une question ouverte. Mais ils ont choisi le moteur et se sont mis au travail. Cependant, le moteur, évidemment, les dérangeait beaucoup. C'était dur pour eux. Ils ont eu de très longues itérations. Après les avoir consultés, ils ont écrit, littéralement en trois jours, leur propre rendu. De plus, le reste du code responsable, disons, de la construction du monde, bien sûr, n'a pas disparu. Tout a cessé d'être en C #, a cessé d'être dans Unity. Et le travail a commencé à bouillir. Je ne sais pas s’ils ont réussi à gagner de l’argent, mais la principale conclusion de cette histoire est qu’ils n’ont initialement pas dû utiliser Unity.

Autrement dit, il existe un grand nombre de mécaniciens pour lesquels les moteurs standard, grands et universels ne conviennent pas simplement parce qu'ils sont conçus pour tout. Par conséquent, si vous proposez quelque chose de spécial demain, une sorte de mécanisme de voxel complexe, alors travailler avec des moteurs standard ne vous conviendra pas. Autrement dit, il existe des mécanismes pour lesquels les moteurs standard ne conviennent pas et qui sont assez simples à mettre en œuvre indépendamment.

  • Le jeu n'est pas un rendu - le jeu est tout le reste - le jeu n'est pas un rendu, le jeu est tout le reste. Nous en avons déjà parlé. Si votre seul problème était de dessiner quelque chose ou, par exemple, d'utiliser du son pour créer un jeu multi-plateforme, vous pourriez voir des histoires similaires dans la pyramide discutée plus tôt. Si vous dites: «Je veux jouer du son sur trois plates-formes», vous n'avez pas besoin d'un grand «U» pour cela - un petit «c» suffira.

Nous avons examiné les raisons de développer notre propre moteur. Arrêtons-nous maintenant sur les avantages que la société offre avec le développement de son propre moteur.

Les avantages de développer votre propre moteur



Considérez les avantages de développer votre propre moteur, sur la base des principales idées avancées sur la diapositive:

  • L'achat est souvent meilleur que l'hypothèque - l'achat est souvent préférable aux hypothèques. Le développement de jeux, c'est de l'argent de toute façon. Il existe des moyens de monétiser, en utilisant lequel acheter n'est pas seulement meilleur qu'une hypothèque, mais c'est juste la seule option.

Si quelqu'un a travaillé sur les technologies mobiles, vous comprenez tout. Si la case sur le moteur indique: «10% des redevances», alors c'est catégoriquement inacceptable, vous ne gagnerez pas autant. Vous pouvez avoir un bénéfice de cent pour cent, mais vous travaillez sur 2. Autrement dit, si vous avez des redevances, c'est une raison purement économique d'abandonner le moteur. Mais je dois dire que trois, ou plutôt - deux des moteurs les plus populaires en ce moment - ce n'est qu'une question de déductions. Autrement dit, cette option disparaît immédiatement.

  • La spécificité est meilleure que l'universalité à long terme - sur une longue distance, les outils spécialisés sont toujours meilleurs que les outils universels. Évidemment, l'universalité est toujours plus lente, elle est moins productive et moins spécifique que les choses spécialisées. Un moteur écrit pour une tâche spécifique y fera face mieux et plus rapidement qu'un outil universel. Sur une longue distance, les outils spéciaux sont beaucoup plus rentables que les outils universels.
  • Des outils et des pipelines sont développés à l'intérieur - des pipelines et des outils de développement créés en interne. Tout moteur inventé par des personnes extérieures à votre entreprise est guidé par plusieurs choses. Le premier est les meilleures pratiques. Autrement dit, le moteur d'une autre entreprise ne se concentre pas sur la façon dont votre artiste peint, mais sur la façon dont les artistes peignent, idéal de leur point de vue. Il est possible que vos artistes peignent différemment. Ils ont leur propre pipeline et ils réussissent.

Vous avez 2 options: soit les recycler comme vous le devriez du point de vue des meilleures pratiques, soit utiliser les vôtres. Il y a des exemples simples. Supposons que vous disiez: «Nous importons des modèles 3D». Vous ne savez pas ce qu'il y a de l'autre côté. Par conséquent, vous avez besoin d'un format intermédiaire. Le format intermédiaire est FBX. FBX a des défauts pour tous ceux qui le savent. Et vous n'avez nulle part où aller, car vous ne savez pas ce qui y sera fait, vous n'écrirez pas de plug-ins pour 450 outils de modélisation 3D.

Lorsque vous travaillez au sein de votre entreprise, vous pouvez implémenter le même pipeline que vous avez déjà et ajouter à ce que vous faites. En fait, c'est très important. Le fait est que tout cela a à voir avec le temps de développement et, par conséquent, avec le coût. Par conséquent, lorsque vous développez chez vous, vous pouvez disposer du pipeline que vous avez déjà. Sinon, vous aurez un document intitulé «La règle pour télécharger des modèles 3D et créer des matériaux pour les artistes» qui sera plus qu'un document de conception, ce qui est faux.

  • Temps de réaction - temps de réaction. Nous parlons du temps de réaction du motoriste à vos demandes, de la possibilité d'équiper le moteur de nouvelles fonctionnalités et de la recherche opérationnelle de nouvelles technologies.

Disons que dans le prochain bureau, il y a des gens qui font le moteur. Tous ceux qui ont essayé de corriger le bogue dans le moteur universel, c'est-à-dire d'écrire Unity ou Epic dans le traqueur de bogues, savent qu'il vaut mieux ne même pas démarrer. Et si les développeurs sont assis dans le bureau suivant, vous pouvez les contacter et résoudre le problème en 15 minutes.

Il en va de même pour la proposition de nouvelles fonctionnalités, si vous en avez le droit. L'étude des nouvelles technologies est également simplifiée en utilisant nos propres moteurs.
Supposons que votre programmeur soit allé à une conférence et ait écouté une conférence sur quelque chose de nouveau là-bas. Il l'a immédiatement essayé, vous avez une idée de ce nouveau et vous savez si vous en avez besoin ou non. Vous pouvez directement réagir pour essayer quelque chose d'intéressant du monde de la science. Et cela, soit dit en passant, signifie que l'entreprise peut avoir une personne qui sera appelée «chercheur». Dans le même temps, vous pouvez faire des recherches sur le même Unreal, car il provient de la source.

  • Performance - performance. L'industrie du jeu est toujours la productivité. La première approche pour atteindre des performances élevées consiste à utiliser des solutions personnalisées. Plus les solutions sont spécifiques, plus elles sont productives. La deuxième approche - d'ailleurs, ma chère, est l'optimisation des moteurs prêts à l'emploi. À quoi cela ressemblera exactement - dépend fortement de ces moteurs.

Développer votre propre moteur n'est pas seulement un avantage. Ce sont aussi des risques. Considérez-les.

Risques associés au développement de votre propre moteur



Tenez compte des risques qui accompagnent le développement et l'utilisation de nos propres moteurs:

  • Temps de développement - temps de développement. Ce concept recoupe ce dont nous avons parlé quand entrer sur le marché. Le développement du moteur peut être très long et assez rapide. Mais le temps de développement du moteur, en tout cas, contribue au temps de développement global du projet. C'est donc aussi un risque. Par exemple, je connais des équipes dans lesquelles le temps de développement du moteur tend vers l'infini.
  • Boîtiers terminaux de verrouillage du fournisseur - boîtiers terminaux de liaison avec le fournisseur. Cela vaut non seulement pour les grandes entreprises, mais aussi pour les petites. Disons que vous avez engagé Vasya, il a écrit le moteur, puis est tombé amoureux, vous a quitté et personne ne comprend ce qu'il a écrit. Par conséquent, le verrouillage du fournisseur est pire que Google. Parce que vous pouvez toujours écrire une lettre à Google, bien qu'ils ne répondent pas, mais ici avec le départ du programmeur, tout était fini. Le résultat est un temps de développement perdu et d'autres conséquences désagréables. Vous devez pouvoir éviter ces risques.
  • Réinventer la roue - l'invention de la roue. Le fait est que nous vivons dans un monde dans lequel vous inventez toujours des vélos. Lors du développement du moteur, il s'avère que l'usine de vélos est transférée du code de jeu au code moteur, bien qu'ils n'y appartiennent pas.
  • Écosystème fermé - un écosystème fermé.Tout ce qui se fait à l'intérieur de l'entreprise appartient à cette entreprise. Je connais un tas d'entreprises qui ont quelque chose comme leur propre langage de script. Il peut s'agir d'une sorte de XScript qui ne fonctionne que dans le cadre de leur solution.

Les programmeurs qui connaissent cette technologie, en fait, ne peuvent rien faire de plus. Cela peut être considéré comme l'un des facteurs contribuant à retenir les employés. Par conséquent, la réponse à la question de savoir si elle est bonne ou mauvaise, si l'utilisation de vos propres technologies est un risque dépend de la situation spécifique. Par exemple, nous essayons de ne pas utiliser les concepts de notre propre invention. Par exemple, je connais une entreprise qui a Lua, fortement typé, avec la syntaxe Pascal. Elle peut être maîtrisée, mais cette connaissance est morte, comme le grec. Nous essayons si fort de ne pas agir.

L'enjeu principal de la vie, de l'univers et tout ça



Considérez une question très importante. Quelles ressources sont nécessaires principalement pour développer votre propre moteur? Une ressource sans laquelle il est insensé de penser à créer ou non votre propre moteur. Bien entendu, la réponse n'est pas 42. La question est de savoir ce qu'il faut pour au moins pouvoir dire: «Oui, nous avons au moins quelque chose, nous pouvons commencer à faire quelque chose». La réponse à cette question est que les programmeurs sont nécessaires pour développer votre propre moteur.

Programmeurs



Pour créer votre propre moteur, vous avez besoin de programmeurs. Si vous ne le savez pas, recherchez la différence entre les mots "développeur" (développeur) et "programmeur" (programmeur). C'est très important. Les développeurs sont le groupe principal. L'industrie du jeu est tellement organisée que la plupart des gens ne peuvent pas être appelés programmeurs. Désolé, mais ce sont des développeurs. Les développeurs ne sont pas en mesure de créer correctement le moteur. Encore une fois, si vous regardez la différence entre le premier et le second, les développeurs créent les jeux et les programmeurs créent les outils. Les développeurs fabriquent un produit, l'entreprise gagne du produit, mais les outils doivent être créés par des programmeurs, sinon ils ne fonctionneront tout simplement pas.

D'une part, c'est un monde très ouvert maintenant. Par exemple, je connais le code d'Unreal 4 et de CryEngine, il est ouvert. Quiconque veut savoir peut découvrir le code Unity, il y a une énorme quantité de documents pertinents. Cela signifie que quelqu'un qui est programmeur et qui lit l'anglais peut le faire. Il n'y a pas de science fusée là-bas. Mais d'un autre côté, il s'est avéré que les programmeurs qui lisent en anglais sont très difficiles à trouver. Par conséquent, vous devez savoir où ils se trouvent, vous devez pouvoir les recruter, les utiliser, les promouvoir. Si vous savez comment, vous pouvez déjà penser à votre moteur. Si vous n'avez pas de telles personnes, vous ne réussirez pas. Les ténèbres en sont des exemples. Ce n'est pas qu'il existe de mauvaises et de bonnes solutions. Il y a juste des choses qui ne peuvent pas fonctionner au départ.

Les programmeurs doivent pouvoir embaucher. Sachez louer - vous pouvez fabriquer un moteur. Je ne sais pas comment embaucher - alors vous devez prendre quelque chose de prêt. De plus, le plus drôle, c'est que lorsque vous prenez quelque chose de prêt, alors si vous êtes une grande entreprise, vous avez toujours besoin de deux personnes de ces programmeurs qui lisent en anglais.

Si des programmeurs sont nécessaires pour développer le moteur, nous avons immédiatement quelques questions. Où chercher des programmeurs? Comment organiser leur travail? À quoi dois-je faire attention lorsque je pense aux voies de développement des sociétés de jeux?

Epidémie technique



Il convient à présent de rappeler un autre aspect de la recherche de salariés, qui concerne principalement les grandes entreprises. Ces entreprises ont plusieurs approches pour le recrutement du personnel.

Tout d'abord, vous pouvez recruter des personnes, des emplois, organiser des stages et, en les formant au sein de l'entreprise, atteindre le niveau souhaité. Il s'agit d'une approche normale. Dans le même temps, de nombreux problèmes technologiques sont également résolus, car il est plus facile de trouver un langage commun avec une personne qui perçoit initialement la culture d'entreprise et étudie certaines technologies.

Deuxièmement, il y a une approche que, en principe, nous professons. Comment fonctionne le kéfir? Il transforme tout en lui-même. Vous prenez du lait, vous y jetez du kéfir - et il n'y a pas de lait, tout s'est transformé en kéfir. Cela ressemble à ceci pour nous: "Les gars, prenons 5 programmeurs forts, ce sera un centre technologique interne." Et je dis à tout le monde que si vous pouvez vous permettre de faire un département RnD, si vous êtes une grande entreprise, faites-le. Qu'ils ne fassent même rien d'utile du point de vue de l'argent. Si une entreprise a renforcé sa position sur le marché et se pose la question de savoir où se développer, la création d'un département RnD peut être la réponse à cette question. Lorsqu'une entreprise est déjà riche, ce n'est pas une perte d'argent, car elle perd déjà tellement d'argent sur l'efficacité sur laquelle notre industrie du jeu travaille maintenant qu'elle ne remarquera tout simplement pas les coûts de la recherche.

Considérez maintenant l'approche, qui est que l'entreprise va organiser une équipe qui fabrique le moteur ou d'autres choses intéressantes. C'est du travail pour l'avenir. Vous pouvez mener des entretiens, dire que vous donnez de l'argent, vous avez une tâche intéressante, vous faites un moteur. Vous pouvez choisir parmi les candidats, les gens s'adressent à vous et au sein de l'entreprise, vous avez toujours une telle atmosphère lorsque vous pouvez motiver, encourager et, par conséquent, atteindre vos objectifs.

Par exemple, certains modules sont en cours de développement par des entreprises alimentaires, car elles en ont besoin. Autrement dit, une physique a été ordonnée, et au lieu de scier certaines de nos propres choses, nous disons: «Faisons-le. Nous venons de proposer des interfaces communes, quelque peu généralisées, et vous le ferez. » Et dans le cadre de tâches typiques, c'est très bien. Autrement dit, il est bon de diffuser la technologie au sein de l'entreprise.

Si l'entreprise est déjà si grande qu'elle peut se permettre de faire quelque chose d'intéressant à l'intérieur d'elle-même, alors elle est payante même du point de vue de l'argent. Par conséquent, si vous le pouvez, essayez-le. Cela peut ressembler à ce que vous voulez - par exemple, votre propre branche Unreal est créée et là, nous traitons tout comme vous le souhaitez. Par exemple, j'ai fait un navigateur dans l'une des sociétés qui tient dans 2,5 mégaoctets de mémoire. Et il a travaillé. Pourquoi - je ne sais pas, mais c'était infiniment intéressant.

Ci-dessus, nous avons mentionné le problème des sociétés de jeux, qui est l'organisation d'une interaction efficace entre les programmeurs et les concepteurs. Arrêtons-nous plus en détail sur ce problème.

Deux mondes



Le moment est venu de vous montrer le lieu de travail de notre game designer. Ceci est une vraie image. Une démonstration est présentée ici, la mise en œuvre du comportement, un peu plus tard, nous nous attarderons sur cela plus en détail.

Deux mondes coexistent dans l'industrie du jeu. Les gens se concentrent soit sur la résolution de problèmes technologiques, soit sur le récit. Et au milieu - une sorte d'artisanat. Autrement dit, il n'y a pratiquement aucun outil. Mots, mots, mots - bang - code. Encore une fois les mots - et encore le code. Nous pensons que des outils sont nécessaires pour vous permettre de vous connecter à ce qui résultera du travail sur le jeu, un concepteur de jeu, un gestionnaire, d'autres employés qui ne sont pas des programmeurs.

Sur la diapositive, vous pouvez voir l'arbre de comportement, l'arbre de comportement. En principe, c'est une chose qui vient de Wikipédia, mais devant nous, elle a été prise de là par Unreal. Il n'y a rien de mal à cela. Donc, la documentation à ce sujet se trouve sur le site Web d'Unreal, il n'a pas été difficile pour nous de rendre une interface appropriée compatible avec ce qui se fait dans Unreal. Autrement dit, vous pouvez prendre n'importe quel exemple du site d'action Anryl, un exemple du comportement lui-même, puisque le format est tout à fait le même, réécrivez-le comme ceci, et cela fonctionnera. Cela signifie que j'ai facilité ma vie, je n'écris pas de documentation. Et il y a beaucoup de telles choses.

Dans l'exemple de la diapositive, quelque chose se passe, un crabe court, attrape quelqu'un, en général, peu importe. À l'intérieur, le programmeur résout des problèmes qui ressemblent à "aller à ...", "tirer sur ...", "calculer la distance" - et c'est tout. Tous les autres comportements sont écrits dans cet éditeur par une personne qui n'a absolument rien à voir avec la programmation. Et cela fonctionne, par opposition à la traduction de texte en code. De plus, en parlant d'équilibre, disons. Qu'est-ce que l'équilibre? Ce sont 15 facteurs qui peuvent être modifiés. Et voici le comportement, pas les coefficients.

C'est-à-dire, par exemple, que le comportement de "patrouille" est décrit par le concepteur du jeu, pas par le programmeur. Cela signifie que nous avons fait le pas que la plupart des gens ne font pas. Ils écrivent simplement dans un document de conception: des «patrouilles». Et un programmeur peut traduire cela de 50 manières différentes. Qu'est-ce que la patrouille? Et ici, le game designer écrit exactement ce qu'il veut dire. Et c'est une victoire, mes amis. Pour cela, vous avez besoin de vos propres outils. Afin de faciliter la transition de la définition verbale de votre visionnaire qui voit le jeu, pour ainsi dire, dans sa tête, aux programmeurs. Sinon, ils cesseront d'être programmeurs, deviendront développeurs et désherberont l'herbe toute leur vie.

Résumé



Pour résumer. Nous avons parlé des raisons d'écrire votre propre moteur. Disons que si vous regardez en arrière des appareils obsolètes, ce n'est ni bon ni mauvais. Autrement dit, vous voulez que vos jeux fonctionnent sur une certaine gamme d'appareils qui ne sont plus pris en charge par les moteurs commerciaux. En même temps, vous voulez avoir l'air moderne. Comment y parvenir?Écrivez le vôtre.

Voulez-vous posséder une plateforme? Vous avez un projet spécifique qui ne nécessite tout simplement pas l'utilisation de solutions universelles? Ou, au contraire, avez-vous un projet très vaste et complexe avec une image spécifique? Dans ces situations, encore une fois, vous pouvez penser à votre moteur. Dans le même temps, pour créer votre propre moteur, vous avez besoin de ressources. Et les ressources sont des programmeurs.

En conséquence, si vous avez des raisons d'écrire votre moteur et que vous avez les ressources - prenez et écrivez.

Q & A

Question


Quelle est la valeur de votre moteur si vous l'évaluez en termes d'argent et de travail?

→ Répondre


, , , . , . , , . , , Lua, , JavaScript , . , , , , , — . . — 3D, , . , , «» 8 , , , .

Question


?

La réponse


, . . , . , Lua, , , , Qt — .

Question


, Lua, -, , ?

La réponse


Oui, ça l'est. En fait, nous nous efforçons de l'intégrer dans une source ouverte, d'écrire de la documentation, un système d'assemblage et des exemples.

Question


Notre entreprise a des vues très similaires avec les vôtres, et nous avons également des problèmes intéressants. J'aimerais savoir - quel est votre ratio des coûts de main-d'œuvre pour un jeu, pour un moteur, pour des outils? Autrement dit, combien de personnes, par exemple, travaillent sur un moteur, sur un jeu, combien de jeux utilisent un moteur?

La réponse


Nous avons maintenant deux moteurs, l'édition précédente et la nouvelle. Autrement dit, ce n'est pas refactoring. Il s'agit d'un tout nouveau moteur. Si nous parlons des coûts de main-d'œuvre, nous pouvons dire que notre entreprise est grande, elle emploie environ 500 personnes, des programmeurs environ 250, 5 bureaux. L'équipe du projet travaille sur des jeux. Un projet est une sorte de jeu auquel un certain nombre de personnes participent. L'équipe de développement du moteur est une équipe distincte. C'est le même kéfir dont j'ai parlé, les unités d'élite, il y a un peu d'argent et d'approches différentes pour le team building. Maintenant, nous sommes légèrement en avance sur le développement. Deux nouveaux jeux lancés sur un nouveau moteur. C'est assez douloureux, car les développeurs du jeu ne sont pas très à l'aise, car ils travaillent dans une situation où quelque chose peut littéralement leur être retiré et exploser. Et nous avons une équipe moteur - c'est 6 personnes. Les commandes de produits sont, en moyenne, une personne de quatre programmeurs, elles ne se chevauchent pas.

Question


Par moteur, vous voulez dire aussi les outils?

La réponse


Oui, nous avons une équipe de développement d'outils distincte. Nous avons eu un très mauvais exemple. Outils GUI très mal conçus. Parce que tout programmeur normal pense que c'est très simple. Nous avons essayé de l'externaliser. Parce que c'est clair - vous donnez l'interface complète, vous avez tout, vous dites: "Créez une fenêtre, dessinez des boutons - et c'est tout." Mais cette entreprise a échoué, nous le faisons donc nous-mêmes, travaillons péniblement avec Qt, car il est important pour nous que cela fonctionne sur les trois plates-formes de bureau. Par conséquent, nous le faisons nous-mêmes. Et nous avons 6 personnes faisant à la fois l'un et l'autre et le troisième. Mais nous sommes encore légèrement en avance sur les demandes de produits.

Question


Est-il réaliste de vendre votre moteur maintenant?

La réponse


Non. Maintenant, vous ne pouvez pas vendre votre moteur. Vous pouvez vendre l'écosystème. Autrement dit, il est impossible de travailler sur le programme «Donnez-moi de l'argent et je vous donnerai un moteur». Faites attention au nombre d'entreprises que nous avons notre propre moteur et combien d'entre elles vendent des moteurs. En fait, aucun d'entre eux ne vend de moteurs. Pour commencer, c'est un gros mal de tête du point de vue qu'il doit être transformé en produit. Ce qui fonctionne pour vous au sein de l'entreprise ne peut en aucun cas être vendu. Vous devez, au minimum, rédiger une documentation que les autres comprendront. Il vous suffit d'engager une armée de bénévoles qui évangélisera cette entreprise. Et on ne sait pas exactement ce que vous en tirerez. Et si vous faites un jeu mobile sur ce moteur, il est tout à fait possible de se réveiller en tant que millionnaire. Par conséquent, pour faire de telles choses, il faut être un fan, il faut être sûr que vous le faites. J'ai parlé des raisons qui peuvent conduire au développement de votre moteur, et ici vous avez encore une raison. Disons que vous pensez que vous améliorerez le moteur par rapport à Unreal. Si oui, allez au marché. Mais je ne pense pas que je ferai mieux qu'Unreal.

Question


Je comprends que votre nouveau moteur est C ++ et Lua?

La réponse


Oui, C ++, Lua et plus JavaScript.

Question


Pourquoi C ++? Y avait-il des options ou saviez-vous clairement ce que vous prendriez?

La réponse


Regardez, il y a un tel mod. Chaque deuxième personne que vous rencontrez vous dit: «Golang» ou vous dit: «Rouille». Et si c'était maintenant, je penserais essentiellement. Mais lorsque vous arrivez dans l'entreprise en tant que chef du processus de développement du moteur, et c'était il y a un an, vous devez faire des plans, et vous devez donc inclure l'élément «En savoir plus sur Go» dans ces plans. Ici, les performances sont importantes, mais en C ++, nous travaillons depuis longtemps, nous savons comment les utiliser.

Pourquoi utilisons-nous Lua? Parce que c'est une langue sous-estimée, elle est idéale pour l'intégration. Pourquoi javascript? Parce que c'est arrivé. Parce qu'il n'y a rien sur le marché sauf V8 et Webkit. Et ce sont des monstres. Comme je l'ai dit, nous avons fait un navigateur qui prend 2,5 mégaoctets de mémoire, il y a un moteur JavaScript qui passe tous les tests. Nous l'avons, et c'est pourquoi - JavaScript. En conséquence, par exemple, vous pouvez prendre ceux qui connaissent JS et ont écrit des sites Web sur React.

Question


Dites-moi, utilisez-vous l'arbre de comportement uniquement pour contrôler le comportement, ou l'utilisez-vous pour contrôler la mécanique du jeu et promouvoir la progression du jeu?

La réponse


Maintenant, pour le comportement, mais nous avons encore quelques mécanismes alternatifs. Nous avons encore, disons, des réseaux de Petri avec un éditeur, et ici le problème est un peu différent, c'est que les réseaux de Petri sont difficiles à expliquer à un game designer. Il y a d'autres choses avec les éditeurs qui vous permettent de dessiner, disons, une machine à états finis. Et nous essayons de faire quelque chose de tout cela. Maintenant, je dois demander aux personnes qui écrivent des scripts de l'écrire sous cette forme. L'arbre de comportement a donc fonctionné et le reste n'a pas encore été inclus dans le workflow.

Question


Est-il difficile de prédire le développement technologique futur? Autrement dit, est-il difficile de prédire l'apparition de certains pièges et autres?

La réponse


Pour le moment, je vois un problème. Maintenant, la technologie WebAssembly semble intéressante. Le flash est mort. Naturellement, nous voulons publier ailleurs sur le Web. Le portage d'un jeu, par exemple, de Unity vers WebGL est une tâche qui ne peut pas être résolue en cliquant sur un bouton. Autrement dit, nous examinons maintenant WebAssembly et il n'est pas encore clair si ce sera la norme ou non, commencez à travailler avec lui maintenant, ou attendez. Dans la technologie mobile, rien de spécial ne se produit non plus. Il n'y a pas d'explosions singulières jusqu'à présent, mais si c'est le cas, nous nous préparerons.

En fin de compte, je tiens à dire qu'avec une conception modulaire normale, avec une conception normale, et j'espère vraiment qu'ils sont normaux avec nous, lorsque de nouvelles technologies apparaissent, vous pouvez simplement supprimer l'ancien du moteur, y mettre le nouveau, et tout fonctionnera.

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


All Articles