Update 9 - Reise zum Aufgabenort: Hinter den Kulissen
Hallo Community! Vielleicht erinnert Ihr Euch nicht an mich, aber ich habe vor ein paar Monaten schon einmal eine Einführung ins Netz gestellt. Seit der Veröffentlichung der „Reiter von Rohan™“ habe ich unermüdlich an neuen Features und und für Euch alle an Fehlerkorrekturen für Update 9 gearbeitet. Über eines dieser neuen Features, die „Reise zum Aufgabenort“, möchte ich Euch heute ein wenig erzählen. Ich hoffe, Ihr bekommt dadurch einen Einblick in die Entwicklung einer solchen Funktion aus der Perspektive des Programmierers, aber eigentlich, so muss ich zugeben, will ich darüber erzählen, weil mir die Sache so viel Spaß gemacht hat.
Lasst mich zunächst einmal erklären, was es mit diesem coolen Ding auf sich hat und wie man es benutzen kann:
Es gibt in der Aufgabenübersicht im Spiel ein kleines, neues Icon (einen kleinen silbernen Ring mit einem Pfeil darauf), gleich neben den Aufgaben, bei denen es erlaubt ist, sofort zum Zielort der Aufgabe zu reisen. Das wird für die meisten Aufgaben verfügbar sein, bei denen der Spieler mit einem bestimmten NSC reden muss (und ich erkläre gleich, warum das nicht für alle gelten kann). Die Idee dahinter war, die Rückkehr zum Auftraggeber zu erleichtern, um eine Aufgabe abschließen zu können, aber es kann auch während bestimmter Aufgaben sehr nützlich sein, wenn sie lediglich darin besteht, eine lange Reise zu machen, um mit jemandem zu sprechen.
Wenn Ihr auf dieses neue Symbol klickt, öffnet sich ein Bestätigungsdialog (das verhindert den unbeabsichtigten Gebrauch). Ihr werdet feststellen, dass Ihr für ein Sinnbild des Reisenden, einen Reise-Erlass, sofort zu dem entsprechenden NSC „teleportiert“ werden könnt. Diese Sinnbilder sind eine Währung des Tausch-Sammelbeutels und können im HdRO-Shop erworben werden.
Wenn Ihr dann mit „OK“ bestätigt, werdet Ihr sofort zum entsprechenden NSC „teleportiert“, sofern davon auszugehen ist, dass nicht in letzter Sekunde noch ein Problem auftaucht (weil man zum Beispiel schon zu nahe neben dem Ziel-NSC steht). Keine Sorge - wenn ein Problem auftaucht, wird Euch das Sinnbild des Reisenden nicht abgebucht. Aufgrund einiger technischer Herausforderungen, die ich weiter unten beschreiben werde, werdet Ihr manchmal haargenau zu der Stelle transportiert, an der sich der Ziel-NSC befindet, oder in dessen Nähe, aber etwas weiter entfernt als üblich.
Diese Funktion lässt sich während eines Kampfes nicht verwenden. Außerdem ist die Nutzung während einer Instanz, in den Ettenöden oder während einer Reise mit einem Stallreittier ausgeschlossen. Sie kann auch für einige Aufgaben, jetzt oder in Zukunft, abgeschaltet werden, wenn die Gefahr besteht, dass Ihr dadurch wichtige Teile der Geschichte oder notwendige Begegnungen versäumen würdet.
Obwohl ich kein Designer bin, möchte ich Euch trotzdem erzählen, warum mich diese Arbeit so gereizt hat und warum ich sie für echt cool halte. Ich bin leider ein sehr aktiver Spieler ohne irgendwelche Höchststufen-Charaktere. Ich möchte wenigstens einen meiner Charaktere von den wiederholten Wanderungen zum Auftraggeber entlang der gleichen Straße erlösen, damit ich einfach mehr von der Geschichte erlebe und coole neue Inhalte entdecke. Natürlich will ich die (Spiel-)Welt sehen, aber ich kann einfach nur begrenzt immer wieder über das gleiche Feld laufen, bevor es ein wenig langweilig wird. Diese neue Art des Reisens erlaubt mir, die Welt zu sehen, wann immer ich sie sehen will, aber andererseits wird mir erspart, ein und dieselbe Reise zu oft zu wiederholen. Für treue Langzeitspieler, die bereit mehrere Höchststufen-Charaktere haben, könnte diese neue Funktion das Ausprobieren neuer Rassen und Klassen eventuell interessanter machen.
Jetzt aber zur technischen Seite.
Zusätzlich zu meiner eigenen Vorfreude auf diese Funktion hat mir die Arbeit daran gefallen, weil die mich vor einige interessante technische Herausforderungen stellte. Die Grundfunktion sieht einfach aus: Findet einen NSC in der Spielwelt und dann teleportiert den Spieler an diesen Ort. Es gibt hier jedoch einige versteckte Komplikationen. Da diese Funktion mit tausenden von Aufgaben automatisch zusammenzuarbeiten hat, konnten wir unmöglich jede einzelne Situation perfekt vorhersehen. Wir brauchten die Möglichkeit, dieses System für bestimmte Aufgaben einfach ausschalten zu können - sogar im Nachhinein, wenn nach der Einführung plötzlich hier oder dort Probleme auftreten sollten. Wir mussten so viele Probleme wie irgend möglich voraussehen und so verbrachte ich meine Zeit damit, sicherzustellen, dass das System bei problematischen Aufgabentypen, wie etwa Instanzen oder Aufgaben mit mehreren Aufgabenorten, von der Nutzung ausgeschlossen war, neben vielen anderen kleinen Tests und Überlegungen.
Die erste wirklich große Herausforderung ist aber vermutlich nicht ganz so offensichtlich, es sei denn, Ihr habt Erfahrung mit der Programmierung von MMOs. Wenn sich kein Spieler in der Nähe eines bestimmten NSCs aufhält, kann es sein, dass dieses Areal im Augenblick nicht einmal auf dem Server präsent ist! Warum sollte ein Areal auch auf den Server hochgeladen sein, wenn es keinen Spieler gibt, der diese Daten nutzt? Das erschwert es für das Programm, zu verstehen, wohin ein Charakter teleportiert werden soll, da der Aufgabenort derzeit nicht existiert.
Wir haben jedoch ein Leitsystem für Aufgaben. Es kennt die Orte, an denen wir üblicherweise die Aufgabenringe und den Entfernungsanzeiger anzeigen lassen, die Ihr tagtäglich verwendet. Für Aufgaben mit nur einem Aufgabenort und NSC im Leitsystem können wir davon ausgehen, dass sich der NSC wenigstens in der Nähe dieses Punktes aufhält. Es stellte sich heraus, dass dies in den meisten Fällen zutraf und funktionierte, ausgenommen bei NSCs, die sich üblicherweise auf längeren Patrouillengängen befinden.
Nachdem wir einmal eine arbeitstüchtige Grundfunktion entwickelt hatten, mussten wir sie noch etwas polieren. Ich stellte sicher, dass die Symbole als ,inaktiv' angezeigt wurden, sobald man sich im Kampf oder in einer Instanz befand, ein Stallreittier verwendete oder wenn bereits das Menü für einen anderen Aufgabenort als Reiseziel geöffnet war. In jedem speziellen Fall erfuhr ich mehr über die Interaktion mit den betroffenen Systemen, oder darüber, wie solche Interaktion auszusehen hatte. Wir fügten weitere Kontrollinstanzen und Nachrichten für den Spieler hinzu, außerdem verpassten wir der Benutzeroberfläche eine Verjüngungskur. Wir stolperten auch über einige lustige Renn-Situationen und behoben deren Probleme, als wir mehrere Arten des Reisens auf einmal ausführten.
Der interessanteste Teil war aber, so scheint es mir, als wir feststellten, dass es ein wenig unsinnig ist, jedes Mal an genau dieselbe Position des entsprechenden NSCs teleportiert zu werden. Wir entschlossen uns, diese Tatsache wann und wo immer möglich zu vermeiden. Es wäre schön, wenn man direkt neben dem betreffenden NSC auftauchen könnte. Was sollten wir aber in den Fällen tun, in denen der Auftraggeber an einer Wand schürft, an der äußersten Kante einer Klippe steht oder aber in eine Gefängniszelle eingesperrt ist? Jede dieser Situationen gewährte eine unterschiedliche Herausforderung, den Charakter in einer vernünftigen Position erscheinen zu lassen. Es wäre viel einfacher gewesen, wenn wir aufgegeben hätten, bevor wir eigentlich loslegten. Aber es sind gerade diese Probleme, über die wir Ingenieure gerne nachdenken, bevor wir abends einschlafen und die uns dann am nächsten Morgen aus dem Bett und zur Arbeit treiben ... wir konnten einfach nicht widerstehen.
Um diese Schwierigkeiten anzugehen, wurden wir kreativ. Zunächst mussten wir sicherstellen, dass das Areal auch geladen ist, indem wir Euch an den Ort des NSCs teleportieren. Danach taten wir unser Bestes, um Euch ein wenig vom Ziel-NSC abzurücken, indem wir unser physikalisches System und visuelle Tests verwendeten, um sicherzugehen, dass Ihr in Sichtweite des NSCs landen und Euch auf wegsamem Gelände befinden würdet - ansonsten nahmen wir den genauen Standort des NSCs als Zielort. In den meisten Fällen funktionierte das System prächtig! In einigen wenigen Fällen werdet Ihr genau am selben Ort des entsprechenden NSCs auftauchen. In wiederum anderen Fällen mussten wir das System aufgrund der besonderen Aufgabenstellung abschalten. Jetzt wisst ihr, warum Ihr nicht immer die Möglichkeit habt, sofort zu einem bestimmten NSC zu reisen.
Ich nehme an, all das ist ein wenig schwer zu verstehen, ohne die Details wirklich sehen zu können, und es könnte für viele unter Euch eher uninteressant klingen. Aber sollte es Euch interessieren, dann solltet Ihr überlegen, ob Ihr nicht selbst Spiele kreieren wollt.
Genießt es, schnell zu Euren Aufgabenorten zu reisen und lasst mich wissen, wenn Ihr Fragen oder Anregungen habt. Auch wenn ich nicht versprechen kann, dass ein bestimmter Vorschlag jemals ins Spiel eingebaut werden wird (denkt daran, dass Eure Meinung vielleicht nicht von allen getragen wird und dass einige Dinge aus Zeitmangel einfach nicht machbar sind), aber ich weiß, dass die Designer alles solange überarbeiten, bis es einfach atemberaubend ist.