Popular Post Charon117 50 Posted February 4, 2020 Popular Post Share Posted February 4, 2020 (edited) This is the Modlauncher and Modmerge Software https://drive.google.com/open?id=1pIqHTeZGWu6RmlL5-cZJ8F1AcDG8ga40 Translate into mege link later on reminder. [Problem]: The main problem with modding content is that it usually gets distributed as whole files, which means every mod content contains changes which are not necessarily necessary for the mod, but nevertheless have to get added in order to make a working file. If you want to release a mod that only changes the Critical Hit Factor you will have to include a hundred other changes, which basically reset any other changes in the same file to zero. The solution to this is to manually go into your files, and make all changes per hand, which is error prone, labor intensive and excludes less competent people. [Problem]: The consequence of the first problem is that since mod content gets distributed as whole files mod content is highly sensitive to version changes for the base game, or any other modding content. If you have a mod that changes 2.43 base game skins than 2.44 might completely and irreversibly break your mod, and make it unuseable. The same goes if you use more than 1 mod at the same time. Any and every time a mod changes it can potentially risk breaking compabilitiy with any other mod out there. The adapted solution to this is to not have too many active mods at the same time, and dont use mods which change the same files, or even better, only use 1 big mod. [Consequence]: Whether its Elder Scrolls, Fallout, or any other big or small game out there, the consequences are usually the same, modding content decays very quickly. Due to the high sensibility of version compability any time the base game or the modding scene makes a major step it leaves behind all other content, which needs a high grade of maintenance to stay up to date. Usually people dont do that amount of work, and as a consequence people usually concentrate on one big collaborated project, where the chance for longer maintenance is higher than small, unsupported mods somebody just made once and never plans to update it. [Solution]: The solution to this is the Modmerge Software. The Modmerge Software allows mods to be saved as ideas, only containing the necessary data the mod wants to change or add. Problem number 1 gets solved because a mod does no longer contain changes it doesnt want to make. Problem number 2 gets dispelled because of the same reason, and because it minimises the amount of manintenance you have to make to keep it up to date. The most fundamental idea of the Modmerge Software is that it interprets data as data, but also as a set of instrunctions to be applied to another build. Therefore modmerging content can be created in exactly the same way as normal mod content. The only thing you have to know as a mod author is the base games data structure, which you would have to know anyway. If the game understands the format, the Modmerge System will understand the format, with minor limitations regarding changing data structure. The Modmerge Software takes mod content in exactly the same way and structure as the base game. It then copies over non .txt files to their respective directories Performance a modmerge for relevant .txt files Copies over non modmerge specified .txt files The zip contains "Sacred 2 Gold Modmerge Examples": A folder which serves as an exemplary mod, as well as containing an example for each file. "Sacred 2 Modmerge Installer.exe". The UI for the user. It asks for the mod content directory, and for the base game directory. The installer remembers your past settings, so you dont have to constantly add your base game directory, if it doesnt change. "Sacred 2 Modlauncher.exe": The modlauncher executes a modmerge for all specified folders in your mod folder. "logfile.txt": The logfile of the last merge. If something went bad take a look into that. "Source Code.cpp": The source code. If somebody wants to improve on it later on. "Sacred2cpp.exe" has its license as GPL2 ( not 3 ), while I own the license for the installer, for which I grant every user a temporary retractable license. The Modmerge Software can be added to every mod, or even more easily just pointed towards the main page where people can download it. It should work with every existing mod, but it wouldnt do anything differently than copying over the whole file, in effect. I hope mod content which uses a dedicated Modmerge structure will get created, to take advantage of the system. I suggest tagging such content as [MSC] ModmergeSystemCompatible. Most credit has to be given to @Flix and @dimitrius154 for supporting this project, as without their knowledge no modmerge rules could have been written. Props to them ! And ofcourse to Darkmatter, to host gaming and mod content alike so that people who like Sacred have a place to collaborativelly share their ideas and work in a cozy place. Props to the folks who keep Darkmatter alive ! Edited May 8, 2020 by Charon117 1 1 Link to comment
Charon117 50 Posted February 4, 2020 Author Share Posted February 4, 2020 @Flix @dimitrius154 The modmerge installer is small, but if you want I can fit in 1 branding for each of your main mods, eg. Enhanced Edition, Diable Fallen and/or Addendum, in the place where the CD logo is currently. Although dont get hyped up, it might be impossible as well. Link to comment
Charon117 50 Posted February 7, 2020 Author Share Posted February 7, 2020 Updated Link: https://drive.google.com/open?id=1pIqHTeZGWu6RmlL5-cZJ8F1AcDG8ga40 You can now specifiy OVERWRITE in the folder name for a mod to get copied over. Link to comment
Charon117 50 Posted March 12, 2020 Author Share Posted March 12, 2020 (edited) @dimitrius154 Do you possibly have some insight on how the lexxer tokenises Sacred 2 data ? Im pretty sure that "--" is the comment tokenizer until the next end of line (obviously, otherwise the files wouldnt work), but anything else is beyond my knowledge. "id = 2505," works like "id=2505," I assume ? Any light on the matter would be appreciated. Oh yes, and how hard is Sacred 2 on the order of data ? Can data subcomponents be out of order ? Like the intensity,bonus thing ? Edited March 12, 2020 by Charon117 Link to comment
Popular Post dimitrius154 612 Posted March 13, 2020 Popular Post Share Posted March 13, 2020 (edited) 4 hours ago, Charon117 said: Do you possibly have some insight on how the lexxer tokenises Sacred 2 data ? Script files are loaded into game's memory space once - during the game initialization. Attempts to edit them on the fly result in CTD upon save-reloads. Once in memory script texts are being processed by functions, that assign IDs based on text matches, buld numeric data arrays, etc. The game's script text processing functions ignore spaces for symbol combinations not defined by quotation symbols. 4 hours ago, Charon117 said: Can data subcomponents be out of order ? Like the intensity,bonus thing ? No, they can't. They are part to rigid data arrays. @Flix, I've successfully tested my theory about the blueprint.txt. Notepad breaks it because of the German-specific symbols present. Once those are replaced, the file can be edited in Notepad without becoming unreadable by the game. Edited March 13, 2020 by dimitrius154 2 Link to comment
Charon117 50 Posted March 17, 2020 Author Share Posted March 17, 2020 Thx for the info @dimitrius154. I have been thinking about making a complete datastructure for Sacred 2, but I now realise that this requires a bigger effort than I initially thought, and the only gain of that would be speed, which is really not an issue, since you only compile your build very sparsly. I mean also apart from the fact that speed isnt an issue in the first place, since big mods can overwrite the full file, and small ones dont even have a speed issue anyway. Hm. Basically the idea would be to parse files into datatypes in the form of pair<string, string> where pair.first would hold the pseudo keycode, and pair.second would hold the actual data and then push everything into a SequenceContainer. Anyway, that would only speed up the Software, which is not necessary at this point, what we need is functionality. Most of the speed can be gained by checking whether or not files are exactly identical, so you avoid copying over complete identical files. Anyway, im trying to make the Modmerge System address subcategories of data, like runSpeed in newCreatureInfo. The best way of doing all of that is to simply make a datastructure inclduing parsers for everything. But thats a Mount Everest of work. On the other hand I could slowly just add the functionality I want, and wait for people to complain that other files dont have that kind of functionality. That would mean working software for the things people actually have a need for. On 3/13/2020 at 3:29 AM, dimitrius154 said: @Flix, I've successfully tested my theory about the blueprint.txt. Notepad breaks it because of the German-specific symbols present. Once those are replaced, the file can be edited in Notepad without becoming unreadable by the game. Can you elaborate ? --- a couple of days have passed maybe more Ok, so I created a subdata merge command for the Modmerge System, called MODMERGE = "partial replace". It takes subdata of an data entry and overwrites subdata in the installation file if it exists. Here is an excerpt of a working file: Quote --// rat units flat MS increase of 50 --// spider units flat MS increase of 50 --// wolf units flat MS increase of 20, excluding werewolfs and wolfriders --// giantbat units flat MS increase of 50 newCreatureInfo = { --// MODMERGE = "partial replace" type = 5714, runSpeed = 200, } mgr.creatureInfoCreate(newCreatureInfo); newCreatureInfo = { --// MODMERGE = "partial replace" type = 10266, runSpeed = 200, } mgr.creatureInfoCreate(newCreatureInfo); newCreatureInfo = { --// MODMERGE = "partial replace" type = 5145, runSpeed = 200, --name = "gigantspider_quest_gargantura", } mgr.creatureInfoCreate(newCreatureInfo); So far it only works for creatureinfo.txt, but files with exactly the same dataformat could get the same with a simple reference to the function. But I won´t do that, so if people want subdata merge functionality they have to request it. @dimitrius154Regarding that feature, I wanted to ask if Sacred 2 can take data which is out of order. For instance would Quote newCreatureInfo = { type = 99999, runSpeed = 150, fightDistMin = 50, fightDistMax = 75, gender = 1, agegroup = 1, validEquipSlots = "0", defaultSMType = SMT_DEFAULT, behaviour = "WildAnimal", hair1Itemtype = 0, hair2Itemtype = 0, hair3Itemtype = 0, hair4Itemtype = 0, hair5Itemtype = 0, hair6Itemtype = 0, tailItemtype = 0, dangerClass = 1, weight = 150, eBloodEffect = "BLOODFX_RED", walkSpeed = 50, <<<<<<<<<<<<<<<<<<<<<<<<<<<< subdata out of order } mgr.creatureInfoCreate(newCreatureInfo); work ? If not I have to think about a way to insert subdata in the correct position. Depending on the answers this feature will get online as soon as possible. Link to comment
dimitrius154 612 Posted March 17, 2020 Share Posted March 17, 2020 (edited) 9 minutes ago, Charon117 said: Can you elaborate ? It is, I guess, a Notepad text formatting defect. It processes German-specific(as it would Turkish, or Hungarian) symbols in a way, that makes the game parcer ignore the '--' - comment delimiter. 9 minutes ago, Charon117 said: work ? Actually, I think, it would, since the text markers are in place. Edited March 17, 2020 by dimitrius154 Link to comment
Charon117 50 Posted March 17, 2020 Author Share Posted March 17, 2020 7 minutes ago, dimitrius154 said: Actually, I think, it would, since the text markers are in place. If it does, I could simply insert subdata anywhere. Not very pretty, but nobodies gonna read it, and if they would read it than they are most likely modders, in which case they can manually correct the order themself. Keep in mind that this is only for cases valid for which the base data doesnt have the corresponding subdata type, which will likely never be the case, but could still happen. Any way to test this so that we dont have to guess around ? Link to comment
dimitrius154 612 Posted March 18, 2020 Share Posted March 18, 2020 (edited) 31 minutes ago, Charon117 said: Any way to test this so that we dont have to guess around ? Mixing up entries in the script txt should be enough. Can't spare the time, I'm afraid. Have about 600 animation files to process. Edited March 18, 2020 by dimitrius154 Link to comment
Charon117 50 Posted March 18, 2020 Author Share Posted March 18, 2020 Update 1.01: The Modmerge Software now supports the merging of subdata for the creatureinfo,txt. Example: Quote newCreatureInfo = { --// MODMERGE = "partial replace" type = 5714, runSpeed = 200, } mgr.creatureInfoCreate(newCreatureInfo); 1 Link to comment
dimitrius154 612 Posted March 18, 2020 Share Posted March 18, 2020 (edited) 4 hours ago, Charon117 said: supports the merging of subdata This utility has a potential to become a universal fixing tool. However, is it technically possible to determine missing " " [ ( ) ] { } symbols of a pair within a string with a EOS finisher? Edited March 18, 2020 by dimitrius154 Link to comment
Charon117 50 Posted March 18, 2020 Author Share Posted March 18, 2020 (edited) 59 minutes ago, dimitrius154 said: This utility has a potential to become a universal fixing tool. However, is it technically possible to determine missing " " [ ( ) ] { } symbols of a pair within a string with a EOS finisher? The Software has the utility it needs, and the features people want. In case I havent been clear on this topic: I will only implement things I need. I will only implement things other people want and describe to me. Im not a mind reader, if you want something open your mouth and talk to me. I usually dont bite. The more words you use to describe what you want the better. The more accurate you are, the better. Edit: To clarify what I mean, the Modmerge Software tool is written in C++. It is written in a way that enables and encourages any and all future changes. It is a well designed basis for any and all future changes people might need. It is build on the Manifesto for Agile Software Development, in which is stated that we like to build Software which harneses change for the (competetive) advantage of the user (customer). Edited March 18, 2020 by Charon117 Link to comment
dimitrius154 612 Posted March 18, 2020 Share Posted March 18, 2020 17 minutes ago, Charon117 said: To clarify what I mean, the Modmerge Software tool is written in C++. It is written in a way that enables and encourages any and all future changes. It is a well designed basis for any and all future changes people might need. Ah, good to know. 21 minutes ago, Charon117 said: Im not a mind reader, if you want something open your mouth and talk to me. I usually dont bite. The more words you use to describe what you want the better. The more accurate you are, the better The issue's formal description was as clear and concise, as possible. Scripts fail, unless matching pairs of symbols for certain conventions are present. Those symbols are {} [] () "". The question was as to whether it's technically possible to trace and repair missing elements of symbol pairs. 18 minutes ago, Charon117 said: The Software has the utility it needs, and the features people want I wasn't really asking for the feature. It was a common sense - induced suggestion. Link to comment
desm 329 Posted March 19, 2020 Share Posted March 19, 2020 Hello Charon, I have followed a bit your tools discussions but honestly, I don't understand a word on how we can use your ModMerge Software. It's very unclear for me (sorry, I'm surely not as smart as you are). I've looked your presentation video. Can we use regular mods with your tools? (are the mods on Nexus supported for example?) Why is it better than JSGME? Can't we do the same with this last one? For Diablo 2 Fallen for example, is it instalable with your software and what mods could we add to it for example, that we can't with JSGME? I don't doubt your tool to be very powerfull but it seems to me very complicated to apply. Maybe just a matter of use. Thank you very much. Link to comment
Charon117 50 Posted March 19, 2020 Author Share Posted March 19, 2020 8 hours ago, dimitrius154 said: The issue's formal description was as clear and concise, as possible. Scripts fail, unless matching pairs of symbols for certain conventions are present. Those symbols are {} [] () "". The question was as to whether it's technically possible to trace and repair missing elements of symbol pairs. First and foremost I dont want the Modmerge Software to automatically repair the authors files. Thats contrary to the stated goal of the Modmerge Software. The Modmerge Software is based on the trust that the mod author knows what he is doing. Any sort of auto repair mechanism will just limit the authors possibilities, and reduce the responsibility of the mod author. You will definitely not be able to sneak in auto repair, or auto anything. A mod authors mistake will still be a mod authors mistake, and the Software will fail because of the mod authors mistake, not because the Software didnt work as intended ( crashing is intended behaviour ). With that out of the way I have to ask you what you want to achieve. I can write a bug checking Software for automatic bug checking if you want to. But then I need to know more than what you just wrote. Onto the technical details. I assume what you are talking about is scope. And ofcourse you can do that. If the scope is limited to the same line it doesnt even require thinking, If you are talking about string spaghetti you need a parser. Now to the replacing part. If its just a missing bracket, than easy peezy. If it includes to also repair wrong data you would need standard data to draw from, but anythings possible really. You just have to convice me that its worth my time. That is you have to describe how such software would make your own life easier. Link to comment
Charon117 50 Posted March 19, 2020 Author Share Posted March 19, 2020 (edited) 5 hours ago, desm said: Hello Charon, I have followed a bit your tools discussions but honestly, I don't understand a word on how we can use your ModMerge Software. It's very unclear for me (sorry, I'm surely not as smart as you are). Well I cant downgrade my brain, but we can always sit down with the people to work out a format everybody involved in understands. 5 hours ago, desm said: I've looked your presentation video. Can we use regular mods with your tools? (are the mods on Nexus supported for example?) [] You can use all present mods. The Modmerge Software has been carefully developed to support ALL current mods in existence. Even the future update of the Addendum is already supported. Then again, all you would do with mods which are not dedicated Modmerge Software Compatible [MSC] is a costly overwrite. For that instance I added the the OVERWRITE feature. Its a simple copy and overwrite function. I dont know how the Sacred Fallen folder is called, but if we assume its called "Sacred Fallen" than you can rename the folder to "OVERWRITE Sacred Fallen" in your mod library, point the Modmerge Software to it, and it will be the same as if you manually copied everything over. 5 hours ago, desm said: Why is it better than JSGME? Can't we do the same with this last one? It is better than JSGME because all GME does is is make a mirror of your game setup. Consider following example. Lets say I just want to have a teeny tiny change in my game setup. I want to lower the minimum speed from 50% to 30%, and increase the maximum allowed speed in the game to 450%. IF you are using GME all you can do is copy over a whole file. Uhm ... ... ... how does that work out ? The only thing you can do is after you installed 1 mod to make all other changes per hand. With 2 changes that doesnt sound too shaby ... but the longer you play the more individual preferences you accumulate, no ? What about hundreds of tiny changes across dozents of files. Still wanna do that per hand ? Take a look at my recent release: All it does is embody said ideas in 2 files, which take the following form: balance.txt: Quote local newBalanceValues = { SpeedMin = 300, SpeedMax = 4500, mgr.setBalanceValues(newBalanceValues); creatureinfo.txt excerpt: Quote newCreatureInfo = { --// MODMERGE = "partial replace" type = 11405, runSpeed = 200, } mgr.creatureInfoCreate(newCreatureInfo); newCreatureInfo = { --// MODMERGE = "partial replace" type = 5544, runSpeed = 260, } mgr.creatureInfoCreate(newCreatureInfo); newCreatureInfo = { --// MODMERGE = "partial replace" type = 5145, runSpeed = 200, --name = "gigantspider_quest_gargantura", If it wouldnt be for the Modmerge System I would have to make 49 changes in the creatureinfo,txt everytime Flix brings out a new EE version. And he recently brought out quite a few versions of EE, and shows no signs of stopping. 5 hours ago, desm said: For Diablo 2 Fallen for example, is it instalable with your software and what mods could we add to it for example, that we can't with JSGME? Like in the example above, for max speed just add "OVERWRITE" anywhere in the folders name and it will do so. Additionally you can use following assets which have been written in the designated MSC format: http://darkmatters.org/forums/index.php?/topic/23962-sacred-2-boss-farms-msc/http://darkmatters.org/forums/index.php?/topic/23995-sacred-2-readable-console-msc/http://darkmatters.org/forums/index.php?/topic/23996-sacred-2-mob-farms-msc/http://darkmatters.org/forums/index.php?/topic/23994-sacred-2-disable-splash-msc/http://darkmatters.org/forums/index.php?/topic/24023-sacred-2-diverse-movement-speed-msc/ I can make a video about why I need the Modmerge Software to upgrade from EE2.2 to EE2.4, and still preserve all the individual changes I made, without having to redo them manually. Cheers Edited March 19, 2020 by Charon117 Link to comment
desm 329 Posted March 19, 2020 Share Posted March 19, 2020 Thank you very much for the clearance Charon. Yes it sounds very good, it's kinda of a "mod manager"? Justly I was interesting in adding Diverse Movement Speed to Diablo 2 Fallen, I will see when I feel it. Thanks again. Link to comment
Charon117 50 Posted March 19, 2020 Author Share Posted March 19, 2020 @desm>it's kinda of a "mod manager"? It is exactly a Mod Manager, just that it doesnt build the game when you start it up, but only when you want to recompile your current build. >Justly I was interesting in adding Diverse Movement Speed to Diablo 2 Fallen, I will see when I feel it. Thanks again. Better talk with @Flix first about it. Diverse Movement Speed increases movement speed based on newCreatureInfo type id. DMS is based off vanilla/EE type ids. SacredFallen might have assigned such ids to different creatures. But dont worry, the worst that can happen is that the wrong creatures become faster all of a sudden ><. Link to comment
desm 329 Posted March 19, 2020 Share Posted March 19, 2020 Yes, maybe Diablo 2 Fallen is a too big conversion, I'll wait but it's clearer now, thanks. Link to comment
Charon117 50 Posted March 30, 2020 Author Share Posted March 30, 2020 @desm @Flix Showcase upgrading from EE 2.2 to EE 2.4 using the modmerge system. 1 Link to comment
desm 329 Posted March 30, 2020 Share Posted March 30, 2020 Very cool. A little bit tricky but awesome. "I believe I can fly, I believe I can mod Sacred to my own taste...." . Thanks Charon! 1 Link to comment
Popular Post Charon117 50 Posted May 8, 2020 Author Popular Post Share Posted May 8, 2020 New version: Just a picture updated. Thread moved out of Beta. Minor swaps. The Modmerge Launcher got uploaded to Darkmatters and Nexus. And with this I declare the project closed until further notice. Thanks to everybody who supported this project, and to Darkmatters for hosting these people and the forum to hold their discussions. Have the best time in your life ! I love you all <3 2 Link to comment
evercrawn 0 Posted May 24, 2020 Share Posted May 24, 2020 On 3/30/2020 at 8:48 PM, desm said: Very cool. A little bit tricky but awesome. "I believe I can fly, I believe I can mod Sacred to my own taste...." . Thanks Charon! How? I have been playing this game like 8/9 years but I dont know a I would like someone who cant teach me how to get real cheated weapons at level 2 or those swords who looks pretty good like star wars etc I would like to have help Discord: T-F Adriiian.S.P#1847 Link to comment
cosminkz 5 Posted August 27, 2020 Share Posted August 27, 2020 Hello Charon117. I used your tool to merge 2 mods and I have some problems when mrging them . These are the mods I want to merge : Serious Texture and Spells (Only want to merge the spells) Rotating Blades Of Light The problem is that when I merge the 2 mods only the second one works , I am not overwriting the files , the combat art pictures change but the effect and descritpion do no change for the first mod that is merged. Also I want to unlock the portals and had no succes : Unlock Portals, BTW when merging the spells mod I noticed that one portal was removed from the map and the mob number have increased . What I want is to merge the 2 spell mods , unlock all the portals avaible(CM Patch included) and some increased mob density because I liked it. Thank you for your attention and great job Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now