Um euch mal ein wenig die technischen Details zu vermitteln, ohne gemein zu sein, in vollen Respekt an das unglaubliche Werk das hier bereits vollbracht wurde:
Was die Performance bei Basen runterdrückt sind erstmals:
- Waffenwand (weil Waffen Attachments haben + Nicht Vanilla Waffen haben i.d.r zu viele Polygone + Keine LOD Stufen + mehrere Attachments)
- Rucksackregale (Weil viel Storage + Attachments wie Waffen, Funkgerät...)
Beides funktioniert so, dass wenn der Der Spieler eine Gewisse Distanz zum Mittelpunkt des Storages hat, der gesamte Inhalt samt Attachments, Zustand und Co vom Server an den Client übertragen wird. Das ist ein großes Datenpaket => Lag
Also Der Mittelpunkt zum Regal, nicht zu den einzelnen Rucksäcken.
Für die Techis: Quasi ein serialized String, sowas wie eine JSON (maximalst ineffektiv hat BI das realisiert)
Mit allen Daten: Attachments, Sub Attachments + Cargo + Alle Items im Cargo samt Zustand )
Beispiel für eine JSON:
Spoiler anzeigen
[
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{
"batter":
[
{ "id": "1001", "type": "Regular" },
{ "id": "1002", "type": "Chocolate" },
{ "id": "1003", "type": "Blueberry" },
{ "id": "1004", "type": "Devil's Food" }
]
},
"topping":
[
{ "id": "5001", "type": "None" },
{ "id": "5002", "type": "Glazed" },
{ "id": "5005", "type": "Sugar" },
{ "id": "5007", "type": "Powdered Sugar" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5003", "type": "Chocolate" },
{ "id": "5004", "type": "Maple" }
]
},
{
"id": "0002",
"type": "donut",
"name": "Raised",
"ppu": 0.55,
"batters":
{
"batter":
[
{ "id": "1001", "type": "Regular" }
]
},
"topping":
[
{ "id": "5001", "type": "None" },
{ "id": "5002", "type": "Glazed" },
{ "id": "5005", "type": "Sugar" },
{ "id": "5003", "type": "Chocolate" },
{ "id": "5004", "type": "Maple" }
]
},
{
"id": "0003",
"type": "donut",
"name": "Old Fashioned",
"ppu": 0.55,
"batters":
{
"batter":
[
{ "id": "1001", "type": "Regular" },
{ "id": "1002", "type": "Chocolate" }
]
},
"topping":
[
{ "id": "5001", "type": "None" },
{ "id": "5002", "type": "Glazed" },
{ "id": "5003", "type": "Chocolate" },
{ "id": "5004", "type": "Maple" }
]
}
]
Alles anzeigen
Sowas wie Json ist ineffektiv, da jeder Char ein Byte braucht. Das Objekt "Chocolate" hätte 9 Bytes (9 Buchstaben) man könnte jedoch mit nur 4 Bytes 4294967295 unikate Objekte darstellen (Mehr als DayZ jemals pro Wipe durch die Welt jagen könnte)
Also müssen diese Datenpakete nicht so groß sein. Wenn BI das optimiert, kann man das auf gerade mal 25% reduzieren.
(Ja, wenn....)
Dann muss im Anschluss vieles von der Platte geladen werden, z.B: die 3d Models. Wenn dann im Rucksackregal hunderte verschiedene Items liegen => Zusätzlicher Ladestau auf der Platte, selbst bei effektiver SSD oder M2, und das selbst, wenn der Spieler weit weg vom Item steht und den inhalt gar nicht mit [TAB] erreichen kann.
Hinzu kommt, dass viele Basen den Loot vertikal Stapeln und die Distanz zu Items nur Zweidimensional berechnet wird.
Somit sorgen vertikal gestapelte Items unnötigen Lag, da der Spieler gleichzeitig mehrere Item-Datenpakete bekommen wird, wenn er die Distanz erreicht.
Insgesamt verspürt der Spieler das als Lag.
Spielerlags sind bei uns seltener, also Lags, die Spieler verursachen. Doch auch hier gilt: Je weniger Inventoryslots der Spieler in den Kleidern hat, umso besser. Somit sind Jacken mit 56 Slots, wie die Stalker Items haben, nicht optimal. Ebenso Riesengroße Rucksäcke.
Attachments bei den Spielern machen hingegen nicht viel aus, da kann man nicht viel Performance reisen. Somit ist der Gürtel mit Wasser voll okay, der 120 Slot Rucksack aber nicht.
Die Aktuellen Performanceeinschnitte zwischen Clients basieren auf zu vielen Datensätzen, die vom Server (Der Schnell und gut läuft) an die Clients gesendet werden und diese nicht immer Rechtzeitig verarbeitet werden können.
Ich weiß, ist leicht Offtopic, aber es juckt eigentlich euch alle und würdet verstehen, warum ich mit manchen Dingen nicht sehr einverstanden bin, obwohl ich ansonsten Entscheidungen, was für Mods drauf kommen, vollkommen in den kompetenten Händen des Teams lege. Macht es die Performance kaputt, bin ich dann dagegen. (Nur dann)
Ich habe nämlich noch große, einzigartige, Pläne und brauche einen Performancebuffer dafür, sonst geht mir die Weitsicht verloren und ich sehe keine Chance dass dann ultra neue, einzigartige, Sachen kommen können, die weiterhin den Rahmen des möglichen Sprengen =)