Welcome to Keen Software House Forums! Log in or Sign up to interact with the KSH community.
  1. You are currently browsing our forum as a guest. Create your own forum account to access all forum functionality.

Reduced Modding Conflicts

Discussion in 'Modding' started by jb_aero, May 18, 2016.

Thread Status:
This last post in this thread was made more than 31 days old.
  1. jb_aero Trainee Engineer

    There a couple factors of the modding system that seem to cause people to step on each others' toes, so I'd like to make some suggestions.

    1) Allow mods to use textures and models included in other mods. As is, a large number of mods exist that are copies of other mods except for maybe 1 line in CubeBlocks.sbc. Players like the work that other modders have done, but they maybe want this value or that to be slightly different, so they change the value easy enough, and there is no foul to the original modder because most block definitions are pretty similar to the vanilla block they are based on. However, a derivative mod does not have access to the models and textures of the original. If the user tries to use their mod as a "mod of a mod", including only the modified CubeBlocks.sbc and placing the derivative above the original, the block will be untextured and unmodeled ingame. The user then has to include the original models and textures, thus replacing the original rather than modifying it. Even worse, often these users publish their alteration without asking permission and with the only credit being a lazy "credits to the maker" (sadly verbatim).

    2) Separate creature spawning from PlanetGeneratorDefinitions. A PlanetGeneratorDefinition, as stated in the official guide, currently controls the visual style of a planet, how it is generated. The make sense to be defined only by the mod that added the planet, or in the case of a vanilla planet anything someone wanted changed would make sense to all go in one mod. However with the game currently so lacking in wildlife, modders who make planets have two kinds of hostile creatures to choose from, or nothing at all. Similar to the issue above, even when someone makes a creature mod (there are only two so far), there is no way to add it to existing planets. I've tested just now and making a mod that only includes altered XML and installing it overtop of the original mod which contains the data files still results in a featureless planet. In order to get modded creatures on modded planets, the modder has to assume they will exist when they create the planet, or someone else will have to copy the entire mod to just to change a few lines, exactly like was described above.

    Ideally if someone wanted just wanted to change a setting somewhere, they should only have to include the definition changes, not all of the assets.

    EDIT: forum reorganization must have me confused, didn't see the suggestions link before, woops!
    • Agree Agree x 2
  2. BlackRedDead Apprentice Engineer

    yep, could work like the "required items" function on blueprints
    keen just needs to add a notifier ingame that tells wich mods require wich ones, or even add them automaticly if you have them subscribed ;-)
    (in the correct order ofc!)
    so that if you want to just change some values you can copy the code, change it to your liking and just need the original mod with the models and textures to be added to required items - this way you could even alter several mods and just need the code! :)
  3. jb_aero Trainee Engineer

    My new suggestion for how this would work is a <Redefinitions> tag, as a counterpart to the <Definitions> tag that is used for everything right now. A redefinition would be equivalent to changing a variable(s) in code (wouldn't it be doing that anyway?), and would only require the information needed to identify the definition being modified, and the modifications themselves. For list-type items like the recipe of a block, the entire list would need to be included, but in that case it would still only be the component list in the redefinition, not all the other details about the block, so for example:

    Say I don't feel like transmuting battery materials into iron and would rather make use of a component provided by another mod (thankfully this at least can be done by name only). Instead of including that whole definition and the models and textures for this block, we should just be able to do this:
    <?xml version="1.0" encoding="utf-8"?>
    <Redefinitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <Redefinition xsi:type="MyObjectBuilder_BatteryBlockDefinition">
            <Component Subtype="SteelPlate" Count="1" />
            <Component Subtype="Construction" Count="1" />
            <Component Subtype="PowerCell" Count="2">
            <Component Subtype="Computer" Count="1" />
            <Component Subtype="Construction" Count="1" />
            <Component Subtype="SteelPlate" Count="2" />
          <CriticalComponent Subtype="Computer" Index="0" />
  4. Ronin1973 Master Engineer

    If I need to change someone's mod to make it work on my server or balance it, I will generally save it to a master-mod for my world that doesn't give a description of the mod or what's in it to dissuade people from downloading it to use outside of play on my server.

    The only issue I see with modding the live mod on the server is that authors like to update their mods. How that mod is updated is completely up to the author. So an update to a mod can break your server since the author isn't going to test your modded version. Having a static version of the tweaked mod is much more stable.

    I am all for giving full and proper credit to the author, though. I needed to mod a planet to make it work in my game. I posted the planet with a disclaimer that it was only for my server and also posted a link to the original work. It's not that hard to post a link to the real mod. Most people don't want the tweaked version.
Thread Status:
This last post in this thread was made more than 31 days old.