Electroblob's Wizardry

Electroblob's Wizardry

18M Downloads

Suggestion: Customizable Spells via Configs to make balancing Modpacks easier.

SirAron111 opened this issue · 9 comments

commented

Minecraft versions: 1.12.2

Suggestion details:
Suggestion: Customizable Spells via Configs to make balancing Modpacks easier.

I did mention this once on the Discord already but I tough I should make a proper post on the github here.

Making Modpacks is hard if things aren’t configurable and most Mods are balanced towards being implementable into Minecraft alone. That’s why having configurability options via configs is a great way to open paths to customize mods towards smooth transition with other mods or progression ideas!

In my case, I made a Scaling Difficulty Modpack where monsters get so much HP/Dmg and other tricks with Base Raids, Dimensional Rifts and everything that the player needs to Skill himself up like in an RPG. I configured most sources of DMG or other effects like not going over certain stats or only stacking buffs to certain amounts to balance it out, as well as most dmg sources via mod configs and others possibilities.

With the Electroblob's Wizardry - 4.1.4 - MC 1.12.2 I could only give spells a general multiplier to spell dmg so I made it an x6 this sadly makes early game novice spells super powerful until midgame and late game Master spells mostly useless. So I wished for a per spell configuration to be able to set values like cool downs, size, range, dmg, mana consumption etc by myself.

In the Electroblob's Wizardry - 4.2.0 - MC 1.12.2 to my surprise there was an announcement that exactly what I wished for would be implemented via json files. But due to a little oversight the intended way didn’t work. And after that a lot of bugs where found so they obviously had to be squished first.

So I wanted to ask if there is going to be such a configurability via the spell json files, be it in the form of some kind of craft tweaker integration or via a config option that when turned to true (default false) to have a subfolder generate in the configs folder where all spell jsons get dumped so that people or packmakers can adjust the values in these json files and the mod will access these files to determine what dmg / cool down / range etc spells have. I mean the jsons are already there in the jar I think in a format that is usable for this idea.

Since EPWiz has an internally balanced scaling system via the Novice to Master spells which makes it great for Normal situations, In return makes it hard for special situations like this since if left untouched all spells will feel like novice spells at just around difficulty lvl 10 (goes up to 400 or more) and the x6 to dmg is more of a brute force attempt to make it a sub-viable option. But still keeps the system linear just elevated on all ends and not parabolic like it would be needed (individually setting novice spells low and going up to master high with tweaks to mana and cooldown etc etc)

Beeing able to adjust values like this would not only help me but probably other packmakers with whatever idea they come up with, and people who want to balance the spells a bit for private servers with friends.

In no way am I saying that the mod is badly balanced its realy realy well made. I just love having things to tweak and bend to my will for the sake of progression and story and I bet there are many more people who wish to be able to say for example: I want magic missile to be an introduction spell nearly no range and dmg with medium cooldown, but blackhole which you get after beating boss x does like tons of dmg but has a gigantic cooldown/mana consumtion in return etc.

No rush taught the bug fix spree is top priority right now XD This post is more like a reminder for later when the basis works great again.

GZ
SirAron

commented

Sorry, didn't see this (it's sunk under a sea of other issues!) I believe black hole and arrow rain don't currently support damage modifiers. Frost axe should though, I'll get that fixed.

Edit: Closing this and making a new issue because the original enhancement is now fully implemented.

commented

Always good to log these things! As we discussed on discord I think the preferred option would be CraftTweaker support, which may take a bit of time to do but is more flexible in the long run. Failing that, I'd probably have the spell JSONs generate in the world folder and get read from there, effectively mimicking the 1.13 data pack system. Any thoughts are welcome as to which solution people would prefer.

commented

If the json dump can’t generate and read from configs folder than at best would be the craft tweaker implementation somehow. Since generating stuff from a world folder is bad in that sense that you want players to generate their own worlds folder with save files in them. Adjustments to be read and configuration should always be done via the configs folder as it’s the saves and easiest to read from as well as the main folder that gets shipped with modpacks when uploading them to curse for example. The second most viable option would be the scripts folder which the craft tweaker system uses. But never put things in the world folder or in a single save folder it prevents player’s new players from making their own random world and causes lots of problems on servers. (That’s why not many people liked the datapack system of 1.13 as it has many flaws when combined with mods that don’t use it and other things)

Lastly the folders I can for example ship with a modpack .zip are:

1: configs (containing all customization changes to configs the modpack maker made so people get these)
2: mods (unlike the configs folder this wont contain the actuall files in the zip it will just be the mod list and these mods will then be downloaded from curse to the player who installs the pack) and its not allowed to ship jar files with changed stuff in them or mods that aren’t listed like Optifine or illegal forks.
3: resources (contains custom resurces like pictures for custom backgrounds soundifles etc used by mods like custom main menue)
4: structures: contains schematic data for certain world generating mods like recurrent complex and some others as well as custom structures.
5: scripts: (the .zs files in this folder are used mostly by crafttwaker and similar mods to add/remove recipes and change a few things around as well as alter stats like for tinkers tolls and armor etc.)

Most other folders cause a lot of conflicts when shipping them and mostly lead to the upload being rejected by curse. For example shipping a texture pack needs to be done separately and players would have to separately download it (more shenanigans to confuse the poor end user (player))

Or shipping the saves folder which contains the world folder of every separate instance the player makes just to add changes to one world would lead to a player that deletes the one world to make his own not getting the changes or simply having a folder that leads to the pack being rejected as the automatic system and the admins don’t know how to handle this.

Also if the stuff generates in the world folder this would mean that the end user so the player who downloads the Modpack would need to do the adjustments himself after he created his world which is ridiculously complicated. Players want to download the mod pack run it up create a world and just play any more steps is way too hard. I know from my experience with my Modpack how many people of a lower age have trouble even hitting the correct download button to play the same version their friend plays and other random things that seem simple to the ones who know them but confuses the heck out of end users.

Generally shipping any other folder than the ones listed above cause’s trouble and won’t get handled properly.

So if you are going to make spells customizable DO go for a sub folder in the configs folder containing the spell stats to simply read them when they get changed or some kind of craft tweaker scripting integration. At least for 1.12.2 I don’t know if the newer versions get treated differently in the system or have other new functions like the datapacks.

commented

Interesting. I understand what you're saying about the end users, however I don't at all like the idea of dumping all the spell JSONs into the config folder because that's not how other mods do it and it means you can't have world-specific settings.

How do data packs fit into this though? Does CraftTweaker edit the base recipes/advancements/whatever and just get overridden by data packs, or does it also have the power to edit data packs themselves?

I always favour using vanilla systems where appropriate, and data packs are designed for this exact purpose, so ideally I'd like to integrate the spell JSONs into that system when I do get to 1.13. CraftTweaker is overkill if you're not releasing a modpack, so it would be nice if people can choose which system to use based on their needs.

commented

MM being able to choose on their needs would require more than one method to use to even have an option to choose from.

And as data packs aren’t a thing in 1.12.2 as they where an attempt from minecraft/windows to make a similar alteration of content to the game that mods do for 1.13+. Which they can conveniently sell as downloadable content alongside maps and textures, be it to bedrock payers or pc players! And even by the time you port the mod to 1.13 or 1.14 using the data pack method will be difficult to implement…. I mean if it works it works and no one will complain.

But as it stands in 1.12.2 if you want to give players these options your only way of doing so accessibly for modpacks and end users is one of 3 options (well t least that I know of if you know more ways than pleas enlighten me)

1: Adding the settings for every spell directly into the main config file ebwizardry.cfg by default.

2: Using crafttwaker or similar to enable simple scripting like for example the conarm mod does to alter stats https://github.com/TheIllusiveC4/ConstructsArmory/wiki/CraftTweaker here an example of my script for armors. https://pastebin.com/s8wJKyNb As an end user myself I really liked this easy to use method.

3: As for the config dump I mentioned it’s more of a way to make use of the .jsons you already made which were intended to be used for the data packs… you can use them for 1.13+ in datapacks but for 1.12.2 the best way to make use of them as they already exist would be like this I will show it with pictures since I suck at explaining.

Examples would be the yoyos mod... it generates the .cfg as all mods do and nothing else.
Unbenannt
until a user wants to edit stuff he can turn this option in the .cfg to true and on the next loading of the game a sub-folder will generate in the config folder.
Unbenannt2
Unbenannt3
The folder contains the .json files and as long as the option in the .cfg is turned to true the mod will read from these files instead of the standard ones… by default they contain the normal values but they can be edited like any other file and the changes will be read on game load like normal onfigs would.
Unbenannt4

Well anyway these are just examples of ways to alter specific stats I know of that do work in 1.12.2 and 1.7.10 from my experience as modpack maker which I found rather easy to understand and easy to use even when I just started out and didn’t understand anything more complicated than the fact that there are options one can turn to true or false XD
Not saying datapacks are bad I bet when many mods turn to 1.14 at some point some will use them and I will get behind them to make stuff work. But in 1.12.2 I don’t think it’s possible to use them I mean I did try and even asked you how it should be dine but ye you know the end result that lead to finding out they are a 1.13+ thing.

commented

That yoyos thing is interesting, it means the config doesn't get cluttered with files unnecessarily. However, it means that once you've dumped all the JSON files into there, if the originals are then updated (by me, in a future release), the new values won't show up even if nothing was changed in the config-dumped files. It would be like copying all the vanilla resources into a resource pack even though you haven't changed many of them, which then overrides packs below it in the list.

I think I know how this should be done now:

  1. Allow spell JSONs to be read from a folder in the config and let people manually copy the ones they want into there to override the defaults
  2. Look into CraftTweaker integration for this so it's quicker to bulk-edit the files
  3. Potentially migrate the files from the config folder to data packs (or have both) once I get to 1.13

Step 1 can be done pretty soon, it's easy enough to add.

Edit: apologies for the lengthy discussion, but I think challenging an idea helps to refine what's really needed and why.

commented

XD ye I really like talking about such stuff as you may have noticed XD But I am glad you got what I wanted to explain and even improved on the idea well all I can do now is wait and see how it turns out.

commented

There is one more thing that came to mind. For example let’s say the customization of skills works and all is finished, I set it up to be higher dmg adjusted ranges etc and most of all adjusted cool downs. So the spells seem to be more impactful but take way longer to recharge to make them different to spamming sword hits. If I were to set the cool downs to something like that the leveling of wands would take Ages. Especially with higher magic costs as well! So the thought I had is that the needed amount of wand experience needs to be adjustable as well for each tier. Thought this could be done with a simple config option.

commented

@Electroblob#4093 the new json config works great. I added them to the configs/ebwizardryspells/ebwizardry folder and all things adjustable seem to work fine now I just need to go over them now to refine my rough adjustments. Only one thing are some dmg spells not adjustable like black hole dmg or arrow rain? For example frost axe has no dmg modifier but fire axe does in the json.