I sat down to try to tell the story of why there was a year of screaming and yelling over WeiDU. It turns out the story is really long and must be told in multiple parts.
Why So Much Screaming and Fighting Over WeiDU?
Part 1: From Solaufein To KelseyFirst, I ask that you accept/allow me to grant a few things as given.
- The history of WeiDU begins with the history of Solaufein, so even if you're not interested in Solaufein, it's important to the tale.
- There were modding tools before WeiDU.
- It's just that some of the most important ones didn't work very well.
- No, their authors didn't make them that way on purpose, but the fact remained.
- The research of "pre-Weimer people" was very important to WeiDU's development.
- Perhaps no one other than Weimer and the bigg understands better than me the ways in which WeiDU is imperfect, having made feature requests or bug reports which took something like seven versions in one day to sort out.
- The parallel refinement of other programs, such as NI and later DLTCEP, were also important in the modding revolution.
Background:
In mid-2001, the technology of the time allowed two methods of mod redistribution.
One was a complete overwrite--essentially, the modder would package up his dialog.tlk and override directory and ship that. Some files, like script changes, didn't necessarily require a new dialog.tlk. (Why does Irenicus recite Neeber lines in the Shorter Cutscenes mod? For this very reason!)
The other was based on the TBG/IAP file formats. By using a special front-end installer (or, later, a self-extracting installer), modders could redistribute creature, item, dialogue, script, etc. files in a single, compact package. Modders did not need to ship their dialog.tlk file--the IAP installer would add new strings to dialog.tlk for, say, the name of a creature or the detailed description of a new item. The IAP system had some pretty significant limitations, however.
All of the resource files introduced were still overwrites. In other words, adding a banter to Anomen didn't require that you overwrite dialog.tlk, but you still had to overwrite BANOMEN.DLG. (same for script files, 2DAs, etc. etc.) So although more than one mod could hypothetically be installed, any mod which altered a file already altered by another mod was going to create problems. This meant, among other things, that modders had to be very careful about what they had installed while beginning to work--unlike today, when changing Aerie's script means simply EXTEND'ing it with a small block of code, an IAP modder would be distributing all of AERIE.BCS. So if the modder had installed a different mod which, say, enabled multiromance, then changed AERIE.BCS, then built an IAP with that change, people would end up getting multiromance along for the ride. (This exact thing happened at least once.) There was also no way to uninstall a TBG/IAP file.
This meant that, say, a new store operated by a new storekeeper who sold only brand-new items could pretty reliably be packaged into an IAP without any serious danger of fouling up other mods. You would have to start a new game (since if you want a new creature in the game without changing a script, you can alter the BALDUR.GAM file, which the IAP installers were capable of doing) but it was better than nothing.
You might think things could have gone further, but we have yet to introduce IDU. Infinity Dialog Utility was the only real option at the time for dialog editing and creation. There's really no way to get around the fact that IDU was pretty wretched. It could only edit one DLG file at a time, so developing even the simplest banter or interjection was a complicated exercise. It was prone to crashing, which could take the DLG file or the .TLK file with it, requiring that users make frequent backups. It did not support the "state weighting" concept used in the DLG format, which meant not only was it extremely difficult to correct mistakes or add new, higher priority dialogues, but loading, editing, and re-saving any existing Bioware DLG which used non-standard state weighting would be munged, causing the wrong dialogues to occur in game when the creature was click-talked or issued a Dialogue()-style command.
IDU's severe limitations, therefore, strongly discouraged anybody from trying to write dialogue of any appreciable length and complexity.
When, in the summer of 2001, Weimer decided that he was interested in making Solaufein a joinable character and giving him a PC romance, he tried to use IDU and ran across some of these problems. So, like any good Unix geek with a computer science degree would do, he decided to solve his problems with a new command-line utility. Using the already fairly-detailed information available on the DLG and TLK formats, he created a compiler which would take simple instructions and both build new DLG files and expand existing ones, along with the ability to append one BCS file to another, and append text to a 2DA. (The ability to compile scripts directly with WeiDU came later.) The tool didn't really have a formal name, but the compiler executable was called "dc.exe" so it has become retroactively known as "Weimer DC". (The installer was actually a different file at this time.)
So Wes released the first working version of Solaufein (something like v4 or v5) and pretty much called it a day. You see, many modders (often when under critical duress) will say things like, "Well, I primarily mod for myself." But among those modders who actually share their work with others, I have never known anyone who means it to the extent that Wes did. I do not believe I am exaggerating when I say he provided a link to Solaufein less than five times in 2001. (He would mention it a little more frequently in Usenet posts and so forth, but the reader always had to search around for the URL to his homepage.) From his perspective, it was out, it was Done, that was more or less the end of the story.
The point of which is that Solaufein's initial impact was somewhat muted. Usenet readers could find it, and word spread slowly to other discussion groups, but the technological aspects of the mod weren't understood or explored by most of the active modders out there. Every once in a while somebody would pick up on it, like Blucher (Expanded Thief Stronghold) and Arian (Tashia), but the active modding sites simply weren't aware of what was going on. A little later, Ghrey and I started working with it.
With a few different modders now poking and prodding at the application, Wes encountered a problem. The initial pass at his programs pretty literally did what he set out to do with Solaufein, but no more. We were asking for features Wes hadn't anticipated. The emergence of other mods meant that a logging-and-uninstallation system was going to be needed soon. Kelsey, which had more content and more demands on dialogue manipulation than Solaufein did, was causing dc.exe to crash. Wes made a few tweaks here and there but it became clear to him that his original C-based code wasn't going to cut it. So in a fevered weekend in early 2002, he started anew, and created what Ghrey had taken to calling "WeiDU." Unlike the "Weimer DC" system, it was a single executable to compile, decompile, and install, and has worked more-or-less the same now for six-plus years.
WeiDU saved Kelsey and undoubtedly Tashia as well from being infeasible and unpublished. As was his way, Wes didn't make any sort of an Event out of this--he just quietly updated his website when he released a new build, answered our questions and addressed our feature requests as best he could, and went about his business.
As we ported the old IDU materials over to WeiDU and started implementing things which simply had no good solutions with the old toolsets, Ghrey and I found that we were pretty stoked about this, and about the possibilities this could open up for other modders.
That is, if only all of the other modders knew about it...