C++ game launcher for MegaVolts. A small, skinnable launcher for Windows that draws its
own borderless UI with Dear ImGui and DirectX 11, keeps the game up to date with a chunked
patcher, and can start the game from the website through a megavolts:// link, like
Steam's steam://.
- Custom borderless window with rounded corners, transparency and a shadow
- Fully skinnable from
launcher.ini(window, logo, buttons, news, progress bars, fonts, colors), missing keys are filled with defaults - FreeType fonts with configurable size, spacing and outline
- DPI aware with runtime scaling
- Single instance only, using a named mutex
- Play, Update and Exit buttons plus web links (Club, Shop, Support, Discord, News)
- Animated progress bars that follow the real patch progress
- Starts the game without the launcher's elevated token
- Chunked patching, files are split into 4 MiB chunks and only the changed ones download
- JSON manifest with per-chunk SHA-1, read by a small custom parser (
MiniJsonParser) - Manifest is verified with an RSA signature (BCrypt) before anything is applied
- Every chunk is SHA-1 checked before it's kept
- Self update: the launcher can patch itself, restart, and clean up the old copy
- A bare exe can pull its own skin files (
LR\) through the same chunk system - Won't patch while the game or launcher is running, shows per file and total progress plus speed
- Networking over WinHTTP, no extra HTTP library
- The launcher registers itself for
megavolts://in the user registry, no admin needed - The Start button on the website opens
megavolts://startgame, then it patches and runs the game
- Multithreaded: the patcher runs on its own thread so the UI stays smooth, the progress animation runs on another
- Thread safe state with
std::atomicandstd::mutexso the UI and patch threads don't clash - Patching can be cancelled with a flag the worker checks between steps
- Progress is sent back to the UI through callbacks so the two sides stay separate
- RAII wrappers for handles, the mutex and process tokens so nothing leaks on errors
- INI reader handles UTF-8 and UTF-16 byte order marks
- DPI and monitor functions loaded at runtime with fallbacks, runs on Windows 7 to 11
- Written in C++17, just the Windows SDK and a few small vendored libraries
- Dear ImGui for the UI (DirectX 11 and Win32 backends, FreeType renderer)
- FreeType for fonts
- stb_image for loading PNG and GIF