Zwischenwelten über API

  • Hallo Red,

    erstmal noch ein Dankeschön an deine Arbeit:wow:


    Wegen Plugin's hatte ich einen gedanken, wo ich eventuell eine Zwischenwelt Bräuchte, also ein Platz der nicht direckt auf der Karte ist, sich aber wie die Orginal Welt bearbeiten/Bespielen läst.
    Also soetwas wie eine Magische Zwischenwellt, ein Platz wo mann ein Taschenhaus Bauen kann was dann aber nicht in der Normalen Welt erreichbar ist, der Spieler dann auch für alle auf der Map verschwidet wo sich aber auch mehrere Spieler Treffen könnten, wenn das auch wahlweise wehre, wehre es nicht schlecht:lol:(vieleicht einmal auf'm Server für alle und für jeden Individuell Local auf'm PC)

    Wenn ich das Richtig im Kopf habe ist ja auch ein Link zu anderen Maps geplant, allerdings würde ich nicht gleich eine ganze Welt Brauchen. Ein Bereich X*Y*Z würde da schon ausweichen:D
    Ein Möglichkeit wehre vieleicht diesen Ort soweit wie Möglich nach Oben zu versetzen, nur wehre dann noch die Player Position auf der Map und wenn Fliegen kommt wird der Luftraum eh knapp

    Erweiterte Frage:
    Eigene klein Welt generieren und Bearbeiten per API.
    Wehre soetwas überhaupt mit der geplanten API möglich oder ginge das nur/einfacher über eine Unity Schnitstelle

  • Ich habe den Beitrag mal in einen eigenen Thread verschoben, da das ja nicht direkt auf die UI bezogen war :D


    Was die Zwischenwelt angeht, es gab damals schonmal Überlegungen zu sowas wie verschiedenen "Dimensionen", sprich dass sich nur Spieler sehen, die sich in derselben Dimension befinden. Sowas ist allerdings etwas kompliziert umzusetzen, zumindest was die Welt selber angeht - denn grundsätzlich müsste für jede Dimension eine eigene Welt bereitgehalten werden, was auch insgesamt deutlich größere Anforderungen an den Server stellt (einerseits ein viel höherer RAM-Bedarf, andererseits aber auch mehr Last für den Server, wenn verschiedene Welten in verschiedenen Dimensionen synchronisiert werden müssen)...


    Denkbar wäre lediglich, dass jede andere Dimension keine Weltgenerierung hat, sondern immer komplett leer ist (und der Betreiber selbst dort Landschaften anlegen müsste). Dazu müsste man sich mal Gedanken machen :thinking:


    Ansonsten wird es aber zumindest eine Möglichkeit geben, einen Spieler auf einen anderen Server weiterzuleiten. Theoretisch könnte man so also die Sache mit den Zwischenwelten lösen. Leider wäre das aber nicht nahtlos, d.h. beim Transit zum anderen Server würde der Spieler einen Ladebildschirm haben usw...


    Erweiterte Frage:
    Eigene klein Welt generieren und Bearbeiten per API.
    Wehre soetwas überhaupt mit der geplanten API möglich oder ginge das nur/einfacher über eine Unity Schnitstelle

    Also die neue API wird auf jeden Fall die Möglichkeit bieten, die Weltgenerierung zu beeinflussen ^^ Man kann auf dem Wege also theoretisch ganz eigene Weltgeneratoren schreiben.


    Was genau meinst du mit "Unity Schnittstelle"?^^

  • Wie wäre es denn diese "Zwischenwelt" größenmäßig zu begrenzen und, wie die Testwelt, nur eben und ohne Vegetation, NPC, etc. zu erstellen? Zudem nicht für jeden Spieler eine einzelne, sondern der Admin müsste entscheiden ob es nur 1 je Server gibt (z.B. für Admins/Mods) oder ob bestimmte Spielergruppen ihre eigenen bekommen. Das dürfte doch die Performanceprobleme minimieren?

  • Wie wäre es denn diese "Zwischenwelt" größenmäßig zu begrenzen und, wie die Testwelt, nur eben und ohne Vegetation, NPC, etc. zu erstellen? Zudem nicht für jeden Spieler eine einzelne, sondern der Admin müsste entscheiden ob es nur 1 je Server gibt (z.B. für Admins/Mods) oder ob bestimmte Spielergruppen ihre eigenen bekommen. Das dürfte doch die Performanceprobleme minimieren?

    Grundsätzlich ist das möglich, und je weiter diese Welt begrenzt wird, desto kleiner auch der Einfluss auf die Performance. Die Frage ist nur, wo zieht man die Grenze bzgl. Welt-Größe? Und wie sieht sie aus, also was für ein Terrain wird dort generiert (ggf. Flachland)? Das wird vmtl. etwas sein, wo man es nicht jedem recht machen können wird... Person A braucht vll nur einen 100x100 Blöcke großen flachen Bereich, Person B benötigt zwingend eine ganze Insel, Person C hätte an der Stelle gerne einen riesigen Ozean während Person D gar keine Landschaft braucht, sondern eh nur Inneräume dorthin verlagern will...


    Wenn die Zwischenwelt in ihrer Größe begrenzt ist, wirft das auch andere Fragen auf... denn gerade beim Wechsel zwischen normaler (in ihrere Größe nicht begrenzte) Welt und (größentechnisch begrenzte) Zwischenwelt stellt sich die Frage, wie die Koordinaten dann umgerechnet werden. Angenommen ein Spieler befindet sich irgendwo fernab vom Nullpunkt (zB bei 30k) und soll nun in die deutlich kleinere Zwischenwelt gebracht werden, um an dieser Stelle einen "geheimen Lagerraum" zu bauen - das würde bei einer begrenzten Zwischenwelt dann Schwierigkeiten mit sich bringen...


    Vll wäre es da universeller, wenn die Zwischenwelt zwar nicht begrenzt, aber dafür standardmäßig "leer" ist, also kein Terrain vom Spiel aus beinhaltet, man dort also nur bauen kann :thinking: Schwieriges Thema :saint:


    Aber unabhängig von dieser "Designfrage" ist die Implementierung so eines Systems leider dennoch mit einigem Aufwand verbunden, da das Spiel das Konzept verschiedener Dimensionen bisher nicht kennt... es müssten dafür einige Teile umgeschrieben werden. Für Spielersyncro etc. ist das kein Problem, aber das Welt- bzw. Chunk-Management wird dadurch komplexer :|

  • Was genau meinst du mit "Unity Schnittstelle"?^^

    Ja:Dich hatte mich in der Pause mal Intensiver mit Unreal beschäftigt dann wieder etwas mehr mit C,C++,C# und dann hatte ich den Free Unity zugang gefunden.
    Und dachte auch schon daran dort mich mal zu Probieren, und da karm die Frage auf ob sowas wie "eine Passende DLL" die dann auch Unity interners nutzen kann (Dabei dachte ich mehr an neue Figuren, Animationen und was mann da noch alles anstellen kann) besser/einfacher wehre:saint:

    Aber warscheinlich wird dann die Gefahr zu groß das, das Spiel instabile wird.

    Wie wäre es denn diese "Zwischenwelt" größenmäßig zu begrenzen und, wie die Testwelt, nur eben und ohne Vegetation, NPC, etc. zu erstellen? Zudem nicht für jeden Spieler eine einzelne, sondern der Admin müsste entscheiden ob es nur 1 je Server gibt (z.B. für Admins/Mods) oder ob bestimmte Spielergruppen ihre eigenen bekommen. Das dürfte doch die Performanceprobleme minimieren?

    daran hatte ich auch gedacht ^^


    wie die Koordinaten dann umgerechnet werden

    das ist eine Gute Frage, Spontan würde ich sagen mit "Sprung Markern"
    -wenn zu der Zwischenwellt geweckselt wird, muss der Ziel Punkt mit angegeben werden und Wo der Spieler war wirde hinterlegt (bei den neuen Dynamischen sachen, muss dan ebend das Plug in sich das merken)

    -zurück Teleport dann auch mit Ziel angabe

    Aber unabhängig von dieser "Designfrage" ist die Implementierung so eines Systems leider dennoch mit einigem Aufwand verbunden, da das Spiel das Konzept verschiedener Dimensionen bisher nicht kennt... es müssten dafür einige Teile umgeschrieben werden. Für Spielersyncro etc. ist das kein Problem, aber das Welt- bzw. Chunk-Management wird dadurch komplexer :|

    Ja, das habe ich mir schon gedacht;)und würde es auch nicht Morgen erwarten8)

    Da kommt mir auch noch die Frage was wird wenn es mehrere Plugins mit Zwischenwelten gibt, dann müssten die ja auch unabhängig von einander bearbeitet werden



    Vll wäre es da universeller, wenn die Zwischenwelt zwar nicht begrenzt, aber dafür standardmäßig "leer" ist, also kein Terrain vom Spiel aus beinhaltet

    Das scheint mir schon die sinvollste Lösung zu sein, dann sind Server betreiber und Plugin Ersteller zusammen verantworlich für die Performance


    Da wehre vieleicht ein ServerVorgaben, für die Plugins gut, quasie das mann im Plugin schon Größenvorgaben berücksichtiegen kann
    Und eine gesicherte Mindest Größe z.b. 512x512x512 (sollte doch jeder server schaffen)
    Dann kann das Plugin auf ein Minimum abgestimmt werden und sich ggf. ausbreiten

    :wacko:Wie kompliziert wehre es LOD (Umgebungshintergrund) umgebung mit in die Zwischenwelt zu nehmen, die wehre ja schon aus der Normalen Map da?

  • Und dachte auch schon daran dort mich mal zu Probieren, und da karm die Frage auf ob sowas wie "eine Passende DLL" die dann auch Unity interners nutzen kann (Dabei dachte ich mehr an neue Figuren, Animationen und was mann da noch alles anstellen kann) besser/einfacher wehre :saint:

    Achso, naja, leider wird das nicht so einfach funktionieren :/ Rising World verwendet (anders als die meisten Unity-Spiele) kein "Mono" (bei welchem man die Assemblies bzw. DLLs des Spiels einfach verändern oder austauschen kann), sondern IL2CPP - damit wird der Spielcode beim Kompilieren in C++ umgewandelt. Das ist zwar bei weitem nicht so schnell wie der Teil des Spiels, der direkt in C++ implementiert ist, aber immernoch wesentlich schneller als Unitys veraltetes Mono (hier habe ich mal einen Vergleich gepostet) ^^


    Das bedeutet aber auch, dass der Spielcode nicht so einfach modifiziert werden kann... Das ist einerseits vorteilhaft, da Hacker & Co es schwerer haben, das Spiel zu ihren Gunsten zu ändern (richtige Hacker wird das natürlich nicht abhalten, aber zumindest die ganzen Script-Kiddies^^), andererseits kann das Spiel aber auch nicht mehr so einfach modifiziert werden.


    Bei letzterem Punkt muss man aber dazu sagen, dass sich das natürlich nur auf codeseitige Änderungen bezieht. Assets und diverse Spieleigenschaften können trotzdem verändert werden, denn einerseits speichert das Spiel vieles in der "definitions.db" im Spielverzeichnis (zB alle Eigenschaften von Items, Npcs, Wetter, Rezepte usw), andererseits liegen alle Modelle und Texturen in "Asset Bundles" vor (die grundsätzlich modifiziert werden können). Wenn jemand also zB ein anderes Modell für eine Spitzhacke einbauen möchte, dann liegen diesem "klassischen" Modding-Ansatz keine Steine im Weg ;)


    Der goldene Weg ist aber natürlich die Plugin-API, da hierüber sichergestellt wird, dass zB im Multiplayer auch alles richtig synchronisiert wird ^^


    das ist eine Gute Frage, Spontan würde ich sagen mit "Sprung Markern"
    -wenn zu der Zwischenwellt geweckselt wird, muss der Ziel Punkt mit angegeben werden und Wo der Spieler war wirde hinterlegt (bei den neuen Dynamischen sachen, muss dan ebend das Plug in sich das merken)

    Bei einer API-basierten Lösung wäre das auf jeden Fall sinnvoll, dass die Position in der Zwischenwelt natürlich entsprechend gesetzt und geändert werden kann.


    Das scheint mir schon die sinvollste Lösung zu sein, dann sind Server betreiber und Plugin Ersteller zusammen verantworlich für die Performance

    Ich denke auch, dass diese Lösung wohl am wenigsten Probleme bereitet :thinking:


    Da wehre vieleicht ein ServerVorgaben, für die Plugins gut, quasie das mann im Plugin schon Größenvorgaben berücksichtiegen kann
    Und eine gesicherte Mindest Größe z.b. 512x512x512 (sollte doch jeder server schaffen)
    Dann kann das Plugin auf ein Minimum abgestimmt werden und sich ggf. ausbreiten

    Das kommt darauf an... wenn es wirklich nur eine leere Zwischenwelt gibt (also ohne Landschaft), in welcher der Betreiber oder Admin also alles selber erschaffen müsste, bräuchten wir vmtl. nicht unbedingt eine Größenbeschränkung... denn einerseits hat der Betreiber es dann ja selber in der Hand, wieviel er dort baut (oder es zulässt, was da gebaut wird), andererseits ist das auch von der Datenmenge meist eh nicht so viel. Oder anders gesagt: Bei Gebäuden ist es quasi eh egal, ob sie nun in der Hauptwelt oder Zwischenwelt liegen. Ungünstig ist nur das Terrain bzw. die Landschaft, da dies ja in dem Fall doppelt vorhanden wäre (was aber wegfällt, wenn die Zwischenwelt kein Terrain generiert).


    :wacko: Wie kompliziert wehre es LOD (Umgebungshintergrund) umgebung mit in die Zwischenwelt zu nehmen, die wehre ja schon aus der Normalen Map da?

    Naja, das Problem ist, dass das LOD ja die Hauptwelt repräsentiert, d.h. alle Änderungen in der Hauptwelt werden darin also sichtbar sein... andererseits aber eignen sich die LOD-Chunks aber auch nicht für den Nahbereich, d.h. hier bräuchten wir in jedem Fall also weiterhin normale Chunks :/

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!