GameIndustry.eu /  Reviews / Operencia: The Stolen Sun
Remnants of Naezith

Operencia: The Stolen Sun

Publisher: Zen Studios, Ltd.
Released: 2020
Steam ID: 985950
Genre: Dungeon Crawler
System:  
Hosts entries:

Screens:
Operencia
Bild
Operencia: The Stolen Sun embraces everything you love about classic first-person dungeon-crawlers, enhancing the old-school turn-based RPG experience with modern sensibilities. Guide a team of memorable characters through a world inspired by Central European mythology.

  Operencia: The Stolen Sun Review

Wer sich wundert, warum Einzelspielertitel eine Verbindung ins Internet und damit Firewallfreigaben benötigen, bekommt hier die Antwort.

Das Review selbst ist kurz, aber mit einigen Codebeispielen zwecks Verständnis angereichert, sodass sich jeder ein eigenes Bild von dem Titel machen kann.

Involvierte Dateien und weitere Details


Produktname: Operencia: The Stolen Sun
Datei: operencia-win64-shipping.exe
Version: 4.24.2.0
Firma: Zen Studios Ltd.

Kontaktierte ipv4 Adressen und hostnamen



  1. 94.130.71.66
  2. wt.zenstudios.com # Vollständige Adresse: http://wt.zenstudios.com/1/


Wem fällt hier etwas auf? Richtig! Für ein "s" hinter dem Http scheint das Budget von Epic Games wohl nicht mehr gereicht zu haben. Unsere Daten gehen ohne SSL Verschlüsselung auf Reisen \^.^/

Eula


Eine Eula und damit verbundene Datenschutzerklärung gibt es nur in englischer Sprache auf der Produktseite in Steam. Insbesondere der nichts sagende Punkt 3  .

Alternativ gibt es eine detaillierte Version auf der Webseite von Zen Studios Ltd.  

Was steckt denn nun drin im Spiel?


Livetracking oder wenn man so will eine Kamera, die einen auf Schritt und Tritt verfolgt und jede Spieleraktion und Fortschritt aufzeichnet. Mitsamt einmaligen Identifier, wie einer NutzerID und GeräteID. Weitere Werte sind z.b. Levelids, Itemnamen, Kampfids, Zeitstempel und einige weitere Dinge. Spieler sind komplett gläsern.

Werte sind durch entnommene Trackingdaten ersichtlich. Schwer ist es für Operencia nicht. Selbst Unerfahrene können hier sehen was von Statten geht ;]

Codebeispiele und Kurzbeschreibung


Headerbeispiel
 POST /1/ HTTP/1.1
Host wt.zenstudios.com
URL http://wt.zenstudios.com/1/
Accept */*
Accept-Encoding deflate, gzip
User-Agent X-UnrealEngine-Agent
Content-Type application/json
Content-Length 333
Connection keep-alive
Remote Address wt.zenstudios.com/94.130.71.66:80

und Response

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 02 Apr 2020 00:48:08 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
X-Powered-By: PHP/5.6.30-0+deb8u1

Das Spiel startet - erstmal werden Hard,- Softwaredaten mit eindeutigen Identifier vom Spieler abzockt ;]

So wirklich passen die Werte zwar nicht, aber gut, will mich nicht beklagen.

 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.50.42",
"eventType": "SessionBegin",
"SessionId": "637213746428990000",
"platform": "Windows",
"OSVersion": "Windows 8.",
"CPU": "AMD Ryzen 5 2600X Six-Core Processor (6/12)",
"GPU": "NVIDIA GeForce GTX 1080",
"serial": 3,
"deviceId": "xxxxxxxx"
}

Hauptmenü erreicht - Spielstart - Intro wird gezeigt
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.51.32",
"eventType": "LevelStart",
"GameId": "637213818903920000",
"GameTime": 0,
"LevelId": "prolog_intro",
"LevelTime": 0,
"platform": "Windows",
"serial": 5,
"deviceId": "xxxxxxxx"
}

Eimer mit Wasser im Anfangsgebiet wird gefüllt (Was, kein Achievement?)
 
{
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.53.45",
"eventType": "InventoryIn",
"GameId": "637213818903920000",
"GameTime": 79,
"LevelId": "Level0_Prologue_T",
"LevelTime": 79,
"ItemName": "lv0_filled_bucket",
"Type": 0,
"Amount": 1,
"TotalAmount": 1,
"platform": "Windows",
"serial": 17,
"deviceId": "xxxxxxxx"
}

Kampf gegen die ersten beiden Gegner (Echsen, Drachen was auch immer) mitsamt Gruppenkonstellation
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.54.27",
"eventType": "BattleStart",
"GameId": "637213818903920000",
"GameTime": 110,
"LevelId": "Level0_Prologue_T",
"LevelTime": 110,
"BattleId": "637213748674210000",
"CombatId": "lv_00_combat_group_dragonkin_01",
"PartyJson": [
["Attila", 292, 240, 120, 160, 40],
["Réka", 215, 280, 125, 150, 50],
["empty", 0, 0, 0, 0, 0],
["empty", 0, 0, 0, 0, 0]
],
"platform": "Windows",
"serial": 23,
"deviceId": "xxxxxxxx"
}

Sieg für uns ^^ War ja auch ein einfacher Tutorialkampf gegen nur 2 Viecher...
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.57.22",
"eventType": "BattleEnd",
"GameId": "637213818903920000",
"GameTime": 250,
"LevelId": "Level0_Prologue_T",
"LevelTime": 250,
"BattleId": "637213748674210000",
"Result": 1,
"Duration": 175.19900512695313,
"PartyJson": [
["Attila", 292, 183, 120, 160, 40],
["Réka", 215, 225, 125, 150, 50],
["empty", 0, 0, 0, 0, 0],
["empty", 0, 0, 0, 0, 0]
],
"platform": "Windows",
"serial": 24,
"deviceId": "xxxxxxxx"
}

Zwischensequenz fängt an und Spieler werden auf das erste Puzzle vorbereitet
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.57.36",
"eventType": "FullScreenDialogueEnd",
"GameId": "637213818903920000",
"GameTime": 254,
"LevelId": "Level0_Prologue_T",
"LevelTime": 254,
"DialogueId": "LV0_PRO_MAINPUZZLE_DIA1",
"SkippedAt": 0,
"Duration": 1.8309999704360962,
"platform": "Windows",
"serial": 25,
"deviceId": "xxxxxxxx"
}
{
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.59.43",
"eventType": "Interact",
"GameId": "637213818903920000",
"GameTime": 268,
"LevelId": "Level0_Prologue_T",
"LevelTime": 268,
"ActorName": "BP_MirrorPuzzle7",
"platform": "Windows",
"serial": 30,
"deviceId": "xxxxxxxx"
}

Genug getestet, Spiel wird gespeichert
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.01-23.59.43",
"eventType": "GameSaved",
"GameId": "637213818903920000",
"GameTime": 268,
"LevelId": "Level0_Prologue_T",
"LevelTime": 268,
"SecretsRemaining": 0,
"FirewoodAvailable": 0,
"ExplorationRate": 0.20999999344348907,
"platform": "Windows",
"serial": 33,
"deviceId": "xxxxxxxx"
}

Und natürlich wird nach dem Spielen auch das Werk geschlossen. Auch das wird ganz genau protokolliert :D
 {
"userId": "xxxxxxxx",
"appName": "ForgottenTales",
"appVersion": "1.3.0 (21540s)",
"localTimestamp": "2020.04.02-00.01.12",
"eventType": "SessionEnd",
"SessionId": "637213746428990000",
"Duration": 629.50201416015625,
"platform": "Windows",
"serial": 34,
"deviceId": "xxxxxxxx"
}

Fazit


Der Dienst aktiviert sich natürlich in jeder Spielsitzung und sammelt unermüdlich neben Daten auch noch eine Menge Hintergrundtraffic an.

Im Gegenzug wird allgemein versucht uns als Endverbraucher ein schlechtes Gewissen in Bezug auf Streaming einzureden weil unser Konsum die Server heiß macht ;] Das nur mal als kleiner Seitenhieb auf eine Branche die im Peta und Exabytebereich Daten sammelt. Täglich.

Immerhin gibt es bei der Steamversion von Operencia: The Stolen Sun nicht noch die Schnüffelei des Epic Game Launcher als Bonus mit dazu

Leider kommen Entwickler immer noch mit so etwas davon...

--

Wer in Ruhe zocken will ohne sich um derlei Kram Gedanken zu machen kann wahlweise die Ipv4 Adresse inkl. hostnamen bei Bedarf und zum Schutz eigener Privatsphäre während des Spielens blockieren. Die Funktionalität des Produktes wird dadurch nicht beeinträchtigt.

  Rules for posting comments can be found in the F.A.Q.