Review zu Operencia: The Stolen Sun von Zen Studios, Ltd.


Author: A.S. | Verfasst am: 02.04.2020

Operencia: The Stolen Sun
Veröffentlicht: 2020
Plattform: Steam
Genre: Dungeon Crawler
Beinhaltet: Eigener Dienst
hosts: Details

Produktbeschreibung

:
Operencia: The Stolen Sun umfasst alles, was du an klassischen First-Person-Dungeon-Crawlern liebst und erweitert das Old-School rundenbasierte RPG-Erlebnis um moderne Befindlichkeiten.

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 \^.^/

[img]Operencia.jpg[/jpg]

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 (externer Link).

Alternativ gibt es eine detaillierte Version auf der Webseite von Zen Studios Ltd. (externer Link)

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.

GameIndustry.eu und sämtliche Inhalte sofern nicht anders angegeben
© 2004-2020 by „ペンギン“, - PT Designs - Veröffentlichte Hosts stehen unter Creative Commons License