Dedicated Server

  • Hallo alle zusammen ,
    Ich bin neu in der spiele Entwicklung und hab ein paar fragen ,
    wenn ich ein spiel mache mit Dedicated Servern mit dem advanced session plugin z.b. das Spieler/freunde beitreten können wenn ich online bin ,
    wie ist es denn mit der Map size ? auf was muss ich achten ?


    wenn ich z.b. ein spiel erstelle mit einer kleinen Map wo Spieler eine Basis erbauen können und ein anderer Spieler/Team kann beitreten und meine Basis angreifen und looten ,
    kann der Angreifer dann nur in nem bestimmten Abstand zum host Spawnen ? oder ist das egal ?


    oder wenn ich eine grössere Map erstelle ( Open World ) in dem Spieler aussuchen können wo sie ihre Basis aufbauen wollen , und ein anderer Spieler / Team joint meinem spiel und will mich angreifen würde das gehen ?
    vielleicht kann man dann den spiel bereich eingrenzen wenn Spieler joinen ( Unsichtbare Mauer )

  • Du hast einen Server in deinem Fall der Dedicated Server und Clints die auf diesen Server zugreifen. Die Map läuft auf dem Server und die Clints greifen auf diesen Server zu.
    Was du tun musst, ist die Spieler in regelmäßigen abständen (alle paar Millisekunden) synonisieren, somit weiß Clint A wo sich der Spieler von Clint B gerade befindet.


    Gleich mal vor ab: Hinter Minecraft als Openworld Spiel verbergen sich sehr ausgeklügelte Voxel algorithmen durch die das Spiel flüssig läuft.
    GTA5 hat ne riesen Karte ist aber nicht openworld hier werden immer nur die Kartenteile geladen die in einem Moment von einem Player gesehen wird.
    Befinden sich zwei Player an unterschiedlichen Positionen einer riesigen Karte, so werden nur die sichtbaren Umgebungen von jedem Player geladen. Kommt ein Spieler in die nähe eines neuen bereichs, so wird die Karte für diesen Bereich vorgeladen verlässt der Spieler den Bereich wieder so wird die Karte wieder aus dem Speicher entfernt.


    Kurz gesagt: Es wird immer nur geladen was sichtbar ist, oder vielleicht sichtbar sein wird weil sich der Spieler in der Nähe aufhält.


    Dieser Prozess nennt sich Kamera Occlusion culling für den man sog. Culling Zonen festlegen kann.


    Das Culling kann man auch in zwei Bereiche unterteilen:


    1.Das Frustum Culling bei dem alle Objekte die innerhalb des Frustum (Sichtbereich) des players liegen. Hierbei wird alles gezeichnet was in Sichtbereich des Players ist.
    2.Das Camera Occlusion Culling: Hierbei wird alles NICHT gezeichnet was sich zwar im Sichtbereichs des Players befindet aber nicht von ihm gesehen werden kann weil zb eine Mauer die Sicht zum Objekt Versperrt.


    Befindest du dich zb. in einem Raum ohne Fenster und es befinden sich direkt hinter der Wand ein Baum so liegt dieser zwar im Frustum des Players aber er kann nicht vom Player gesehen werden. Das Camera Occlusion Culling würde den Baum dann nicht zeichnen.


    Wenn du über Youtube nach Tutorials suchst, da such auch mal nach visibility.

  • Danke Sleepy für die Antwort dann schau ich mir das thema kamera Occlusion Culling mal genauer an !
    ich hab noch eine Frage zu nem anderen Thema , ich hab 2-3 Pakete im unreal Store gekauft und benutze wahrscheinlich nicht alle assets ,
    wenn ich später mal fertig bin und das spiel ausgeben / umwandeln will werden dann alle assets die in dem paket sind ausgegeben oder nur die die ich benutzt habe ? also die die auf der map sind ?

  • Ich bin mir nicht sicher ob Objekte die nicht genutzt werden mit importiert werden

    Das ganze Zeug (Meshes, Texturen usw.) was im Projekt ist landet auch im Spiel. Egal ob genutzt oder nicht. Die Level muss man ja explizit angeben.


    Ist aber auch bei kommerziellen AAA Spielen so dass dort öfter Zeug drin ist was man im Spiel nie sehen wird.

  • Ist aber auch bei kommerziellen AAA Spielen so dass dort öfter Zeug drin ist was man im Spiel nie sehen wird.

    ja aber es ist nicht sichtbar = also nicht im ram es wird erst dann rein geladen wenn der spieler wie gesagt es sieht und alles ist auch nicht am server, meis tnur die information wo welches objekt ist da ein server im normal fall sowieso nichts anzeigen kann, positionen von objekten mit den jeweiligen drehungen etc... das spart ram und rechen leistung