Hyperlaunch
- 4 Devlogs
- 32 Total hours
minecraft launcher that ticks all the boxes. easy on system resources without compromising on looks.
minecraft launcher that ticks all the boxes. easy on system resources without compromising on looks.
It’s been a month since my last devlog because I’ve just been unmotivated to continue working. I do really want to finish this though, so I’ll see it through.
This update is mostly about bugfixes. There are no big new features done.
I spent a good 3-5 hours building out a proper, full featured Modrinth search client, just for the API docs to be wrong, meaning I massively over-engineered a simple system. Really annoying.
All the optimisations and big changes I made over the past few devlogs meant I had a lot of broken code on my hands. Won’t list everything here, but:
No video for this devlog, have some assorted screenshots from development on this devlog’s work.
Hyperlaunch now has the fastest download time of any Minecraft launcher I have tested!
This is due to a number of optimisations done, mostly informed from app profiling (you can see a screenshot below.)
Network activity is also more steady, and should start less connections overall.
Hyperlaunch was slower because parts of the cache system & download system were reading and writing to a lot of files at once.
I used the PerfView profiler to figure out how I could improve the download time after testing Modrinth App and Pandora Launcher and scoring twice as worse against both.
I’ve attached a screenshot of PerfView below, but it’s very ugly to look at.
Changes:
Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromise.
The cache works by URL. It splits the URL into domain name and resource. Take Hyperlaunch’s Stardance project page as an example; if it were to be
cached, the directory would be stardance.hackclub.com, and the
resource would be projects/28654. The resource name is hashed with
XxHash128, a hashing algorithm that’s not used for storing secrets, then
the file at the URL is cached at .hyperlaunch/cache/<directory>/<resource hash>. If the file came with caching instructions (either ETag or Last-Modified HTTP headers), then those are stored alongside the cached file as separate files (see the image attached.)
response.Content.Headers variable. For all other headers, you access response.Headers.Stream objects, and the syntax was strange which resulted in a few unintentional logic bugs that I just didn’t know how to spot.Video and some photos of the cache in action below.
devlog 1
Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromising in any area.
I started this project earlier this year, but I want to finish it under Stardance.