Announcement: public module system release in one week (February 16th - 17th)

Users who are viewing this thread


Ever since early in PW development there has been a vague intention to release the module system (source code) publicly for other people to try adding smaller features themselves, or to take the design in another direction not intended for the base mod. Since most of the main ideas of the original concept have been completed, and I have become busier lately with a full time job, I have been working towards getting the module system up to a minimum standard of documentation and organization for use by other people. This announcement is a week before the actual release, because if I posted a link to the code first, the likely result would be people just grabbing a static zipped package and departing, ignoring usage requirements and development recommendations, then they make a mess of things and come back complaining afterwards.

Requirements for use:

Any code left over from the Native module system remains the property of TaleWorlds, with license or usage requirements not specified. The majority of the code is written for this mod, by Vornne, with some inspiration from the Native code: the "legal" license used is the "3 clause BSD" (or "BSD simplified"), which seemed the closest well known license to what was wanted. To explain in plainer language the requirements for using the module system in your project:
  • The license notice must be kept when redistributing to other people, with explanation of what it applies to if necessary; giving credit to Persistent World or the individual contributors in forum announcements, documentation, or similar.
  • The name "Persistent World" or close derivatives or abbreviations must not be used without permission as your module name or part of it, and the forum announcements or similar must not be designed to deceive people into thinking that the project is an official version of Persistent World.
  • Using the same module directory name as an official release on a dedicated server would only be permitted for minor bug fixes and enhancements that seem certain not to cause compatibility problems with the corresponding official module (no changes that require players to patch their clients). Server hosters using a module tweaked from an official release should assist in fixing related bugs reported while playing on that server, whether by fixing the scripts, revealing the changed parts, or reverting the changes.
The PW module system is an almost complete rewrite from the Native one released by TaleWorlds, with a some files like module_animations, module_meshes, module_particle_systems, module_skills, module_skins, module_sounds, and module_scene_props, being mostly reformatted versions of the Native files, since they are closely linked with the artistic resources that PW uses, but the other module_ files being either emptied or rewritten almost from scratch. The files starting with header_ are mostly just reformatted, since they are mostly constants hard coded into the game engine. The python scripts for building the module system, starting with process_, have been rewritten for speed and better error handling.


While it is not necessary, open source development using a fork of the Git repository is recommended, and more likely to get assistance from me regarding problems or scripting suggestions. Even when keeping your changes private, the use of Git is strongly encouraged: it allows you to store and visualize exactly what changes you or anyone else made to module system files, allowing easy updating and merging with new official versions (unless you changed the same part of a script, but still it shows both versions for manual merging)

Note that if you decide to keep your module system changes private, once the compiled module is released, it is very easy to convert the module system .txt files back into python based operation lists, especially if the vast majority of the module system is publicly available from the official PW repository. If people seem to have copied code from your module into theirs without permission then released it, you should only complain if the compiled opcode list is substantially identical (likely simple copy and paste): you can't copyright an idea, only the particular implementation; if there is only one or very few possible ways of implementing an idea in the module system, you can't "patent" it - there is no way to tell whether the other person legitimately created it independently.

  • Since the Mount&Blade Warband game engine is mainly suited to medieval combat simulation, the PW game mode is also based around it.
  • Most other main features are designed to be complementary to the combat system, only adding complexity if the overall game benefits from new situations, motivations, and player immersion. An example could be the crafting system: it would be possible to add many different processing steps and items, replicating actual historical processes more accurately, but if there are no new dynamics caused that affect other parts of the game, it could turn into a boring, repetitive, detached, RSI-from-too-much-clicking mini game.
  • The scene terrain and objects (props) are designed to be fairly static within the parameters set by the scene maker: the Warband engine has many limitations and performance problems with spawning or changing scene props as a feature triggered by player interaction.
  • Instead, the game is designed so that the players can freely interact and compete with each other as the main "content", within a fair and unbiased framework of game code rules. In other words, instead of playing a preset story line designed to carry the player along as the central hero, each player can be a hero, villain, lackey, or victim for the other players, depending on their own skill, choices, and sometimes luck. Human AI "bots" are intentionally not included for being too unlike real players in behaviour, being inevitably treated like very stupid animals in human shape.
  • The game world is totally refreshed from scratch after short periods of time from days to weeks, for multiple reasons: so people can start playing and continue intermittently without large disadvantages compared to players with nothing else to do; to encourage everyone to try different ways of playing all the different parts of the game content, rather than laze around as their ultimate character after a few weeks grinding and power-leveling; and to keep the game world environment consistent with the players in it and their equipment: if a character has a full suit of plate armor, the scene will contain the necessary resources and stockpiles, and the circumstances needed to craft the armor pieces must have happened some time in the unbroken history played out in that mission - otherwise, long term players could have certain equipment with resulting abilities that are not available to anyone else, because the scene (or environment) is different.
  • None of the available troop types are sufficient to be totally self reliant but powerful; all have some drawbacks which are significant to some area of normal play: this is because players (of computer games especially) will as a general rule prefer not take risks working with other players unless there are major game play reasons, even though the actual potential for enjoyment can be much higher whether the interaction goes well or badly (being tricked, attacked, or unexpectedly helped can all create interesting challenges or situations to respond to).
If your first idea is to try make a revolutionary new game based on PW with some mix of the following concepts: everlasting character saving, perfectly secure storage of large amounts of game items, entirely optional and consensual combat, a large range of AI monsters to fight, and ever more ridiculously "ultimate" items to loot, stop and think: that sort of game has been done hundreds of times before, so consider just playing your favourite MMO instead, and save yourself the massive amount of work developing that type of game requires.

By removing most ways that players can affect the game world and each other, the requirement shifts from players giving each other enjoyment using simple items and abilities in a sandbox environment, to the development team needing to repeatedly add more content in the form of levels, skills, monsters, items, dungeons, and whatever else, to keep the players interested (you can't hope to compete with WoW and the like in that way). The Warband engine has many aspects which make it unsuitable for that type of game compared to basing on another available engine or game: the multiplayer mission environment is conspicuously designed for fast paced combat, not huge worlds, storing and loading many game objects in a database, complex text based features, fancy user interfaces, etc.

Future repository link:

For modders that want to try using the official git hosting repository, it is located here:
Currently just the native branch is uploaded, none of the PW changes, but it can be used to set up your own local Git repository and learn how it works, ready for "pulling" the PW branches when they are released about February 16th or 17th. I will be writing some guide threads on how to use Git tools for the main simple development tasks.


A very basic tutorial for using Git with the module system repository:
(I will try write more detailed ones later)
[list type=decimal]
[*]Download the latest full installer for Git on Windows from here, and run it.
[*]Besides modifying the installation path if necessary and selecting whether you want quicklaunch or start menu entries, all the options in the installer should be left as default, clicking the "Next" button until the installation starts.
[*]Once it is fully installed, run "Git Gui" from the start menu, or a context menu in the file explorer: in the window that opens, choose "Clone Existing Repository".
[*]In the next window, for "Source Location" enter "", and for "Target Directory", click the browse button to make a new empty directory anywhere you want, for example "C:/Users/Bob/Documents/pw_module_system".
[*]Click the "Clone" button and wait for the download process to finish; after this step, a window with four empty panes should appear.
[*]Before doing anything else, you should choose menu "Edit -> Options", then set a user name and email address to use for committing any code (the email address does not need to be fully valid, if you don't want people to be able to contact you in the future).
[*]You can use menu "Repository -> Explore Working Copy" to open the module system directory in file explorer, and from that directory, choosing "Git Gui" from the right click context menu will open Git again if you closed it.
[*]"Repository -> Visualize All Branch History" will open another window showing commit logs, diffs, and messages - allowing examination of what changed throughout the repository's history.
[*]Before making changes you should create a new branch to keep them separate from the clean official version, with menu "Branch -> Create...", naming it anything you like that describes the changes you want to make (it is for your private use only).
[*]For editing module system files you should download and use a proper programming editor like Notepad++: I personally use Linux editors, so don't really recommend that one in particular - just don't use the plain Notepad that comes with Windows.
[*]After you have made some changes to module system files, clicking "Rescan" back in Git Gui should show the diffs (differences) of the changed lines. There will be two lists at the side of the window, named "Unstaged Changes" - changes you have made to module system files that are not added into the repository - and "Staged Changes" - which are the specific parts of the changes you want to include in the next commit.
[*]To add all changes for the next commit, click the "Stage Changed" button; to add (stage) or remove (unstage) only a specific file for the next commit, click the icon next to the file name in either of the lists. To add only specific patch "hunks" (a group of lines changed in a diff) or lines, right click on them in the diff area.
[*]To commit the changes to the repository (save them as a single logical change and move onto doing something else), enter a short message describing the changes in the lower right text box labeled "Commit Message:", then click "Commit".
[/list]There is lots more to learn about using Git, but that should be enough to get people started messing around with it. You might want to read one of the many git tutorials available online, or try out different Git graphical user interfaces than the basic default one, like "Git Extensions" (seems good), "SmartGit", "TortiseGit", "GitHub for Windows", or more. I don't personally use any of these programs - it is originally and fundamentally a command line based program, which is more powerful when you learn how to use it (Linux generally has better command line functionality than Windows).


Master Knight


Grandmaster Knight
It's nice to see that the mod is almost at a complete stage.

No doubt there will be some "roman" and "samurai" mods, but I am sure some other mods may work too.

The guide and information provided are invaluable and I'm sure they will help a number of people.

Also Austro quit being a twat


Grandmaster Knight
Awesome Vornne, can't say more for now.

Someone know how to turn a an armor texture heraldic ?


Sergeant Knight
Good thing. My only fear is the emergence of many subPW mod which would split the PW community more and more. But we can't predict the future so let's see what happen.


Master Knight
  This also means that you won't be working on the mod anymore? Well...

  Thank you Vornne for all your hard work on this mod and on all the attention you gave to the community created by it. This was one of the best mods that I ever had the pleasure to play. I wish you well and I hope that you will achieve everything you want to in your life. Good luck with your job and with all your plans. A big hug from your friend in the other side of the world!


Grandmaster Knight
Whoopsies, removed my post.

But I didn't realise Vornne was stopping development of PWMod. I find that rather sad, as the work that Vornne has put into the mod is amazing, and he has created something 'special'.


I hope you will stay with us and develop this mode further if you have time
Yes, I will.
Dark_Hamlet said:
This also means that you won't be working on the mod anymore? Well...
N0body said:
But I didn't realise Vornne was stopping development of PWMod.
No, I'm not doing that (where did you think I said it?). Future updates will probably be smaller, more openly developed, maybe less impressive features, released on their own. In the immediate future I have some other things I need to catch up on, prioritizing above PW once the release is done, but there are other ideas on my list that I would like to try when a bit more free time is available.


Grandmaster Knight
Vornne said:
No, I'm not doing that (where did you think I said it?). Future updates will probably be smaller, more openly developed, maybe less impressive features, released on their own. In the immediate future I have some other things I need to catch up on, prioritizing above PW once the release is done, but there are other ideas on my list that I would like to try when a bit more free time is available.

I guess it was a combination of what you had written, and what Hamlet had said kinda gave me the impression that you were withdrawing from development, but it's wonderful to hear that it was poorly assumed!


I wouldn't mind seeing another Fantasy persistent world. with dwarves, elves, trolls, etc. A size recalculation would come in handy.
Top Bottom