mhf-utils / mhf-api

MHF-API provides a scalable API for accessing and managing uncompiled mhfdat.bin data. Following clean architecture, it includes controllers, middlewares, and models for efficient handling. It integrates with New Relic for monitoring, ensuring performance, extensibility, and ease of development.
3 stars 0 forks source link

[Question] Database Driven vs Binary Parsing #2

Open xdorito opened 1 month ago

xdorito commented 1 month ago

Greetings! I was possibly interested in developing tooling around MHF and also saw the need for a more dynamic way of reading the games client side data. I did have a few questions regarding this project though.

1) Is the purpose of this project to offer a way for remote applications to query a central server to check for live changes?

Theres a lot of different versions of the game that are enjoyed, and sometimes the bin files have fan patches or custom changes to them for balancing purposes and that can result in a lot of confusion for players. So having up to data or accurate ways of conveying that information sounds extremely helpful. Like if this was hosted along side an Erupe server there could be tools developed or functions added to possibly discord bots that will be able to see the actual changes and not have to rely on Ferias for instance. Or if translation patches are updated etc.

2) If not - is there a want to add database functionality to remove the need to parse the binary file each query?

I don't have any kind of real understanding of the pros and cons of each approach, but I feel like it would be a lot easier to scale the API by parsing the data of the bin once or only when there are any changes, ideally in a database, if the intention is to make a remotely accessed API. Doing so would also sort of move the din parsing function out of the API tool and possibly into a separate library, but the API naming on this project makes me think that it will focus on an API

Feel free to reach out to me on discord (@xdorito) if you'd like to chat. I'm certainly looking for a project to work on when it comes to getting good clean data for MHF

alexis-piquet commented 1 week ago

Hey! Sorry for the late response, but I’m really happy to read your comment! 🤗

You got it exactly right: this API is fully focused on reading and managing binary files. Its purpose is to provide a centralized interface to interact with binary files, whether original or user-modified, and to establish a single, reliable and translated data source.

The project is designed with scalability and maintainability in mind, following clean architecture principles. The API is structured around well-defined controllers for handling requests, middleware for tasks like logging and routing, models for representing data structures, and utility functions that enable smooth integration with monitoring tools like New Relic. This structure ensures efficient request handling, extensibility, and ease of development, while maintaining high performance and monitoring capabilities.

That said, if the goal is to read a binary file, update the database, and version all the data, this is not directly the task of the API. This logic could instead be managed by a CRON task based on the same data-reading principles, but focused on updating the database rather than providing an API interface. Such a CRON task would handle data versioning in the database automatically, leaving the API available to provide real-time access to the most up-to-date information.


🥷 TOP SECRET 🥷 :

I use it on my personnal MHF Server with a software I've made to modify bin files. (It will be available soon under this organization like a new Launcher 🚀).