Status Update #27 - BDL, Teil 4: WorldRestore, Roadblocks

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

      Status Update #27 - BDL, Teil 4: WorldRestore, Roadblocks

      Neu



      Hey,

      in diesem Update geht es um den Weltengenerator des neuen Serverkonzepts.
      Mit Minecraft 1.13 wurden einige größere Änderungen in Minecraft vorgenommen. Dies wurde auch hier schon angesprochen. Im Bild sieht man eins der Probleme, dass ich bei der Umsetzung des neuen Servers hatte.


      WorldRestore


      Konzept
      Grundlegend kennt man als Kadcon-Spieler die Funktionsweise vielleicht schon aus der Spawnie-Welt. Es gibt einen Bereich auf der Karte, der für Spieler unzugänglich ist (A im Bild). Dieser Bereich gilt als "Blaupause" für das Spielgebiet. Ein Script kann nun im Hindergrund diesen Bereich beliebig oft in die Spielwelt einfügen (B). Dies hat einige Vorteile die wichtig für das Kadcon-Konzept sind.
      • Es ist möglich Fehler in der Ursprungskarte zu korrigieren und diese Fehler auf die ganze Spielwelt zu übertragen.
      • Es erlaubt Grundstücke zu regenerieren, wenn sie inaktiv geworden sind.
      • Es erlaubt gegriefte/von Admins zerschrottete Straßen usw. wieder herzustellen ohne viel Aufwand.
      • Die Spielwelt ist dynamisch zur Laufzeit erweiterbar wenn der Platz nicht mehr reicht.
      • Die Straßen der Spielwelt können beliebig geändert werden (Winter/Sommer Designs).



      Aufbau der Spawnie-Welt. A = Restore-Bereich, B = Spielbare Kopien von A



      Fehlende Funktionen & Probleme

      Aber das Spawnie-System auf Kadcon hat leider auch starke Einschränkungen. Für das BDL-Projekt ist das System nicht gut genug.
      • Die Welt ist in 1x1 GS Grundstücke aufgeteilt.
      • Es ist nicht möglich ohne weiteres ein "5x5" GS-Gebeit für einen Spieler zu belegen. Der Spieler müsste sofort all diese GS kaufen.
      • Der Restore-Bereich (A) muss per Hand eingefügt werden. Es gibt keine "Beschreibung" von diesem Bereich. Er ist fest vorgegeben über einen Script.
      • Das Design der Straßen zu ändern ist daher relativ eklig.
      • Das Hauptproblem für BDL also: Ein Spieler kann nicht ein größeres Stück Land bekommen und belegen. Es gäbe nur 1x1 GS und das wird schnell langweilig.

      Vielleicht noch interessant. Bei der Entwicklung der Spawnies war auch das Setzen der Straßen im Restore-Bereich alles per Hand. Einige Zeit später ist dann dazu gekommen, dass wir
      die Straßen austauschen können zu Ostern, Weihnachten usw. dabei hat @ICETE4 dann ein kleines Excel-Hilfsprobgramm gebastelt um die Erstellung zu vereinfachen. Über dieses Tool wird dann eine Datei generiert, die es uns erlaubt in Chunkli gespeicherte Grundstücke automatisch in einen ausgewählten Bereich einzufügen.

      Typischerweise baut das Team dann auf dem Testserver an neuen Straßendesigns. @stefm90 prüft dann i.d.R. dass diese auch alle passen und die richtige Struktur haben und erstellt eine neue Restore-Area.
      Ich füge diese am Ende dann auf den einzelnen Servern nach einer letzten Prüfung ein und lasse die Scripts zur Regenerierung laufen. Am Ende sind so alle Straßen in ~1 Stunde komplett durch neue ersetzt.



      Das Excel-Script zur Generierung von Spawnie-Regionen. Welcher Straße benötigt wird, wird automatisch errechnet.


      Anpassungen

      Für den BDL-Server reicht dies aber nicht. Es muss mindestens noch dazu:
      • Generierung von Restore-Gebieten (A) über mehrere Wege: Aus gespeicherten Chunkli-Gebieten, aus Zufallsinseln mit korrekt passender Größe und einfach noch Zufallsgebiete.
      • Es muss möglich sein größere Gebiete auf einmal zu kaufen oder zumindest für genau einen Spieler zu besetzen.
      • Es muss möglich sein größere Gebiete nur dann zu er neuen, wenn kein einziges der einzelnen GS vergeben ist.
      • Es soll möglich sein das eigene Grundstück zurückzusetzen. Dafür muss es einem Spieler möglich sein ein größeren Bereich als 1x1 GS mit /land restore zu bearbeiten.
      • Einige Befehle sind nötig für die Verwaltung solcher Bereiche :)

      Einige der Befehle um Restore-Gebeite zu erstellen/verwalten.



      Probleme

      Aber auch wenn eigentlich alles geplant, überlegt und nach und nach programmiert wird kann es am Ende etwas ganz anderes sein, was Kopfzerbrechen bereitet. Grundsätzlich ist das Ersetzen solcher großen Bereiche auf der Karte etwas, was eigentlich in MC so nicht vorkommt. Um dies zu ermöglichen habe ich dann sehr viel Zeit in Chunkli investiert - Chunkli erlaubt es überhaupt, dass diese Art von Bearbeitung der Spielwelt zur Laufzeit möglich ist. Aber dafür muss man natürlich auch ganz tief in Minecraft rumpfuschen. Unter anderem musste ich dafür Fehler in MC selber beheben.

      Wie man ganz oben im Bild erkennen kann ist auch hier irgendetwas schief gelaufen :rolleyes: . Im oberen Teil sieht man die Restore-Area. Bei der Welt handelt es sich um eine Insel-Welt mit verschieden großen Inseln. Die Straßen sind in diesem Fall einfach Wasser-Straßen. Man muss mit dem Boot fahren um von A nach B zu kommen. Im unteren Teil sieht man dann das Problem: Es gibt ganz viele "schwarze Löcher" auf der Karte. Irgendwie wurde die Spielkarte nicht richtig generiert. Diese Art von Problem tritt leider häufiger auf und dies ist nur ein Beispiel dafür. Meistens liegt dies daran dass der Welt-Generator von Minecraft selber auch irgendwie dazwischenspringt oder häufig liegt dies auch daran, dass die Grundstücke zwar alle fleißig generiert und eingefügt werden - aber nicht korrekt/schnell genug gesichert werden. Probleme dieser Art (nicht dieses speziell) haben bisher in der Entwicklung vom 1.13 Server wohl ~2 Monate gekostet.

      In diesem Fall war das Problem, dass die veränderten Grunstücke (Chunks) von Minecraft nicht schnell genug gespeichert wurden und dies beim Herunterfahren des Servers zu einem Timeout geführt hat. Das Problem konnte ich lösen, indem ich ein paar Anpassungen am Speicher-Algorithmus in Minecraft selber vorgenommen habe.





      So viel in diesem Update,
      Kade

      PS: Ich weiß, dass es einige Bedenken gibt. Auf diese habe ich auch geantwortet. Aber ich habe m.E. hier im Vorwort auch schon alles nötige dazu gesagt. Meine Entscheidung habe ich getroffen und sehe jetzt auch nichts Neues, was nicht erwartet war.
      Bilder
      • islandserror.jpg

        685,21 kB, 3.840×2.160, 2.003 mal angesehen
      • islandserrormini.jpg

        35,89 kB, 600×338, 403 mal angesehen
      • spawniegen.jpg

        190,75 kB, 747×579, 404 mal angesehen
      • spawnieroads.png

        29,28 kB, 992×658, 403 mal angesehen
      • worldregencmd.png

        33,33 kB, 636×514, 405 mal angesehen
      Bitte möglichst alle Fragen im Forum stellen und nicht mir per Privatnachricht.
      Ich Teile meine Zeit aktuell: 3 Tage 1.13, 2 Tage Arbeit, 1 Tag Kadcon. Eine PN-Antwort kann entsprechend länger dauern.