Hallo.
Heute werde ich Ihnen von einer weiteren fanatischen Wohnsiedlung erzählen, davon, wie weit Interesse und Ausdauer bringen können und was sie zusammenbrechen. Im Allgemeinen ist für solche Geschichten alles ziemlich normal.
Unter dem Schnitt sehen Sie: eine detaillierte Historie der Erstellung von RTS mit Ihren eigenen Händen (Konzept, Code, Schnittstelle, Balance, Karte, Modelle) und ein Experiment zum Binden eines IT-Trackers als Eingabewerkzeug.

Nun, fangen wir an.
Auf dem Hof 2014.
Ich bin Student der Abteilung für Informationsdesign an der Polytech (jetzt „Engineering Graphics and Design“).
Mit meinem Bachelor-Diplom entwickelte ich ein Spiel für einen Kinekt über ein Duell von zwei Pujas, bei dem Sie den Angriffen des Feindes ausweichen und Ihren Haken hineinwerfen mussten (GET OVER HERE !!!).
In der Arbeit des Meisters beschloss ich, weiter zu gehen. Zu dieser Zeit erschien im Labor der Abteilung eine technische Neuheit - ein IT-Tracker. Die Wahl fiel sofort auf ihn. Es bestand kein Zweifel, dass die Arbeit ein Spiel sein wird, alles was übrig blieb, war das Thema zu wählen. Nach einigem Nachdenken wurde mir klar, dass ich der Strategie, mit der ich aufgewachsen bin und die mir die wunderbare Welt des Programmierens eröffnete - Warcraft3 - Ehre erweisen möchte.
Die Masterarbeit ist jedoch nicht nur die Entwicklung eines Produkts. In größerem Umfang sollte es eine Art Forschung darstellen. Die Frage, wie IT-Tracking in eine Strategie integriert werden kann, enthüllte die Büchse der Pandora.
Hier kamen viele Jahre Spielerfahrung ins Spiel. Die meisten Spiele versuchen, den Bildschirm von Steuerelementen zu befreien und den Hauptraum für Inhalte zu schaffen. In Strategien nimmt die Schnittstelle einen großen Raum ein. Um zu verstehen, was eine bestimmte Einheit ist, müssen Sie sie auf dem Bildschirm finden, auswählen, in der „Statusleiste“ nachsehen und dort den erforderlichen Parameter finden. Wenn während des Kampfes großer Armeen ein ähnliches Bedürfnis entsteht, führt eine solche Abfolge von Aktionen häufig zu Schwierigkeiten.

Es stellte sich die Frage: Da wir das Gerät bereits auf dem Feld finden, warum müssen wir es später auswählen, um die Informationen zu lesen? Warum nicht einfach durch einen Blick auf ihn? Nach der Demonstration wurde die Frage in den weisen Namen „Funktionalität des Operationsbereichs des menschlichen Sehens in der Mensch-Computer-Interaktion“ umgewandelt, was im Wesentlichen bedeutete, die Wirksamkeit von Maus und Augen zu vergleichen, um das Problem zu lösen, ein Objekt aus einer Vielzahl zu finden und Informationen daraus zu lesen.
Summa technologiae
Es gibt ein Thema. Es gibt ein Konzept. Es lag an der Wahl der Technologie. Nach einer Marktüberprüfung fiel die Wahl zwischen Unity, UnrealSDK und libGDX, unter denen Unity + C # ausgewählt wurde. Nachdem ich die Schnittstelle, den Lebenszyklus von Objekten auf der Bühne und die Möglichkeiten der Interaktion mit ihnen beherrscht hatte, begann ich mich zu entwickeln.

Dank des größten Wunders unserer Zeit - dem Internet - fand ich eine beeindruckende Reihe von Tutorials, die es ermöglichten, die Basis der Engine für das zukünftige Spiel zu schaffen. Nachdem ich ein paar schlaflose Nächte durch eine ganze Reihe von Tutoren gegangen war, hatte ich eine Strategie in der Hand. Es gab Arbeiter, die Gebäude bauen konnten; Erntemaschinen, die Ressourcen fördern können, und Gebäude, die Einheiten produzieren können.
Diese Basis reichte für das Experiment. Es fehlte zwar eine wichtige Komponente - die Verbindung der Funktionalität des IT-Trackers mit dem Spiel selbst.

Das IT-Tracking-System besteht aus zwei Computern, von denen einer die für den Benutzer bestimmten Anreize anzeigt (nennen wir es Demonstrator) und der zweite Informationen sammelt und analysiert, die vom IT-Tracker stammen (nennen wir es Registrar). Mit dem IT-Tracker wurde sofort eine Software ausgeliefert, die es ermöglichte, zwei Maschinen zu synchronisieren, die Registrierung des Blicks des Testpersonen zu kalibrieren (alle haben ihre eigenen Augenparameter und den Blick selbst) und dann eine Reihe statischer Stimuli auszuführen, um ihn anzuzeigen. In meiner Aufgabe sollte die Registrierung des Sehens in ein fremdes Programm integriert werden.
Dazu musste ich das Protokoll der Interaktion zwischen dem Demonstrator und dem Registrar studieren. Die Datenübertragung wurde über das lokale Netzwerk unter Verwendung von UDP-Paketen mit Befehlen durchgeführt, was bedeutet, dass ich meinen eigenen Kalibrierungsclient schreiben musste, der den Betrieb der Standardanwendung emuliert.
Ich habe ein paar Tage gebraucht, um einen Kunden zu schreiben. Erstens als Drittanbieteranwendung. Sie konnten die Kalibrierung durchlaufen und dann das Rechteck auf dem Bildschirm mit einem Blick steuern. Genauer gesagt wurde das Rechteck am Punkt der Fixierung des Blicks gezeichnet. Es scheint, dass dies keine Raketenwissenschaft ist, sondern die Fähigkeit, das Auge nicht als Mittel zur Informationsbeschaffung zu nutzen, sondern als Instrument für die Ausgabe, den Einfluss auf die Außenwelt, Freuden und Schocks.
Als alles fertig war, war es Zeit zu experimentieren.

Es gibt eine Szene, die auf einen Bildschirm beschränkt ist. Darauf werden nach dem Start Einheiten (Panzer, lol) erzeugt, die sich zufällig bewegen.

Jede Einheit hat eine bestimmte Menge an Gesundheit. Alle Einheiten haben maximale Gesundheit, mit Ausnahme einer Einheit mit der halben HP-Stufe. Wenn eine Einheit markiert ist, sehen wir einen Rahmen mit einer Gesundheitsanzeige. Wer hat volle Gesundheit - der Indikator ist grün und voll. In der verwundeten Einheit ist er rot und halb voll. Das Ziel ist es, einen verwundeten Panzer unter den anderen zu finden und ihn für eine Sekunde isoliert zu halten. Der wichtigste gemessene Parameter ist die Zeit, die benötigt wird, um diese Aufgabe abzuschließen. Das Experiment bestand aus 5 Ebenen, die sich in der Anzahl der Einheiten auf der Stufe unterschieden - 5, 10, 15, 20, 25. Die Hypothese war, dass die Lösung dieses Problems mit Hilfe eines IT-Trackers weniger Zeit erfordern würde.
Ein Experiment wurde durchgeführt, Daten gesammelt. Es ist an der Zeit, Statistiken zu verarbeiten. Ich habe die üblichen Tools verwendet - PHP und JavaScript, das Fisher-Kriterium berechnet und festgestellt, dass der Unterschied zwischen der Verwendung eines Cursors und der Verwendung eines Itrackers statistisch signifikant ist. Natürlich wurde die Taskausführungsgeschwindigkeit als abhängige Variable verwendet. Dann habe ich das Ergebnis mit D3.js visualisiert.
Im Allgemeinen ist zur Lösung solcher Probleme entweder die R-Sprache oder das SPSS-Programm beteiligt. Aber ich liebe es von Natur aus, Energie und geistige Ressourcen zu sparen. Ich hielt es für eine ineffiziente Investition, Zeit mit dem Erlernen dieser zusätzlichen Tools zu verschwenden.

Das resultierende Bild hat meine Erwartungen übertroffen. Es stellte sich heraus, dass die Probanden, die den IT-Tracker verwendeten, das Problem zweimal lösten und bis zu 15 Objekte dreimal schneller als die Probanden mit der Maus.
Die Forschung und der Supervisor haben den
Artikel formalisiert und er wurde in der Zeitschrift Perception veröffentlicht.
Wow! Erfolg, Ruhm usw.
Hier möchte ich meinen Vorgesetzten gesondert erwähnen. Dank ihm habe ich meine beiden Diplome geschrieben und mich insgesamt der Programmierung und der Mensch-Computer-Interaktion zugewandt. Pavel Orlov (
1 und
2 ), jetzt unterrichtet er am Imperial College London, aber im Allgemeinen studiert er Menschen mit Hilfe eines IT-Trackers und macht alle möglichen coolen Witze.
Im Prinzip könnte man an dieser Stelle aufhören, aber die Seele des Künstlers rief, dass als Abschlussarbeit eines Meisters etwas mehr gezeigt werden könne als ein einfaches Projekt, das in einem Tutorial zusammengehalten wird.
Laufen lernen
Damit ein Spiel ein Spiel ist, muss es ein Konzept, eine Idee, eine Handlung und eine Logik haben. Ereignisse sollten nicht auf einer endlosen Grasfläche stattfinden, sondern auf einer bestimmten Karte, auf der neben Gebäuden und Ressourcen auch Reliefelemente und irgendeine Art von Vegetation vorhanden sein sollten ... Einheiten sollten sich offensichtlich nicht nur bewegen können, sondern die Interaktion des Spielers mit der Welt sollte über eine gut durchdachte Schnittstelle erfolgen.

Von Chancen und Perspektiven geblendet, begann ich Code zu schreiben. Zunächst gab ich den Einheiten die Möglichkeit anzugreifen. Nun, da sie natürlich angreifen, dass sie Schutz brauchen, sind meine Einheiten mit Rüstungen überwachsen. Gebäude waren in Gefahr, zerstört zu werden, daher mussten die Einheiten lernen, wie man sie repariert. Und warum nicht gleichzeitig die Möglichkeit hinzufügen, dieselben Gebäude zu verkaufen? Und wenn Sie etwas vielversprechender aussehen, ist es dann möglich, die Gebäude selbst zu bewaffnen, damit sie vor Feinden zurückschießen können?
Diese Idee wurde zum Eckpfeiler für die weitere Entwicklung und den vollständigen Umbau meines Projekts. Zu diesem Zeitpunkt hatte ich eine WorldObject-Klasse, von der Unit und Building geerbt wurden, von denen jede die entsprechende Funktionalität hatte. Einheiten könnten sich bewegen, angreifen, Ressourcen beschaffen, Gebäude bauen. Gebäude konnten stehen und Einheiten produzieren, aber sie konnten sich nicht bewegen und angreifen. Es bestand der Wunsch, ein Sicherheitsgebäude zu errichten - einen Turm oder einen Turm. Der Turm sollte von Natur aus ein Gebäude sein, aber die Angriffsfähigkeit besitzen, die Einheiten innewohnt. Es hat alle meine Pläne gebrochen. Es war notwendig, die Angriffsfunktionalität irgendwie aus der Einheitenklasse zu entfernen ...
Es ist jedoch möglich, das Problem umfassender zu betrachten. Gibt es andere Zwischenverbindungen zwischen den Rückseiten und den Einheiten? Gibt es andere Situationen, in denen die Fähigkeiten einer Klasse für eine andere genutzt werden können?
Um die Flüge zu analysieren, habe ich mich entschlossen zu untersuchen: Welche anderen Inkonsistenzen dieser Art sind in dem als Referenz genommenen Spiel vorhanden - Warcraft3. Und weißt du was? Es hat sie dort zu einer ganzen Galaxie gemacht. Es gibt Gebäude, die angreifen können, wie der Wachturm oder der Orkbau. Es gibt diejenigen, die sich auch bewegen können, zum Beispiel Ancient of War. Es gibt Einheiten, die nicht angreifen können, wie Wisp oder alle Arten von neutralen Schafen und Schweinen, die auf der Karte herum huschen (Lebewesen). In meinem Kopf wurde über die Art des Unterschieds zwischen Gebäuden und Einheiten nachgedacht, und mir wurde klar, dass es keine derartigen Unterschiede gibt. Dies sind nur die Bedeutungen, die die Spieler dem Programm für ihre eigene Bequemlichkeit auferlegen. Es gibt nur Einheiten und ihre Fähigkeiten - sich zu bewegen, anzugreifen, Einheiten zu produzieren, Gebäude zu bauen, Ressourcen zu erhalten und so weiter.

Die offensichtliche Lösung für die Situation war die Schaffung von Schnittstellen, die Einheiten implementieren können. Folgendes wurde erstellt: MoveAbility, RotateAbility, AttackAbility, DefenseAbility, HpRegenAbility, DefenseAbility, ProduceAbility, BuildAbility, RepairAbility, SellSelfAbility. Die Einheit blieb im Wesentlichen nur ein Container mit Name, Bild und Modell. Alle anderen Fähigkeiten sind oben drauf.
Schöne neue Welt
Jetzt liegt es am Konzept.
Ich möchte Sie daran erinnern, dass der Fall 2014 stattgefunden hat. Dann gab es eine Art Stagnation im Strategie-Genre, und dies beeinflusste die Wahl des Genres des Spiels selbst. Auch in diesen Jahren nahm die Popularität der Steampunk-Umgebung deutlich zu. Ich war ein großer Fan der Welten, in Kupfer und Messing gekleidet, in Dampf gehüllt und in ihre mechanische Zukunft gestürzt. Aber es schien mir langweilig, das Spiel nur mit einem Hit in Steampunk zu machen, und ich suchte nach der Entwicklung einer Idee. Ich wollte dem Spiel eine Konfrontation hinzufügen. Und was kann einer technogenen Industriezivilisation maximal entgegengesetzt werden? Natürlich Magie und Einheit mit der Natur! Ja, natürlich sagen Sie Arcanum, aber verdammt, mit der Zeit geht die Schönheit einer solchen Umgebung nicht verloren. Außerdem werden Sie sehen, dass sich das Projekt nicht zu einem Klon entwickelt hat, der von einem Studenten auf seinem Knie geschlafen wurde, sondern zu etwas völlig anderem. Vielleicht im völligen ideologischen Gegenteil von Arcanum.
Wer wird diese Welt bewohnen? Meiner Meinung nach sind moderne Fantasy-Spiele (und dies ist letztendlich Fantasy) jetzt in eine Krise der Archetypen geraten. Offensichtlich liegt dies an der universellen Verleugnung, alles wird zugänglicher und dafür verständlicher. Aber das macht es nicht weniger ärgerlich, überall gewöhnliche langweilige „Menschen“ zu sehen, die niedergeschlagen die Muskeln der „Orks“ betäuben, sauer von der Gnade der „Elfen“ und anderer, die so unverständlich und distanziert sind, dass das Auge verschwommen ist, „Protoss“.
Ich wollte mich so weit wie möglich von all dem entfernen, mich abstrahieren. Und was könnte abstrakter sein als ein Ball? Ich ging von dieser perfekten geometrischen Form aus. Fügte einen Teil des "Zerg" -Biomorphismus hinzu (ja, er sündigte gegen sich selbst). Ich dachte: Warum sollten abstrakte Kreaturen nicht die Fähigkeit haben, ihren Körper und alle integumentären Gewebe zu formen?

So wurden die Kugeln geboren.
Sie leben. Sie haben keine Glieder. Sie haben telekinetische Fähigkeiten zur Interaktion mit der Welt und die Fähigkeit zu singen (wie Delfine), um miteinander zu kommunizieren. Sie besiedelten den Planeten ziemlich dicht, aber es bildeten sich zwei Machtzentren.

Eine ist traditionell, konservativ, wo sie glauben, dass sie Kinder der Natur sind und maximal in sie integriert werden und zu ihrer Entwicklung beitragen sollten.

Die zweite - diejenigen, die sich als Höhepunkt des evolutionären Algorithmus der Natur betrachteten, dh die Herrscher, die das Recht haben, Wälder unter Fabriken zu verbrennen und den Himmel mit Rauch und Dampf zu verdunkeln. Und leider zwang der zweite Wunsch, die Welt zu erobern, gemäß dem Standard (Kuchen, er verließ die Orks, aber er verließ den Fuchs nicht) die Erweiterung ihrer materiellen Basis und führte ihre Kriegsschiffe in das Land, das mit Wäldern gefüllt war und von Kristalllicht funkelte ...
Hinter dieser Verbindung stand eine Anspielung auf völlig historische Ereignisse. Ist es nicht so, dass die Indianer an einem nicht sehr schönen Tag den Mast der Conquistador-Schiffe am Horizont sahen? In der Welt der Kugeln wiederholte sich die Geschichte, nur den einheimischen Indianern gaben wir echte Hexerei, und die Eroberer segelten nicht aus Spanien des 15. Jahrhunderts, sondern beispielsweise aus Bismarck, Deutschland.
So begann ein Krieg, der beide Zivilisationen zerstörte. Unser Spiel sollte mit den Fragmenten der vergangenen Welt beginnen, in der ein junger Stamm beginnt, in diesen Wechselfällen von Magie und Technologie nach sich selbst zu suchen.
Zwischen einem Tamburin und einem Zahnrad
Aber wie ist die Entwicklung?
Es gibt nur ein Rennen im Spiel, aber im Laufe der Handlung kann es sich selbst ändern. Die Erfahrung, die Sie beim Töten und Erkunden der Welt gesammelt haben, ermöglicht es Ihnen, mit der Entwicklung der Zweige Magie und Technologie zu beginnen.

Zunächst haben wir uns auf zwei Zweige festgelegt - Schöpfung und Zerstörung. In jedem von ihnen mehrere Schießbuden. Der Empfang von jedem von ihnen betrifft alle Einheiten und alle Strukturen des Rennens. Die Schöpfung ist verantwortlich für alle konstruktiven Merkmale - Entwicklung der Welt, Produktion, Gewinnung von Ressourcen und so weiter. Die Zerstörung wiederum ist verantwortlich für die Zerstörung ihrer eigenen Art und für alles, was sich bewegt.
Nachdem Sie einen Zweig in eine Richtung gepumpt haben, blockieren Sie sofort die Möglichkeit, in die andere Richtung zu fahren. Um die Frage zu beantworten, wie viele Rennen im Spiel unterschiedlich sein können - es ist eines, aber mit einem Entwicklungspotential von 4 völlig unterschiedlich.
Und hier haben wir ein Konzept. Es ist also Zeit zu entscheiden, wer in unserem Spiel sein wird! Welche Einheiten und Gebäude, wie werden sie sich ändern. Nach vielen Diskussionen haben wir beschlossen, uns auf die grundlegenden Strategien zu konzentrieren - einen Arbeiter (baut Gebäude, extrahiert Ressourcen), eine leichte Einheit (schnell, schwach), eine schwere Einheit (langsam stark), ein Katapult (sehr langsam, sehr dünn, Fernkampf). Von den Gebäuden - die Basis (produziert Arbeiter), das Nest (erhöht die Nahrung), die Kaserne (produziert eine leichte und schwere Einheit), die Werkstatt (produziert Katapulte), Heiligtümer / Fabriken (erlaubt das Pumpen).
Ja, ich habe völlig vergessen, über Spielressourcen zu sprechen. Wir haben uns entschlossen, ein klassisches Paar beizubehalten - Kristalle + Nahrungslimit sowie eine zusätzliche Ressource für den Fortschritt entlang des Entwicklungsbaums. Kristalle werden aus verstreuten Ablagerungen auf der Karte gewonnen (Hallo Sternenschiff), die Nahrungsgrenze wird durch den Bau spezieller Gebäude - Nester - erhöht. Eine zusätzliche Ressource wird durch den Bau eines von zwei Gebäudetypen auf giftigen Geysiren verdient - Heiligtümern oder Fabriken. Darüber hinaus verfügt das Spiel über Erfahrung, die für die Zerstörung feindlicher Armeen und neutraler Kreaturen gegeben ist. Wenn ein Spieler ein neues Level erreicht und ein Heiligtum oder eine Fabrik hat, kann er einen Bonus auf den Entwicklungsbaum pumpen.
Aber zurück zu den Einheiten und zum Leveln.
Wir haben lange darüber nachgedacht, wie die Upgrade-Zweige Einheiten modifizieren werden. Kam zu folgendem:
- Steampunk + Zerstörung erhöht den Schaden und die Reichweite der Einheiten.
- Steampunk + Creation baut Produktionskraft auf, rüstet alle aus und erhöht die Rentabilität des Spaziergangs jedes Mitarbeiters.
- Magie + Zerstörung wiederum beschleunigt Einheiten im Angriff und senkt ihre Kosten. Verwandelt Katapulte in an der Wand hängende Waffen.
- Magie + Schöpfung erhöht den Gesundheitsbestand und die Bewegungsgeschwindigkeit erheblich.
Erinnern Sie sich, ich sagte oben, dass sich das Spiel als das ideologische Gegenteil von Arcanum herausstellte? In der Welt, die wir geschaffen haben, schließen sich Technologie und Magie nicht aus. Die Fantasie ließ uns hin und wieder Visionen von Zauberern entgehen, die auf mechanischen Beinen und Panzern gingen und von einem magischen Kristall anstelle eines Dampf- oder Dieselkraftwerks in Bewegung gesetzt wurden.
Finden Sie den Gleichgewichtspunkt
Das klingt alles ziemlich einfach, aber als wir versuchten, diese Erzählung in den Raum der Zahlen, exakten Werte und ihres Wachstums zu übertragen, stellte sich heraus, dass alles SEHR verwirrt war. Es ist einfach, einige Deltas mit Werten für Fähigkeiten zu werfen. Diese Einheit erleidet beispielsweise +20 Schaden und diese +15 auf Bewegungsgeschwindigkeit. Aber dann ist es sehr schwierig, diese riesige Anzahl von Parametern zu reduzieren, um sie auszugleichen.

In einer riesigen Google-Tabelle haben wir alle gewünschten Änderungen an jeder Einheit aufgezeichnet, wobei wir uns auf ein Gefühl der Schönheit konzentriert haben. Der Sinn für Schönheit arbeitete mit dem inneren Empiriker zusammen, so dass jede Änderung der Werte sofort in der Testkampfszene überprüft wurde.

Irgendwann, mitten in der nächsten Nacht, kam das Verständnis, dass es gut ist, sich schön zu fühlen, aber nur Logik und der mathematische Apparat können zum Erfolg einer Aufgabe führen.
Es wurde klar, dass alle Werte für jede Einheit auf einen oder mehrere Koeffizienten reduziert werden sollten, die wir bereits vergleichen konnten. Es stellte sich heraus, dass die gesamte Schule und die gesamte Universität Sie nicht darauf vorbereiten, die Effektivität des Bauherren zu berechnen. Es ist nicht so offensichtlich, wer mehr in die Schatzkammer bringt - derjenige, der mehr in den Rucksack lädt oder derjenige, der sich schneller bewegt.
Nach einer schlaflosen Nacht mathematischer Tricks wurden Formeln zur Berechnung der Wirksamkeit verschiedener Arten von Einheiten und Gebäuden erstellt, und diese Phase wurde mehr oder weniger bestanden.Dann schlich sich wahrscheinlich eine Frage in Ihren Kopf: Wie hat sich all dieser Wahnsinn ins Spiel ausgewirkt? Ich werde schnell antworten - zum ersten Mal durch die Methode der akribischen Unterbrechung. Aber als jeder Zweig zwei Entwicklungsstufen in jede Richtung erhielt und die Gesamtzahl der Einheiten 9 erreichte, rebellierte mein interner fauler Programmierer. Wie ist es - für mich, ohne Kreatur zu zittern, dass ich so eine langweilige, dumme Routine machen muss ?!Dann habe ich eine Webanwendung zum Generieren eines Flow-Baums erstellt.
RTSeditor (wie ich es mit einer leichten Hand nannte) ermöglichte es, die Baumstruktur selbst zu erstellen und für jeden Knoten das Inkrement der Werte anzugeben, die von IAbility-Einheiten benötigt werden. Der Nullknoten bestimmte die anfängliche Konfiguration jeder Spieleinheit.Dieses System gab JSON zurück, das jetzt von Unity und konfigurierten Spielobjekten akzeptiert wurde (eine gewisse Zeit musste auch für dieses Importsystem aufgewendet werden, da es nicht so einfach war, Bäume zu bauen und um sie herumzulaufen).Schließlich war die Arbeit erledigt und anstelle von höllischer Folter wurde ein praktisches Tool erhalten, mit dem Sie schnell den gesamten „Inhalt“ des Spiels konfigurieren können.Musik Ainur
Hier möchte ich eine Bemerkung einfügen. Während der ganzen Geschichte benutze ich verschiedene Pronomen - dann ich, dann WIR. Tatsache ist, dass ich das Projekt alleine gestartet, eine Studie durchgeführt, die „Engine“ des Spiels erstellt usw. habe. Aber dann interessierte ich mich mit meiner Tätigkeit für meine Kameraden und zuerst schlossen sich zwei Personen dem Prozess an - Vladimir Ermakov ( Avega ) als erfahrener Programmierer und Pavel Shilin als künstlerisch beschreibender Berater. Dann wurden Anna Trofimova und Nikolai Morozov ( Avatar4eg ) hinzugefügt, um bei der Landschaft bzw. Programmierung zu helfen. Mein guter Freund Dmitry Mashoshin war auch an der Schaffung eines Gleichgewichts für ein paar Nächte seiner Zeit beteiligt.Vladimir half bei der Entscheidung, Einheiten in das IAbility-System zu übertragen, und beschloss dann, sein Abschlussprojekt mit dem Spiel zu verbinden. Sein Thema und Ziel war es, KI zu schreiben. Eine beträchtliche Aufgabe, die im Allgemeinen gelöst wurde, und unsere Computergegner lernten, die Basis wieder aufzubauen und ihre Armeen mit einem Förderband zur gefundenen Basis des Feindes zu schicken.Kommen wir zurück zur Entwicklung. Als wir bereits so viele verschiedene Funktionen hatten, wurde es einfach unerträglich zu beobachten, wie diese entwickelten Lebensformen auf einer endlosen Grasfläche weiden. Ich wollte eine Welt für sie schaffen und fing an, eine Karte zu erstellen.Im ersten Schritt habe ich WC3-Karten analysiert. Ich habe gelernt, dass sie aus mehreren symmetrisch angeordneten Startpunkten, neutralen Einheitslagern, Punkten für die weitere Entwicklung der Basis und einem listigen Straßensystem zwischen all dem bestehen.Nun, ich habe versucht, etwas Ähnliches zu schaffen, aber meins (heh, mit diesen Worten kann man die gesamte Entwicklung als Ganzes schreiben).
Zunächst wurde die Karte auf Papier gezeichnet und gestaltet.Anschließend wird es in Photoshop in einer Schwarz-Weiß-Höhenkarte dargestellt. Anfangs streng, dann wurde es glatt, glatt und geräuschvoll. Ein wichtiger Punkt dabei war es, den Unterschied zwischen den unpassierbaren Flächen von Oberflächen und Abfahrten und Aufstiegen beizubehalten.Danach wurde diese Struktur bereits in Unity aus dem Flugzeug extrudiert. Es stellte sich als gute Erleichterung heraus, sehr ähnlich einer Spielkarte.Aber etwas stimmte nicht mit ihm. Er war ganz weiß und schrie laut - ADD ME TEXTURES.Was ich getan habe
Ich hatte keine Zeit, meine Texturen zu zeichnen (ich gestehe, aber die Zeit für das Bestehen des Diploms war angemessen und ich musste mich umdrehen), daher wurden von Open Source heruntergeladene WorldOfWarcraft-Texturen verwendet.

Unity verfügt über eine erstaunliche Texturierungsfunktion, mit der Sie Texturen wie Pinsel über das Formular zeichnen können. Dies ermöglichte es, die Zonen schnell zu markieren, und dann war es eine Frage des Details und der Ausarbeitung. Es scheint, dass das Spielfeld ein sekundäres Hintergrundelement ist, aber es ist das Auge des Spielers, das es während des Spiels betrachtet. Deshalb wollte ich die Karte wirklich interessant und lebendig machen. Hier möchte ich Ana meinen Dank aussprechen, die mir beim Texturierungsprozess sehr geholfen und ein echtes Highlight aus der Karte gemacht hat.Hier erwartete uns eine große Überraschung. Unsere Einheiten bewegten sich perfekt entlang des verhassten Grasflugzeugs und gingen geschickt bis zu dem Punkt, an dem sie entlang einer idealen geraden Linie drückten. Als Hindernisse und Unregelmäßigkeiten auf ihrem Weg auftauchten, begannen Probleme mit der Bewegung. Ja, die Kugeln haben keine Beine, aber das hinderte sie nicht daran, sie in kleine Beulen zu zerbrechen. Es bestand die Notwendigkeit, Einheiten einen Algorithmus zum Finden des Pfades zu geben.Hier kam ein erfahrener Vladimir ins Geschäft, der sich mit dem Thema befasste und erkannte, dass es zu mühsam war, eine der vorhandenen Methoden zur Lösung des Problems zu implementieren. Es wurde schnell ein Plugin (Modul?) Für Unity gefunden, das das Problem löst - A *. Vladimir hat die Benutzeroberfläche herausgefunden und an unsere Bedürfnisse angepasst. Danach fanden die Einheiten den Weg bis zum anderen Ende der Karte, als sich vor ihnen Felsen, Tiefland und andere Freuden der Landschaft befanden.Nach der Erschaffung der Welt wurde die ängstlichste Frage relevant - warum sind alle unsere Einheiten verdammte Würfel?Es ist an der Zeit, den Kugeln die richtige Form zu geben, sie in Gebäude zu bringen, die für ihr Aussehen charakteristisch sind, und ihnen Werkzeuge für die Entwicklung einer neuen Welt und von Waffen zu geben.Hier möchte ich sagen, dass vor dem Abschluss noch ein paar Wochen übrig waren. Nachdem ich meine Zeitfähigkeiten berechnet hatte, kam ich zu dem Schluss, dass ich ungefähr 4 Stunden Zeit für ein Modell und seine Modifikationen habe. Ich musste schnell arbeiten, fließen und bis an die Grenzen.Formen Sie die Formlosen
Lerne die Kugeln kennen!

Dies sind grundlegende Arbeiter. Der erste wird in volle Magie gepumpt, der zweite in volle Technologie. Einer kann mit Hilfe eines Kristallfragments, das er auf sich selbst gewachsen ist, Kristalle aus Ablagerungen auf andere Steine ziehen und sie zur weiteren Verwendung an einen Ameisenhaufen liefern. Die zweite setzt technologische Werkzeuge und riesige Container zum Tragen ein.

Aber die Nester, in denen die Kugeln leben. In der Mitte befindet sich die Basis varinat. Links ist die Entwicklung zur Magie, rechts zur Technologie. Darüber hinaus gibt es sowohl dort als auch dort eine Entwicklung entlang des Zweigs der Zerstörung und der Schöpfung, weshalb sie so wesentlich aussehen. Aber wie Sie wissen, ist dies bei weitem nicht immer der Fall.

Und hier sind die Hybridnester. Stahlstützen und magische Kristalle von oben? Warum nicht. Im Gegenteil, ich bevorzuge die Einheit mit der Natur, möchte aber gleichzeitig ein Heizsystem haben? Bitte.

Insgesamt wurden 6 Objekte (3 Einheiten und 3 Gebäude) + 4 Modifikationen (2 magische, 2 technische) für das Spiel modelliert. Leider war nicht genug Zeit für die Lichteinheit und die Totems.
Alle Modifikationen wurden so entworfen, dass sich ein Teil von ihnen während der Entwicklung des Zweigs der Zerstörung und ein Teil des Zweigs der Schöpfung veränderte.
Somit ist das Spiel visuell vielfältig geworden. Sie warten wie im Urlaub auf das Pumpen des nächsten Schießstandes während des Spiels, denn danach werden alle Ihre Einheiten transformiert und spiegeln mehr ihre Eigenschaften und Ihren Spielstil wider.
In Unity wurde dies wie folgt hinzugefügt: Einheiten haben grundlegende Elemente, z. B. einen Körper, und jeder Schießstand (unter Berücksichtigung des grundlegenden) hat einen Link zu den entsprechenden grafischen Elementen. Wenn eine Einheit in der Szene erscheint, wird ihr grundlegender Teil erstellt, und dann werden alle erforderlichen Body-Kits aus den Assets zur WorldObject-Struktur hinzugefügt.
Fenster zur Welt
Und jetzt sieht das Spiel schon wie ein Spiel aus. Trotzdem ist etwas noch nicht abgeschlossen. Es gibt eine Welt, Kreaturen bewegen sich entlang, Gebäude werden gebaut, Ressourcen werden extrahiert. Es finden Schlachten statt, Erfahrung wird gesammelt und die Rennen wählen ihren Entwicklungspfad.
Warum leidet der Spieler dann? Tatsache ist, dass keine adäquate Schnittstelle entwickelt wird, HUD, wie es üblicherweise in Spielen genannt wird.
Um die Aufgabe des Aufbaus der Schnittstelle zu lösen, sammelte ich zunächst alte und neue Analoga - Command & Conquer, Kosaken, Warcraft 3, Starcraft 2, Warhammer, Dota, LoL - und begann, die Bestandteile zu analysieren.
Die Spieloberfläche sollte (wie auf jede andere Weise) den aktuellen Standort und Status des Protagonisten widerspiegeln und Möglichkeiten vorschlagen, diesen Status zu ändern. Im Allgemeinen ist dies die Verfügbarkeit von Ressourcen, Informationen über die ausgewählte Einheit (wie Standort, Gesundheit, mögliche Aktionen und Erklärungen für sie), die Position aller Einheiten auf der Minikarte, die Fähigkeit, das Spiel anzuhalten und zu verlassen.

Nachdem ich gesehen hatte, wie die Granden diese Aufgaben ausführen, versuchte ich, meine eigene Struktur zusammenzustellen, die den üblichen Benutzermustern entsprach, aber nur wenig Platz auf dem Bildschirm beanspruchte.
In jenen alten Zeiten waren native Unity-Tools zum Erstellen von HUDs eine kleine Gruppe von Elementen, die erstellt und direkt über Code auf dem Bildschirm platziert werden mussten.
Nachdem Sie ein schönes, flüssiges, adaptives Frontend auf HTML + CSS geschrieben haben, scheint es natürlich ein absolut wildester Fanatismus zu sein, aber was können Sie tun? Ich musste mich anpassen, die verschiedenen Einrückungen berechnen und ständig die Breite und Höhe des Bildschirms berücksichtigen.

Das Verschrauben von Schönheit mit einer solchen Oberfläche ist eine äußerst trostlose Aufgabe, daher wurde zunächst beschlossen, sie in neutralen Farben in flacher Form auszuführen.
Sobald die Basis geworfen wurde, stellte sich die Frage, ob eine große Anzahl von Symbolen für Hauptereignisse und andere Schnittstellenelemente erstellt werden sollte.
Es wurde klar, dass das Zeichnen alles eine völlig hoffnungslose Aufgabe mit einem engen Zeitlimit war, und ich begann nach Alternativen zu suchen. Ich habe ein wundervolles Projekt gefunden - GameIcons, das kostenlose einfache Symbole für Indie-Spiele erstellt. Darin wurden alle notwendigen Komponenten gefunden und die Schnittstelle zusammengebaut.
Im Laufe der Entwicklung tauchte die Notwendigkeit auf, eine Minikarte zu erstellen. Mit ein wenig Verstand über die Fähigkeiten von Unity fügte ich jeder Einheit oben ein Rechteck der entsprechenden Größe hinzu, das nur durch eine spezielle Kamera sichtbar ist, die über dem gesamten Feld installiert ist.
Sobald die Minikarte fertig war, bestand der Wunsch, darauf zu klicken, um Einheiten auf langen Reisen zu senden, was mir schnell klar wurde.

Es ist erwähnenswert, dass ein Teil der Benutzeroberfläche die Anzeige von Informationen über den Zustand einer Einheit ist, von der aus alles begann. Beim Hervorheben gibt es jetzt einen Kreis um die Einheit, dessen Farbe die Beziehung dieser Einheit zu Ihnen widerspiegelt: grün - freundlich, gelb - neutral, rot - feindlich. Über dem Gerät selbst wird außerdem eine Gesundheitsleiste angezeigt, deren Farbe sich je nach Menge ändert.
Um Platz auf dem Bildschirm zu sparen, wurde beschlossen, die Gesundheitsbalken aller Einheiten einer bestimmten Länge zu machen (damit beim Pumpen und Polieren der Gesundheitsbalken von 10.000 PS nicht vom Rand des Bildschirms bis zum Rand reicht).

Die Interaktion mit der Welt endet hier nicht. Ein wichtiges Element für das Verständnis des Zustands der Welt und der Möglichkeiten zur Veränderung ist der Cursor. Im Web wird es meistens zu einem Fuß, um ein Element anzuzeigen, auf das geklickt werden kann, und zu einem Wagen für Text, der ausgewählt werden kann.
Im Spiel müssen wir genauso verstehen, wer ihre Hand erhoben hat und was damit zu tun ist. Wenn wir also hervorheben, müssen wir verstehen, um welche Einheit es sich handelt, und wenn wir uns in einen Zustand einer bestimmten Aktion (Angriff, Bewegung, Produktion) bewegen, müssen wir die Möglichkeit einer Interaktion zeigen.
Sobald alle grundlegenden Aktionen erschienen waren, wollten sie sie aus Geschwindigkeitsgründen über die Tastatur ausführen. Zu diesem Zweck haben wir Tastatureingabesätze hinzugefügt, die vom Status des Players abhängen.
Und natürlich den Baum erleben und nivellieren.

Wir bekommen das Level - ein spezieller Knopf zum Aufpumpen von Lichtern, ein Baum öffnet sich. Es zeigt in Grün, was wir bereits gelernt haben, in Schwarz - was wir erreichen können und in Rot - was wir nicht können.

Nachdem wir einen bestimmten Schießstand geöffnet haben, sehen wir alle Änderungen, die er am Spiel vornimmt, und entscheiden dann, ob wir ihn pumpen möchten.
Ja, es sieht ziemlich ungeschickt aus, aber es war erst der Anfang!
Und jetzt ist alles bereit für den ersten Start! Hurra, weit dahinter, vor einem endlosen Raum an Entwicklungsmöglichkeiten.

Es bleibt nur noch der Startbildschirm hinzuzufügen - und fahren Sie fort, um die erstaunlichen Weiten von Evenedium zu erkunden. Oh ja, ich habe nicht gesagt, dass wir nach dem verstärkten Brainstorming den Namen gewählt haben?
EVENEDIUM.
Lass uns gehen!
Und ein paar Screenshots für diejenigen, die das Video oben nicht sehen wollen.



Finita?
Die Basisversion des Spiels war fertig.
Ja, es ist sehr einfach, aber es gab uns nur einen Grund, einen hervorragenden Pool von Aufgaben für die weitere Entwicklung zu schaffen - hier finden Sie neue Einheiten und den Nebel des Krieges und Fähigkeiten mit einem dazugehörigen Generator sowie neue Pumpzweige und mehr Variabilität und die Kampagne und Multiplayer und Monetarisierung ...
Ja übrigens: Ich habe mich perfekt verteidigt, aber das hat mich nicht überrascht. Ich war mehr gespannt auf die Zukunft des Spiels, für deren Umsetzung ich mich sofort an die Arbeit machte.
Die Tastaturen kochten, für einen weiteren Monat schrieben wir aktiv etwas und plötzlich, plötzlich stellte ich fest, dass ein Jahr der Entwicklung bereits vergangen war! Ein ganzes Jahr lang habe ich über die Entstehung dieses von Kollegen überwucherten Geistes nachgedacht, und jetzt sind wir ein Team, wir haben ein Produkt und eine glänzende Zukunft. Wir beschlossen zu feiern.
Das letzte Commit begann, alle mit einem solchen Posten zu treffen.

Und ja. Der letzte. So seltsam es auch scheinen mag, aber in diesem Moment beschlossen die Jungs, die am Ende ernsthaft bei der Erstellung geholfen hatten, das Projekt zu verlassen. Er brauchte Zeit und Mühe, für die sie nicht bereit waren. Sie sahen in ihm weder Aussichten noch Bedeutung.
Für mich war es eine Überraschung. Offensive, ziemlich hart getroffen.
Es wird keine lange Schlussfolgerung geben, warum ist es so? Alles ist oben beschrieben.
Im Allgemeinen bin ich stolz darauf, dass ich meinen Traum, eine Welt zu schaffen, verfolgt und in einen solchen Zustand gebracht habe.