get_query_var always returns the default value

In WordPress, query vars are not what you think they are. They are the arguments for the global WP_Query object which processes the main page request. Check the docs for more information.

What you need in that particular case is to check the $_GET parameters on the page load.

For example:

$scoretime = filter_input( INPUT_GET, 'scoretime', FILTER_SANITIZE_NUMBER_INT ) ?: (string) time();
$score = filter_input( INPUT_GET, 'score', FILTER_SANITIZE_NUMBER_INT ) ?: '0';
$nickname = filter_input( INPUT_GET, 'nickname', FILTER_SANITIZE_STRING ) ?: 'defaultname';

Please note that I have accessed them using filter_input() method, which is a good practice to do a sanitization of the inputs, especially if you plan on inserting them in the database.

Also, I have added the default values after the ?:, which is a short ternary operator, and assigns the left if its value is truthy.