As I started playing World of Warships more competitively, both for tracking personal improvement and comparing game performance with my friends, we’d frequently check out game results on wows-numbers . Wows-numbers has a forced 15 minute debounce refresh, so checking recent games could be annoying if you had a particularly good game you wanted to review. I thought it’d be cool to write my own equivalency site, but found that WarGaming’s API only gives account totals, and has no available endpoints for recent match history which was unfortunate. The only option then to analyze recent game data was to check generated game replay files, and try to derive game stats from that directly.
There is coincidentally an open source community tool maintained by Landaire called wows-toolkit that does exactly that! So the new plan became piggybacking off of that, and creating a desktop app that could read from these replay files, process match results with the help of wows-toolkit, and give a similar look and feel to the statistics offered by wows-numbers without needing to outreach to the site itself.
Landaire’s kit also offers support for things like minimap rendering, which I baked in support for as well to be able to check how competitive matches with my team went more easily after matches. This feature does however break frequently between major game patches, so I may need to update my minimap renderer from Landaire’s toolkit as updates become available.
Stack
- Electron for the shell, with Vue 3 in the renderer
- better-sqlite3 for synchronous local storagea
- electron-vite for hot-reload development, electron-builder for packaging
- Jest, split into a Node-environment suite for the main process and a jsdom suite that understands single-file components
