Warum sollte man eine eigene Spiel-Engine schreiben?

    Im Dezember letzten Jahres haben wir auf der Games Gathering-Konferenz 2017 einen Bericht verfasst, in dem wir darüber sprachen, ob Unternehmen, die in der Spielebranche tätig sind, ihre eigenen Engines schreiben müssen.



    Einheit angesichts einer Vielzahl von Game-Engines



    Warum in der modernen Welt, in der es Giganten wie Unity gibt, etwas anderes machen, eigene Spiele-Engines schreiben?

    Hier ist eine Folie mit Daten von Unity Technologies zur Verwendung verschiedener Spiele-Engines im Jahr 2017. Wie Sie verstehen, wird sich die Situation im nächsten Jahr ändern. Uns interessiert, welche 41% hier zugeteilt werden, das sind Motoren unseres eigenen Designs. Wenn Sie sich die 5 größten Unternehmen ansehen, die auf der Konferenz vertreten sind, hat jedes Unternehmen seinen eigenen Motor. Es stellt sich heraus, dass in den meisten Unternehmen, die die Spielebranche vertreten, eine interne Entwicklung verwendet wird. Dies ist nicht immer die vernünftigste Lösung der Welt, aber sie ist es.

    Aus welchen Basistechnologien können Unternehmen wählen, die ein Spielprojekt entwickeln möchten?

    Armee der sieben Nationen



    Die Pyramide, die Sie auf der Folie sehen, kann sowohl nach oben als auch nach unten fortgesetzt werden. Es schränkt Sie absolut klar ein. Unten - das Betriebssystem, noch niedriger - einige grundlegende Technologie. Darüber befinden sich Add-Ons für Engines, ein fertiges Toolkit, das mit Spielen wie Neverwinter Nights geliefert wird. Was auch immer Sie tun, auf die eine oder andere Weise, Sie befinden sich in diesem Ding.

    Angenommen, ich möchte mich auf der zweiten Ebene dieser Pyramide befinden. Alle Wege führen jedoch schließlich zur Spitze der Pyramide. Wir werden etwas von dem existierenden verwenden, aber es ist sehr wichtig, dass wir in der oberen linken Ecke der Pyramidenoberkante sehen können, dh Motoren unseres eigenen Designs.

    Jetzt analysieren wir die Zeit, den Aufwand und das Geld, die für die Entwicklung des Spiels erforderlich sind.

    Zurück zu den Grundlagen



    Wenn das gesamte Kreisdiagramm auf der Folie ein Spiel ist, ist die Engine der blaue Sektor. In einer idealen Welt können Sie bei der Entwicklung eines Spiels diesen blauen Sektor herausnehmen und dort rot, gelb oder grün ablegen. Sie können ein großes "U" in ein anderes großes "U" ändern oder ein kleines "x" nehmen, und was Sie auswählen, funktioniert genau dort. In Wirklichkeit ist das nicht so, aber wir sollten uns darum bemühen. Ein ähnliches Bild zeigt sich bei realen Projekten in der Glücksspielbranche. Es kommt auch vor, dass das gesamte Diagramm von der Engine belegt wird, dies gilt jedoch nur für einige Demo-Produkte.

    In diesem Fall werden Geld, Zeit und alles andere auf diese Weise verteilt. Was auch immer Sie tun, Sie müssen sich mit allem befassen, was in den grünen Bereich des Diagramms fällt. Es ändert sich nicht von Motor zu Motor. Wenn Sie über ausreichende Ressourcen verfügen, um den gesamten Prozess der Arbeit an einem Spielprojekt zu unterstützen, ist die Entwicklung der Engine daher nicht so teuer. Wenn jedoch jemand in der Firma anfängt, über die Entwicklung eines eigenen Motors zu sprechen, wird er höchstwahrscheinlich auf eine Reihe von Einwänden stoßen. Betrachten Sie sie.

    Mythischer Mann-Monat



    Angenommen, Sie möchten eine eigene Engine erstellen und dem Entscheidungsträger davon erzählen. Als Antwort werden Sie über dasselbe hören, was auf der Folie zu sehen ist: "Sie werden es für eine lange Zeit tun, es ist sehr riskant, es ist irrational, es wird uns nicht dabei helfen, unsere Ziele zu erreichen." Was kann ich antworten? Der Punkt ist, dass alle diese Einwände, mit Ausnahme der letzten, der Kritik nicht standhalten.

    Lange Entwicklung des Motors? Wenn die Entwicklung mit der eigenen Engine jedoch schneller geht, ist dies kein Argument. Vielleicht weiß im Allgemeinen niemand, was "rational" ist. Alle diese Einwände sind daher sehr subjektiv.

    Der letzte Punkt, ob Ihr Motor zur Erreichung der Ziele beiträgt, ist sehr wichtig. Wenn Sie dank eines Zuschusses von Unreal 4 verdienen möchten, müssen Sie wahrscheinlich keine eigene Engine erstellen, da dies nicht zu diesem Ziel führt. Wenn Sie ein Ziel haben, innerhalb dessen Sie etwas an bestimmten Technologien tun müssen, müssen Sie keine eigene Engine schreiben - Sie müssen das nehmen, was ist. Es ist jedoch nicht immer möglich, fertige Motoren effizient einzusetzen. Warum schreiben Sie trotzdem Ihren eigenen Motor?

    13 Gründe warum



    Wann können Sie Ihren eigenen Motor brauchen? Analysieren wir diese Folie nach Punkten:

    • Time to Market - Time to Market für ein Produkt. Das ist wirklich ernst. Die Hälfte der Motoren, die heute in großen Unternehmen zum Einsatz kommen, wurden genau deshalb entwickelt, weil in dem Moment, in dem dieses Unternehmen schnell eine Nische besetzen musste, die Entwicklung seiner eigenen Motoren schneller verlief, als etwas anderes in Angriff zu nehmen und zu beherrschen.

    Hier ist eine Geschichte für dich. In einem Unternehmen hatte die Site eine Aufgabe für Programmierer, die ungefähr so ​​aussah: „Leute, wenn Sie mit uns zusammenarbeiten möchten, schreiben Sie bitte Asteroids, das auf der Android-Plattform ausgeführt werden sollte, ohne externe Bibliotheken zu verwenden. Wir glauben, dass 8 Stunden für Sie ausreichen. Die Zeit ist gekommen. " Dann wurde die Zeit auf 12 Stunden erhöht. Vielleicht sieht es lustig aus. Zuerst habe ich es von außen gesehen, dann diese Firma angeschaut und mich gebeten, Ihnen zu erzählen, was sie in Form einer Antwort auf diese Aufgabe gesendet haben. Wie sich herausstellte, haben mehr als zweihundert Programme die Auswahl bestanden, dh diese Programme wurden gestartet und bearbeitet. Das heißt, wenn Sie plötzlich "Asteroids" für Android veröffentlichen möchten, gibt es mindestens 200 Personen, die dies in 8 Stunden tun können. Ich sage nicht, dass es verkauft werden kann. Aber ich erzählte diese Geschichte das ist in der Tat sehr oft Time-to-Market. Sagen wir einfach, weil Sie so kleine Bedürfnisse haben, dass Sie die Dokumentation für denselben Unreal länger studieren werden, als nur Ihre eigenen zu nehmen und zu erstellen.

    • Herr der Plattform ist der Herr der Plattform. Es gibt Plattformen, für die es keine vorgefertigten Werkzeuge gibt. Zum Beispiel STB, Set-Top-Box (digitaler Fernsehempfänger) - eine Box für Kabelfernsehen, die bei jedem dritten Amerikaner auf dem Tisch liegt.

    Warner hat 120 Millionen Nutzer dieses Dienstes. Wenn Sie dort Software schreiben, einschließlich Spiele, dann haben Sie einen Dollar von der Stange. Das sind 120 Millionen Dollar pro Jahr. Gleichzeitig kann niemand außer Ihnen für diese Sache schreiben. Da es kein DirectX gibt, gibt es überhaupt nichts. Wenn Sie Programme für STB schreiben können - dann sind Sie der Meister der Plattform, Sie haben diese einhundertzwanzig Millionen Dollar pro Jahr. Warum nicht einen eigenen Motor schreiben?

    Es ist klar, dass wir jetzt mehr über etwas wie Konsolenspielzeug sprechen, aber in manchen Situationen kann dies dennoch notwendig sein. Hier zum Beispiel Spielautomaten. Natürlich gibt es dort jetzt hauptsächlich Computer. Aber wir haben ein separates Eisengerät und einen riesigen Markt vor uns, für den es durchaus möglich ist, etwas Eigenes zu schreiben.

    Wir können sagen, dass wir an Telefonen interessiert sind, aber wir sprechen über Millionen von Dollar. Warum nicht für andere Geräte schreiben? Daher gibt es absolut klare Gründe dafür.
    Oder wir haben zum Beispiel die neuesten Smartwatches vor uns. Das SDK ist noch nicht für sie herausgekommen, niemand weiß, was mit ihnen zu tun ist, und wenn Sie selbst ein Qualitätsprodukt für sie schreiben können, verdienen Sie beispielsweise einen Dollar mit jedem solchen Gerät. Wenn sie zwei Millionen verkauft werden, erhalten Sie zwei Millionen Dollar. Das zu schreiben ist nicht schwierig, aber dafür müssen Sie Ihren eigenen Motor erstellen, da es keine Fremden gibt und Hersteller solcher Geräte Motoren nicht für die Entwicklung öffentlich verfügbar machen.

    • Schwache, aber stolze Geräte sind kleine, aber stolze Geräte. Wenn Sie Spiele für Mobiltelefone erstellen, zumindest einige Statistiken sammeln, wissen Sie, dass mit der Hardware von Apple-Geräten alles mehr oder weniger normal ist, aber mit der Android-Plattform ist es nur eine Katastrophe.

    Die Hälfte der Geräte auf dem Markt basiert auf dem ARM Mali-400-Chipsatz, jedes Budget-Handy ist ein Mali-400. Und wenn Sie für das bezahlt werden, was Sie mit Telefonanwendungen tun, sollten Sie für diese kleinen, aber stolzen Geräte schreiben, die den Markt noch nicht verlassen werden und ihn sehr bald verlassen werden.

    Darüber hinaus können Sie beim iPhone zumindest einige Wetten auf den Fortschritt abschließen. Zum Beispiel wird erwartet, dass Unreal unter dem iPhone 10 funktionieren wird, obwohl es bis dahin bereits einige iPhone 12, 15 oder 17 geben wird. Aber im Falle der Welt im Allgemeinen ist es schwieriger, kurzfristig Fortschritte zu erzielen. Weil Geräte-Upgrades sehr langsam sind.

    Wenn Sie ein wettbewerbsfähiges Bild wünschen und es sehr wichtig ist, entscheiden Sie sich nicht für Geräte mit geringem Stromverbrauch. Beachten Sie jedoch, dass alle modernen Motoren nicht sehr verkleinert werden. Wenn Sie kein wettbewerbsfähiges Bild wünschen, sollten Sie entsprechend die Fähigkeiten schwacher Telefone berücksichtigen. Wenn Sie sich zum Beispiel nicht für die schnellsten Geräte interessieren, sondern der einzige Distributor in Portugal oder Brasilien sind, müssen Sie darüber nachdenken.

    • Eigene Sprache für eigene Ideen - Eigene Sprachen für eigene Ideen. Wenn Sie den Motor selbst herstellen, können Sie dieses Konzept anwenden. Tatsache ist, dass das Hauptproblem unserer Branche darin besteht, dass die Domäne des Spieledesigners die Philologie ist. Er denkt in gewöhnlicher Sprache. Er kann nichts anderes tun. Ein Programmierer denkt im Programmierbereich und es gibt eine Lücke zwischen ihnen. Infolgedessen kostet eine bestimmte Iteration, die ständig wiederholt werden muss, beispielsweise zwei Dollar. Und Sie geben dieses Geld ständig aus.

    Standardmotoren versuchen, alle zu erreichen. Tatsächlich sehen wir, wie sie versuchen, Transformationen natürlicher Domänen von Sprache zu Sprache und von Raum zu Raum durchzuführen. Aber für alle. Und Sie haben Ihre eigenen Ideen und können diese direkt umsetzen, indem Sie Ihre eigenen Tools erstellen. Es ist klar, dass all dies in Form von Plug-Ins auf vorhandenen Motoren durchgeführt werden kann, aber sein Motor eröffnet völlig andere Möglichkeiten.

    • Einzigartige Mechanik = einzigartige Motoren - einzigartige Mechanik = einzigartige Motoren. Meine Freunde haben Minecraft im fünfzehnten Jahr mit Unity geschrieben. Gab es irgendeinen Grund, dies alles zu tun - eine offene Frage. Aber sie wählten den Motor und machten sich an die Arbeit. Der Motor störte sie jedoch offensichtlich. Es war schwer für sie. Sie hatten sehr lange Iterationen. Nachdem wir sie befragt hatten, schrieben sie buchstäblich in drei Tagen ihren eigenen Render. Darüber hinaus ist der Rest des Codes, der zum Beispiel für den Aufbau der Welt verantwortlich ist, natürlich nicht verschwunden. Es hörte einfach alles auf, in C # zu sein, hörte auf, in Unity zu sein. Und die Arbeit begann zu kochen. Ich weiß nicht, ob sie es geschafft haben, Geld damit zu verdienen, aber die Hauptschlussfolgerung aus dieser Geschichte ist, dass sie Unity ursprünglich nicht verwenden mussten.

    Das heißt, es gibt eine große Anzahl von Mechanikern, für die große Standard-Universalmotoren nicht geeignet sind, nur weil sie für alles ausgelegt sind. Wenn Sie sich daher morgen etwas Besonderes einfallen lassen, eine Art komplexer Voxelmechanismen, dann ist es für Sie unpraktisch, mit Standardmotoren zu arbeiten. Das heißt, es gibt Mechaniken, für die Standardmotoren nicht geeignet sind und die sich recht einfach eigenständig implementieren lassen.

    • Das Spiel ist kein Render - das Spiel ist alles andere - das Spiel ist kein Render, das Spiel ist alles andere. Darüber haben wir bereits gesprochen. Wenn Ihr einziges Problem darin bestand, etwas zu zeichnen oder beispielsweise ein plattformübergreifendes Spiel mit Sound zu erstellen, könnten Sie ähnliche Geschichten in der zuvor besprochenen Pyramide sehen. Wenn Sie sagen: „Ich möchte Sound auf drei Plattformen abspielen“, brauchen Sie dafür kein großes „U“ - ein kleines „c“ reicht aus.

    Wir haben uns überlegt, warum wir unseren eigenen Motor entwickeln sollten. Kommen wir nun zu den Vorteilen, die ein Unternehmen durch die Entwicklung eines eigenen Motors bietet.

    Die Vorteile eines eigenen Motors



    Berücksichtigen Sie die Vorteile der Entwicklung Ihres eigenen Motors auf der Grundlage der auf der Folie vorgebrachten Hauptideen:

    • Kaufen ist oft besser als Hypothek - Kaufen ist oft Hypotheken vorzuziehen. Spieleentwicklung ist sowieso Geld. Es gibt Möglichkeiten zur Monetarisierung, bei denen der Kauf nicht nur besser ist als eine Hypothek, sondern nur die einzige Option.

    Wenn jemand an mobilen Technologien gearbeitet hat, dann versteht man alles. Wenn auf der Box am Motor steht: "10 Prozent der Lizenzgebühren", dann ist dies kategorisch inakzeptabel, Sie werden nicht so viel verdienen. Sie können einen Gewinn von hundert Prozent haben, aber Sie arbeiten aus 2 heraus. Das heißt, wenn Sie Lizenzgebühren haben, ist dies ein rein wirtschaftlicher Grund für den Verzicht auf den Motor. Aber ich muss sagen, dass drei oder besser gesagt zwei der derzeit beliebtesten Motoren nur Abzüge sind. Das heißt, diese Option verschwindet sofort.

    • Langfristig ist die Spezifität besser als die Universalität - auf lange Distanz sind spezialisierte Werkzeuge immer besser als universelle. Offensichtlich ist die Universalität immer langsamer, sie ist weniger produktiv und weniger spezifisch als spezielle Dinge. Der Motor, der für eine bestimmte Aufgabe geschrieben wurde, kommt damit besser und schneller klar als ein Universalwerkzeug. Spezialwerkzeuge sind auf lange Sicht viel rentabler als Universalwerkzeuge.
    • Werkzeuge und Pipelines werden innerhalb von selbst erstellten Pipelines und Entwicklungswerkzeugen entwickelt. Jeder Motor, der von Leuten außerhalb Ihres Unternehmens erfunden wurde, konzentriert sich auf mehrere Dinge. Das erste sind Best Practices. Das heißt, der Motor eines anderen Unternehmens konzentriert sich nicht darauf, wie Ihr Künstler zeichnet, sondern darauf, wie Künstler zeichnen, ideal aus ihrer Sicht. Es ist möglich, dass Ihre Künstler anders malen. Sie haben ihre eigene Pipeline und sie haben Erfolg.

    Sie haben zwei Möglichkeiten: entweder trainieren Sie sie nach den besten Methoden oder verwenden Sie Ihre eigenen. Es gibt einfache Beispiele. Angenommen, Sie sagen: "Wir importieren 3D-Modelle." Sie wissen nicht, was auf der anderen Seite ist. Daher benötigen Sie ein Zwischenformat. Zwischenformat sei es FBX. FBX-Fehler, die jeder kennt, der das tut. Und Sie müssen nirgendwo hin, weil Sie nicht wissen, was dort gemacht wird, und Sie werden keine Plug-Ins für 450 3D-Modellierungswerkzeuge schreiben.

    Wenn Sie in Ihrem Unternehmen arbeiten, können Sie dieselbe Pipeline implementieren, über die Sie bereits verfügen, und das, was Sie gerade tun, ergänzen. In der Tat ist das sehr wichtig. Tatsache ist, dass dies alles mit Entwicklungszeit und folglich mit Kosten zu tun hat. Wenn Sie sich also zu Hause weiterentwickeln, können Sie über die bereits vorhandene Pipeline verfügen. Andernfalls erhalten Sie ein Dokument namens „Die Regel zum Hochladen von 3D-Modellen und Erstellen von Materialien für Künstler“, das mehr als ein falsches Designdokument ist.

    • Reaktionszeit - Reaktionszeit. Wir sprechen über die Reaktionszeit des Motorenherstellers auf Ihre Wünsche, über die Möglichkeit, den Motor mit neuen Funktionen auszustatten und über die betriebliche Erforschung neuer Technologien.

    Sprich, im nächsten Büro sind Leute, die den Motor machen. Jeder, der versucht hat, einen Fehler in einer Universal-Engine zu beheben, dh einen Unity- oder Epic-Bug-Tracker zu schreiben, weiß, dass es besser ist, ihn nicht zu starten. Und wenn die Entwickler im nächsten Büro sitzen, können Sie sie kontaktieren und das Problem in 15 Minuten lösen.

    Gleiches gilt für den Vorschlag neuer Funktionen, sofern Sie dazu berechtigt sind. Das Studium neuer Technologien wird auch durch den Einsatz eigener Motoren vereinfacht.
    Angenommen, Ihr Programmierer ist zu einer Konferenz gegangen und hat sich dort einen Vortrag über etwas Neues angehört. Er hat es sofort ausprobiert, Sie haben eine Idee von diesem neuen und Sie wissen, ob Sie es brauchen oder nicht. Sie können direkt reagieren, um etwas Interessantes aus der Welt der Wissenschaft auszuprobieren. Dies bedeutet übrigens, dass das Unternehmen möglicherweise eine Person hat, die als „Forscher“ bezeichnet wird. Gleichzeitig können Sie am selben Unreal recherchieren, da es in der Quelle enthalten ist.

    • Leistung - Leistung. Die Spieleindustrie ist immer Produktivität. Der erste Ansatz, um eine hohe Leistung zu erzielen, ist die Verwendung benutzerdefinierter Lösungen. Je spezifischer die Lösungen, desto produktiver sind sie. Der zweite Ansatz - übrigens, Liebes - ist die Optimierung von Fertigmotoren. Wie genau das aussehen wird - ist stark von diesen Motoren abhängig.

    Die Entwicklung eines eigenen Motors ist nicht nur von Vorteil. Dies sind auch Risiken. Betrachten Sie sie.

    Risiken im Zusammenhang mit der Entwicklung Ihres Motors



    Berücksichtigen Sie die Risiken, die mit der Entwicklung und dem Einsatz unserer eigenen Motoren verbunden sind:

    • Entwicklungszeit - Entwicklungszeit. Dieses Konzept überschneidet sich mit dem, was wir über Time-to-Market gesprochen haben. Die Entwicklung des Motors kann sehr lang und schnell genug sein. Die Entwicklungszeit des Motors trägt jedoch in jedem Fall zur Gesamtentwicklungszeit des Projekts bei. Daher ist dies auch ein Risiko. Ich kenne zum Beispiel Teams, in denen die Entwicklungszeit des Motors unendlich ist.
    • Terminal Cases von Vendor-Lock - Terminal Cases der Bindung an den Lieferanten. Dies gilt nicht nur für große, sondern auch für kleine Unternehmen. Nehmen wir an, Sie haben Vasya engagiert, er hat den Motor geschrieben, sich dann verliebt, Sie verlassen, und niemand versteht, was er geschrieben hat. Infolgedessen haben Sie eine schlechtere Anbietersperre als Google. Da kann man noch einen Brief an Google schreiben, der zwar nicht antwortet, aber hier mit dem Weggang des Programmierers war alles vorbei. Das Ergebnis sind Zeitverluste bei der Entwicklung und andere unangenehme Folgen. Sie müssen in der Lage sein, diese Risiken zu vermeiden.
    • Das Rad neu erfinden - die Erfindung des Rades. Die Sache ist, dass wir in einer Welt leben, in der Sie noch Fahrräder erfinden. Bei der Entwicklung des Motors hat sich herausgestellt, dass die Fahrradfabrik vom Spielcode auf den Motorcode übertragen wird, obwohl sie nicht dorthin gehören.
    • Geschlossenes Ökosystem - ein geschlossenes Ökosystem. Alles, was im Unternehmen gemacht wird, gehört diesem Unternehmen. Ich kenne eine Reihe von Unternehmen, die so etwas wie eine eigene Skriptsprache haben. Es kann sich um eine Art XScript handeln, die nur als Teil ihrer Lösung funktioniert.

    Programmierer, die diese Technologie kennen, wissen nichts mehr. Dies kann als einer der Faktoren angesehen werden, die zur Bindung von Mitarbeitern beitragen. Daher hängt die Antwort auf die Frage, ob es gut oder schlecht ist, ob der Einsatz eigener Technologien ein Risiko darstellt, von der jeweiligen Situation ab. Zum Beispiel versuchen wir, die Konzepte unserer eigenen Erfindung nicht zu verwenden. Ich kenne zum Beispiel eine Firma, die Lua mit starker Typisierung und Pascal-Syntax hat. Es kann gemeistert werden, aber dieses Wissen ist tot, wie Griechisch. Wir versuchen so sehr, nicht zu handeln.

    Das Hauptthema des Lebens, des Universums und all das



    Betrachten Sie ein sehr wichtiges Thema. Welche Ressourcen werden hauptsächlich benötigt, um Ihren eigenen Motor zu entwickeln? Eine Ressource, ohne die es keinen Sinn macht, darüber nachzudenken, ob Sie Ihren eigenen Motor herstellen oder nicht. Die Antwort darauf ist natürlich nicht 42. Die Frage ist, was benötigt wird, um wenigstens sagen zu können: "Ja, wir haben wenigstens etwas, wir können anfangen, etwas zu tun." Die Antwort auf diese Frage ist, dass Programmierer benötigt werden, um Ihre eigene Engine zu entwickeln.

    Programmierer



    Um Ihre eigene Engine zu erstellen, benötigen Sie Programmierer. Wenn Sie es nicht wissen, googeln Sie den Unterschied zwischen den Wörtern "Entwickler" (Entwickler) und "Programmierer" (Programmierer). Es ist sehr wichtig. Entwickler sind die Hauptgruppe. Die Spielebranche ist so strukturiert, dass die meisten Leute darin nicht als Programmierer bezeichnet werden können. Sorry, aber sie sind Entwickler. Entwickler sind nicht in der Lage, den Motor richtig zu machen. Wenn Sie sich den Unterschied zwischen dem ersten und dem zweiten ansehen, machen die Entwickler die Spiele und die Programmierer die Werkzeuge. Entwickler machen ein Produkt, das Unternehmen verdient mit dem Produkt, aber die Tools müssen von Programmierern erstellt werden, sonst funktionieren sie einfach nicht.

    Einerseits ist es jetzt eine sehr offene Welt. Zum Beispiel kenne ich den Unreal 4 und CryEngine Code, er ist offen. Jeder, der es wissen möchte, kann den Unity-Code herausfinden, es gibt eine Menge relevanter Materialien. Dies bedeutet, dass jemand, der ein Programmierer ist und Englisch liest, dies tun kann. Es gibt dort keine Raketenwissenschaft. Andererseits ist es, wie sich herausstellte, für Programmierer, die auf Englisch lesen, sehr schwer zu finden. Daher müssen Sie wissen, wo sie gefunden werden, und in der Lage sein, sie zu rekrutieren, zu nutzen und zu fördern. Wenn Sie wissen wie, dann können Sie schon an Ihren Motor denken. Wenn Sie solche Leute nicht haben, dann werden Sie immer noch keinen Erfolg haben. Beispiele hierfür sind Dunkelheit. Es ist nicht so, dass es schlechte und gute Entscheidungen gibt. Es gibt nur Dinge, die anfangs nicht funktionieren.

    Programmierer müssen einstellen können. Know how zu mieten - Sie können einen Motor machen. Sie wissen nicht, wie Sie einstellen sollen - dann müssen Sie etwas bereithalten. Das Lustige ist außerdem, dass Sie, wenn Sie etwas fertig machen, als große Firma immer noch zwei Leute von diesen Programmierern brauchen, die auf Englisch lesen.

    Wenn Programmierer für die Entwicklung der Engine benötigt werden, haben wir sofort ein paar Fragen. Wo nach Programmierern suchen? Wie organisieren sie ihre Arbeit? Was muss ich beachten, wenn ich über die Entwicklungspfade von Glücksspielunternehmen nachdenke?

    Technische Epidemie



    Nun ist es angebracht, einen weiteren Aspekt der Suche nach Mitarbeitern in Erinnerung zu rufen, der hauptsächlich große Unternehmen betrifft. Solche Unternehmen haben verschiedene Ansätze für die Einstellung von Personal.

    Erstens können Sie Leute rekrutieren, Praktika arrangieren und sie innerhalb des Unternehmens ausbilden, um auf das gewünschte Niveau zu gelangen. Dies ist ein normaler Ansatz. Gleichzeitig werden viele technologische Probleme gelöst, da es einfacher ist, eine gemeinsame Sprache mit einer Person zu finden, die zunächst die Unternehmenskultur wahrnimmt und bestimmte Technologien studiert.

    Zweitens gibt es einen Ansatz, den wir grundsätzlich bekennen. Wie funktioniert Kefir? Er dreht alles in sich selbst um. Du nimmst Milch, wirfst Kefir dorthin - und es gibt keine Milch, alles wurde zu Kefir. Für uns sieht es so aus: "Leute, nehmen wir 5 starke Programmierer, es wird ein internes Technologiezentrum." Und ich sage allen, wenn Sie es sich leisten können, eine Forschungs- und Entwicklungsabteilung aufzubauen, wenn Sie ein großes Unternehmen sind, dann tun Sie es. Lassen Sie sie nicht einmal etwas Nützliches aus der Sicht des Geldes tun. Wenn ein Unternehmen seine Position auf dem Markt gestärkt hat und die Frage aufwirft, wo es expandieren soll, kann die Schaffung einer Forschungs- und Entwicklungsabteilung die Antwort auf diese Frage sein. Wenn ein Unternehmen bereits reich ist, bedeutet dies keinen Geldverlust, da es bereits so viel Geld für die Effizienz verliert, dass unsere Spielebranche jetzt daran arbeitet, die Forschungskosten einfach nicht zu bemerken.

    Betrachten Sie nun den Ansatz, dass das Unternehmen ein Team zusammenstellt, das den Motor oder andere interessante Dinge herstellt. Das ist Arbeit für die Zukunft. Sie können Interviews führen, sagen, Sie geben Geld, Sie haben eine interessante Aufgabe, Sie machen den Motor. Sie haben die Wahl zwischen Bewerbern, Menschen kommen zu Ihnen und im Unternehmen herrscht immer eine Atmosphäre, in der Sie motivieren, fördern und damit Ihre Ziele erreichen können.

    Zum Beispiel habe ich einige Module, die von Lebensmittelunternehmen entwickelt werden, weil sie es brauchen. Das heißt, eine Physik wurde befohlen, und anstatt einige unserer eigenen Dinge zu sägen, sagen wir: „Lass es uns tun. Wir haben nur allgemeine Schnittstellen entwickelt, die etwas verallgemeinert sind, und Sie werden es tun. “ Und das ist im Rahmen typischer Aufgaben sehr gut. Das heißt, es ist grundsätzlich gut, Technologie im Unternehmen zu verbreiten.

    Wenn das Unternehmen bereits so groß ist, dass es sich leisten kann, etwas Interessantes in sich selbst zu tun, zahlt es sich auch aus finanzieller Sicht aus. Versuchen Sie es daher, wenn Sie können. Es kann so aussehen, wie Sie möchten - nehmen wir an, Ihre eigene Unreal-Filiale wird erstellt und dort verarbeiten wir alles so, wie Sie es möchten. In einem der Unternehmen habe ich beispielsweise einen Browser entwickelt, der 2,5 Megabyte Speicherplatz bietet. Und er hat gearbeitet. Warum - ich weiß es nicht, aber es war unendlich interessant.

    Wir haben oben das Problem der Spielefirmen angesprochen, nämlich die Organisation einer effektiven Interaktion zwischen Programmierern und Designern. Lassen Sie uns näher auf dieses Problem eingehen.

    Zwei Welten



    Es ist an der Zeit, Ihnen den Arbeitsplatz unseres Game Designers zu zeigen. Das ist ein echtes Bild. Dies zeigt eine Demo, die Implementierung von Verhalten, auf die wir etwas später noch näher eingehen werden.

    In der Spielebranche existieren zwei Welten nebeneinander. Die Menschen konzentrieren sich entweder auf die Lösung technologischer Probleme oder auf das Erzählen. Und in der Mitte - eine Art Handwerk. Das heißt, es gibt praktisch keine Werkzeuge. Wörter, Wörter, Wörter - Knall - Code. Wieder die Worte - und wieder der Code. Wir glauben, dass Tools erforderlich sind, mit denen Sie sich mit dem verbinden können, was aus der Arbeit an dem Spiel resultiert, mit einem Spieledesigner, Manager oder anderen Mitarbeitern, die keine Programmierer sind.

    Auf der Folie sehen Sie den Verhaltensbaum, den Verhaltensbaum. Im Prinzip ist dies eine Sache, die nur aus Wikipedia stammt, aber vor uns wurde sie von Unreal von dort übernommen. Daran ist nichts auszusetzen. Die Dokumentation dazu befindet sich auf der Unreal-Website. Es war für uns nicht schwierig, eine geeignete Schnittstelle zu erstellen, die mit dem kompatibel ist, was in Unreal gemacht wird. Das heißt, Sie können jedes Beispiel von der Anryl-Aktionswebsite übernehmen, ein Beispiel für das Verhalten selbst, da das Format ziemlich gleich ist. Schreiben Sie es so um, und es wird funktionieren. Dies bedeutet, dass ich mir das Leben leichter gemacht habe und keine Dokumentation schreibe. Und es gibt viele solcher Dinge.

    In dem Beispiel von der Folie passiert etwas, die Krabbe rennt, fängt jemanden, im Allgemeinen spielt es keine Rolle. Im Inneren löst der Programmierer Probleme, die aussehen wie "Gehe zu ...", "Schieße auf ...", "Berechne die Entfernung" - und das ist alles. Alle anderen Verhaltensweisen werden in diesem Editor von einer Person geschrieben, die absolut nichts mit Programmierung zu tun hat. Und das funktioniert im Gegensatz zur Übersetzung von Text in Code. Wenn wir von Balance sprechen, sagen wir Was ist Gleichgewicht? Dies sind 15 Faktoren, die geändert werden können. Und hier ist das Verhalten, nicht die Koeffizienten.

    Das heißt, das Verhalten des „Patrouillierens“ wird beispielsweise vom Spieledesigner und nicht vom Programmierer beschrieben. Dies bedeutet, dass wir den Schritt getan haben, den die meisten Menschen nicht tun. Sie schreiben einfach in ein Designdokument: "Patrouillen". Und ein Programmierer kann dies auf 50 verschiedene Arten übersetzen. Was ist Patrouille überhaupt? Und hier schreibt der Spieledesigner genau, was er meint. Und das ist ein Sieg, meine Freunde. Dafür benötigen Sie Ihre eigenen Werkzeuge. Um den Übergang von der verbalen Definition Ihres Visionärs, der das Spiel sozusagen in seinem Kopf sieht, zu den Programmierern zu glätten. Andernfalls hören sie auf, Programmierer zu sein, werden Entwickler und jäten ihr ganzes Leben lang das Gras.

    Zusammenfassung



    Um es zusammenzufassen. Wir sprachen über Gründe, einen eigenen Motor zu schreiben. Wenn Sie also auf veraltete Geräte zurückblicken, ist dies weder gut noch schlecht. Das heißt, Sie möchten, dass Ihre Spiele auf einer Reihe von Geräten ausgeführt werden, die von kommerziellen Engines nicht mehr unterstützt werden. Gleichzeitig möchten Sie modern aussehen. Wie kann man das erreichen? Schreiben Sie Ihre eigenen.

    Möchten Sie eine Plattform besitzen? Haben Sie ein konkretes Projekt, für das keine universellen Lösungen erforderlich sind? Oder haben Sie im Gegenteil ein sehr großes und komplexes Projekt mit einem bestimmten Bild? Auch in diesen Situationen können Sie an Ihren Motor denken. Gleichzeitig benötigen Sie Ressourcen, um Ihren eigenen Motor zu bauen. Und Ressourcen sind Programmierer.

    Wenn Sie also Gründe haben, Ihren Motor zu schreiben, und über die Ressourcen verfügen, nehmen Sie und schreiben Sie.

    Fragen und Antworten

    Frage


    Was ist der Wert Ihres Motors, wenn Sie ihn in Bezug auf Geld und Arbeit bewerten?

    → Antworten


    Wie viel Geld es gekostet hat, kann ich derzeit wahrscheinlich nicht sagen. Und wenn wir über Arbeitskosten sprechen, dann sind dies neun Monate mit einem Team von sechs Personen. Aber wir müssen verstehen, dass dies unsere letzte Entwicklung ist, und hier streben wir ziemlich hohe Ziele an. Ich spreche nicht über unsere Toolbox, was wir mit Lua machen oder was wir mit JavaScript machen, was überhaupt niemand macht. Wir planen, ein paar Module in Open Source zu veröffentlichen, die, wenn sie die Branche nicht verärgern, den Leuten zumindest helfen, die Skriptsprachen zu verstehen. Unser vorheriger Motor wurde vier Monate lang von zwei Leuten hergestellt. Es ist auch 3D, aber einfacher, Telefon. Es ist schneller möglich, ich habe bereits gesagt, wie Asteroids in 8 Stunden schreiben, aber das ist natürlich weit von der Realität entfernt.

    Frage


    Wie lange hat es gedauert, den Verhaltensbaum zu implementieren?

    Die antwort


    Dies kann ich mit Sicherheit sagen, es wurde vor kurzem gemacht. Zwei Leute machen das seit einem Monat. Das Problem hier ist jedoch umfassender als das Erstellen eines Verhaltensbaums. Tatsache ist, dass die Aktionen, die wir in Lua schreiben, wahrscheinlich vier Tage dauern und das Schreiben eines Qt-Editors einen Monat dauert.

    Frage


    Soweit ich weiß, verwenden Sie Lua, haben Sie ein ursprünglich geschriebenes Aktionssystem und der Verhaltensbaum ruft diese Aktionen einfach ab?

    Die antwort


    Ja, das ist es. Tatsächlich arbeiten wir daran, dies in Open Source umzusetzen, eine Dokumentation, ein Montagesystem und Beispiele zu schreiben.

    Frage


    Unsere Firma hat sehr ähnliche Ansichten wie Ihre und wir haben auch interessante Probleme. Ich würde gerne wissen - wie hoch ist Ihr Verhältnis der Arbeitskosten für ein Spiel, für eine Engine, für Werkzeuge? Das heißt, wie viele Leute arbeiten zum Beispiel an einer Engine, an einem Spiel, wie viele Spiele verwenden eine Engine?

    Die antwort


    Wir haben jetzt zwei Motoren, die vorherige und die neue. Das heißt, dies ist kein Refactoring. Dies ist ein völlig neuer Motor. Wenn wir über Arbeitskosten sprechen, können wir sagen, dass unser Unternehmen groß ist, rund 500 Mitarbeiter beschäftigt, Programmierer rund 250, 5 Büros. Das Projektteam arbeitet an Spielen. Ein Projekt ist eine Art Spiel, an dem sich eine Reihe von Menschen beteiligen. Das Motorenentwicklungsteam ist ein separates Team. Dies ist derselbe Kefir, über den ich gesprochen habe, Eliteeinheiten, es gibt ein bisschen anderes Geld und andere Ansätze zur Teambildung. Jetzt überholen wir die Entwicklung ein wenig. Zwei neue Spiele auf einer neuen Engine. Dies ist ziemlich schmerzhaft, da die Entwickler des Spiels nicht sehr zufrieden sind, da sie in einer Situation arbeiten, in der ihnen buchstäblich etwas entnommen werden und explodieren kann. Und wir haben ein Motorenteam - das sind 6 Leute. Produktteams sind,

    Frage


    Mit Motor meinen Sie auch Werkzeuge?

    Die antwort


    Ja, wir haben ein separates Tool-Entwicklungsteam. Wir hatten ein sehr schlechtes Beispiel. Sehr schlecht gestaltete GUI-Tools. Weil jeder normale Programmierer denkt, dass es sehr einfach ist. Wir haben versucht, es auszulagern. Weil es klar ist - Sie geben die vollständige Oberfläche an, Sie haben alles, Sie sagen: "Erstellen Sie ein Fenster, zeichnen Sie Schaltflächen - und das war's." Aber dieses Unterfangen ist gescheitert, also arbeiten wir selbst schmerzhaft mit Qt zusammen, weil es für uns wichtig ist, dass dies auf allen drei Desktop-Plattformen funktioniert. Deshalb machen wir es selbst. Und wir haben 6 Leute, die sowohl den einen als auch den anderen und den dritten machen. Wir sind den Produktwünschen aber noch etwas voraus.

    Frage


    Ist es realistisch, Ihren Motor jetzt zu verkaufen?

    Die antwort


    Nein. Jetzt können Sie Ihren Motor nicht verkaufen. Sie können das Ökosystem verkaufen. Das heißt, es ist unmöglich, an dem Schema „Gib mir Geld und ich gebe dir einen Motor“ zu arbeiten. Achten Sie darauf, wie viele Unternehmen über einen eigenen Motor verfügen und wie viele von ihnen Motoren verkaufen. In der Tat verkauft keiner von ihnen Motoren. Für den Anfang ist dies ein ziemlich großer Kopfschmerz aus der Sicht, dass es in ein Produkt verwandelt werden muss. Was für Sie im Unternehmen funktioniert, kann in keiner Weise verkauft werden. Sie sollten mindestens eine Dokumentation schreiben, die andere verstehen. Sie müssen nur eine Armee von Freiwilligen einstellen, die dieses Geschäft evangelisieren. Und es ist nicht klar, was Sie davon bekommen werden. Und wenn Sie ein Handyspiel mit dieser Engine erstellen, ist es durchaus möglich, als Millionär aufzuwachen. Um solche Dinge zu tun, muss man also ein Fan sein, man muss sicher sein, dass Sie es tun. Ich habe über die Gründe gesprochen, die zur Entwicklung Ihres Motors führen können, und hier haben Sie einen weiteren Grund. Nehmen wir an, Sie denken, Sie werden den Motor besser machen als Unreal. Wenn ja, geh auf den Markt. Aber ich denke nicht, dass ich es besser machen werde als Unreal.

    Frage


    Ich verstehe, dass Ihre neue Engine C ++ und Lua ist?

    Die antwort


    Ja, C ++, Lua und mehr JavaScript.

    Frage


    Warum C ++? Gab es irgendwelche Optionen oder wussten Sie genau, was Sie unternehmen würden?

    Die antwort


    Schau, es gibt so einen Mod. Jede zweite Person, die Sie treffen, sagt Ihnen: "Golang" oder sagt Ihnen: "Rust". Und wenn es jetzt wäre, würde ich im Grunde denken. Wenn Sie jedoch vor einem Jahr als Leiter des Motorenentwicklungsprozesses zum Unternehmen kamen, müssen Sie einige Pläne erstellen und daher den Punkt „Read about Go“ in diese Pläne aufnehmen. Hier ist Leistung wichtig, aber in C ++ haben wir lange gearbeitet und wissen, wie man es benutzt.

    Warum benutzen wir Lua? Da es sich um eine unterschätzte Sprache handelt, eignet es sich hervorragend zum Einbetten. Warum Javascript? Weil es passiert ist. Denn es gibt nichts auf dem Markt außer V8 und Webkit. Und das sind Monstroiden. Wie gesagt, wir haben einen Browser entwickelt, der 2,5 Megabyte Speicher benötigt. Es gibt eine JavaScript-Engine, die alle Tests besteht. Wir haben es und deshalb - JavaScript. Infolgedessen können Sie zum Beispiel diejenigen, die JS kennen und Websites über React geschrieben haben, mitnehmen.

    Frage


    Sagen Sie mir, verwenden Sie den Verhaltensbaum nur, um das Verhalten zu steuern, oder verwenden Sie ihn, um die Spielmechanik zu steuern und den Spielfortschritt zu fördern?

    Die antwort


    Nun zum Verhalten, aber wir haben noch einige alternative Mechaniken. Wir haben zum Beispiel auch Petri-Netze mit einem Editor, und hier ist das Problem etwas anders: Petri-Netze sind für einen Spieledesigner schwer zu erklären. Es gibt noch einige andere Dinge mit Editoren, mit denen Sie beispielsweise eine endliche Zustandsmaschine zeichnen können. Und wir versuchen, etwas daraus zu machen. Jetzt muss ich die Leute, die Skripte schreiben, dazu bringen, sie so zu schreiben. Der Verhaltensbaum hat also funktioniert, und der Rest wurde noch nicht in den Workflow aufgenommen.

    Frage


    Wie schwierig ist es, die zukünftige technologische Entwicklung vorherzusagen? Das heißt, wie schwierig ist es, das Auftreten einiger Fallstricke und dergleichen vorherzusagen?

    Die antwort


    Im Moment sehe ich ein Problem. Jetzt sieht die WebAssembly-Technologie interessant aus. Flash ist tot. Natürlich wollen wir irgendwo anders im Web veröffentlichen. Das Portieren eines Spiels, beispielsweise von Unity nach WebGL, ist eine Aufgabe, die nicht per Knopfdruck gelöst werden kann. Das heißt, jetzt schauen wir uns WebAssembly an und es ist noch nicht klar, ob dies der Standard sein wird oder nicht, beginnen Sie jetzt damit zu arbeiten oder warten Sie. In der Mobiltechnologie passiert auch nichts Besonderes. Bisher gibt es keine einzigartigen Explosionen, aber wenn doch, werden wir uns vorbereiten.

    Letztendlich möchte ich sagen, dass mit einem normalen modularen Design, mit einem normalen Design, und ich hoffe sehr, dass sie bei uns normal sind. Wenn neue Technologien auftauchen, können Sie einfach die alten aus dem Motor entfernen, die neuen einsetzen und alles wird funktionieren.

    Jetzt auch beliebt: