Suche sehr gutes Tutorial (möglichst in Deutsch oder sehr einfachem Englisch) über Weltenbau

  • Suche sehr gutes Tutorial (möglichst in Deutsch oder sehr einfachem Englisch) über Weltenbau

    Hi,

    ich suche ein sehr gutes Tutorial, möglichst in Deutsch oder sehr einfachem Englisch, über die Gestaltung der Welt (Landschaft).

    Davon gibt es mehr als genügend im Internet, jedoch sind diese recht verwirrend und auch zu speziell in einigen Dingen.

    Noch dazu ist es für mich sehr wichtig, auf was man für Dinge achten muss.
    Vor allem Höhen, Tiefen, Steile Gelände, Kollisionen mit Objekten so wie deren ganze Actoren (mit Physic) und ganz wichtig die Geschichte mit dem Lich und Schatten.

    Vor allem das Licht, es führt in manchen Bereichen in meinem Level zu seltsamen Erscheinungsformen.

    Gekauft habe ich aus dem Marktplatz das "Landscape Auto Material".
    Das Tutorial dazu ist ziemlich verwirrend, zwar sieht das alles schön und gut aus, nur ist es extrem fummelig das anzupassen.
    Hat davon jemand Erfahrung und kann mir diesbezüglich weiterhelfen?


    Folgende Dinge habe ich noch zusätzlich vom Marktplatz gekauft:
    - Ultimate River Tool
    - Procedural Nature Pack Vol.1
    - Horror Forest
    - Automatic Coral Generator (für Unterwasserwelten)
    - Dynamic Tree & Plant Generator
    - Ultra Dynamic Sky
    - Open World Demo Collection (ist ja kostenlos)
    Und jede menge Steine und sonstiges Zeugs.


    Was wäre davon das beste, was brauche ich und wie kann ich es miteinander kombinieren?


    Burgen, Gebäude und sonstiges ist soweit in der Basis vorhanden und müsste ich entsprechend in die Map einfügen.
    Rohstoffe und anderes ist auch schon vorhanden, dass würde ich dann am Schluss machen.



    Wie geht man grob gesagt am besten vor?
    Wie groß kann eine Karte maximal sein und wie groß ist sinnvoll?
    Wie macht man eigentlich Höhleneingänge, also Löcher in die Spielwelt so das oben ein Berg ist und unten entsprechend eine Höhle oder anderes.
    Vor allem bezüglich der Größe, wie mache ich das die Performance nicht komplett einbricht (LODs, wie begrenzen und ab wann ausblenden?)
    Allgemeine Performance Sachen, wie schon geschrieben wegen den LODs, Charaktären (alles Multiplayer) Objekte und eben was alles dazu gehört.


    Soweit ich mir gedacht habe, fange ich damit an erst einmal das Gelände in entsprechende Höhen, Tiefen und sonstwie zu gestalten (Terrainspezifisch), danach das Texturieren und das bepflanzen mit diversen Objekten (Bäume, Steine, Flüsse usw.)


    Ziel: Eine Teil-Openworld (das bedeutet die Welt ist aufgeteilt in mehrere Bereiche, gehört aber zusammen).
    Der Grund der Aufteilung ist die limitierte Anzahl der Spieler (alles ohne Instanzen).


    Zuerst ist eine Karte geplant in der sich 2 Burgen befinden + Deko und allem (sozusagen eine Testkarte für alle Funktionen).
    Auf der Testkarte sollen die Spieler erstmal bei der Fehlerfindung helfen und um auch zu sehen wie die Server funktionieren etc.
    Damit das nicht ganz so langweilig ist, soll dort ein vorläufiger Spielmodus laufen (Burgbelagerung).

    So ähnlich wie bei Star Citizen mit dem Arena Commander, also nur als Testbereich für weitere Funktionen und mehr.



    Vielen Dank für alle Infos die ihr mir geben könnt!
  • Soweit mir bekannt ist, gibt es keine Begrenzungen beim Landscape. getestet hab ich bis 70x70 km. Probleme gab es keine. Alles was mir bekannt ist, ist beim Multiplayer. Wenn du eine große Welt hast, musst du testen, ob dein Server die Welt auch schafft, wenn er die gesamte Karte laden muss und Veränderungen darauf trackt.

    Die UE hat keine MMO Servereinstellungen. Die musst du von Dritten holen oder selbst schreiben. Will heisen, wenn du Kartenteile auf mehrere Rechner aufteilst, dann müssen die Spieler auf den neuen Server geroutet werden, wenn sie in den neuen Kartenabschnitt geraten. Das Probelm siehst du sehr gut bei Ark. Die Kartengröße unter Grafikgesichtspunkten ist irrelevant, aber die Server schaffen es nicht, wenn sie die gesamte Karten laden müssen.

    Insgesamt gibt es keine Standardregel, weil das vom eingesetzten Server abhängt.


    Zweites Problem soll sein (ich habs nicht festgestellt), dass man die Karten jeweils mit einem Nullpunkt ausstatten kann oder aber von einem gemeinsamen Nullpunkt der gesamten Karte aus berechnet. Es gibt Berichte wonach es Probleme mit der Physik und Kollision des Landscape geben soll, je weiter man sich vom Nullpunkt der Karte entfernt. Wie akutell das ist, kann ich dir nicht sagen.

    Ergebnis: im Singleplayer ist die Kartengröße uninteressant und unendlich. Grafisch spielt die Kartengröße keine Rolle, da gestreamt wird. Im Multiplayer solltest du dir Gedanken machen und die Kartengröße beschrenken, wenn du es auf nur einem Server ohen MMO-Netzwercode betreiben willst. Hast du einen MMO-Netzwerkcode, dann ist die Kartengröße nur durch die Anzahl der vorhandenen Server beschränkt, also praktisch und technisch ebenfenall unendlich, nur eben verflucht teuer.
  • Da alles noch am Anfang ist, ist die Größe aktuell mehr oder weniger egal.
    Denn im Laufe der Zeit, wenn das Projekt wächst kommt dann mehr dazu.

    Was genau ist ein MMO-Netzwerkcode?

    Geplant sind 1000 Spieler pro Server und davon 10 Server = Limit.

    Brauche ich bei so einer geringen Menge solch einen Code und was kostet das und wo gibts das?
  • 1000 Spieler pro Server? Da musste definitiv am Netzwerkcode basteln, dafür ist die UE4 nicht ausgelegt, zumindest nicht bei deiner Art Spiel....

    MMO-Netzwerkcode ist halt das, was du bei jedem MMORPG der letzten Jahre hast. Die Spielwelt wird aufgeteilt und die Teile werden auf Servern gehostet. Im Hintergrund sorgt der Netzwerkcode immer dafür, dass du wenn du von einem Teil zum nächsten gehst, auf den jeweiligen Server umgeleitet wirst. Das ist jetzt ganz stark vereinfacht.

    Wird auch deutlich wenn du dir mal größere Spiele anschaust. Heut wird MMO verwendet, sobald es Multiplayer mit 30+ Spielern ist, was aber eigentlich falsch ist. Denn ist die Spieleranzahl pro Server beschränkt, dann ist es kein MMO. Das "Massiv" bedeutet eigentlich, dass es keine Grenze an Spielern in der Spielwelt gibt, aber das hat sich über die Jahre irgendwie alles verwässert. 64 Spieler auf einer Map sind heut schon MMO.

    Wenn du es schaffst, das auf einem Server 1000 Spieler ohne Probleme spielen könne, dann würd ich sagen, bist du ein reicher Mann ;).

    Schau dich mal um, wieviele Spiele kennst du, die auf einem Server 1000 Spieler beherbergen und jetzt sag nicht das böse Wort ;)
  • Ich habe mich da falsch ausgedrückt.

    Also 1000 Spieler pro Server und die sind entsprechend aufgeteilt auf bis zu maximal 100 Spieler pro Karte (so wie man es etwa bei PUBG kann).
    Wobei die genaue Anzahl noch variiert.

    Vermutlich wird es auch locker für den Anfang ausreichen, wenn ca. 20-50 Spieler auf eine Karte zu packen. Der Server besteht dann aus mehreren Karten (geschlossen) auf die sich die Spieler verteilen.

    Als Server verstehe ich natürlich eine Farm aus verschiedenen Servern, nur als Oberbegriff so genannt.
    Das Spiel was ich mache soll auch kein MMO-RPG werden.

    Jedoch soll man die Möglichkeit haben von einer Karte auf die anderen zu gehen, damit es das Gefühl einer Open-World hat. Nur eben mit dem Vorteil der besseren Performance.
    Mir ist klar das es ein Ding der Unmöglichkeit sein wird, 1000 Spieler gleichzeitig auf einer Karte zu haben. Vermutlich würde das schon gehen, nur wäre das Spiel dann extrem Minimalistisch, damit entsprechend wenige Daten hin und her transferiert werden muss.


    Wie genau macht man das Annubis?
    Mich interessiert es nicht das es nicht machbar ist, sondern ich will wissen wie man das macht :)


    Mein Spiel soll auch für maximal 10.000 Spieler limitiert sein und die 10k aufgeteilt auf 10 Server, die wiederum auf Map-unterServer aufgeteilt sind.
    So zumindest vom logischen her.


    Mit dem U4 18.0 Update, sind ja neue Licht-Eigenschaften dazu gekommen, hat sich da schon jemand auseinander gesetzt?



    Bitte Infos zu dem Weltenbau, wie oben im Eingangspost.
  • Das funktioniert mit der UE4 garnicht. Wenn du wissen willst, wie das geht, dann musst du einen Spezialisten finden, der sich mit der Programmierung von Netzwerkcode auskennt. Ansonsten kannst du natürlich suchen, ob jemand Lizensen für so etwas anbietet. Mir fällt jetzt hier im Forum keiner ein, der dir da so auf anhieb weiter hilft.

    Ich selbst hab es mal probiert einen Spieler mit Ladebildschirm von einem Server auf einen zweiten zu verschieben. Beide Server befanden sich am selben Anschluss im selben Netzwerk. Ich muss gestehen, ich hab es dann aufgegeben.

    Bei bis zu 1000 Spielern wirst du auch mehr als eine Gigabit-Anbindung für die Server benötigen. Wir reden hier immerhin von einer Echtzeitanwendung.

    Der generelle Aufbau des Netzwerks ist allerdings ein Routingserver mit angebundenen Gameservern. Der Routingserver verwaltet die Spieler, die an der Anbindung ankommen und kommuniziert mit den Gameservern im Netzwerk. Kommt also von einem Client ein Befehl, so muss der Routingserver den richtigen Gameserver ermitteln und dann den Befehl dorthin weiterleiten. Jetzt kommt die Rückmeldung, wobei der Routingserver jetzt ermitteln muss, an welche Spieler er die Daten senden muss, die sich an der Anbindung befinden. Aktuell ist mir nichts aus der Dokumentation der UE4 bekannt, was genau diese Aufgabe erledigt.

    Das Problem was du da auftust ist ja letztlich nicht unbedingt softwareseitig sondern auch ein Problem der Hardware. Wir reden hier von unmengen an Daten die in Echtzeit abgeglichen werden müssen. Allein die Position und Orientierung des Spieler (also bei allen 1000) verursacht schon einen erheblichen Traffic. Da reden wir ja auch nicht von einer Sekunde von vielleicht 40ms. Wenn du das jetzt auf 10.000 aufstocken möchtest, kommt dir ne Vorstellung, was da abgeht. Erstell dir mal über ein Batchprogramm 100.000 Dateien mit 10Bytes größe und dann verschieb die mal im Netzwerk einfach zwischen zwei Rechnern. Da bekommt man eine Vorstellung davon, was das Problem ist.

    Mein Rat: bezahl nen Netzwerkprofi, das kann man sich nicht selbst beibringen, außer man kann schon sehr gut programmieren.

    Ansonsten könntest du dich auch mit RakNet für UE4 beschäftigen, allerdings hab ich das letztes Jahr nicht weiter verfolgt. Ob das noch Updates bekommt weis ich nicht. Es setzt aber auch C++ voraus um es als Plugin in die UE4 einzubinden. Ist das einzige OpenSource Projekt was ich kenn, was passable Ergebnisse im Multiplayerbereich erziehlt hat.

    Wenn es bezahlt sein soll dann sabredartstudios.com/ mal anschauen. Glaub die haben sogar ne Trialversion.
  • Ich kenne mich auch überhaupt nicht mit Netzwerktechnik aus und das würde ich so wie so jemand anderen in die Hände legen.
    Nur benötige ich derzeit etwas, dass ich entsprechend vorzeigen kann, um erste Gelder damit einzunehmen und entsprechend Mitarbeiter einstellen zu können.

    Wie schnell muss dafür die Internet Leitung sein, um solche Datenmengen entsprechend transferieren zu können?
    Wenn das alles dann klappt, würde ich auch entsprechend die Server im Firmengebäude haben, anstatt wie sonst üblich in Frankfurt oder sonst wo. Natürlich nur wenn die Internetleitung das auch tragen kann.
    Ich habe ein Angebot von Vodafone Business bekommen, in dem die Leistung wie folgt aussieht:
    500 Mbit/s Download
    50 Mbits/s upload
    Mit fester IP (Standleitung)

    Vermutlich zu langsam für das Vorhaben und die Anzahl?
    Man muss auch realistisch sein das NICHT von Anfang an gleich so viele Spieler das spielen werden. Und je nachdem ist eine Aufstockung natürlich noch möglich.
    Daher gehe ich aktuell davon aus das ca. rund 1000 Spieler für den Anfang da sein werden.



    Zurück aber zu dem aktuellen Bereich der Weltgestaltung, nur Schritt für Schritt kommt man an das Ziel.

    In dem Spiel habe ich noch diverse Rohstoffvorkommen die eine Wachstumsphase haben (Bäume, Erze usw.) was entsprechend auch noch berechnet werden muss. Das kann und wird sich auch noch ändern, soweit wie es performance mäßig funktioniert.

    Was hat das dann noch alles für Auswirkung auf das Licht?
    Aktuell habe ich ein Tag-Nach Zyklus mit unterschiedlichen Mondphasen + Regen und Wettersystem.
    Die Objekte (meist Static Meshes wegen bester Performance) sind meist auf Movable gestellt, eben damit das Licht im Tageszyklus soweit darauf einwirken kann.
    Sollte ich vermehrt auf "Static" anstatt auf Moveable setzten und in wie weit wirkt sich das möglicherweise auf das Netzwerk aus?

    Oder werden solche Dinge eher auf dem Client berechnet und dem Server ist das mehr oder weniger "egal" ?




    Aktuelle Größe meiner Karte:

    Section Size: 63x63 (sind das schon die Km?)
    Section per Component 1x1

    Number of Components: 36x36
    Overall Resolution: 2,269x2,269
    Total Components: 1,296

    Vom Mittelpunkt der Karte aus in jede Richtung sind es ca. 112.000 UE4 Einheiten (gemessen mit Location X)
    Die Laufzeit im sprinten (mit 375 Float als Sprintgeschwindigkeit) beträgt rund 4-5 Minuten. (Fluglinie)

    Das dürfte doch soweit als Spieler ok sein, vor allem da nicht jede Richtung später direkt angesteuert werden kann, sondern mit entsprechenden Bergen, Flüssen usw.


    Oder ist das zu viel?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Todesklinge ()

  • Grafikberechnungen sind dem Server herzlich egal. Der Server sagt nur, wie der Sonnenstand ist, damit alle Tag oder Nacht haben. Kennst ja bestimmt dedizierte Server? Da gibts keine Grafik sondern nur schnöde Eingabefenster. Das typische DOS-Fenster halt. Server laufen ohne Grafik, daher ist die CPU und vor allem der RAM entscheident.

    Grafik stimmst du auf das schwächste System ab, auf dem dein Spiel laufen soll. Der Tip hier ist eigentlich, dass du so oft es geht den EventTick vermeiden solltest. Gerade für ResourcenRespawn ist der Dispatcher die beste Wahl.
  • Bei mir läuft das mit den Rohstoffvorkommen so ab:

    Am Anfang ist der Event Tick, welcher aber zuerst von einem Branch überprüft wird, ob der Baum (in diesem Beispiel), tot ist oder nicht.
    Wenn NICHT tot, dann passiert auch nichts.

    Wenn tot, dann feuert der Event Tick einmal (DoOnce) durch und die Timeline am Ende läuft einmal (danach gestopt) bis das Wachstum abgeschlossen ist. Und dann fängt das ganze wieder von vorne an.

    Was genau kann denn ein Dispatcher im Vergleich zu dem wie ich das bisher mache?




    Noch eine andere Frage zu den LODs für die Vegetation.

    Habe einen Baum (Birke) welche in der Basis Version nur 2 LODs hat.

    LOD 0 = ist klar für die höchste Auflösung
    LOD 1 = Percent Triangles 1%


    Nun habe ich das auf 4 LODs ausgeweitet.

    LOD 0 = 100%
    LOD 1 = 50%
    LOD 2 = 25% (Blätterwerk Schatten ist deaktiviert)
    LOD 3 = 1% (jeglicher Schatten deaktiviert)

    LOD 0 = Triangles : 76k und Vertices: 76k
    LOD 1 = T: 33k und V: 46k
    LOD 2 = T: 16k und V: 28k
    LOD 3 = T: 600 und V: 1400



    Was haben eigentlich die Einstellmöglichkeiten "Silhouette" Lowest - Highest, "Texture" und "Shading" für eine Auswirkung auf die Performance?
    Habe entsprechend 100 Bäume in einer leeren Map aufgestellt und darin etwas herumgespielt, die FPS schwanken nur minimal und ich erkenne irgendwie keinen Unterschied zwischen Lowest und highest.


    Macht das noch Sinn ein 4. LOD einzufügen, in dem dann alles unsichtbar wird und wie weit kann ich das ganze noch weiter optimieren?

    Schließlich kommen ja noch diverse Steine, Büsche, Pflanzen und sonst noch an Deko Zeug in die Welt und da würde ich schon gerne genauer wissen, wie was am besten funktioniert.
  • Du prüfst bei jedem Frame, ob dein Baum noch steht? Bei zehn Bäumen spielt das sicher keine Rolle, aber bei einem Wald? Das ist ja auch nicht die einzige Prüfung, die gemacht wird, sonst wäre ja kein Gameplay vorhanden.

    Der Respawn hängt doch nicht am Tick sondern am Event "Abholzen" oder "Abbauen" Der Dispatcher hängt also am Abbau und feuert dann den Respawn. Es wird also nur etwas berechnet, wenn es auch tatsächlich passiert und nicht jeden Frame über das gesamte Spiel.

    Ziel ist es ja, so wenig wie möglich Abfragen pro Frame zu haben. Ansonsten schmiert dir die CPU irgendwann ab, wenn du plötzlich 100T Abfragen in jedem Frame hast, was bei 60fps gleich mal 6mio Abfragen pro Sekunde sind. Glaub nicht, dass das jeder CPU so sehr gefällt.
  • Gibt es irgendeinen Monitor oder anderes, womit ich sehen kann was viel Leistung kostet oder ähnliches?
    Sozusagen eine Hilfe die aufzeigt, dass irgendwas falsch läuft.

    Abholzen oder anderes sind bei mir keine Events, es ist nur ein Bool Wert.

    Nicht der Charakter macht das Holz, sondern der Baum. Als Charakter macht man nur Schaden und der Baum reagiert darauf.
  • Bei der Logik in der du deinen Baum fällst, kommst du irgendwann zu dem Punkt, dass du soviel Schaden verursacht hast, dass der Baum "verschwindet" und da gehört der Dispatcher logisch hin, denn da muss die Respawnlogik gezündet werden. Natürlich kanns du die Respawnlogik auch da anschließen, was im Wesentlichen von deiner Lösung abhängt, die du für den Respawn geschrieben hast, da aber die meisten den Baum per DestroyActor entfernen, klappt keine Folgelogik, weil der Actor nicht mehr da ist, also wird der Respawn meist ausgelagert.

    Die Auslagerung macht auch in einem Resourcenmanager Sinn, da man dort gleichzeitig noch das Savegame mit behandeln kann. Schließlich soll ja nicht durch ein und ausloggen der Baum wieder da sein. Bei Servern kommt hinter den Respawn natürlich die Meldung an den Server.
  • Deswegen habe ich bei den Rohstoffvorkommen auch gemogelt.
    Im Grunde bleibt alles erhalten und wird nur entsprechend repositioniert. Deswegen muss ich da auch nichts löschen und bei den Erzen habe ich Childs die entsprechend zerstört und neu gespawnt werden.

    Es läuft alles absolut fehlerfrei und auch korrekt, nur wirkt das ganze noch sehr primitiv. Richtige und gute Animationen fehlen leider.

    Hast du ein gutes Tutorial zu den Dispatchern zur Hand damit ich mir da ein genaueres Bild davon machen kann.

    Ich verstehe derzeit nicht wie man den Dispatcher so machen kann, wie ein Event Tick (jeder Baum ist sich selbst), denn wenn man es über die Karte steuern muss, wird das ganze doch genau so wie üblich.



    Baum töten (nicht zerstört und DoOnce) -> spawnt Holz -> wartet bis Wachstumsstart -> Baum wächst -> fertig
  • Lange gesucht nach einem Tut. Viele begehen halt den Fehler und benutzen das EventTick, was für die Funktionsweise des Dispatcher erstemal egal ist, aber dann hab ich eins gefunden: Klick

    Besser und einfacher kann man die Funkion kaum erklären. Auch wenns englisch ist, kannst den Ton ausschalten, da es auch so absolut verständlich ist. Besonders gut ist halt, dass er eben zeitgt, dass Dispatchers am besten beim EventBeginPlay verknüpft werden.
Unreal®, Unreal Engine, the circle-U logo and the Powered by Unreal Engine logo are trademarks or registered trademarks of Epic Games, Inc. in the United States and elsewhere.