GameIndustry.eu /  Reviews / Iron Harvest
System Recovery 18

Iron Harvest

Publisher: Deep Silver
Released: 2020
Steam ID: 826630
Genre: Echtzeit-Strategie
System:  
Hosts entries:

Screens:
eula
iron1
iron2
Bild
A classic real-time strategy game with an epic single player campaign, multiplayer & coop, set in the alternate reality of 1920+

  Iron Harvest Review

Iron Harvest ist ein Produkt der Firma Deep Silver. Der Publisher ist ein Unterlabel der Koch Media GmbH aus Österreich. Der Titel selbst trägt den Namen Harvest zurrecht, denn es wird "geerntet" was das Zeug hält.

Wie so oft und in der Branche üblich ist der Kunde auf Gedeih und Verderb diversen Diensten ausgeliefert.

Das fängt an auf der Produktseite von Iron Harvest auf der es nur englische Nutzungsbedingungen   gibt. Auf diese gehen wir in dem Review ein und auch auf das, was in dem Spiel im Hintergrund aktiv ist und NICHT in den Nutzungsbedinungen steht.

Zuerst Eckdaten

Involvierte Datei/en


Name: ironharvest.exe
Dateiversion: 2019.3.13.13950448
Spielversion: 1.0.0.1600 rev.37863

Name: UnityCrashHandler64.exe

Anmerkung:
Die UnityCrashhandler64.exe sollte VOR Spielstart aus dem "Iron Harvest/release" Ordner gelöscht werden

Nun möge der Spaß beginnen.

Nutzungsbedinungen


Punkt 5: Erklärt den Kunden in einem Miniabsatz dass Unity-Analytics genutzt werden. Immerhin etwas. Gefolgt von Links die uns Kunden darauf hinweist wie wir aus dem Programm aussteigen.

Das war's. Kein Wort über andere Dinge. Das wird nämlich noch interessant.

Anmerkung:
Wer Möglichkeiten eines sogenannten "Opt-Out's" in Anspruch nimmt, gibt nur noch mehr Daten her. Sinnvoll ist es die Dienste der Firma Unity Technologies im Vorraus mit Hilfe von host oder PI-Hole Listen permanent von eigenen Geräten zu blockieren.

Nun müssen wir mehrere Dinge annehmen.

1. Die Steam-Plattform ist ab 13 freigegeben. Nicht jeder kann oder will Englisch lesen. Unabhängig dessen, kann dies vor allem bei juristischen Texten nicht verlangt werden. Ergo, sind die Nutzungsbedinungen egal was drinsteht... ungültig

2. Wird das Spiel gestartet, aktivieren sich die erwähnten Unity-Analytics zeitgleich im Hintergrund. Bis zum ersten Menü werden Daten nicht nur erfasst sondern auch schon direkt verschickt und landen im Endeffekt bei <a href="../../katalog/google-llc/" title="Google, LLC.">Google, LLC</a>. Denn der amerikanische Technologiekonzern steht wieder mal am Ende der Kette.



Danach taucht eine im Spiel befindliche EULA auf, der wir... wenn wir denn "normal" weiterspielen wollen, zustimmen müssen. Was noch dazukommt, ist eine ausgweitete Unity-Analytics. Denn neben den Standardadressen wird zwischendurch ein seperater Report geschrieben und an Unity verschickt. Dafür sind sie im Produktforum noch so frech und fragen nach weiteren Daten, obwohl sie die schon haben.

Auch dass Spieler einfach die "Möglichkeit" haben, in einem Optionsmenü im Spiel befindliche Schnüffelei abzustellen stimmt so einfach nicht. Und wieso müssen wir die erst deaktivieren (was gar nicht zu 100% möglich ist)? Warum konnten Anwender nicht enscheiden ob sie überhaupt etwas zulassen? Im Endeffekt ist das Ganze eine riesengroße Pharce.

"Datenschutz" ad adsurdum


Wer im Optionmenü auf die Datenschutzvereinbarung   klickt wird zur Seite von Deep Silver weitergeleitet.

Dort warten Google Analytics (ID: UA-120525592-1), Google Audiences (ID: UA-120525592-1), Google Tagmanager (ID: GTM-PZG6PTR), Google Doubleclick mit Conversiontracking (ID: UA-120525592-1), Facebook Trackingpixel (ID: 232463923612182), sowie diverse Trackingcookies.

Wieder diesselbe Leier - BEVOR Nutzer eine Chance haben überhaupt zu reagieren. Dafür werden sie von mehreren Seiten Text erschlagen, die die Pixel nicht wert sind auf dem sie stehen.

Zusätzlich bekommen die Dienste natürlich auch Bescheid woher die Spieler kommen. In dem Fall aus dem Produkt <a href="../../de/search/index.php?suchbegriff=Iron+Harvest&suche" title="Iron Harvest">Iron Harvest</a> mit einem einfachen Klick auf einen Button. Sogenanntes <a href="../../info/terminologie/#Referer">Referaltracking</a>.

Firmen wie Deep Silver sollte man verbieten auch nur das Wort Datenschutz in den Mund zu nehmen, denn alles was sie machen, ist genau das Gegenteil von dem was diesen Begriff überhaupt ausmacht.

Es ärgert einfach nur noch. Aber wehe man verlangt als Endverbraucher selbst etwas. Daten löschen, oder gar von Unternehmen einfordern? Viel Spaß. In dem konkreten Fall macht das nämlich nicht Deep Silver für uns, auch wenn sie alles in die Wege leiten.

Anwender müssen leider selbst sehen wo sie bleiben. Das ist aktuell der einzige Weg. Wer klug ist, kann derlei Verhalten direkt an die zuständigen Datenschutzbehörden weiterleiten.

Unity-Analytics hostnamen und ipv4-Adressen


Ort: United States of America (Mountain View, California)


  • 35.241.26.53
  • 35.186.194.186
  • 35.190.88.234
  • 35.241.52.229
  • 35.190.78.8
  • remote-config-proxy-prd.uca.cloud.unity3d.com
  • thind-gke-euw.prd.data.corp.unity3d.com
  • thind-gke-usc.prd.data.corp.unity3d.com
  • thind-gke-ape.prd.data.corp.unity3d.com
  • 53.26.241.35.bc.googleusercontent.com
  • 186.194.186.35.bc.googleusercontent.com
  • 229.52.241.35.bc.googleusercontent.com
  • perf-events.cloud.unity3d.com
  • config.uca.cloud.unity3d.com
  • cdp.cloud.unity3d.com


 {
"common" : {
"appid" : "67f135ed-b9c9-4310-b3c4-c121bbf0e972",
"build_guid" : "0b779d1163483a846a859643536918d2",
"deviceid" : "xxxx",
"identity_token" : "fa0d867e45ba72a40a66b76f9513bc4a",
"localprojectid" : "3d7ac153faaea51439218bbe82d263b9",
"platform" : "WindowsPlayer",
"platformid" : 2,
"sdk_rev" : "d4ddf0d95db9",
"sdk_ver" : "u2019.3.13f1",
"session_count" : 4,
"sessionid" : 1395012572511227068,
"userid" : "xxxx"
}
}

Desweiteren sind schon andere Dienste im Spiel aktiv gewesen, die in keinster Weise erwähnt werden. Und das bringt uns zum folgenden Punkt

Deep Silver Telemetrie


Dieser nette kleine Dienst ist quasi eine weitere Wanze im Spiel die uns die ganze Zeit begleitet. In anderen Worten <a href="../../info/terminologie/#Spyware" title="Spyware">Spyware</a>, denn Nutzer werden hier weder durch Deep Silver aufgeklärt noch informiert. Sie starten ein Produkt welches sich anders verhält als angenommen, Daten vom eigenen Gerät sammelt und man muss hier sagen, schlicht und einfach klaut.

Deep Silver Spyware hostnamen und ipv4-Adressen


Ort: United States of America (Mountain View, California)


  • 35.227.230.186
  • telemetry.deeparc.net
  • 186.230.227.35.bc.googleusercontent.com


Die hauseigene Spyware von Deep Silver bleibt wie die Unity-Analytics während des gesamten Spiels aktiv, füllt sich selbstständig mit aktuellen Daten, gibt diese weiter und wird erst beendet, wenn das Produkt beendet wird.

Derselbe Dienst ist in Metro: Exodus aktiv.

Onlinezwang


Ein weiterer Scherz ist der Onlinezwang. Warum? Weil Spieler automatisch verbunden werden und damit natürlich auch mit der Telemetrie. Werden die Onlinemodi abgeschaltet (API), funktioniert das Spiel nur noch zur Hälfte. Kein Profil, keine Erfolge, kein Mehrspieler. Zumindest ich für meinen Teil kann darauf verzichten. Aber das wird nicht jeder wollen.

API


Ort: United States of America (Mountain View, California)


  • 34.95.126.216
  • api.iron-harvest.com
  • 216.126.95.34.bc.googleusercontent.com


Zeug


United States of America (New York City, New York)


  • 207.154.210.110
  • kamos.kingart-games.com


Analytics und Spyware aufgeschlüsselt


Telemetrie gestartet
 {
"sid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", <i>SID? Soso. Natürlich wird die zur Entwicklung benötigt :P</i>
"topic" : "telemetry_live_ironharvest",
"turi" : "/live-456/data",
"usc" : {
"amsg" : "",
"ast" : 0
},
"whitelist" : [
"ability",
"killed",
"match_end",
"match_progress",
"match_started",
"resource_building",
"telemetry_heartbeat", <i>Poch, poch ❤️</i>
"telemetry_start",
"telemetry_state_change",
"unit"
]
}
{
"bid" : "1.0.0.1600 rev. 37863 -2.0.0",
"gid" : "IronHarvest",
"pid" : "Windows-Generic",
"uid" : "xxxxxx" <i>Noch einmaliger Identifier</i>
}

Erstes Event "Beat Boys" - Hinter dem Ziel versteckt sich die Schneeballschlacht am Anfang


Die Deeparc Spyware bleibt aktiv und trackt alle Zwischenschritte. Aufgenommen wurde hier bis zum 2ten Event. Danach habe ich das Spiel beendet. Das Vorgehen nennt man Eventtracking.
 {
"e" : [
{
"d" : {},
"t" : 1599684480618,
"type" : "tst"
}
],
"s" : {
"bid" : "1.0.0.1600 rev. 37863 -2.0.0",
"gid" : "IronHarvest",
"pid" : "Windows-Generic",
"sec" : 0,
"uid" : "xxxx"
}
}
{
"e" : [
{
"d" : {
"match" : {
"human_player_count" : 3,
"local_factionId" : 1,
"map" : "sp_pol_01",
"match_id" : "4a53ed15c86945dca9bea47cb1cacf1e",
"mode" : "Campaign",
"player_types" : "human, human, human",
"team" : 1
}
},
"t" : 1599684545022,
"type" : "tsc"
},
{
"d" : {
"factionId" : 1
},
"t" : 1599684545023,
"type" : "match_started"
}
],
"s" : {
"bid" : "1.0.0.1600 rev. 37863 -2.0.0",
"gid" : "IronHarvest",
"pid" : "Windows-Generic",
"sec" : 1,
"uid" : "xxxx"
}
}
{
"e" : [
{
"d" : {
"achieved" : false,
"factionId" : 1,
"objective" : "BeatBoys" <i>Questabschnitt</i>
},
"t" : 1599684588395,
"type" : "match_progress"
}
],
"s" : {
"bid" : "1.0.0.1600 rev. 37863 -2.0.0",
"gid" : "IronHarvest",
"match" : {
"human_player_count" : 3, <i>Weitere Fraktionen</i>
"local_factionId" : 1,
"map" : "sp_pol_01",
"match_id" : "4a53ed15c86945dca9bea47cb1cacf1e",
"mode" : "Campaign", <i>Einzelspielerkampange</i>
"player_types" : "human, human, human", <i>Sicher?</i>
"team" : 1
},
"pid" : "Windows-Generic",
"sec" : 3,
"uid" : "xxxx"
}
}


Unity Analytics Reports


Nach dem ganzen Batzen und vor der 2ten Mission bzw dem weiteren Verlauf der Geschichte schlagen weitere Unity-Analytics an, die nicht zum Standard gehören. Gesammelt werden Hardwaredaten für Unity und Koch Media GmbH. Es folgen meine Hardwaredaten und ein paar Fehlermeldungen von denen wir als Spieler gar nichts mitbekommen.

Einige Identifier wurden zur Ansicht gex't.
 https://perf-events.cloud.unity3d.com/api/v2/projects/67f135ed-b9c9-4310-b3c4-c121bbf0e972/reports

{
"app_build" : "",
"appid" : "67f135ed-b9c9-4310-b3c4-c121bbf0e972",
"build_guid" : "0b779d1163483a846a859643536918d2",
"build_tags" : [],
"client_report_id" : "xxxxxx",
"client_ts" : 1599684949786,
"counter" : 1,
"cpu" : "AMD Ryzen 5 2600X Six-Core Processor ",
"cpu_count" : 12,
"cpu_freq" : 3593,
"debug_device" : false,
"device_info_flags" : 2198042570,
"device_model" : "B450 AORUS PRO (Gigabyte Technology Co., Ltd.)",
"device_ram" : 32699,
"device_type" : 3,
"device_vram" : 8079,
"enabled_vr_devices" : [],
"gfx" : "NVIDIA GeForce GTX 1080",
"gpu_api" : 2,
"gpu_caps" : 8387583,
"gpu_copy_texture_support" : 31,
"gpu_device_id" : 7040,
"gpu_driver" : "",
"gpu_max_cubemap_size" : 16384,
"gpu_max_texture_size" : 16384,
"gpu_render_texture_support" : 511,
"gpu_shader_caps" : 50,
"gpu_supported_render_target_count" : 8,
"gpu_texture_format_support" : 915,
"gpu_vendor" : "NVIDIA",
"gpu_vendor_id" : 4318,
"gpu_version" : "Direct3D 11.0 [level 11.1]",
"install_mode" : "",
"install_store" : "",
"is_ar_app" : false,
"is_editor" : false,
"is_fullscreen" : true,
"is_wsar_remote" : false,
"localprojectid" : "3d7ac153faaea51439218bbe82d263b9",
"log_messages" : [
{
"frame" : 29753,
"message" : "|2903| Cannot extract script group id from target Variable \"TargetId\"",
"ts" : 1599684909767,
"type" : 0
},
{
"frame" : 30978,
"message" : "|3067| Profiler failed to pop 'Consider Extended ImplicitTargeting'. Stack top was 'ReactionSystem.Update'!",
"ts" : 1599684930263,
"type" : 0
},
{
"frame" : 30978,
"message" : "|3067| Profiler failed to pop 'ReactionSystem.Update'. Stack top was 'reactionsys'!",
"ts" : 1599684930263,
"type" : 0
},
{
"frame" : 30978,
"message" : "|3067| Profiler failed to pop 'reactionsys'. Stack top was 'tick'!",
"ts" : 1599684930263,
"type" : 0
},
{
"frame" : 30978,
"message" : "|3067| Profiler can't pop 'tick'. Stack is empty!",
"ts" : 1599684930264,
"type" : 0
},
{
"frame" : 31754,
"message" : "|3171| Cannot extract script group id from target Variable \"TargetId\"",
"ts" : 1599684943275,
"type" : 0
},
{
"frame" : 31964,
"message" : "|3199| Profiler failed to pop 'Consider Extended ImplicitTargeting'. Stack top was 'ReactionSystem.Update'!",
"ts" : 1599684946775,
"type" : 0
},
{
"frame" : 31964,
"message" : "|3199| Profiler failed to pop 'ReactionSystem.Update'. Stack top was 'reactionsys'!",
"ts" : 1599684946775,
"type" : 0
},
{
"frame" : 31964,
"message" : "|3199| Profiler failed to pop 'reactionsys'. Stack top was 'tick'!",
"ts" : 1599684946775,
"type" : 0
},
{
"frame" : 31964,
"message" : "|3199| Profiler can't pop 'tick'. Stack is empty!",
"ts" : 1599684946775,
"type" : 0
}
],
"managed_exception" : {
"message" : "ArgumentNullException: Value cannot be null.\r\nParameter name: renderer",
"stack_trace" : "KingArt.Util.Misc.MaterialPropertyManager.GetManagerFor (UnityEngine.Renderer renderer) (at <50f9afbe769444a4bad0a317384e3a40>:0)\nKingArt.Assets.Code.Presentation.StealthModule+<>c.<Initialize>b__18_0 (KingArt.Assets.Code.Presentation.StealthTargetRenderer t) (at <50f9afbe769444a4bad0a317384e3a40>:0)\nSystem.Linq.Enumerable+SelectListIterator`2[TSource,TResult].ToList () (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)\nSystem.Linq.Enumerable.ToList[TSource] (System.Collections.Generic.IEnumerable`1[T] source) (at <351e49e2a5bf4fd6beabb458ce2255f3>:0)\nKingArt.Assets.Code.Presentation.StealthModule.Initialize () (at <50f9afbe769444a4bad0a317384e3a40>:0)\nKingArt.Assets.Code.Presentation.StealthModule.OnEnable () (at <50f9afbe769444a4bad0a317384e3a40>:0)\nUnityEngine.Object:Instantiate(GameObject, Vector3, Quaternion)\nKingArt.Combat.BattleManager:CreateUnitProxy(Int32)\nKingArt.Combat.BattleLogParser:HandleUnitSpawn(UnitActor)\nKingArt.Combat.BattleLogParser:HandleEntitySpawn(EntitySpawnedMessage)\nKingArt.Combat.MessageProcessorWrapper`1:HandleMessage(EntitySpawnedMessage, Int32)\nKingArt.Combat.MessageProcessorWrapper`1:ProcessMessages()\nKingArt.Combat.MessageProcessingSubSystem:Update()\nKingArt.Combat.BattleLogParser:Update()\nKingArt.Combat.BattleManager:OnUpdate(Single)\nKingArt.GameUpdater2:UpdateRelease()\nKingArt.GameUpdater2:Update()\n",
"type" : "ArgumentNullException"
},
"name" : "KingArt.IronHarvest",
"os" : "Windows 10 (10.0.0) 64bit",
"os_family" : 2,
"platform" : "WindowsPlayer",
"platformid" : 2,
"refresh_rate" : 59,
"rooted_or_jailbroken" : false,
"screen_dpi" : 96,
"screen_orientation" : 1,
"screen_size" : "2560 x 1440", <i>Auflösung</i>
"scripting_backend" : "Mono",
"sdk_ver" : "2019.3.13f1",
"sdk_ver_full" : "2019.3.13f1_d4ddf0d95db9",
"sensor_flags" : 144,
"sessionid" : 1395012572511227068,
"system_language" : "de", <i>Systemsprache</i>
"user_metadata" : [],
"userid" : "xxxxxx",
"version" : "1.0.0.1600 rev. 37863",
"vr_device_model" : "", <i>Schön, dass auch gerpüft wird ob VR Geräte angeschlossen sind</i>
"vr_device_name" : "" <i>Geht euch mal gar nichts an</i>
}

Nun übernimmt wieder die freundliche Spyware von Deep Silver das Steuer und trackt uns Spieler weiter. Solange wir dies zulassen.

 https://telemetry.deeparc.net/live-456/data

{
"e" : [
{
"d" : {
"achieved" : false,
"factionId" : 1,
"objective" : "DeerHunt" <i>Nächster Missionsabschnitt</i>
},
"t" : 1599685027806,
"type" : "match_progress" <i>Fortlaufend</i>
}
],
"s" : {
"bid" : "1.0.0.1600 rev. 37863 -2.0.0",
"gid" : "IronHarvest",
"match" : {
"human_player_count" : 3,
"local_factionId" : 1,
"map" : "sp_pol_01",
"match_id" : "4a53ed15c86945dca9bea47cb1cacf1e",
"mode" : "Campaign",
"player_types" : "human, human, human",
"team" : 1
},
"pid" : "Windows-Generic",
"sec" : 9,
"uid" : "xxxxxx"
}
}

API - Onlinezwang


Diese ist zuständig für die Anmeldung, dem Nutzerprofil, Mehrspielermodi, Telemetrie und für Erfolge.
 https://api.iron-harvest.com/v1/auth/authenticate
{
"AuthParams" : {
"beta-tag" : null,
"isDemo" : "False",
"version" : "1.0.0.1600 rev. 37863 "
},
"AuthToken" : "xxxxxx",
"PlatformId" : "steam",
"Type" : "STEAM"
}

Profil


Wer hätte das gedacht, wie es sich gehört, sämtliche Variablen.
 https://api.iron-harvest.com/v1/userprofiles/main
{
"Details" : {
"RankInfos" : {
"faction/0" : {
"CurrentRank" : {
"Level" : 1
},
"NextRank" : {
"Level" : 2,
"RewardIds" : [ "profile/avatar/com_npc_farmermalerifleman_selected_common" ],
"Xp" : 1000
}
},
"faction/1" : {
"CurrentRank" : {
"Level" : 1
},
"NextRank" : {
"Level" : 2,
"RewardIds" : [ "profile/avatar/rus_soldier_rifleman_selected_common" ],
"Xp" : 1000
}
"Profile" : {
"DisplayName" : "ペンギン", <i>Mein Name in Steam</i>
"PlayerLevel" : 1,
"UserId" : "xxxx"
}
}

Erfolge


Erfolge sind gekürzt, sonst wäre die Liste einiges länger...
 https://api.iron-harvest.com/v1/achievements/userachievements

{
"Categories" : [
{
"Achievements" : [
{
"Details" : [
{
"Description" : "Achieve Bronze on \"Anna’s Shot\".",
"Id" : "medal_sp_pol_01_bronze",
"Name" : "The Story Begins",
"RewardId" : "currency/main/175",
"Status" : "Unfulfilled",
"Type" : "bronze"
},
{
"Description" : "Achieve Silver on \"Anna’s Shot\".",
"Id" : "medal_sp_pol_01_silver",
"Name" : "The Story Begins",
"RewardId" : "currency/main/300",
"Status" : "Unfulfilled",
"Type" : "silver"
},
{
"Description" : "Achieve Gold on \"Anna’s Shot\".",
"Id" : "medal_sp_pol_01_gold",
"Name" : "The Story Begins",
"RewardId" : "currency/main/600",
"Status" : "Unfulfilled",
"Type" : "gold"
},
{

Fazit


Kurz: Deep Silver zeigt hier wunderbar wie Kunden nicht nur belogen, Daten geklaut und Informationen vorenthalten werden, sondern auch wie für den Kunden nachteilige einseitige Verträge funktionieren. Dabei wär es doch gar nicht mal so schwer, kundenfreundlich zu arbeiten, oder? Anscheinend doch, denn sonst würde es diese Seite und das Review gar nicht geben.

Deep Silver und vergleichbare Firmen können sich derzeit glücklich schätzen. Anders würde es aussehen wenn sie uns Anwender ausbezahlen und jeden einzelnen noch so kleinen Datensatz zwecks Verwendung und berechtigtem Interesse belegen müssten. Für jedes einzelne Kilobyte. Natürlich nach Gewichtung der Daten und PRO Person...

Da Spiele solche Werte nicht nur einmal abfragen, sondern zu jedem Start und sogar im Hintergrund ohne dass sie aktiv geöffnet sind (Androidspiele als Beispiel) wäre die gesamte Thematik so ganz schnell vom Tisch.

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