Du bist nicht angemeldet.

Werbeanzeige

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 521

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

1

19.04.2015, 22:32

RTS game recording

Schaue gerade recht viele AoE2 Spiele. Habe mir jetzt mal ein paar Gedanken gemacht wie das wohl aufgezeichnet wird.

Eine interessanten Thread gefunden:
http://stackoverflow.com/questions/30643…-work-in-a-game

Ein paar Fragen hätte ich da aber noch, falls sich da jemand genauer auskennt:

1. Weiss jemand wie das effektiv bei AoE2 läuft? Gibts da einen Artikel oder so?

2. Grundsätzlich ist klar, dass man da irgendwie User Inputs aufzeichnet und diese dann abspielt. Mit dem PRNG seeds kommt da wohl schon etwas recht gut abspielbares raus. Dass da Artefakte genau gleich auftreten kommt wohl auf die Art des Artefakts an (falls es etwas HW spezifisches ist könnte ich mir schon vorstellen, dass der dann nicht bei allen kommt). Jedoch frage ich mich da, wie das bei aufgezeichneten Spielen ist, welche dann auf einer neueren Version laufen. Da kann ja die noch so kleine Änderung ein komplett anderes Ergebnis ergeben. Man kann da also nicht einfach User Inputs abspielen, sondern muss an sich auch die AI Inputs abspielen (anstatt nur die Logik laufen zu lassen). Zusätzlich müsste wohl auch noch der Versionsstand und die jeweiligen Daten (Angrifsstärke, HP, etc.) für jede Version gespeichert werden. Und, falls doch die Logik abgespielt wird, die gleiche Logik garantiert werden. Weiss da jemand mehr? Stelle ich mir das richtig vor?

Prinzipiell hat man ja die gleichen Probleme, wie bei aller Software, die Dateien hat, die über verschiedene Versionen gehen, aber ich stelle mir das bei Spielen besonders komplex vor, weil das ja üblicherweise viel weniger standardisiert ist als bei 3D Programmen z.B.

Ich stelle mir da gerade Regression Testing lustig vor. Ok, spielen wir mal 100 aufgezeichnete Spiele ab und schauen ob da immer noch die gleichen Ergebnise heraus kommen. :P

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »drakon« (19.04.2015, 22:40)


KeksX

Community-Fossil

Beiträge: 2 141

Beruf: Game Designer

  • Private Nachricht senden

2

20.04.2015, 00:54

Zum Thema Replay nicht, aber zu AoE2's Netzwerkarchitektur gibt es hier ein Postmortem auf gamasutra:
http://www.gamasutra.com/view/feature/3094/


Zum 2. Punkt:

Die meisten Spiele lassen Replays nur in der entsprechenden Version zu. Gibt es bei SC2 einen Patch der damit irgendwas zu tun hat, wird vor jedem Replay-Öffnen auch die entsprechende Version geöffnet. Littlewargame(der Dev war hier mal im Forum) macht das zum Beispeil auch so.
Schade dass jb_ nicht mehr aktiv ist, sein RTS kann das ja alles schon :) -> Littlewargame.com - ein HTML5 RTS mit Multiplayer
WIP Website: kevinheese.de

Thoran

Alter Hase

Beiträge: 515

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

3

20.04.2015, 09:39

AFAIK war es damals bei C&C Generals tatsächlich so, das nach bestimmten Patches, die Replays von Multiplayerpartieen nicht mehr abgespielt werden konnten.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

BlueCobold

Community-Fossil

Beiträge: 10 872

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

20.04.2015, 09:59

War auch bei SC2 so. Ist vermutlich auch noch immer so.
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 521

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

20.04.2015, 10:52

Oh, tatsächlich?! Hätte ich jetzt nicht gedacht, dass die da so einen Schnitt machen. War das bei noch so kleinen Patches oder eher nur bei grösseren so? Stelle mir gerade relativ schwer vor noch so eine kleine Änderung zu machen ohne das ganze Spiel zu beeinflussen. Vor allem betreffen Patches meist in irgendeiner Form Balancing/Bugfixes, was dann ja gleich zu den Problemen führt. Scheint also ein ziemlich schweres/aufwändiges Problem zu sein.

@KeksX:
Danke KeksX für den Link. Bestimmt auch interessant.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

6

20.04.2015, 11:10

Für das SC2 Replay Protokoll gibts von Blizzard sogar einen Open Source Parser: https://github.com/Blizzard/s2protocol

Man sieht schon das es sehr viele Protokollversionen gibt, und dort immer nur Aktionen drin stehen, aber kein Zustand.

7

22.04.2015, 11:58

Dota2 wäre ein Beispiel, das tatsächlich den Gamestate protokolliert.

Das Replay-Format ist quasi ein Dump der vom Server gesendeten Updates während dem Spiel.
Für jeden Tick der Simulation gibt es dann u.a. Messages mit den Änderungen (neue Objekte/geänderte Attribute/gelöscht), seltener Snapshots vom gesamten State. Basis für das Format ist Protobuf, mit zusätzlicher Kompression.

Es gibt mittlerweile einiges an Replay-Parsern z.B. in Java.

drakon

Supermoderator

  • »drakon« ist der Autor dieses Themas

Beiträge: 6 521

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

22.04.2015, 23:35

Interessant. Das müsste dan ja wohl grösstenteils unabhängig von der Version funktionieren. Oder zumindest spielt es keine Rolle für den Verlauf. (Beispiel: Steht bei einer Einheit 15 Attack, aber sie fügt nach wie vor nur jeweils 10 aus).

Wie ist das dort mit alten Records bei neuen Versionen? Gehen die einfach nicht oder sind solche Situationen zu beobachten?

//
Ich habe glaube ich zu viele Emails geschrieben. Ich hätte jetzt am Ende des Posts fast: "Gruss, Christian" geschrieben. xD

BlueCobold

Community-Fossil

Beiträge: 10 872

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

23.04.2015, 06:53

Stelle ich mir sehr lästig vor die verschiedenen Versionen funktional zu halten. Da muss für jede Einheit jede Eingenschaft und jeder Skill mitgeschleppt werden im Replay. Bei Änderung von Skill-Implementierungen muss man den alte Code drin lassen und einen neun Skill anlegen, der dann anders funktioniert, statt eine bestehende Funktionalität zu ändern. Das wird doch ein riesiges Kuddelmuddel. Ginge vielleicht, wenn die speziellen Skill-Codes als Script mit in den Replays lägen, aber schön is was anderes.
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]

10

23.04.2015, 23:36

Ich vermute, dass Valve das Replay-Format so gewählt hat, um gerade alte Replays weiter zu unterstützen. Dota bekommt halbwegs regelmäßig Balance-Patches, so ca. alle 4 Monate ein größeres Update. Gleichzeitig fallen in der Pro-Szene fallen dann regelmäßig viele Replays an, die länger archiviert werden sollte.

Das funktioniert auch relativ gut, je älter die Version dann ist, desto öfter gibt es natürlich trotzdem Fehler. Es ist halt doch nicht alles im Replay drin, typisch war z.b. das Problem, dass Einheiten im Replay vertauschte Namen hatten, weil sich die Indizierung geändert hatte.

Es gab irgendwann auch mal eine Umstellung im Replaysystem (das ware eben die Einführung der Snapshots für schnelleres Springen im Replay), da gingen dann tatsächlich alle älteren Dateien nicht mehr.

Zu Skills: Das Replay enthält direkt die Projektile und Effekte die beim Cast erzeugt werden. Die müssen natürlich behalten werden, wenn sich aber an Implementierung des Skills oder Interaktionen was ändert, sollte das keine Probleme machen.

Werbeanzeige