You are browsing as a guest. Sign up (or log in) to start making projects!

byzann

@byzann

Joined June 29th, 2026

  • 2Devlogs
  • 2Projects
  • 0Ships
  • 0Votes
Open comments for this post

7h 42m 58s logged

Hyperlaunch - devlog 2

Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromise.

Progress

  • Caching: I finally made a proper global caching system! Its purpose is minimising the network traffic, both for launch speeds and general efficiency. It can get big at times, so I also added compression, using the Brotli algorithm for speed.
    The cache sits in front of every network request. The cache will try to minimise the cost of the network request where possible. Often, it will just find a cached version instead of using the network.

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.)

  • Parallelism: The launcher now handles each task at the same time, instead of in order. This is probably the biggest speedup so far.
  • Instances: The launcher can now handle multiple installs as instances! This means multiple setups can coexist, and users can pick between them. Think MultiMC or PrismLauncher.
  • CLI: Reworked a lot of the CLI as part of these changes.

Difficulties

  • Maybe I’m just new to C#, but I found a lot of the HTTP stuff confusing. One example is using the Last-Modified header. If you want to use this header, you need to access the response.Content.Headers variable. For all other headers, you access response.Headers.
  • Brotli compression also seemed unusually difficult. It only works on 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.

The cache in action

0
0
2
Open comments for this post

6h 34m 4s logged

Hyperlaunch

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.

Progress

  • Started on instances system for managing multiple installs. Like PrismLauncher or MultiMC.
  • Added to, cleaned up, and fixed multiple issues in the client manifest parsing system. The client manifest is what tells the launcher how to do its job, where to download everything, and how to start the game. Mojang sometimes changes the format. In the 4-month gap since last working on this, they changed how Java arguments are handled, and added a way for launch ingredients to only be considered on specific OS version ranges (for example, only allow a certain library on Windows versions newer than 22H2). Those were both really annoying to fix, mostly because the parsing code was messy. (Used AI to split classes across files.)
  • Added the ability to automatically download and launch Fabric modded versions. (see a demo below) (i really hope the video works, a cdn link should be below otherwise)

cdn video link

0
0
4

Followers

Loading…