Suggestion General A Proposal For TaleWorlds to Provide an Open-Source Fork of Module Source Code

Users who are viewing this thread

Jance

Recruit
WBWF&SNWVC
Hi TaleWorlds!

While we appreciate the steps that have been taken so far in response to the open letter, myself and several other modders would like to propose a way we can more actively contribute to make Bannerlord more modding friendly and accessible. We saw this comment and thought it was a really good idea, so we decided to discuss it and refine it to make it more feasible.

Proposal Overview

We would like TaleWorlds to make an open-source fork of the official native/sandbox/storymode/ etc. module source code, in which modders could directly make the changes we desperately need without having to rely on TaleWorlds developing these changes themselves. The repository would be maintained by the leaders of the modding community, and vetted/capable members of the modding community, who would ensure that all changes adhere to professional/industry standards. The goal of this repository would be to compile a "blank slate" nuget package modders could easily build their total conversion mods against, instead of having to build against the official modules which are likely to stay modding-unfriendly for the foreseeable future.

How Would This Work?
Taleworlds would create a public fork of the module (not the FairyTale engine, although it would be very useful to reference) source code repo(s) inside of a github community (eg. this one, which already contains the unofficial modding documentation). The modding community would designate a group of maintainers comprised of our community leaders and lead programmers, who will be tasked with carrying out code reviews and establishing the standards/conventions for contributing to the repository. Once those standards and conventions are established, modders could then start making their own branches and forks to start contributing and fixing modding-specific issues. All changes would have to go through a code-review process (maybe TW develops can even participate if they would like) to ensure the established standards are met.

Every major release, we would simply be able to pull over the new changes made by TaleWorlds, and rebase the repository onto those changes, which would make adapting our code to these changes significantly easier.

The final product of this repository would be a library containing completely generic implementations of every class needed by modders, without the severe limitations of the official modules. The maintainers would then handle packaging releases, and distribute them through Nuget to be easily utilized by all modders.

Why do this?
By providing this proposed open source fork, us modders would be able to fix the problems critical to us without having to pester/rely on TaleWorlds to fix them themselves. This would also allow for modders and TaleWorlds to work in parallel, and TaleWorlds could focus on developing/refining the native campaign with little concern having to be made regarding modding.

By also having access to the module source code, we would be able to see comments made within the code, which would be a great substitute for the lack of modding documentation. There are countless other benefits that would come with having module source code access, such as having access to debug assertions.

Overall, we think this would be a fantastic solution to fix many problems that currently exist with Bannerlord modding with much greater efficiency, and would take a significant amount of pressure off of TaleWorlds to accommodate the needs of modders.

- The Total Overhaul Modding Community
 

MitchPTI

Sergeant
Would love to see this. I've always thought it would be amazing if the code were on GitHub and we could submit pull requests for bugs we've fixed ourselves or changes we'd like to see to make modding easier, but obviously the volume of requests could get out of control pretty quickly and there'd be no guarantee as to the quality of them. Having a team of modding community leaders maintaining the fork would be an excellent solution to that. They could stand between the devs and the modding community at large, carefully reviewing all the pull requests thrown at them by individual modders and ensuring everything merges together without anything breaking, before submitting their own pull requests with all the approved changes to the devs with agreements in place about how often they can do so, what's in scope, etc.
 
Good idea how to ditch a lot of dependencies on Taleworlds. If they merge modders' changes into their branch too, it would be better for everyone (but you know they won't do this). There's no doubt there are enough qualified people in the modding community (and forum moderators) that can vet the modders' changes responsibly.
Another interesting project could be building an abstraction layer on top of Taleworlds components and getting rid of Taleworlds completely, except for the poor souls who will be maintaining the layer throughout TW patching. (<- this is a joke)
 

Swyter

Grandmaster Knight
M&BWBWF&S
Yeah, not having to decompile the C# part of the game seems like a good idea.

Should make changes easier to diff, too.
 
Yeah, not having to decompile the C# part of the game seems like a good idea.

This.

Topic, we cannot be expected to reverse-engineer forever, yea? Modders need access to source codes just like in warband to do any efficient and meaningful work. +1

Having said that, I am already part of the group who have given up on the idea modding will get stabilized anytime soon and wont do any modding work until we are given stable and accessible foundation to work with. There is plenty like me, from what I hear. I mean - just because the fact that how terrible the current coding practices are turned sooo many modders off. That should be enough proof for TaleWorlds to take this thread seriously.

We specially need access to combat logic or something - at least the parameters of it. It has been a hot boiling debate ever since the release, at least bannerlord mods with varying combat designs can bring the audience they lost back.

So it can be like warband - modders saved the game from dying and helped TaleWorlds generate extra income and reputation for years. However, that only was possible with SOURCE CODES.

There is no news about any official coding support yet, is there? Does TW consider RE to be the permanent practice for doing any coding work?

(RE is considered to be illegal...too - but who cares)
 
Last edited:

Bakura

Recruit
Agree.

By doing so:
  1. Modders do not need to rely on reverse-engineer.
  2. When certain feature is developed, or certain bug is fixed by the community, TaleWorlds could consider merge it to the official, which I think would provide convenience for the overall development process.
 
Also, I would like to get @Dejan 's attention to here - if not already here.
Just poke him.
unknown.png
 

Dejan

Community Manager
WBNWVCM&B
Well I did. In several threads actually. Perhaps he just blocked me :razz:
I haven't, of course :wink:

This idea was rejected at the meeting for now but that doesn't exclude it completely as an option in the future. I'll make sure to relay your concerns with the current setup though and see if we can find a solution. Thank you everyone for your valuable input.
 

Bloc

Archduke
WB
This idea was rejected at the meeting for now
I'm guessing we are not worthy enough to know why it's rejected while it clearly increases modding development speed as well as resolve multiple issues at the same time.

I appreciate your effort in this - but vague statements and random rejections won't make this game any good. The reason why we have great mods out there is not that architecture is nice but because of the fact that modders are resilient to bad coding practices. But everyone, including me, is tired of reverse engineering and reading already weirdly-written code and wasting days or hours to "find a dirty hack" to make some trivial things work and crossing fingers that this won't change in the next update.

As I a modder myself, I would very much like to know what you guys are planning - because if this is rejected, there should be either something better in mind or the TW team started to gamble on their game quality. And please say something more specific than "Better documentation" if you are allowed - because better documentation doesn't mean anything without any proof of improvement
 
The idea is very good but i think for this to work that the game source should be open source (which indeed is not gonna happen), cause otherwise i don't get how people working for free can fix bugs of a private company's game and merge their work with them except if they are employees. And if work of modders and employess is not merged the two "games" will differ a lot with time and the modder's version might end better than the company's version. So great idea but kind of Utopia. This is too complicated toward work rules and copyrights, why it was rejected for me. Merging modders work with developers work is a Chimera! Revolutionnary idea, there might be a way to do this, rules can always be changed after all.
 
Last edited:

Bloc

Archduke
WB
The idea is very good but i think for this to work that the game source should be open source (which indeed is not gonna happen), cause i don't get how people working for free can fix bugs of a private company's game and merge their work with them except if they are employees. And if work of modders and employess is not merged the two games will differ a lot with time and the modder's version might end better than the company's version. So great idea but kind of Utopia. This is to complicated toward works rules and copyrights, why it was rejected for me.
Fixing bugs on behalf of TW isn't the main part of the idea - which I also agree that won't work and that's why my initial proposal was not related to that.

My proposal was - make gameplay code read-only open-source. By read-only, I mean it won't get any pull requests from the community and it will be only maintained by TW only - it will be merely a readable/cloneable version of latest stable branch.
We, as modders, will only see code changes and updates on that code repo and that's all. We can download the source and build from that source to create identical empty clone "Native" DLL files. And let's say modder wants to change something in multiple areas of the code: He can simply change the Native Project's source code and build his not-so-native dll and provide that for his Total Conversion mods. This is exactly how that works in Warband Module System. Currently, Bannerlord modding is patch-based( and even that one is a bad-patch-based solution because of the funky restrictions ) and that's a no-no for many of the Total Conversion mods.
So you might say, Well do that now? Since DLL's are there and possible to reverse engineered? - and I would say "Yes. It is actually possible. I can create a huge Visual Studio Project with codes completely extracted from Native and Sandbox DLL's via DnSpy or dotPeek and compile my own Native-ish DLL's, provide that as a mod by saying "disable Native from modules, use BlocNative instead" but do you think that's a feasible idea? It is not. It also requires me to reverse engineer their DLL every single time from the ground zero whenever they push an update. Even if the update itself is 4-byte update, I still have to do that - which is time consuming, and unreliable. But if I had the code base, it would be a simple git pull and rebuild.

But anyway, apparently we are not worthy enough to know why this is rejected - or not worthy enough to know what they will do to "make it easier" if not by this. Seeing that TW did ABSOLUTELY NOTHING after stating that they will take a look at the "modding" issues is also not giving me a comforting signal. TW doesn't deserve it's modding community at all right now and if this goes like this, the modding community will start to think the same and stop wasting their time on this ungrateful company and game-engine starter project like game.
 
OK! If i understand well you simply want to have "access" to gameplay code to have the possibility of studying it and undertsand how it interacts. That seems legit! In this case i have no clue why TW don't want, except maybe the idea of making a part of their code public. Thx for explaining me in detail.
 
Top Bottom