Addon management system

Avatar

By MirceaKitsune 19 Jun 2016 18:38

Member · 38 comments

I can't tell whether Tuxemon is intended to be a single game, or a game engine for Pokemon like games. In any case, I might definitely want to use it as the later at some point, based on how feature complete the code gets and how much customization it will allow.

There is however one problem: There doesn't seem to be any system for maintain addons... which can add new maps or Tuxemon or players, while optionally depending on the default game or other addons. Further more, you don't seem to be able to select the starting map altogether, as the New Game entry in the main menu takes you to the default starting map all the time.

My personal suggestion is this: Right now, all resources are stored in the Tuxemon/resources directory. Why not allow multiple resource directories, which can have unique names and depend on one another? Names and dependencies could be specified in a json file located in the base of the directory, such as a depends.json. Minetest is a good example of this structure used successfully!

For example: Let's say the current Tuxemon/resources is moved to Tuxemon/mods/default and named "default". Someone wants to make a mod which adds a new set of Tuxemon... so they name the directory Tuxemon/mods/mytux and include a depends.json that tells to the engine this mod is named "mytux" and has no dependencies. Now someone wants to create a campaign using Tuxemon from this mod but tilesets from the default mod... so they put it in the directory Tuxemon/mods/mycamp, and its depends.json lists the mod as "mycamp" while specifying that it requires the presence of "default" and "mytux".

From what I'm seeing, the existing game can already be modified rather easily. But the way everything is structured into a strict set of directories makes that look more like hacking instead of doing so naturally. You also can't update various components individually, whereas this way every individual mod could be even maintained from its unique Github repository (cloned in Tuxemon/mods). Lastly, players could select which mods they want to enable or disable from a menu later on, whereas with the current structure they'd have to move files in and out of directories each time.

Last edited by MirceaKitsune (19 Jun 2016 18:38)

Avatar

By ShadowApex 20 Jun 2016 03:13

Lead Developer · 374 comments
MirceaKitsune wrote

I can't tell whether Tuxemon is intended to be a single game, or a game engine for Pokemon like games.

The Tuxemon project can be used both as a game engine and as a standalone game.

MirceaKitsune wrote

There is however one problem: There doesn't seem to be any system for maintain addons... which can add new maps or Tuxemon or players, while optionally depending on the default game or other addons. Further more, you don't seem to be able to select the starting map altogether, as the New Game entry in the main menu takes you to the default starting map all the time.

The starting map can be changed in ~/.tuxemon/tuxemon.cfg to point to any map you want, allowing you to bundle your own campaign with Tuxemon if you want to. In regards to "addons", while not fully fleshed out yet, the game will load resources for custom campaigns in ~/.tuxemon/data/. This includes downloaded maps, graphics, locale data, etc.

In the future there are plans to have an in-game custom campaign manager where you can download user created custom campaigns that are published, all of which will be downloaded into that user data directory.


Avatar

By MirceaKitsune 20 Jun 2016 12:03

Member · 38 comments

That's great to know... I didn't think there was such a system in place as of yet. Do you place custom resources directly in ~/.tuxemon/data/ or in ~/.tuxemon/data/ownsubdirectory/ (ideally)? And can it include original creature sets too, with original attacks and items and all else?

And yeah, I realized my mistake now: I was trying to edit tuxemon.cfg from the root directory of the GIT clone, instead of making one in ~/.tuxemon/ which is a mistake I should have learned not to do by now tongue