What would make the game easier to mod?

Started by Tynan, June 10, 2016, 04:01:27 PM

Previous topic - Next topic

Fluffy (l2032)

There seems to be an oversight in Verse.ResearchMod...

This is the class that is used in ResearchProjectDefs to call C# workers to do fancy things, but the Apply() method on it is not virtual, so can't be overridden, and the specialAction Action field that is called in Apply() is private, so can't be assigned to.

(without dirty tricks, anyway).

Fluffy (l2032)

In fact, the whole researchMods field on researchDefs is broken -> Exception parsing <li>Fluffy_Breakdowns.ComponentLifetimeOne</li> to type Verse.ResearchMod: System.ArgumentException: Exception parsing Verse.ResearchMod from "Fluffy_Breakdowns.ComponentLifetimeOne" ---> System.ArgumentException: Trying to parse to unknown data type ResearchMod. Content is 'Fluffy_Breakdowns.ComponentLifetimeOne'.
  at Verse.ParseHelper.FromString (System.String str, System.Type itemType) [0x00000] in <filename unknown>:0
  --- End of inner exception stack trace ---
  at Verse.ParseHelper.FromString (System.String str, System.Type itemType) [0x00000] in <filename unknown>:0
  at Verse.XmlToObject.ObjectFromXml[ResearchMod] (System.Xml.XmlNode xmlRoot, Boolean doPostLoad) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.XmlToObject:ObjectFromXml(XmlNode, Boolean)
Verse.XmlToObject:ListFromXml(XmlNode)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
Verse.XmlToObject:ObjectFromXml(XmlNode, Boolean)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
Verse.XmlToObject:ObjectFromXml(XmlNode, Boolean)
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
Verse.<AllDefsFromAsset>c__Iterator1ED:MoveNext()
Verse.ModContentPack:LoadDefs()
Verse.ModContentPack:ReloadAllContent()
Verse.LoadedModManager:LoadAllActiveMods()
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:<Start>m__735()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__733()


hemebond

As a newbie Rimworld modder I was surprised that it was impossible/difficult to just override textures and items. I expected mods to "stack", overriding any resources/definitions lower in the mod list. This is how most games I've modded/played seem to behave.

Just changing a texture means having to put the file into the Core mod directory or duplicating the Thing definition in the new mod directory.

Neildmac

A new hotbar tab for Modded items, only available when mods are enabled, that allows for each mod to list its objects, orders or UI elements respectively

GiantSpaceHamster

The biggest thing holding me back from doing more modding is the lack of documentation. I've release one mod, and I'm fairly happy with the results, but it required a lot of time just learning what I could and couldn't do aside from the actual progress on the mod itself. I have a list of 8 or 9 more mods I might be interested in making but I simply cannot justify the time expenditure to figure out the modding API for everything in addition to the time it will take to do the actual mod logic once I know how things work.

I am aware of the modding info on the wiki and have been searching the mod forums but that is still time consuming and doesn't really cover any details, it's all very high level. What is needed is a lot more depth on what is available and what all the individual fields mean. For example, the existing Core 'mod' is insufficient because that does not (a) give you a schema that defines what the available options are in one place or (b) tell you what any of the fields mean or how they are used.

I'm not giving up on modding, but I certainly won't have the time and energy to make all the mods I might be interested in.

Birdy

More clear XML examples for item creation and effects.

Poroh

when game in dev mode, i want additional button in menu, 'reload mods' for faster reload my edited mod

how it looks now (game is always running):
fix your mod
switch to game
go to mod list
uncheck mod, 'ok'
wait
go to mod list
check mod, 'ok'
wait

how it can seen:
fix your mod
click 'reload mods'
wait x2

skullywag

Quote from: Poroh on January 18, 2017, 07:03:28 AM
when game in dev mode, i want additional button in menu, 'reload mods' for faster reload my edited mod

how it looks now (game is always running):
fix your mod
switch to game
go to mod list
uncheck mod, 'ok'
wait
go to mod list
check mod, 'ok'
wait

how it can seen:
fix your mod
click 'reload mods'
wait x2

Mods are not loaded correctly (in some instances) unless the game is restarted so all of that is moot currently. Just so you know I would never test a mod without restarting the game.
Skullywag modded to death.
I'd never met an iterator I liked....until Zhentar saved me.
Why Unity5, WHY do you forsake me?

adept17

#188
Categories for mods.
Any core mods like huglibs showing up in their own box instead of being dumped randomly in the modlist. This way it makes it easier to locate and activate that core mod.
Mods in the..mods list should be organized in alphabetical order. This would cut down on time wasted searching for hugs libs or any other Core. Failing that having Cores be auto placed at the top of the mod list once inserted into the mod folder would also be a big time saver.

System.Linq

Creating new Defs is... somewhat magical. I appreciate this feature intensely.

Goldenpotatoes

I noticed that linkableFacilities, the building comp that controls what said building can link to, requires the base object to reference what can link to it. Current issue with this setup is that any mod that wants to add onto this feature needs to override whatever is there first, at least with vanilla methods.

Wouldn't it make more sense for the linking object to have a list of objects it can affect, rather than having the base object have a list of objects that can affect it? It would definitely make it more mod-friendly when it comes to compatibility. For example, in a vanilla scenario, the vitals monitor would have the listing to say it can attach to the bed, rather than the bed having a list saying the vitals monitor can attach to it.

neur0breed

Quote from: Goldenpotatoes on January 24, 2017, 09:31:46 PM
I noticed that linkableFacilities, the building comp that controls what said building can link to, requires the base object to reference what can link to it. Current issue with this setup is that any mod that wants to add onto this feature needs to override whatever is there first, at least with vanilla methods.

Wouldn't it make more sense for the linking object to have a list of objects it can affect, rather than having the base object have a list of objects that can affect it? It would definitely make it more mod-friendly when it comes to compatibility. For example, in a vanilla scenario, the vitals monitor would have the listing to say it can attach to the bed, rather than the bed having a list saying the vitals monitor can attach to it.

I believe you can have the linking object have the list, pretty sure it works both ways, just like recipes. Both the recipe, and the workbench can have the recipe in the XML, it just depends on how you want that implemented.

Goldenpotatoes

Quote from: neur0breed on January 26, 2017, 07:58:19 AM
I believe you can have the linking object have the list, pretty sure it works both ways, just like recipes. Both the recipe, and the workbench can have the recipe in the XML, it just depends on how you want that implemented.

It works both ways, but it wouldn't properly apply the modifiers as far as I'm aware.

For a vanilla scenario, adding the list to the vitals monitor instead of the bed would have the bed applying modifiers to the monitor and not vice verse. I may be wrong on that, but I'm pretty sure that's how it works.

AngleWyrm

Vertical scroll bars for the research screen. Sometimes the research projects drop off the bottom of the screen and become inaccessible.

https://ludeon.com/forums/index.php?topic=30299.0
My 5-point rating system: Yay, Kay, Meh, Erm, Bleh

sirgzu

Sorry if this has already been suggested but loading a save from the command line would be nice