Feature: opt-in survey when exiting a game

On first start-up, the game will ask if you want to participate
in our automated survey. You have to opt-in, and can easily opt-out
(via the Options) at any time.

When opt-in, whenever you exit a game, a JSON blob will be send
to the survey server hosted by OpenTTD. This JSON blob contains
information that gives a global picture of the game just played:
- What settings were used
- How many humans vs AIs
- How long the game has been played
- Basic information about the OS / CPU

All this information is kept very generic, so there is no
chance we send private information to our survey server.
Nothing in the JSON blob could identify you as a person; it
mostly tells about the game played. At any time you can see
what the JSON blob includes, by pressing the "Preview Survey
Results" button in-game.
This commit is contained in:
Patric Stout
2023-04-25 19:43:45 +02:00
committed by Patric Stout
parent 021c45c4f6
commit 7634553d22
54 changed files with 1018 additions and 53 deletions

View File

@@ -8,6 +8,7 @@
[pre-amble]
static constexpr std::initializer_list<const char*> _use_relay_service{"never", "ask", "allow"};
static constexpr std::initializer_list<const char*> _participate_survey{"ask", "no", "yes"};
static const SettingVariant _network_private_settings_table[] = {
[post-amble]
@@ -16,6 +17,7 @@ static const SettingVariant _network_private_settings_table[] = {
SDTC_BOOL = SDTC_BOOL( $var, $flags, $def, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
SDTC_SSTR = SDTC_SSTR( $var, $type, $flags, $def, $length, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
SDTC_OMANY = SDTC_OMANY( $var, $type, $flags, $def, $max, $full, $str, $strhelp, $strval, $pre_cb, $post_cb, $from, $to, $cat, $extra, $startup),
[validation]
SDTC_OMANY = static_assert($max <= MAX_$type, "Maximum value for $var exceeds storage size");
@@ -90,3 +92,12 @@ str = STR_CONFIG_SETTING_USE_RELAY_SERVICE
strhelp = STR_CONFIG_SETTING_USE_RELAY_SERVICE_HELPTEXT
strval = STR_CONFIG_SETTING_USE_RELAY_SERVICE_NEVER
cat = SC_BASIC
[SDTC_OMANY]
var = network.participate_survey
type = SLE_UINT8
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = PS_ASK
min = PS_ASK
max = PS_YES
full = _participate_survey