Modding Bannerlord - Questions

Status
Not open for further replies.

horns

Regular
M&BWB
Best answers
0
Here we go:
  • How is mod priority handled if two mods are installed and are changing the same data/functionality? (Load order or some attempt at a merge?)
  • Will 3rd party C# libraries be supported? Is this decided by what is shipped with the game client or can it be part of a mod?
  • What configuration options will exist on the server? (Custom factions using existing assets, for example)
  • Will there be a way to remotely control a server through something like a web api or web hooks?
  • What type of moderation and admin tools will come natively with the server?
  • What network commands will exist to update both client and server? (Spawn item network command was added to allow armor to be updated on clients as well as server in warband)
  • Will modding be handled through steam workshop?
 

Maroon

Grandmaster Knight
WBWF&SNW
Best answers
0
  • How is mod priority handled if two mods are installed and are changing the same data/functionality? (Load order or some attempt at a merge?)
I think this is a vital question as well. We've been told that multiple simultaneous mods are supported, but I'd really like to know in detail how that works so that we know how to create our mods to ensure maximum compatibility with other mods.
 

Eärendil the Mariner

Subforum Moderator
WBWF&SM&B
Best answers
17
Regarding Channel Packing, which textures should use which channels?

Will it be possible to blend textures with different UV Channels? (To for example have a > 0-1 UV space texture be blended with a unique 0-1 UV space texture)

Will it be possible to switch between different UV tiling values based on distance? And also switch materials?

How many channels can be used for vertex painting materials?

Flipped Y-Channel Normals?
 

Maroon

Grandmaster Knight
WBWF&SNW
Best answers
0
Regarding Channel Packing, which textures should use which channels?

Will it be possible to blend textures with different UV Channels? (To for example have a > 0-1 UV space texture be blended with a unique 0-1 UV space texture)

Will it be possible to switch between different UV tiling values based on distance? And also switch materials?

How many channels can be used for vertex painting materials?

Flipped Y-Channel Normals?
 

Iberian Wolf

Knight
Best answers
0
1) Is there any limit regarding the size of the campaign map? What about the number of groups of agents (like lords,looters) or villages, castles and cities?

2) Are we able to add different music/sound effects to be played when the player is specifically passing through a certain area on the campaign map?

3) Will we be able to somehow name rivers/mountains/forests etc, like using a transparent font as we zoom in ?

4) Are we able to make a map with pre-made companions only (I understand the majority of the companions are generated). What about the city notables (business owners, quest givers...)?

5)Regarding Skills and Perks - will we be able to modify/rearrange the skill tree in a way we don't have to choose between 2 perks (like either "Horse Killer" or "Footwork", in the Polearms skill tree)?

6) Will we have (or at least be able to) create items like books or artifacts and relics that would give the player or the kingdom some sort of bonus?

7) Will we be able to mod the game in a way we can completely remove death and disable aging, heir system and random characters?
 

Mark7

Knight
WBNWWF&SM&BVC
Best answers
1
- Will it be possible to load different global maps during the game and switch between this?

- How are siege weapons made at this stage? Is it prop with vertex animation? Or is it a skeleton body?

- Regarding the record of movie clips, will it be possible to arrange events/triggers directly on the timeline? And is possible to switch between cameras?
 

MisterOutofTime

Recruit
WBVC
Best answers
0
Will we be able to add C# Library ?
Yes

@horns
Here we go:
  • How is mod priority handled if two mods are installed and are changing the same data/functionality? (Load order or some attempt at a merge?)
Some stuff is merged, some stuff goes by loadorder which atm is bound to A-Z afaik
if u refer to an GUI by name it searches all active modules, mpcharacters get merged, etc it really depends on the part of the game engine accessing the modules folder
  • Will 3rd party C# libraries be supported? Is this decided by what is shipped with the game client or can it be part of a mod?
They are Supported, u just have to distribute them with your mods
  • What configuration options will exist on the server? (Custom factions using existing assets, for example)
Is Possible, just load your own Module and maybe ur own gamemode
  • Will there be a way to remotely control a server through something like a web api or web hooks?
ok cant answer that , theoretically u could write a mod to do that,
  • What type of moderation and admin tools will come natively with the server?
u can use commands to kick/ban players, there will be an admin panel where u can change settings of server ingame like max players, next maps, friendlyfire etc, if u enter the game with normal password u a player, if u enter game with admin password u are admin

there is also a Poll System where players can vote for gamemode,map,kick,ban etc

  • What network commands will exist to update both client and server? (Spawn item network command was added to allow armor to be updated on clients as well as server in warband)
You can create your own Network Packets, "networkMessageHandlerRegisterer.Register"
there are a lot of them
SetAgentHealth
SetPeerTeam
EquipWeaponFromSpawnedItemEntity

etc
 

MisterOutofTime

Recruit
WBVC
Best answers
0
@lolxd
1. can you do PInvoke a DLL?
yes
2. are native mscorlib such as system.net.sockets and filestream available?
yes
3. Is it possible to attach Bannerlord process and step through managed code?
yes
4. Is it possible to query the AI state and party in the campaign map?
yes
5. Is it possible to call external program and run them in background? (useful to run dedicated server on demand in background)
yes

6. How do you code the UI?
view templates like: Modules\Native\GUI\Prefabs\Options\SPOptions\KeybindingPopup.xml

on a screen u render gauntletlayers which have a viewmodel for datasources attached,
if u know dotnet xaml GUI's u will know Bannerlord UI's mostly

C#:
  var sView = ViewCreatorManager.CreateScreenView<HostOptionsScreen>(new SPHostGameVM(lobbystate));
ScreenManager.PushScreen(sView);
                        

 this._gauntletLayer = new GauntletLayer(4000, "GauntletLayer");
            this._gauntletMovie = this._gauntletLayer.LoadMovie("CustomHostGame", this._dataSource);
            this._gauntletLayer.InputRestrictions.SetInputRestrictions(true, TL.InputUsageMask.All);
            
            this._gauntletLayer.Input.RegisterHotKeyCategory(HotKeyManager.GetCategory("GenericPanelGameKeyCategory"));
            this._gauntletLayer.IsFocusLayer = true;
            base.AddLayer(this._gauntletLayer);
 

Maroon

Grandmaster Knight
WBWF&SNW
Best answers
0
Can you source your answers? I can see you've been looking through the files, but that doesn't necessarily give you the answer to questions like "Is it possible to query the AI state and party in the campaign map?".
 

MisterOutofTime

Recruit
WBVC
Best answers
0
Can you source your answers? I can see you've been looking through the files, but that doesn't necessarily give you the answer to questions like "Is it possible to query the AI state and party in the campaign map?".
You will be able to access the Campaign infos from your submodule

with "Game.Current andor Mission.Current" you will be able to navigate the properties to get to the Campaign Map and to the GameEntities and Query the AI States from there.

Also you can add ur own Components/Behaviors from ur submodule at either Entrypoint

OnCampaignStart or OnMissionBehaviourInitialize

and if that doesnt work for Singleplayer Campaign somehow u can still do it OnApplicationTick + Reflections in worst worst worst case

im basing the infos on what i found out and tried out, The Engine is open enough that even if none of these Methods I just said work, u can still use Reflection to access the corrosponding Objects and Properties and Methods



like here some example on how to get and set the LobbyState in Multiplayer over Reflection
C#:
   MultiplayerLobbyGauntletScreen lobby = ScreenManager.TopScreen as MultiplayerLobbyGauntletScreen;
// var layer = new GauntletLayer(90,"GauntletLayer");
var lobbystate = (LobbyState) lobby.GetType()
    .GetField("_lobbyState", BindingFlags.NonPublic | BindingFlags.Instance)
    .GetValue(lobby);

NetworkMain.GameClient.GetType().GetProperty("CurrentState")
    .SetValue(NetworkMain.GameClient, LobbyClient.State.HostingCustomGame);
if u need more concrete examples/code to some stuff just ask more specifically or chat with me on taleworlds modding discord, im happy to help
 

lolxd

Regular
Best answers
0
@lolxd


yes

yes

yes

yes

yes


view templates like: Modules\Native\GUI\Prefabs\Options\SPOptions\KeybindingPopup.xml

on a screen u render gauntletlayers which have a viewmodel for datasources attached,
if u know dotnet xaml GUI's u will know Bannerlord UI's mostly

C#:
  var sView = ViewCreatorManager.CreateScreenView<HostOptionsScreen>(new SPHostGameVM(lobbystate));
ScreenManager.PushScreen(sView);
                       

this._gauntletLayer = new GauntletLayer(4000, "GauntletLayer");
            this._gauntletMovie = this._gauntletLayer.LoadMovie("CustomHostGame", this._dataSource);
            this._gauntletLayer.InputRestrictions.SetInputRestrictions(true, TL.InputUsageMask.All);
           
            this._gauntletLayer.Input.RegisterHotKeyCategory(HotKeyManager.GetCategory("GenericPanelGameKeyCategory"));
            this._gauntletLayer.IsFocusLayer = true;
            base.AddLayer(this._gauntletLayer);
have you tried importing NewtonJSON into bannerlord?
 

horns

Regular
M&BWB
Best answers
0
Couple more questions:
  • What documentation exists already and what can we expect for new modding documentation?
  • Can we expect some form of unit testing framework or support for a 3rd party test framework? Helps to not have to go in game to validate code and enforces existing functionality doesn't break.
 

Mark7

Knight
WBNWWF&SM&BVC
Best answers
1
I would also like to know more about the work with cutscenes, scriptable events, cameras, vfx, sound fx,timeline, perhaps a more detailed review about the possibilities. Unfortunately, there is practically no information on this. 🎥
 

MisterOutofTime

Recruit
WBVC
Best answers
0
Will it be legally allowed to have the Game's DLL Files on Continous Integration/Continous Deployment/Build Servers Infrastructure
or will we not be allowed to use Githubs CI/Jenkins etc, unless we self host the CI and buy a extra key for the Build Server?

(or does someone has an idea on how to build mods without having the dlls?)
 

lolxd

Regular
Best answers
0
You will be able to access the Campaign infos from your submodule

with "Game.Current andor Mission.Current" you will be able to navigate the properties to get to the Campaign Map and to the GameEntities and Query the AI States from there.

Also you can add ur own Components/Behaviors from ur submodule at either Entrypoint

OnCampaignStart or OnMissionBehaviourInitialize

and if that doesnt work for Singleplayer Campaign somehow u can still do it OnApplicationTick + Reflections in worst worst worst case

im basing the infos on what i found out and tried out, The Engine is open enough that even if none of these Methods I just said work, u can still use Reflection to access the corrosponding Objects and Properties and Methods



like here some example on how to get and set the LobbyState in Multiplayer over Reflection
C#:
   MultiplayerLobbyGauntletScreen lobby = ScreenManager.TopScreen as MultiplayerLobbyGauntletScreen;
// var layer = new GauntletLayer(90,"GauntletLayer");
var lobbystate = (LobbyState) lobby.GetType()
    .GetField("_lobbyState", BindingFlags.NonPublic | BindingFlags.Instance)
    .GetValue(lobby);

NetworkMain.GameClient.GetType().GetProperty("CurrentState")
    .SetValue(NetworkMain.GameClient, LobbyClient.State.HostingCustomGame);
if u need more concrete examples/code to some stuff just ask more specifically or chat with me on taleworlds modding discord, im happy to help
bro are you on this server https://discord.gg/n6EnvV ? if not pls post the link
 
Status
Not open for further replies.