mauzel / mproxy-gbf

GRANBLUE FANTASY CACHING PROXY
MIT License
4 stars 6 forks source link

High quality BGM replacement #12

Open ckx opened 6 years ago

ckx commented 6 years ago

For a long time we've been talking about making a "High Quality BGM replacement pack" using mproxy-gbf to serve higher quality bgm in-game.

I was able to get this concept to work trivially by pointing a remote BGM asset URL to a local audio file of my choice in the cache directory.

The challenge arises in the many battles that chunk BGM into various smaller loops and progress through a song as you progress through the fight. This is something I didn't really look into yet.

AkagiShiroe commented 6 years ago

you mean mod-compability?.. i was thinking about inserting some library to seek "certain part" from file and cut it (store it to RAM) then send it as package but.. im not that experienced on programming

ckx commented 6 years ago

No, I mean that the cached version of BGM assets would be higher quality than the actual BGM assets served by gbf. It's already "compatible" with the proxy, you can swap any file you want in the cached directory.

AkagiShiroe commented 6 years ago

*urm so u mean adding some "modlist" to replace cache?.. kinda hot-swapping files make me remember texmod. (make gbf-proxy prioritize modlist over received request and .cache_list)

ckx commented 6 years ago

Not necessarily, you can already replace cache simply by editing entries in .cache_list. There isn't really a need to hotswap, the replacement files can just rest in your cache directory.

It's true that a framework for doing these type of cache replacements would be preferable to just manually editing the .cache_list file, but that would be a separate issue - this issue relates to the process of serving high quality BGM assets through mproxy-gbf.

mauzel commented 6 years ago

There are two hard parts at a high level about this issue:

  1. Someone needs to do the work of figuring out all the slice points in every battle music.
  2. Making a framework which looks in a "custom cache" before hitting the normal cache.

These are very simple concepts.

1 will take a lot of work. I think one way to do this is to make a tool which statically cuts up someone's MP3 rips of the GRANBLUE FANTASY BATTLE MUSIC album into the pieces compatible with the game. This approach allows us to avoid illegally distributing the game's music. Then, there will be a lot of grunt work in figuring out all the slice timecodes for every song.

2 isn't much work but I want to get the design right, so it's not something I'll implement immediately.