Whatever you may image a game is, that is not Dani&#39;s race. It is a social construct created by @BlenderDumbass to make you follow the cult of free software. And he has gone to such a length at making sure his idea is as presentable, he even created a [ScoreBoard](https://blenderdumbass.org/danisrace/scoreboard) for it. Still not a game, because a game by definition is not Dani&#39;s race. Or something like that. Ignore what I&#39;m writing, this article is stupid, you&#39;re stupid!

Okay, for real, what&#39;s the problem here? Well, I want to get the scoreboard working on Dani&#39;s race, but I&#39;m using Winblows operating system. That means a lot of things are broken. That&#39;s because Dani&#39;s race was developed for the [Tux](https://en.wikipedia.org/wiki/Tux_%28mascot%29) operating system. 

First what I did was run `python.exe .\notgitwindows.py update`, which is an adapted version of notgit.py for Windows. First, it changes `/` to `\`, because Windows separates directories differently.  It copies the settings.py file from a special folder called `billgates` to the main directory, because Linux writes stuff to the `/home` directory, which doesn&#39;t exist on Windows. Instead I saves it to an ad-hoc directory on Windows. This hack and some minor adjustments, make so `settings.py` doesn&#39;t have to be modified every update. 

I tried running the game from `UPBGE`, but it didn&#39;t get past the load screen. That&#39;s to be expected, there were changes to the `settings.py` file. As such, I went to [https://blenderdumbass.org/danisrace/download//Scripts/Settings.py](/danisrace/download//Scripts/Settings.py) and downloaded the `settings.py` file supplied by the game. Then I do a `diff -B` to see what are the changes, without whitespace.

This is what I saw:
```
$ diff -B Settings.py Settingsnew.py
5a6,7
&gt import time
&gt import getpass
18a21
&gt     from Scripts import Online
31c34
&lt         data_dir = os.path.expanduser(&quot;C:\\Superfluous\\DanisRace\\config&quot;)
---
&gt         data_dir = os.path.expanduser(&quot;~/.local/share/&quot;+game)
165c168
&lt         &quot;veh_shoot&quot;    :&quot;shoot&quot;,
---
&gt         &quot;veh_shoot&quot;    :&quot;shoot&quot;,
193a197,198
&gt     settings = bge.logic.globalDict.get(&quot;settings&quot;)
&gt
196a202,207
&gt     if bge.logic.globalDict.get(&quot;save-game-name&quot;):
&gt         data[&quot;name&quot;] = bge.logic.globalDict[&quot;save-game-name&quot;]
&gt
&gt     data[&quot;online&quot;] = bge.logic.globalDict.get(&quot;send-stats-online&quot;, False)
&gt     data[&quot;username&quot;] = settings.get(&quot;username&quot;, getpass.getuser())
&gt
209a221,229
&gt
&gt     # Recording total time spent by the player in the game.
&gt     data[&quot;time-played&quot;] = bge.logic.globalDict.get(&quot;time-played&quot;, 0) + bge.logic.getRealTime()
&gt     data[&quot;lastsession&quot;] = {
&gt         &quot;time-played&quot;:bge.logic.getRealTime(),
&gt         &quot;timestamp&quot;:float(time.time())
&gt     }
&gt
&gt     data[&quot;cheats-used&quot;] = bge.logic.globalDict.get(&quot;cheats-used&quot;, 0)
220a241,243
&gt     if bge.logic.globalDict.get(&quot;send-stats-online&quot;):
&gt         Online.SendAccount(f)
&gt
227c250
&lt
---
&gt
237a261,263
&gt     bge.logic.globalDict[&quot;save-game-name&quot;] = data.get(&quot;name&quot;)
&gt     bge.logic.globalDict[&quot;send-stats-online&quot;] = data.get(&quot;online&quot;)
&gt
254c280,286
&lt
---
&gt
&gt     # To keep track of players time spent in the game
&gt     bge.logic.globalDict[&quot;time-played&quot;] = data.get(&quot;time-played&quot;, 0)
&gt
&gt     # Keeping track of used cheats
&gt     bge.logic.globalDict[&quot;cheats-used&quot;] = data.get(&quot;cheats-used&quot;, 0)
```

Pretty confusing, isn&#39;t it? Well the &gt shows what was added, so I just add those lines, in this case there are now time and getpass functions. There were more things I added, but the steps are just copy pasting what&#39;s needed. 

But that&#39;s not! Oh, the malevolent gamedev BlenderDumbass doesn&#39;t want Windows users to have a nice time updating the game. He must impart suffering. The file `Scripts/Online.py`, there&#39;s a direct use of curl. But my version of Windows has `curl.exe`, meaning I had to put `Online.py` to `billgates` folder and change `notgitwindows.py` file. The issue is that `Online.py` import `notgit.py`, which has `GetGameId()` function, that&#39;s not present in `notgitwindows.py` file. So I had to manually add it.

But &#39;twasn&#39;t as simple a M-w C-y, since there is this line:
```
return open(GETCWD()+&quot;/.notgit/gameid&quot;).read()
```

I had to change the forward slashes to Windows&#39; equivalent. And there&#39;s a also a need for `SaveGameID()` function, which also had to be converted. And on top of that, the function `GetSimple()` got updated as well. Which means I had to convert it to a Windows friendly language. At this point I&#39;m considering that the 90s monopoly of Windows wasn&#39;t such a bad thing. You had a single OS you had to deal with, Linux and MacOS were for weirdos. Those were the days. Everything just werked. But now I have to patch Python code. Python! A cross-platform language. What is this C++ hell?!

Besides that, for fun I changed `.notgit/gameid` file to have my username in it. FreeSoftware, you can do whatever you want!

So I went to the Scoreboard [JSON file](https://blenderdumbass.org/danisrace/json/scoreboard) and saw that there were two new values: `name` and `online`. Online value must be set to true, to have a leaderboard. As such, I added these values to my `config/save.json` file, because that&#39;s where I set it in `Settings.py` file. 

In `config/config.json` I added the value `username` with my username. This way the game would know how I&#39;m called. 

And then I ran the game. As expected it didn&#39;t run, because BlenderdDumbass hates people who use Windows. There&#39;s event this pop-up on the website that tells you to install LiGNUx. 

But the game didn&#39;t run not because of something I did, no &#39;twas a [NaN bug](/articles/so_why_the_hell_this_math_nans_out__help_me_).  Seems like BlenderDumbass didn&#39;t think LiGNUx and Windows treats NaN differently, or something. But that doesn&#39;t really make sense, why would they treat it differently. 

Yet, by the turn of irony, I&#39;m on the ScoreBoard. Yet, not all hope was lost. I decided to play the game while in editing mode, by pressing the button `P`. It worked!

Then I loaded the game normally again. And this time it worked. How, I do not know. Computers are magic and BlenderDumbass is a dumbass, so he must&#39;ve written the code in such a way it works 99.999% of the time. 

I was able to finally try out the custom races update.

**Happy Hacking!!!**

Errr,
*Fin*