Preface
This is a documentation about implementation of in-game download feature in Endless Dream. If you’re hosting a bms package distribute service, you can learn how to make your service compatible in Endless Dream.
Overview
We call a http based bms package distribute service, as a “download source” in Endless Dream. When an Endless Dream user wants to download a missing song, the md5 hash will be sent to the server and the server should return either a redirect response to the direct download link or a data packet that contains the direct link.
Therefore, if a service wants to be compatible with Endless Dream, it has to either serve an endpoint that consumes a md5 of a sabun, and return the direct download link of the bms package that has that sabun, either directly or indirectly.
Details
- If your server has an endpoint that returns a redirect response to the download link directly like
https://www.foo.com/package/this_is_a_md5_hash, the users only have to put the link format:https://www.foo.com/package/%sin Endless Dream’s launcher menu. The%sis the placeholder for md5 hash. - Otherwise, your server is having a “meta query” endpoint that consumes a md5 endpoint and returns a data packet that contains the direct download link. In this case you can fire an issue in Endless Dream’s repo to ask the devs to write a download source included in Endless Dream.
Trouble in Heaven
Currently Endless Dream can’t download a package by sha256, only md5 is supported. This may not a problem it seems, but somehow BMSON based charts have no md5 in beatoraja’s implementation (technically speaking beatoraja calculates it, but it wipes it blank out of no reason), which means BMSON based charts can’t be downloaded directly, they can only be downloaded as part of the package that is downloaded with other sabuns.