Internal or External Tools?

I’ve recently been working on a collection of tools to aid avid modders during their creation process and they’re not too far from release. I’m starting work on the aesthetic nature of the tools now the basic functionality is there and I was wondering, would you prefer to have these tools accessible externally as an application or internally in the game client? (Like @chessmaster42’s recent task manager mod: [MOD] Task Manager)

Note: I can make both versions available if there is demand for both…

Thanks!

A lot of the difficulty I find with creating item mods for the game is that the game only reads the mods once. When a world is created.

Are you able to write a tool for use in game that overcomes that? Most other ingame needs for mod testing seem to be covered by the debugging tools mod provided by Radiant, the console commands and the debugging hotkeys.

Doubt it. Unless it changed, all JSON data is cached in lua and C, so it’s semi-impossible to reload a file, not to mention that you can’t really read other files nor are the components accessible enough already to do everything an entity definition/manifest can do.

2 Likes

So, wait… If you make a game model you have to generate a new world in order to test/use it?

EDIT: Also, and if for example a mod was release and then an update to that mod was further released you would be required to make a new world to use the update?

Generating a fresh world quickly is why the miniworld mod exists. Even with that minimal testing environment, you wind up reloading quite a bit to get everything perfect.

It makes sense in that you can be sure that any given world won’t change the moment a version update happens. But the negative side is any problems can’t be fixed in a pre-existing world.

2 Likes

A simple check can be used to prevent any unnecessary damage to existing worlds, the mod manifest.json even specifies version, doing a simple check against this, although a primitive check would at least be a start.

   "info" :{
      "name" : "Microworld",
      "version" : 1
   },

Refreshing? Refreshing the current world/save or having to create a new world? I’m not sure, but I may have misunderstood your original point.

What I took from your original statement was that; every time you need to test any changes made to a mod you have to do so by creating a new world, as opposed to testing in a world previously generated prior to the changes, right?

Miniworld just creates a world from a script every time you start Stonehearth. I meant reload in the sense of reloading Stonehearth, not reloading a save.

I don’t know that the version tag in the manifest even does anything right now. The manifests in Stonehearth.smod and Radiant.smod are still tagged as version 1, which suggests to me they do not. If someone else knows otherwise, I’d love to hear about it.

Except version is, as far as I know, the version of the API, not the mod. It’s supposed to be 1, for the time being, not any other value - although the check right now is simply “value is set”.

2 Likes

Yes. To check changes and additions to a mod, you’ll have to start a new world.

Also, regarding internal or external tools, I’d prefer something like the debug tools. But it depends, some functionality might be better as an external tool, like the unofficial SHED, for example.