Welcome

Please register for Total War Access to use the forums. If you're an existing user, your forum details will be merged with Total War Access if you register with the same email or username. For more information please read our FAQ’s here.

Categories

This might be the most disappointing modder community I have encountered. (Not a troll post)

KeenKrozzyKeenKrozzy Registered Users Posts: 4
I'm not trying to flame anyone with this post.

I have been interested in TW modding for a while now, and I decided this week end to finally get involved.

Before I continue I need to make it clear that I am a programmer, not an artist. So for the rest of my post when I refer to "modding" I am talking about changing and creating mechanics.

Now, please feel free to correct me if I get anything wrong here (although I suspect I will get 0 responses to this post). The first thing that really surprised me is that almost all of the modding done here is just changing values in tables using CA's tool. The only way to actually change or create the way the mechanics operate seems to be via LUA scripts that get compiled and ran by the main TW executable.

So, just to get familiar with the variables, I thought maybe I should just start off making a simple "DB Record Change" and upload it to the steam workshop. So let's see what official and community ran knowledge bases are available....

Where is the KB?

Are you telling me that everyone just skims through these tables for hours on end changing values and testing them based upon the vague description fields in the records? Where are the sticky posts with lists of what methods read these values? Has nobody ever decompiled?

OK so I thought maybe the LUA scripting community is like a separate thing that has their own forums or discord. Surely there must a horde of KBs, Tutorials, maybe some source code.....

So maybe my Google-foo has just been way off today, so PLEASE speak up and correct me if I'm wrong about any of this, However it appears that the community here is just.... sad?

Comments

  • kilijankilijan Junior Member Registered Users Posts: 412
    Lots of complaining, not a lot of suggestions.
  • KeenKrozzyKeenKrozzy Registered Users Posts: 4
    kilijan said:

    Lots of complaining, not a lot of suggestions.

    OK here is a good suggestion:

    Have the game engine load Libraries that are stored in a "Mod" folder.

    Release an API. It doesn't need to be a complete library or source code. I know they probably have a very strict policy on keeping their source code secret. The most we can do is decompile without any of the original class, method, and variable names... Which is basically a million lines of gibberish.

    If we could just reference a DLL and have an actual API where we could use all of the surface level methods, the TW series would probably boom into a "golden age".

    I mean, they are pushing this LUA scripting thing, which is cool, but how do they NOT release a simple method doc for it?? The LUA is clearly interacting with the C++ library, just copy and paste those damn classes at the very least and let the community make its' own documentation.

    It's almost like CA doesn't want to be bothered with modding at all, but they have someone spent 1 day per month working on their "modding tools" just to keep the pack of wolves at bay.

    Here is an idea:

    Just give us more access to the surface level methods, and let the community make their own modding tools. It's what you call a win-win situation.
  • kilijankilijan Junior Member Registered Users Posts: 412
    Good suggestions. I am not a modder but there is a community mod framework on the workshop. I'm not sure what it contains.
  • MrFestisMrFestis Registered Users Posts: 52
    edited February 22
    Not sure exactly which installment of Total War you've begun modding, but it's true that modders (including scrub-level modders like myself) would have loved to have more tools at our disposal to create great mods. I'm not a programmer like you, but here are just a couple things that I know are desired by modders.

    1. A debugging tool/crash report. Currently, you have to jump into the game to try out your mod in order to see how it's working. For small mods this might not be so bad, but for larger mods like overhauls, this can be quite tedious. And, without any report explaining what may have caused a crash, there's no easy way to understand what is causing the problems you may have with your mod.

    2. An Assembly Kit that properly shuts down after closed (a tiny one, but gives modders unnecessary headache every once in a while). Many use programs like PFM to edit tables and such when making mods for Total War, sometimes in parallell with the Assembly Kit. You can't work in them simultaneously, since if you save a table in PFM while the ASSKit is on your mod gets completely deleted, but even if you have closed down the ASSKit beforehand you might not have realized that the ASSKit is notoriously bad at ending the process upon closing the window (meaning you might be in the process of creating a great mod, just to realize all your hard work is gone upon saving in PFM).
  • GigiauzGigiauz Registered Users Posts: 25
    @KeenKrozzy I agree with you totally. I'm not a programmer, I'm a graphical modder and in the recent past I tried to make an interesting AOR system.
    But in more than a year I felt that modders community lacks in 2 things:
    1- lack of modding tools (PFM is a great tool but it needs to be updated the big problem f.e. is the wsmodels corruption or vfx files)
    2- lack of people like you that could share detailed and updated modding tutorial.

    The modders community have great ideas .... but we need updated and working tools.
    I'm with you like an artist, not a programmer ;)

    @MrFestis: Yeah... CA KIT and PFM cannot run simultaneously (if you are working with a pack located in the data folder).... I lost many hours of work too ... now I work in a different subfolder .... a big mess.
  • DandalusXVIIDandalusXVII Registered Users Posts: 2,950
    Well said original post. I support you 100%.
    +1
  • KeenKrozzyKeenKrozzy Registered Users Posts: 4
    OK, so let me explain a little more for people that aren't programmers.
    Maybe what I'm saying above will make more sense.

    Let me use my modding from the game Rimworld as an example.

    Rimworld uses the Unity engine and it is coded in C# using the .Net framework. This is a managed code that compiles most of its' meta data. Don't worry if you don't know what any of that means, I will show you why that makes modders happy.

    In pic #1: I have an assembly project where I am simply referencing the same assemblies that the game runs on. This allows me to access and use the same code. I have put red dashes next to some important ones: "0Harmony" is just an assembly that helps modders and plugin programmers alter, overwrite, or add code to .Net software. "Assembly-CSharp" is the actual game code by itself. "UnityEngine" is the actual engine code by itself.
    https://drive.google.com/open?id=1famWCarMgsjHpdA639S4Gi0VZAJhGTCH

    In pic#2: Because this is all managed code, I am able to browse the classes and members. Here I am looking at a Class and it's Methods. Hmm. I wonder what that code is actually doing though?
    https://drive.google.com/open?id=1R6ECFxK9ms6AY9D-biERCm9mF7G7zURh

    In pic#3: Here I am using a decompiler on the actual Assembly-CSharp.DLL file. Awesome, now I can see exactly what each Class is doing. Time to make my Mod. Let's add more functionality to how this drop pod info is displayed.
    https://drive.google.com/open?id=1-8xH4c-YIjMyRNZ8BRDgBW-40HyQrMHm

    In pic#4: TW uses the Warscape engine and it is coded in C++. This is handled a bit differently. C++ generally compiles directly to native machine code and ditches all of that meta data. This includes Class and Member names, along with anything that looks remotely logical. Here I have decompiled TW:WII.
    https://drive.google.com/open?id=1ixTQ4fMnyWJEXtzhoOQ9bkWmSks94S6w

    So, can you understand what that code is doing? Well, technically, you could. However, it could potentially take a small team of programmers many months of work before they would start to get anything usable. We are talking about making free mods for the community here, so nobody is ever going to do that much work for free.

    Now, CA has all of the Classes and Members available just like in my C# example. They would literally speaking, just need to auto-generate some documentation for us. However, that's no good either because TW is not setup to load any additional assembly files just because they use the same libraries (Or maybe it is? We would not know.) .

    Again using Rimworld as an example, they added support for more "simplistic" modding via XML scripts. CA has done the same sort of thing by allowing us to make LUA scripts....

    Here is the Difference between the two!

    Us programmers can actually see the code that handles the XML scripts in the game's assembly. We can easily support the Rimworld modding community by providing them documentation for their scripts. Their is a beautiful and strong relationship between the programmers and the scripters.

    Looking at TW LUA scripting, there next to zero documentation. What little information that is out there is created by looking at the existing scripts that CA includes and just guessing what the method calls do, followed by extremely tedious testing.

    All CA would have to do is throw us a damn bone. Just auto-generate some documentation, at the very least, only the classes that are interfacing with the LUA scripts. We don't even care if you release stuff in a big 'ol fat TXT file, let the community create the pretty and organized documentation.

    I just realized I've spent about a hour typing this up... I'm sorry if there is any grammar mistakes or programming terms/logic that isn't technically correct... remember that I was trying to keep things very simple for non-programmers to understand.

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file