The Black Wyrm Lair Forums
The Black Wyrm's Lair Terms of Use Help Search Members Calendar

Welcome Guest ( Log In | Register )

> UB bug still present in v16, [split by Baronius]
Baronius
post Mar 17 2008, 10:47 PM
Post #1


Master of energies
Group Icon

Council Member
Posts: 3328
Joined: 9-July 04
From: Magyarország




The bug was known for v15 already. Wouldn't it be easier to fix it in UB itself?

[This topic was split from this]


--------------------
Mental harmony dispels the darkness.
Go to the top of the page
 
Quote Post
 
Start new topic
Replies
Baronius
post Aug 28 2008, 02:51 AM
Post #2


Master of energies
Group Icon

Council Member
Posts: 3328
Joined: 9-July 04
From: Magyarország




Nice solution, plainab. thumb.gif It's "intelligent" code, because it detects the script's name.

However, it's still a reactive solution. It has been done only after a few mods have been broken. And it's a solution to a specific problem. On the other hand, my point was meant to be general, so let me clarify it in such an aspect.

One could argue that this could be made proactive by systematically applying such intelligent codes in mods, but it wouldn't be a widely usable solution (at least without the support of additional tools).

When a mod is tested and its quality is verified, the author and the testers experience certain things (expected and unexpected events, bugs and flaws, certain behaviour and AI of creatures, etc.) in the game. These help the author to develop and refine the mod to a state which meets his or her expectations. The public release of the mod will work according to these expectations.

It's natural to consider the original game as a basis when creating a mod. The files of the game, the dependencies of the game are primarily taken into account when creating a mod. When developing a (bigger) mod and finalizing it, you assume "too" many given things about the game. For example, the intelligent code you presented is for scripts, but similar code could be written for practically all other resource types as well. Let's see an example.

Certain alignment changes of G3's BG2 Fixpack may break Improved Anvil's scripts (note that it isn't a practical threat, as Improved Anvil doesn't support the installation of G3 Fixpack). I remember that Sikret was advised to set the alignments of the creatures in question to the alignments required by scripts. In other words, Improved Anvil would have overridden (overwritten) any previous changes -- including G3 Fixpack's changes -- on the alignments it requires for its scripts. It seems to be a working solution, but there is a problem:

What about the other thousand (or more) dependencies required or modified by Improved Anvil? Should all of them be checked by intelligent codes during the installation or enforced through some sort of "patching" code? This would practically mean overwriting half of the game with "patching" code.

One could argue that you should only enforce those changes which are modified/overwritten by other mods. But what mods? If the installation order isn't fixed, the player might install any mods before the mod in question, so there is no way to know what will be changed in the game by other mods. But let's assume we only want to build on G3's BG2 Fixpack. It's still not an option: G3 Fixpack changes all the time, and even most of its existing modifications are unverified (or even untested). How can you prepare your mod to something which will happen in the future?

In other words, enforcing expected dependencies and using intelligent codes to detect other mods' changes on the game cannot be applied proactively, because bigger mods would have to overwrite half of the game and scan several hundreds of fields to detect changes. So the reactive solution remains: mods crash, mods trigger bugs, mods cause problems -- developers find the problems, and apply specific fixes on their mods to work with each other. Then it's starts from the beginning again.

To cut a long story short, the approach favoured by certain groups of mod developers strongly relies on reactive modding. Again, let's see an example.

G3's BG2 Fixpack applies a huge amount of changes to the game (and very many changes aren't strict fixes). These changes tend to break mods, or at least, they cause mods to work in an unexpected or undesired way. So the developers suggest you to remove the fix through the installation code of your own mod. That is, the G3 BG2 Fixpack requires mods to negate its changes, if those changes cause problems for a third-party mod. This is how its developers imagine it should work:
  1. G3 BG2 Fixpack is installed as a base mod.
  2. A third-party mod is always developed and tested with G3 Fixpack installed.
  3. The undesired or problematic "fixes" of G3 Fixpack are negated by the third-party mod's code.
One of the problems is that negating/removing changes isn't so easy. The changes can form a forest of dependencies with recursive relationships, and without knowing G3 Fixpack in details, your changes might be unsuccessful (and problems might appear in a future combination of mods) or even introduce a bug.

Another big disadvantage of this type of reactive approach is that the third-party mod becomes dependendant from the mod it was based on (e.g. in this case, G3's BG2 Fixpack), so any future changes on the base mod will affect (possibly break) the third party mod as well. The author of the third-party mod has no other choice than checking the base mod's news and events, and revise/extend his or her own work when the base mod has been changed. He or she can never say "At last, I've finished with the most of it, now it will be just minor fixes once per year". On the other hand, the original game is a static system, it doesn't change and thus it won't break mods that are based on it.

In case of our example, G3 Fixpack, one could argue that the third party mod author only have to deal with the changes of the Core component of G3 Fixpack. Apart from the fact the Core component is huge too, there is another problem: while the other parts are optional indeed, most players usually choose "Yes" when the installer asks them about it (why would they skip components with tempting, cool-sounding content). The consequence is obvious: all optional components will be installed too, and the third-party mod isn't prepared to their changes.

The third problem of this solution is that it expects the author of the third party mod to study the base mod (e.g. G3 BG2 Fixpack), and negate/remove certain changes of it that cause problems for the third-party mod. It makes the life of new mod developers even more difficult. Let's see how these things changed with time (in case of a simple or medium-simple mod):
  1. At the beginning, you could create a reliable and stable mod (even a serious quest mod) by creating a bunch of item, spell, store, creature, script, area etc. files and adding them to a TeamBG IAP/SFX pack. Such a mod isn't compatible with other mods that change the same files, but it works in the game.
  2. Now, we expect an IE mod developer to learn the basics of the WeiDU system, and install these changes and additions to the game via WeiDU. This code is still relatively easy, and even if the mod developer doesn't understand its computer science aspects, he or she can still use a sample code from somewhere else.
  3. In the present topic, we've been talking about intelligent codes and mods that enforce their required dependencies by using code; I've been talking about the developers of certain mods (such as G3 Bg2 fixpack) expecting third-party mod authors to ensure compatibility with the G3 Fixpack... It isn't so easy any more, is it? Is there a difference e.g. between the code you've pasted and the complexity of creating an IAP pack?
Don't get me wrong (and before anyone would try to twist my words: no need for it), I'm not saying that IE mod developers should use IAP. I'm merely trying to express that the expectations (demands) towards an IE mod developer have increased a lot. It's not enough to thoroughly test the mod, certain mod developers would expect others to understand data types, bitwise manipulation, variables, programming language structures etc.

For example, let's see our previous example again, G3 BG2 Fixpack. I ask it, why can't it work in the following way:
  1. G3 BG2 Fixpack is one mod, with the strict, unambigious fixes. Most mod developers could easily support this fixpack without having to study its code or negate/remove its changes via their own mods' code.
  2. There is another mod which includes all the questionable, subjective fixes. This would be a bigger mod, with a lot of changes, so those who couldn't support it (e.g. authors of big or complex mods) could still rely on the aforementioned "strict" Fixpack.
This is a big question: why aren't the questionable, subjective "fixes" put to a different mod? I have never got a reasonable answer to it.

Why IE mod development has to be the privilege of those who understand data types, bitwise manipulation, variables, programming language structures etc.? One could argue that there is sample code available, but in the hands of those who don't understand the code they use, it just becomes the source of bugs. And adjusting, extending sample code isn't possible without the understanding of certain fields of computer science.

One could say that someone who wants to be an IE mod developer should learn these things or forget about modding. It's indeed reasonable to expect a certain level of knowledge and user skills for modding, but they are far from what a WeiDU programmer needs to understand and use in the practice.

In the light of the fact WeiDU is a very useful and versatile system which -- on the other hand -- lacks high abstraction and certain important services, my conclusion is as follows:
  • Developers of mods such as G3 BG2 Fixpack should reconsider their viewpoint, and think about splitting, revising and thoroughly testing their mod, instead of waiting for players to report bugs (which isn't a problem -- most G3 Fixpack fans gladly do so), and instead of expecting third-party mod developers to use their monolithic fixpack and adjust their mods to it after learning advanced WeiDU skills.
  • IE mod development could be made much more reliable and easy. The current system isn't user-friendly enough, so IE modding is currently the privilege of those who devote very much time and effort to learn, and remain active to constantly support and adjust their mod according to the newer and increasing expectations of the "mainstream" of the IE modding community.


--------------------
Mental harmony dispels the darkness.
Go to the top of the page
 
Quote Post

Posts in this topic
Baronius   UB bug still present in v16   Mar 17 2008, 10:47 PM
kulyok   Naturally, and I do wish it were fixed, as well as...   Mar 18 2008, 07:46 AM
Sikret   Naturally, and I do wish it were fixed, as well as...   Mar 19 2008, 08:20 AM
Jab   UB and QP have been severely bugged for years. The...   Mar 19 2008, 04:26 PM
Moongaze   I agree about stability. ....and likely writing i...   Mar 19 2008, 08:29 AM
Sikret   "Stability" is not the only criterion, b...   Mar 19 2008, 09:54 AM
Sikret   @Jab It's funny that you quoted a paragraph w...   Mar 19 2008, 04:56 PM
Jab   Misreading my name for Vlad's is the simplest ...   Mar 19 2008, 05:16 PM
Sikret   No flamewar is in progress in this thread; it...   Mar 19 2008, 06:58 PM
Jab   No flamewar is in progress in this thread; it...   Mar 19 2008, 07:20 PM
Sikret   No flamewar is in progress in this thread; it...   Mar 19 2008, 08:08 PM
Baronius   1) Some people consider this as a competition (or ...   Mar 19 2008, 08:58 PM
The Bigg   I was going to post about how backwards compatibil...   Mar 19 2008, 09:14 PM
Baronius   Accidents and problems always happen, but: 1) It ...   Mar 19 2008, 09:48 PM
DavidW   I'm deeply reluctant (as a newish observer of ...   Mar 20 2008, 02:07 AM
Valiant   Exaggerating you say? Well, not at all. I believe ...   Mar 20 2008, 08:44 AM
Baronius   First of all, it's important to note that the ...   Mar 20 2008, 09:01 PM
SimDing0   The is pretty good work, guys. You're actually...   Mar 22 2008, 01:08 PM
Valiant   The is pretty good work, guys. You're actually...   Mar 22 2008, 01:37 PM
SimDing0   Because this is all daft and I don't care?   Mar 22 2008, 01:50 PM
Valiant   If you don´t care and all is daft, then just simp...   Mar 22 2008, 01:53 PM
SimDing0   Expressing my contempt for the proceedings is a pe...   Mar 22 2008, 01:57 PM
Valiant   If you say so...   Mar 22 2008, 02:01 PM
DavidW   Replying rather late (I've been away). I'm...   Mar 25 2008, 01:05 PM
Sikret   UB has many other serious bugs even if we put asid...   Mar 25 2008, 02:50 PM
Baronius   They are interrelated to a certain extent (depende...   Mar 25 2008, 02:51 PM
DavidW   Almost forgot: It's a specific case, indeed. ...   Mar 25 2008, 03:50 PM
DavidW   Okay, so I seriously don't want to get into di...   Mar 25 2008, 03:47 PM
Baronius   Then the coupling of SCS2 is stronger than I thoug...   Mar 25 2008, 04:06 PM
plainab   I recently came across this issue as I was working...   Aug 27 2008, 11:23 PM
Baronius   Nice solution, plainab. :thumb: It's "int...   Aug 28 2008, 02:51 AM
plainab   He likes the code and that makes me happy. :D ...   Aug 28 2008, 08:02 AM
Baronius   @plainab: This is exactly why I gave up any attem...   Aug 28 2008, 05:05 PM
Sir_Carnifex   I haven't said anything in these fixpack, etc....   Aug 28 2008, 05:39 PM
Sikret   the G3FP developers have defined a new way of tria...   Aug 28 2008, 10:21 PM
DavidW   the G3FP developers have defined a new way of tria...   Aug 28 2008, 10:33 PM
plainab   I need to calm down. 10...9...8...7...6...5...4.....   Aug 28 2008, 10:06 PM
Sikret   The fact that the developers of BG2 fixpack don...   Aug 28 2008, 10:47 PM
DavidW   And the last point: if you are ready to object aga...   Aug 28 2008, 10:57 PM
Baronius   DavidW, I'm sure Sikret has even less hope tha...   Aug 28 2008, 11:18 PM
Ancalagon_UK   Theres something I still dont get though, Baronius...   Aug 29 2008, 09:53 AM
Sikret   Theres something I still dont get though, Baronius...   Aug 29 2008, 10:24 AM
Ancalagon_UK   Ba ha ha ha ha! Yes, you are attacking it. You...   Aug 29 2008, 10:40 AM
Sikret   Actually no, players who use free mods have no rig...   Aug 29 2008, 11:16 AM
Baronius   Ancalagon_UK, I would suggest to you to study the ...   Aug 29 2008, 10:44 AM
DavidW   3. They blackmail mod developers to use the G3 Fix...   Aug 29 2008, 11:20 AM
The Bigg   proper testing IS possible, if they allocate time ...   Aug 29 2008, 11:57 AM
Ancalagon_UK   hey I'm a professional software developer wi...   Aug 29 2008, 11:19 AM
Baronius   They're still manipulating, and the practice h...   Aug 29 2008, 11:38 AM
DavidW   Is this partly the issue? I don't and didn...   Aug 29 2008, 11:45 AM
Baronius   Well, I do. They have succeeded to advertise it e...   Aug 29 2008, 11:55 AM
DavidW   Well, I do. Okay, so since I don't really ...   Aug 29 2008, 12:06 PM
Baronius   As I've said, it's a question of definiti...   Aug 29 2008, 12:06 PM
coaster   A player's perspective - I am not even going t...   Aug 29 2008, 01:08 PM
Jarno Mikkola   At its current status, the Bg2 fixpack is best be ...   Aug 29 2008, 01:50 PM
Sikret   At its current status, the Bg2 fixpack is best be ...   Aug 30 2008, 10:33 PM
DavidW   2- Hidden bugs, which will come to surface and sho...   Aug 30 2008, 10:40 PM
Sikret   So I'm wondering what would make something a ...   Aug 30 2008, 10:51 PM
DavidW   So I'm wondering what would make something a ...   Aug 30 2008, 11:00 PM
Jarno Mikkola   No, even if you install it alone, it will add lots...   Sep 1 2008, 11:25 AM
Sikret   Like what? If we are talking about the key items t...   Sep 1 2008, 02:30 PM
Lorph Halys   See my edit to this post for the reason I'm no...   Sep 1 2008, 02:51 PM
Baronius   If this has been your impression, then I must have...   Aug 29 2008, 04:32 PM
Sir_Carnifex   Even if you are right, if you resort to posting li...   Aug 29 2008, 05:18 PM
The Bigg   This from a person who actively participates in th...   Aug 29 2008, 05:26 PM
Sir_Carnifex   Under the name Proteus_Za or something like that. ...   Aug 29 2008, 05:35 PM
The Bigg   Shows how much attention I have for details (and t...   Aug 29 2008, 05:37 PM
Ardanis   I could just sign under this statement. I wonder ...   Aug 29 2008, 09:15 PM
Sir_Carnifex   I wonder if anyone posting there is actually being...   Aug 29 2008, 11:22 PM
Baronius   The anonymity of the internet and the lack of need...   Aug 30 2008, 12:34 AM
DavidW   It usually reflects a weak character, a weak perso...   Aug 30 2008, 10:17 AM
Ardanis   I was as serious as possible about blackmailing. I...   Aug 30 2008, 01:28 AM
Baronius   I suspect it's also about different forum po...   Aug 30 2008, 02:25 PM
Lorph Halys   Having at least made an attempt to read your enorm...   Aug 30 2008, 05:04 PM
Baronius   They indeed consider it a big popularity contest, ...   Aug 30 2008, 05:37 PM
Lorph Halys   On the other hand, we've never cared if many p...   Aug 30 2008, 06:23 PM
Baronius   Two different things. As everyone else, I believe...   Aug 30 2008, 06:46 PM
Lorph Halys   And I still believe you're strongly influenced...   Aug 30 2008, 07:06 PM
Jab   These threads are just hatcheries for trolls. Give...   Aug 30 2008, 06:50 PM
Baronius   Thanks Jab, I'm not trying to convince G3 FP d...   Aug 30 2008, 06:52 PM
Sir_Carnifex   But it takes fire and acid to kill them. So... :)   Aug 30 2008, 06:54 PM
Baronius   @Jab: I hope that's some fine Czech beer in yo...   Aug 30 2008, 06:59 PM
Jab   Baronius: I must say, that I don't consider ot...   Aug 30 2008, 07:07 PM
Baronius   True. Sometimes one unintentionally generalizes i...   Aug 30 2008, 07:15 PM
DavidW   Okay, so two quick points: 1) I think it would be...   Aug 30 2008, 08:21 PM
Baronius   As I've emphasized earlier, it's a matter ...   Aug 30 2008, 11:12 PM
DavidW   Well, to be fair, it's my terminology to call ...   Aug 30 2008, 11:22 PM
Ardanis   BTW, this indeed might have something to do with h...   Aug 30 2008, 11:45 PM
Baronius   You don't need to thank anything, but I'm ...   Aug 30 2008, 11:47 PM
DavidW   I know I've quoted it already, but I like it s...   Aug 31 2008, 10:36 AM
Baronius   I forgot to emphasize that I was interpreting your...   Aug 31 2008, 11:46 AM
DavidW   I agree that discussing definitions can get tireso...   Aug 31 2008, 11:29 PM
Baronius   For Sikret and me, it doesn't. There is no ne...   Sep 1 2008, 12:37 AM
plainab   This is true. However, may I bring up something t...   Sep 1 2008, 05:25 AM
The Bigg   I think it's pretty poor of a program's de...   Sep 1 2008, 10:30 AM
DavidW   To avoid getting enmeshed in a philosophy-of-langu...   Sep 1 2008, 09:25 AM
coaster   Unfortunately there are a few bugs outstanding in ...   Sep 1 2008, 01:50 PM
The Bigg   TBH I wonder whether the "suck it and see...   Sep 1 2008, 02:00 PM
2 Pages V   1 2 >


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:



- Lo-Fi Version Time is now: 12th December 2025 - 02:33 AM