This is not an answer to your questions just a brief overview of my experience.
I kind of did this for my App, which is a app for a Pokemon homebrew to D&D (super nerdy I know. I wrote a blog post about the app a while ago).
What I did was to create a python app which they (meaning the user of the mobile app) can use to put in all the information manually needed for a Fakemon, and believe me there is a lot. Before it is saved the app validates it against some json schemes then packs it up. With it you can create a new Pokemon or edit an already existing one. The user would then send the created package to me, I would validate it (because of Google and Apple user agreements/restrictions) and then upload it to the package library, which is simply a github repository. It’s important to note that if I could chose freely I would not have liked to do it this way. I would have liked them to be able to have a zip file on their phone that they could read in (relevant to “The first hurdle”). But there is no extension for finding files on Android/iOS so that wasn’t possible, this was the only reliable way to do it. “Luckily” I only have about 500 DAU and not that many people do these packages so I do not have to validate and look through that much.
The mobile app have a “Fakemon Package” setting where you can specify which package you want to download (I put in a restriction so you can only use one, then I don’t have to resolve what happens if they use two conflicting packages). If you select one the app will download it and then restart (to reload with the new data). After a restart the data is there to be used. Relevant code here.
The package consists of a json file and (presumable) images of the Fakemon. When a fakemon package is enabled/selected it checks if there is a custom path defined if there is it loads the image with file:readand uses gui.new_texture to show it in the app. Relevant code here.
I have many excuses why my code is so bad here are a few: I am not a programmer by trade, the programming I know is self taught, this was only meant to be a small project, it’s only a hobby project and I get no money from it, I have very much a “just make it work” mentality with the project. ![]()