Scarrab

Requesting advice for my small, finished mod

Recommended Posts

Greetings, DeadlyStream community members. I need some advice on two issues.

Background: I created a small mod for KOTOR 1 - just one .DLG file - which has a big impact on the endgame for dark side players:

Spoiler

Dark Side players are no longer forced to kill Mission. Now, players will have three options - retain her as a party member, kick her out of the party, or kill her just like the normal game. Of course, keeping Mission alive has the side effect of keeping Zaalbar alive too. (I know you can keep him alive in the base game if you Force Persuade him, but that's only if you don't bring him into the Star Forge, otherwise he'll turn on you.)

I'm aware that another mod already exists with the same goal and methodology. But in my opinion, the dialogue in that mod was jarring, out of character, and immersion-breaking. So I decided to make my own mod.

Issue #1: The mod I made is entirely my own work - all of the edits to the .DLG file are my own, nothing was copy & pasted - but my work was inspired by the other mod, and since I'm new to KOTOR modding, I did use the other mod as a reference point (which I credit in my readme file). I know the modding community has very strict rules against plagiarism and uploading and/or modifying other people's work without their permission. I don't feel that I did this, but I don't want to submit or upload my mod anywhere if it will break these rules or draw the ire of the modding community.

Issue #2: A character's lips don't move in two of their voiced lines. How do I fix this? In the DLG editor, I referenced a vanilla audio clip for that character, but I assume that because that audio originated in a different segment of the game, it didn't automatically make the character's lips move. I tried researching how to generate .lip files, and I read the "Lip Synching?" thread here, but it seemed like the process was either difficult or impossible without getting another user's help, because of a defunct(?) program. Also, I don't know if my situation makes a difference, since I'm using a vanilla audio reference, as opposed to a new, original audio file.  The lips not moving is the only thing about my mod that really breaks immersion, but I don't know how to fix the bug.

So - should I upload my mod as-is? Is it possible to fix the lip issue? Should I refrain from uploading the mod due to the fact that a similar mod by someone else exists? Thanks

Edited by Scarrab
  • Light Side Points 1

Share this post


Link to post
Share on other sites

There's no issue with pulling other mods to pieces to see how they were made. That's an excellent way to learn and I encourage all people new to modding to do so. Acknowledgement for such a thing is not required, although it is common courtesy. What is against the site rules is stealing/claiming someone else's work as your own, or reusing/redistributing someone else's work (in whole or part) without their permission.

As far as LIP files go, they must be stored in a MOD for the specific module they belong to, placed inside the Lips folder. In your case the module you are working in is the Lehon Central Beach, UNK_M41AA. The associated MOD is \lips\unk_m41aa_loc.mod. Each LIP file name needs to match the VO_ResRef for the associated line in the DLG. For example, Mission's "No - this isn't happening! It can't be happening!" line in unk41_mission.dlg has the VO_ResRef nm41aamiss04000_ and has a matching nm41aamiss04000_.lip in \lips\unk_m41aa_loc.mod.

As with many first-timers, I gather your intention was to just dump a manually edited DLG into the Override. I would strongly advise against this. Doing so creates compatibility issues. Since you'll need to dynamically inject new LIP files into an existing MOD (doing a hard overwrite of that is also strongly advised against), you'll have to learn how to create a TSLPatcher setup. While you are at it, you can also have it dynamically patch the DLG in another MOD (this time for the module itself) in the Modules folder. This will likely take you a while to wrap your head around, so I would suggest the first thing to do is to download TSLPatcher and read the included PDF for an overview of how it works. Once you have done that, come back and provide details of all your mod's components (specifics of exactly what you have changed and how) and someone can guide you through creating a setup for it.

  • Like 1
  • Light Side Points 4

Share this post


Link to post
Share on other sites

I see, so I can use any pre-existing voice lines in the game - as long as I extract the LIP files from the modules the voice lines originated from, then inject them into the new module. That's great news. Thanks a lot for your detailed answers - especially the examples you went out of your way to provide.

Even though it's my first mod, I've recently obsessively downloaded, playtested, and cracked open a large number of mods in an attempt to learn how everything works, and in the process I learned how important TSLPatcher is. I won't upload my mod anywhere without creating the TSLPatcher setup for it.

Question: Some of the mods I tested weren't made with TSLPatcher, and they did have an assortment of .LIP files just dumped in the Override folder, with no explanation in the readme. Any idea what could the purpose of that could be, if the .LIP files are supposed to be stored in a specific MOD in the Lips folder? I've been operating under the assumption that the Override folder just overrides any particular file of the same name, so if I'm understand this right, putting a .LIP in the Override folder shouldn't be able to do anything on its own, aside from replacing the original default instance of itself...

Edited by Scarrab

Share this post


Link to post
Share on other sites

You can put LIPs in the Override, be they new custom ones or replacements for vanilla ones. However, since you are using existing LIPs to be repurposed in a different module whilst presumably retaining the same ResRefs, it would be better to inject them into the specific MOD for that that module's LIPs. Putting them in the Override would also affect the originals, which may cause problems if someone else wanted to edit those independently. Alternatively, you could give your duplicated VO and LIPs custom ResRefs, which would alleviate that concern and allow you to put them in the Override. That may ultimately be the more desirable root, since it means less likelihood of clashes with anything else.

Share this post


Link to post
Share on other sites

I would say it's not a matter of where they're "supposed" to be stored but more of what is accessible to each area.

Every area has access to the RIM and MOD files associated with it, as well as anything in Override and other globally-accessible paths, including localization.mod for lips. If you want a lip file to be accessible from a particular area, you can put it in any of those locations and it will work. However, we generally don't insert files into RIM archives when there are ways to make them accessible without permanently altering the game's original files for compatibility purposes, so I wouldn't recommend editing any of the archives in the lips folder for the same reason.

I would recommend creating a MOD for the area in the modules folder and install files in it via TSL Patcher. You can see an example of this in my Jedi Tailor mod.

  • Like 1

Share this post


Link to post
Share on other sites

Glad to see someone else take a crack at it, so does DP.

I'm certainly curious to see how you did it, welcome to deadlystream btw!

 

  • Light Side Points 1

Share this post


Link to post
Share on other sites

Ahh, so that's how it all works. I should be able to get the lips moving now, then!

jc2! Thanks for the welcome, and I'm glad you aren't offended that I'm making my own take on the concept. Hopefully I'll have everything finished soon thanks to the help I received here, and you'll be able to check it out.

EDIT: So, the mod is now complete, fully functional, and bug-free. Feels good. Now I just need to learn TSLPatcher and write the Readme, and I can upload it.

EDIT 2:  Well, it's done. I created a Manual Install version as well as a TSLPatcher version. I read the readme for TSLPatcher, but when I got to the step about configuring and appending specific edits to the default .DLG file, the process seemed like it was for more time and trouble than it's worth, so I just directed TSLPatcher to throw the DLG file into the Override folder. I don't know how many other mods touch unk41_mission.dlg, but I realized that if they do, appending my changes onto their changes isn't a great idea. I think that only one mod that touches unk41_mission.dlg should be used at a time.

I know the design philosophy behind TSLPatcher is to move the burden of mod compatibility from the end user onto the mod maker, but my own philosophy has always been that it's each mod user's responsibility to manage their own game installation and avoid compatibility issues by reading the mod's documentation and learning how mods work. Dark Side points gained?

Edited by Scarrab
finished the mod
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

TSLPatcher has a functionality that lets you compare an edited gff file to the original and will then create the change list based on that. Setting that up even for your dialog shouldn't take more than 5 minutes once you figured out how it works.

And while dialogs are prone to breaking when used in multiple mods even with TSLPatcher to patch them, it would still make it way more likely that your mod can be used with others.

  • Light Side Points 2

Share this post


Link to post
Share on other sites
14 hours ago, Scarrab said:

...the process seemed like it was for more time and trouble than it's worth, so I just directed TSLPatcher to throw the DLG file into the Override folder. I don't know how many other mods touch unk41_mission.dlg, but I realized that if they do, appending my changes onto their changes isn't a great idea. I think that only one mod that touches unk41_mission.dlg should be used at a time.

I can partially agree with you by installing a unique DLG to the Override [that not shared in different modules such as lev40_carth], and hard-overwrites any of the same instances -- as I've been there trying to setup a patch for a massive DLG and ends-up breaking things, lol.

If anything the way I see it -- the patching comes when someone decides to change the script/how the script works in a specific nodes, without adding new trees and/or branches to the DLG. Can also work for new cameras placement or anything that basically not changing the structure. I can't see things working if let's say -- I decided to have a mod that does the same as you but having more/less dialogue options/variations and decides to patch yours. Because one thing I know that TSLPatcher could not delete nodes -- it can only adds/edit ones. Edit: well, figured out one could add a conditional script that is unavailable so the node/s will not shown, but you get the point.

Alternatively -and last resort, as it will turns you a villain here, hahah-, you can make your mod a semi-closed system by editing the script that fires the DLG - point to your customized one that have unique labelling e.g. scr_unk41_mision. That will make yours very specific, and if anything breaks you know the one script that does that.

Anyway, congrats with the release -- looking forwards for more from you. Cheers!

Edited by ebmar

Share this post


Link to post
Share on other sites

Kexikus - I didn't realize a DLG file was also a GFF file. I didn't see any section specifically for DLG in the readme, so I went and Googled a tutorial written by the creator of TSLPatcher that seemed to explain how to prepare DLG files, and it was a very involved process that seemed like it would take many hours. Now that I've read over TSLPatcher's readme again, I see the feature to automatically compare files for changes. I'll have to release an updated download for the mod tomorrow that utilizes this, then.

EDIT: Nope, it didn't work. Several warnings/errors popped up during the install about blank fields, and when I tested it, the dialogue tree broke and got stuck. According to TSLPatcher's readme: "Keep in mind that the Compare function is intended to save you some time with tedious data entry, and is not meant as a one-click solution for all manner of GFF editing needs. Depending on the situation and type of files you work with it will be more or less useful. Some modifiers may need some manual tweaking afterwards to function as intended when they refer to other data, or need dynamic data inserted."if the modified file has deleted fields compared to the original ChangeEdit will not notice, since TSLPatcher currently is unable to delete fields from GFF files."

I'm fine keeping it as-is; I don't think my mod should be compatible with other mods that modify the same DLG file anyway. Using TSLPatcher to append changes for compatibility's sake would be making my mod work in situations where it shouldn't. The only other mod I'm aware of that uses the same DLG file as mine is jc2's Save Mission mod, and my mod shouldn't be run at the same time as his, anyway.

ebmar - Thanks! I don't know if I'll release any more more KOTOR mods in the future, but anything's possible. The only thing I really feel is missing from my KOTOR installation now is a way to have Juhani as a dark side follower, and, speak of the devil, Kexikus here is already working on that exact mod.  Maybe I'll make something for KOTOR 2...once I play the game! I did the first 5 minutes of it, and said, "This game is going to be too good. I'll save it for later, so I have something to look forward to." [10 years later...still hasn't played it]

Edited by Scarrab
  • Light Side Points 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.