Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

11

24.04.2015, 06:45

wenn sich aber an Implementierung des Skills oder Interaktionen was ändert, sollte das keine Probleme machen.
Wieso das? Ich denke, dass es einen großen Unterschied macht, ob ein Skill "Reduce all damage taken above 10 to 10" oder "Reduce all damage taken by 10" oder "Reduce all damage taken by 10 to a minimum of 5" lautet. Um solche Änderungen auch in Replays zu korrekten Ergebnissen zu bringen, kann man den Skill nicht einfach ändern. Man muss einen neuen hinzufügen. Bei vielen kleinen Änderungen, stelle ich mir das am Ende als riesigen chaotischen Haufen Code vor. Schlimmer vielleicht sogar, wenn es Bugs gibt, die dazu führen, dass Skills sich gegenseitig beeinflussen und zu schlimmen Ergebnissen führen. Wenn die im Replay korrekt (also ebenfalls falsch - wie "damals") laufen sollen, muss der Bug irgendwie beibehalten werden. Sowas kann sehr schnell sehr hässlich werden mit haufenweise Code-Duplikation.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »BlueCobold« (24.04.2015, 06:54)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

24.04.2015, 07:54

Ich persönlich bin würde "states" immer "logic+input" bevorzugen (spielt gerade auch bei Netzwerkgeschichten eine wichtige Rolle).
Natürlich hast du recht BlueCobold, dass wenn man Zustände speichert der Spielinhalt inkonsistent werden kann, aber die alternative ist, dass man statt eines "buggy" replays bzw. Netzwerkspiels garkein replay bzw. Out of Sync hat und ich als Spieler bevorzuge buggy deutlich dem unspielbar/unbrauchbar :!:
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

13

24.04.2015, 08:29

Da stimme ich Dir zu. Das ist allerdings ein ganz anderes Thema als das, worauf ich mit meiner Aussage hinaus wollte. Ein Themenwechsel ist sicher nicht schlimm, aber mich wundert diese Antwort ein wenig, weil sie zu nichts so richtig passt. Ich wollte eher darauf hinaus, dass es mir egal wäre, ob ein altes Replay noch läuft oder nicht, da mir die Kosten für so eine Rückwärtskompatibilität viel zu hoch sind - oder man braucht eine vernünftige Mechanik, um Änderungen an Code (im Gegensatz zu reinen Stats-Änderungen) ebenfalls in das Replay integrieren zu können - da sehe ich aber sehr große Probleme, solange man nicht alle Skills/Interaktionen scripten und in das Replay einbetten will.
Ich persönlich bin übrigens auch eher der Status-Fan, eben weil Out-Of-Sync sehr schnell passieren kann und das ist dann der absolute Worst-Case.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

14

24.04.2015, 09:44

Ich wollte eher darauf hinaus, dass es mir egal wäre, ob ein altes Replay noch läuft oder nicht, da mir die Kosten für so eine Rückwärtskompatibilität viel zu hoch sind

Das ist wahrscheinlich der Grund, warum es viele das Problem anscheinend nicht wirklich gelöst haben. Allerdings befinden wir uns im Moment in einem ziemlichen Umschwung was die Professionalität vom Spielen angeht. Wenn es um Preise >1m geht, dann kann man als Entwickler des Spieles nicht mehr wirklich auf die Rückwärtskompatibilität pfeifen. Da möchte man sicher stellen, dass man das Spiele noch lange weiter Replayen kann. Adobe kann ja auch nicht einfach sagen, dass ab der nächsten Version keine Projekte mehr von der letzten geöffnet werden können. Auch Microsoft kann das mit der Office Suite auch nicht machen. Da gibt es dann halt einen Kompatibilitätsmodus, etc., aber die Probleme sind ähnlich.

Ich würde da als Entwickler wohl einen etwas anderen Weg gehen und für jede öffentliche Version des Spieles einen Player anbieten, der aber sonst nicht bespielbar ist, aber die Replays mit allen Bugs und Daten immer noch enthält. Schlussendlich ist das dann nur noch ein Speicheraufwand der jeweiligen Versionen, aber ich schätze mal massiv viel einfacher als probieren da alle folgenden Versionen kompatibel machen zu wollen.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

15

24.04.2015, 10:33

Ich würde da als Entwickler wohl einen etwas anderen Weg gehen und für jede öffentliche Version des Spieles einen Player anbieten, der aber sonst nicht bespielbar ist, aber die Replays mit allen Bugs und Daten immer noch enthält. Schlussendlich ist das dann nur noch ein Speicheraufwand der jeweiligen Versionen, aber ich schätze mal massiv viel einfacher als probieren da alle folgenden Versionen kompatibel machen zu wollen.

Da setzt du aber voraus das die alten Player ohne Wartung auskommen, was ich als eher unwahrscheinlich ansehe. Wenn es z.B. eine Sicherheitslücke beim Replay laden gibt, musst du alle Versionen durchgehen, fixen, neu bauen, neu verpacken, womöglich neu testen etc. Das geht nur gut wenn der ganze Prozess automatisiert ist und sich über die Zeit nicht verändert hat.

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

16

24.04.2015, 16:08

Zitat

Ich würde da als Entwickler wohl einen etwas anderen Weg gehen und für jede öffentliche Version des Spieles einen Player anbieten, der aber sonst nicht bespielbar ist, aber die Replays mit allen Bugs und Daten immer noch enthält. Schlussendlich ist das dann nur noch ein Speicheraufwand der jeweiligen Versionen, aber ich schätze mal massiv viel einfacher als probieren da alle folgenden Versionen kompatibel machen zu wollen.


Exakt so läuft es ja wie gesagt auch bei den meisten Spielen, bei denen ich so eine Replay Funktion gesehen habe.

Problematisch ist allerdings folgendes, sieht man auch im AoE2 Postmortem. Stichwort Hacking Schutz.

Wenn der Client alles sieht, aber es künstlich verdeckt, lässt sich so von jeder Seite aus ein Replay erstellen. Wenn aber der Ansatz wie bei DotA2 und LoL ist, wo der Client nur das sieht, was er laut Spielregeln sehen darf, dann ist das schon schwieriger. Ich bräuchte quasi "beide Seiten" um ein vollständiges Replay zu erstellen, d.h. das Replay müsste vom Server erstellt und verteilt werden(Valve bietet an, das Replay nach dem Match herunterzuladen. Replays sind also nicht grundsätzlich auf jedem Client vorhanden).
WIP Website: kevinheese.de

17

26.04.2015, 03:49

wenn sich aber an Implementierung des Skills oder Interaktionen was ändert, sollte das keine Probleme machen.
Wieso das? Ich denke, dass es einen großen Unterschied macht, ob ein Skill "Reduce all damage taken above 10 to 10" oder "Reduce all damage taken by 10" oder "Reduce all damage taken by 10 to a minimum of 5" lautet. Um solche Änderungen auch in Replays zu korrekten Ergebnissen zu bringen, kann man den Skill nicht einfach ändern. Man muss einen neuen hinzufügen. Bei vielen kleinen Änderungen, stelle ich mir das am Ende als riesigen chaotischen Haufen Code vor. Schlimmer vielleicht sogar, wenn es Bugs gibt, die dazu führen, dass Skills sich gegenseitig beeinflussen und zu schlimmen Ergebnissen führen. Wenn die im Replay korrekt (also ebenfalls falsch - wie "damals") laufen sollen, muss der Bug irgendwie beibehalten werden. Sowas kann sehr schnell sehr hässlich werden mit haufenweise Code-Duplikation.
Das Replay enthält wirklich den State, also sind nur die Effekte der Skillmechanik wie HP/Mana Werte, Damage Instanzen, erzeugten Buffs oder Projektile/Partikeleffekte sichtbar. Die Skills werden also bei Abspielen vermutlich überhaupt nicht simuliert, so dass Änderungen keinen Einfluss haben.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Zera« (26.04.2015, 03:55)


Werbeanzeige