From d67239e4014def0e4a6c1ce376684e97f3d6ce2f Mon Sep 17 00:00:00 2001 From: betalars Date: Fri, 9 May 2025 17:37:33 +0200 Subject: [PATCH] WIP: adding draft of enhanced privacy options --- src/dev-util/steamworks.gd | 3 +- .../main menu/privacy_settings.tscn | 115 ++++++++++++++++++ src/singletons/global_state.gd | 4 + 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 src/logic-scenes/main menu/privacy_settings.tscn diff --git a/src/dev-util/steamworks.gd b/src/dev-util/steamworks.gd index 5922ba6..a5589dd 100644 --- a/src/dev-util/steamworks.gd +++ b/src/dev-util/steamworks.gd @@ -1,6 +1,7 @@ extends Node func _ready() -> void: - pass + if State.disconnect_steam: + Steam.steamShutdown() #var initialize_response: Dictionary = Steam.steamInitEx() #print("Did Steam initialize?: %s " % initialize_response) diff --git a/src/logic-scenes/main menu/privacy_settings.tscn b/src/logic-scenes/main menu/privacy_settings.tscn new file mode 100644 index 0000000..5e0f2b2 --- /dev/null +++ b/src/logic-scenes/main menu/privacy_settings.tscn @@ -0,0 +1,115 @@ +[gd_scene load_steps=3 format=3 uid="uid://u0bwjr5l6nkh"] + +[sub_resource type="InputEventAction" id="InputEventAction_gy6yb"] +action = &"ui_cancel" +pressed = true + +[sub_resource type="Shortcut" id="Shortcut_0peu0"] +events = [SubResource("InputEventAction_gy6yb")] + +[node name="Audio and Language" type="VBoxContainer"] +offset_right = 1086.0 +offset_bottom = 860.0 +metadata/_tab_index = 1 + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +theme_type_variation = &"HeaderLarge" +text = "Privacy and Data Protection" + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +text = "\"Frame of Mind - a game of thoughts.\" is a game discussing mental health. We expect some users may want more privacy while playing the game. +This guide that will help you understand what data is generated and procecced and what to do about it. +We protect your data by storing as little of it as strictly nessecary, by not collecting any data on our own and by helping you opt out of Steam collecting usage data. +If you think an important secirity feature is missing, we ask you to submit a bug report or better even, contribute it yourself." +autowrap_mode = 2 + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +theme_type_variation = &"HeaderMedium" +text = "Saves" +autowrap_mode = 2 + +[node name="Label4" type="Label" parent="."] +layout_mode = 2 +text = "This game uses plain-text files to store your progress. To make sure Steam has no access to that data, you can disable Cloud Saves in the properties of this game in your library. We encourage you to sync and back up saves on your own." +autowrap_mode = 2 + +[node name="Label5" type="Label" parent="."] +layout_mode = 2 +theme_type_variation = &"HeaderMedium" +text = "Playtime and Accievements" +autowrap_mode = 2 + +[node name="Label6" type="Label" parent="."] +layout_mode = 2 +text = "To track your playtime and award Steam Acceivements, this game sends data to your Steam Clinet while you are playing. You may opt out. +You can also hide this game in your library or mark it as private so your friends won't see you playing it. These privacy options are also provided in the game properties." +autowrap_mode = 2 + +[node name="Button3" type="Button" parent="."] +layout_mode = 2 +text = "reset acheivements" + +[node name="MuteSoundtrack2" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +tooltip_text = "All Game Music is safe to stream." +text = "disable sharing play data with Steam" + +[node name="Label7" type="Label" parent="."] +layout_mode = 2 +theme_type_variation = &"HeaderMedium" +text = "Diagnostic Data" +autowrap_mode = 2 + +[node name="Label8" type="Label" parent="."] +layout_mode = 2 +text = "Log Files store usage patterns and diagnostic data locally in plain text on your device. To protect your privacy, some information in these logs is obscurified. When reporting a bug, you can choose to include a log to help us figure out what went wrong. Opting out of obscurification can make some specific bugs easier to diagnose." +autowrap_mode = 2 + +[node name="MuteSFX2" type="CheckBox" parent="."] +unique_name_in_owner = true +layout_mode = 2 +button_pressed = true +text = "obscurify log files" + +[node name="confirm_buttons" type="HSplitContainer" parent="."] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 10 + +[node name="ResetButton" type="Button" parent="confirm_buttons"] +unique_name_in_owner = true +layout_mode = 2 +text = "reset" + +[node name="SaveButton" type="Button" parent="confirm_buttons"] +unique_name_in_owner = true +layout_mode = 2 +shortcut = SubResource("Shortcut_0peu0") +text = "save and exit" + +[node name="Popup" type="Popup" parent="."] +size = Vector2i(710, 139) + +[node name="VSplitContainer" type="VSplitContainer" parent="Popup"] +offset_right = 40.0 +offset_bottom = 40.0 + +[node name="Label" type="Label" parent="Popup/VSplitContainer"] +layout_mode = 2 +text = "Do you really want to erase all play data? +This action cannot be undone!" + +[node name="HSplitContainer" type="HSplitContainer" parent="Popup/VSplitContainer"] +layout_mode = 2 + +[node name="Button" type="Button" parent="Popup/VSplitContainer/HSplitContainer"] +layout_mode = 2 +text = "Yes, delete everything!" + +[node name="Button2" type="Button" parent="Popup/VSplitContainer/HSplitContainer"] +layout_mode = 2 +text = "No" diff --git a/src/singletons/global_state.gd b/src/singletons/global_state.gd index 45ad0a9..d97b737 100644 --- a/src/singletons/global_state.gd +++ b/src/singletons/global_state.gd @@ -188,6 +188,10 @@ func save_settings(): "input_sensitivity": input_sensitivity, "inverty_y_axis": inverty_y_axis, "stream_overlay_position": stream_overlay_position + }, + "privacy": { + "disconnect_steam": disconnect_steam, + "obscure_logs": obscure_logs } }