A problem solving approach
Introduction: The Main Issue
I would like to make lucid the bony edge that modders and players have come to bicker about by starting a new topic focussed on one all-encompassing issue:
How can players and modders work together to make a mega-modification install satisfy both parties' wants?
I clarify 'player' and 'modder' as abstract terms referring to 'a person who installs and plays modifications' and 'a person who creates modifications and makes them available to the public community'. One can be both a 'player' and a 'modder'.
I clarify 'work together' as meaning both parties put in substantial effort to satisfy each others' wants.
The most important thing for me to summarise from all the discussion about the technicalities and practicalities of mega-modification installations so far are the goals of the player and the modder in relation to modifications. Please note that goals are the endpoint, the ultimate aims if you like. This does not include the methods utilised to achieve that goal. You will see what I mean if you continue reading. Also, while not all players and modders may want all that I have listed, this problem solving session is an all-inclusive attempt to satisfy all players and modders.
Goals
Players
- P1-Can use a wide range of modifications - a mega-modification installation ideally installs all modifications
- P2-Efficiently download modifications without tedious searching - saves time for the player
- P3-Simple installation process - installation with as little user input as possible, saving time and frustration
- P4-Simple and smart determination of installation order and compatibility - a high fidelity approach that saves time and frustration
- P5-A game that does not break - again, saves time and frustration
- M1-Simple maintenance and updating of authored modifications - a measure of controlled distribution
- M2-Simple provision of support - to reduce time debugging and increase time modding
- M3-A measure of respect for their work - a feeling of satisfaction
Current methods to achieve goals
P1-Can use a wide range of modifications
- There are loads of modifications out there that a player might want to use, and modders make them!
- 'Can use' is a little more tenuous, and is the crux of compatibility; falls on the modder's sphere - Problem: Modders cannot always ensure complete compatibility
- A central 'mod list' that links to the modifications desired, containing direct links to download the modifications
- Upload mods to an independent mirror, which may be mega-modification-specific, and directly link to the modifications - Problem: to satisfy all the goals of the modder, the host of the mirror should seek permission, but author may not reply, due to spam or loss of interest or bad contact address, or decline permission, and multiple authors may complicate permission-giving (one solution that has occurred is to set up 'unauthorised mirrors' without seeking permission)
- Additionally handle links by automated script - Problem: links may die at any time, such as slightly changed link due to changed version number
P4-Simple and smart determination of installation order and compatibility
- A sophisticated, automated installation script, of which several are around at the moment - Problem: lots of work, difficult to maintain, continuous updates may be required
- Use only specific versions of modifications, which may include older ones (gets around above problem also) - Problem: difficult to support by modders (M2)
- Automated installation script is customisable but restrictive based on order and compatibility - Problem: lots of work
- Fix bugs - Problem: hard to diagnose bugs with big installs
- Use fewer mods - Problem: contrary to P1
- Author controls distribution and/or allows, is aware, and is active with other distributions - Problem: official download mirrors may not be friendly to automated scripts
- Version of modification used is the most up-to-date - Problem: mega-modification installation requires continuous updating
- Version of modification used is the most up-to-date - Problem: mega-modification installation bug spectrum continually changes, new incompatible components, changes to language index and component index, must scrap bug-fixing and start over
- Ask for permission before setting up alternative distributions - Problem: author may not reply, due to spam or loss of interest or bad contact address, or decline permission, and multiple authors may complicate permission-giving
- Author allows, is aware, and is active with other distributions not directly controlled by him or her
As you can already see, this is a massively complicated problem, and hopefully I have portrayed naked the goals and methods that constitute the main issue. What follows is my suggestions on the methods to satisfy the goals of the player and the modder as fully as possible. It involves work on both the players' and modders' side.
1. Using a Wide Range of Modifications
1.1. Players have access to a wide range of modifications. However, not all will work together flawlessly. This is the crux of compatibility.
1.2. Modders cannot always guarantee compatibility. An incompatibility is a conflict between components regardless of which order they are installed relative to each other. Hence, a conflict between components that occurs only in a specific order should be dealt with by adjusting installation order of the mods. If the adjusted order causes further incompatibilities with other mods, it can be referred to as an incompatibility. Incompatibilities may be unresolvable of resolvable.
1.2.1. Unresolvable component conflicts should be noted clearly. Automated installation scripts should restrict installation of two or more components containing unresolvable conflicts.
1.2.2. Resolvable conflicts may exist due to destructive changes to game resources. These can either be no longer maintained by the author, or is maintained by the author.
1.2.2.1. For destructive changes in components that are no longer maintained by the author, current modders should update these 'legacy' components. In the interim, or if any difficulties are associated with updating legacy components (including lack of permission to no one wants to update it), two situations arise.
1.2.2.1.1. If the component is based predominantly on overwriting resources, it should not be used in a mega-modification installation until the component is updated.
1.2.2.1.2. If the component is not based predominantly on overwriting resources, a patch can be created by either a player or a modder that is based on WeiDU, not replacement game resources, to address the issue, if practical. Otherwise, the component should not be used in a mega-modification installation unless it is updated.
1.2.2.2. For destructive changes in components that are maintained by the author, the issue should be flagged to the modder for prompt correction. Modders should help other modders improve their modding skills to improve compatibility, so that future resolvable incompatibilities can be avoided. In the interim, if practical, a patch should be endorsed by the modder, and created or supervised by the modder to address the issue. The patch should be based upon WeiDU, not replacement game resources, to address the issue. If the modder has elected to use only the latest version of his or her mod in the mega-modification installation, then it is his or her responsibility to notify of the update at the centralised mega-modification installation site as soon as the updated version of the modification is available. Otherwise, the older version may continue to be used with the patch.
1.3. Modders can elect whether they will support the use of their modifications in the mega-modification installation. If so, all the guidelines in this document apply. If not, then under no circumstances can the modification be used in a mega-modification installation unless the modder's stance changes out of his or her free will.
1.3.1. Should players use modifications where modders have elected not to use in a mega-modification installation, then no support shall be given by modders or players for their entire installation, regardless of whether a bug is due to the use of that modification or not.
1.3.2. If modders wish to change their stance on the use of their modifications in the mega-modification installation, they must explicitly state their new stance at the centralised mega-modification installation site.
2. Efficiently downloading modifications
2.1. To simplify maintenance and updating of authored modifications for modders, and to show a measure of respect for the work of modders, modifications should only be made available in versions and at locations at the behest of the modder.
2.2. Links to downloading modifications in a mega-modification installation should be at a centralised site that receives frequent input from modders so that updates can be made swiftly. This can be open source, allowing modders to directly modify their
2.3. The location of a modification should be determined by the modder. It can be unrestricted, restricted to 'official' sites only (SHS, PPG, G3, TBG, CoM, RPGD, Sorcerors Palace, BWL), or restricted to 'official' sites plus the centralised mega-modification installation site.
2.3.1. If the location of the modification is unrestricted, a copy of the modification should be placed at the centralised site. This ensures that the availability of the modification is stable, and simplifies handling of links.
2.3.2. If the location of the modification is restricted to 'official' sites only, the centralised site should link to the official site. Specifically, the link should point as directly to the modification as possible to avoid further clicking. Modders and site hosts should attempt to the best of their ability to ensure the file name for the modification is changed as little as possible. Ideally, a referral link, such as that used by the SHS, may be useful. Alternatively, the file name never changes between versions.
2.3.3. If the location of the modification is restricted to 'official' sites plus the centralised mega-modification installation site, a copy of the modification should be placed at the centralised site. If the modder has elected to use only the latest version of his or her mod in the mega-modification installation, then it is his or her responsibility to notify of the update at the centralised site as soon as the updated version of the modification is available. Otherwise, the older version can remain at the centralised site.
2.4. The version of the modification for use in the mega-modification installation should be determined by the modder to ensure that modders are comfortable with the provision of support for their modification. The modder should nominate if they would like to use only the latest version of the modification, or allow older versions of the modification to be used.
2.4.1. If the modders would like to use only the latest version of the modification in the mega-modification install, the mega-modification installation should be updated as soon as possible after the version of the modification is updated. It is the modder's responsibility to ensure that the links from the centralised site are updated promptly. If the modder places no restriction of the distribution of the modification, an updated copy of the modification should be placed at the centralised site as soon as possible, preferably under the responsibility of the modder. If the modder allows distribution of the modification to the centralised site, it is the modder's responsibility to update the modification version at this site as well.
2.4.2. If the modders allow older versions of the modification to be used in a mega-modification installation, the modder should elect a particular version and the distribution method of the modification as in Section 2.3. The most direct link to the file should be placed at the centralised mega-modification installation site.
2.4.3. If the modder is indifferent to the older version of the modification to be used in a mega-modification installation, the current version shall be assumed.
2.4.4. So long as the modder does not wish to change the version of the modification he or she would like to be used in a mega-modification installation, that version will always be used regardless of updates to the version of the modification.
2.4.5. If the modder wishes to change which versions of the modification he or she would like to be used in a mega-modification installation, the guidelines should be followed as per using the latest version of the modification outlined in Section 2.4.1, but using the particular version of the modification that he or she elects.
2.4.6. If the modder elects an older version, he or she must provide support for that version of the modification.
2.5. If the modder does not elect a location and version of the modification to be used in the mega-modification installation, every attempt should be made by players and modders alike to contact the modder and receive an election. Several situations arise.
2.5.1. If the modder responds and elects a location and version, then the procedures should be followed as described above.
2.5.2. If the modder responds and shows indifference, then the distribution of the modification can be deemed unrestricted, and the versions allowed are deemed to be any.
2.5.3. If the modder responds and declines use of the modification in a mega-modification installation, then Section 1.3 is followed.
2.5.4. If the modder does not respond after every attempt at communication is made for a consistent 3 months, then the modder's response is deemed indifferent, and Section 2.5.2 is followed.
2.6. If a modder wishes to change their stance on any topic regarding the distribution or version of the modifications for use in the mega-modification installation, they must explicitly state their new stance at the centralised site.
3. Installing modifications
3.1. Installing modifications covers the determination of modification compatibility in regards to installation order and installation viability, the miscellaneous determination of installation order, and the actual installation process itself
3.2. All known modification compatibility issues must be taken into account in the determination of installation order and installation viability.
3.2.1. It is the responsibility of the modder to be aware of all known compatibility issues between their modifications and other modifications. This allows the modder to advise properly of corrections to installation order, create or supervise patches, and make corrections to their modifications if required. The author of a modification should have the most informed say on installation order and viability for their modification, and thus should decide where the modification should go relative to others in a mega-modification installation. The modder must have a valid and confirmed reason for placing a modification at an absolute or relative position in the installation order. Unfounded, whimsical, and dubious reasons should not be considered.
3.3. Installation order should be handled at the centralised mega-modification installation site, preferably in an open-source manner or by a custodian that follows the above guidelines.
3.3.1. When determining installation order for the current usable versions of modifications, modifications should be placed in the following order: (1) identify modification groups of the smallest size possible from all modification with known compatibility issues (these groups contain all modifications where there is a compatibility issue between any two members) and assign relative order within groups, (2) put all modification groups in an absolute order from the group containing the largest number of members to the group containing the smallest number of members, (3) 'miscellaneous' modification with no known compatibility issues shall be placed in alphabetical order after all modification groups. Prepositions in modification names will be considered when determining this order.
3.3.2. If two components are not viable together under any circumstances, an either-or approach to the installation should be used, but the determined installation order should not be changed, even if a compatibility issue is alleviated upon withdrawal of a component.
3.3.3. Every version of the installation order should be tagged with a code, preferably the date rather than the version, and stored in a repository, to enable perusal when dealing with bugs.
3.4. The installation process itself should comprise of a batch method that takes into account the currently determined installation order.
3.4.1. Each modification should have an accompanying readme that can be perused as the player chooses which modifications that he or she would like to install. Readme files should be mirrored at the centralised mega-modification installation site. As for modifications described in Section 2, it is the modder's responsibility to ensure that these readme files reflect the version of the modification used in the mega-modification installation.
3.4.1. The choice of components to install should be customisable to the player and include restrictions on components that are not viable together and components that require other components.
3.4.2. From the nominated list of components, an automated script should generate a batch file that handles the installation process with as little input from the player as possible. The automated script should also ensure that the installation will occur with the least probability of error. This includes validation of the Baldur's Gate II installation. Throne of Bhaal version 26498 is assumed.
4. Dealing with bugs
4.1. While there are numerous compatibility issues and bugs known, there are just as many, if not more, that are not yet known.
4.2. All bugs encountered during the playing of a mega-modification installation must be reported at the centralised mega-modification installation site, or a forum thereof.
4.2.1. Bugs should be tracked in a database, preferably open-source, which contains the details of the bug and the status on its verification, the diagnosis of the causative modifications, and fixed state.
4.2.2. Every single bug should be reported separately, regardless of whether they were encountered in quick succession, or in the same game. A single bug is a bug that deals with a single situation in the game. Some examples include an incorrect dialogue, a game crash, an unending cutscene, and a missing item icon. As an additional example, a creature with an incorrect dialogue and a bad script should be considered two bugs and thus reported separately.
4.2.3. Players should make every attempt to determine whether their bug has already been reported. If it is, they should confirm the bug and give any further information, if available.
4.2.4. Players with sound modding knowledge are in the best position to perform bug diagnosis. A guide should be present to provide details as to the tools available for the diagnosis of bugs and how to use them. This will encourage more players to diagnose bugs and improve confidence paying a mega-modification installation.
4.2.5. Single bug reports must each contain: (1) the user reporting the bug, for correspondence if further information is required, (2) the WeiDU.log of the game containing the bug, (3) the code of the installation order used, (4) date and time of the bug report, (5) the area number, coordinates, creature name, item name, spell name, situation, cutscene, NPC, or similar thereof associated with the bug, (6) a succinct description of the bug.
4.2.6. Users are advised to keep a separate saved game of the bug to assist with bug diagnosis.
4.2.7. Players should be instructed with the use of the CLUAConsole and Debug Mode with regards to reporting bugs so that the most complete information can be garnered in a bug report.
4.3. Diagnosed bugs can be of two types: single modification bugs, or compatibility conflicts
4.3.1. Bugs that arise from a single modification are due to a single modification itself and not with a mega-modification installation. These bugs should be separated from bugs affecting the mega-modification installation (i.e. compatibility conflicts) and forwarded to the corresponding authors of the modification containing the bug.
4.3. If the bug arises from a compatibility conflict, these bugs should be separated from bugs that arise from a single modification. Steps should be taken as per Section 1.2 to resolve the conflict, if possible. If the issue is solved partially or fully by adjusting installation order, the necessary steps should be taken as per Section 3.3.
4.4. If the bugs are not game-breaking, for simplicity, it is strongly advised that players continue to play without re-installation, installation of additional components, or even the correction of the bug. In other words, players should 'live' with these bugs. As annoying as a bug may be, a re-installation is even more annoying, and making any raw changes to the game will complicate bug tracking later on. This should apply to the smallest bug, such as an item incorrectly flagged undroppable.
4.5. If the bugs are game-breaking, a workaround should be utilised as quickly as possible to allow the player to continue enjoying the game. The workaround should most closely resemble the natural flow of the game and avoid touching on aspects of the game astride from the game's natural flow. Ideally, this would represent the smallest change possible to the offending resource to correct the bug.
4.5.1. Workarounds for game-breaking bugs should be stored with the installation order it is associated with and should be the same for all players of that installation order. Workarounds should be hosted at the centralised mega-modification installation site, and be associated with the bug report it temporarily corrects.
4.5.2. Workarounds should be inherited into updated installation orders so long as the version of the modifications affected by the workaround do not change. Otherwise, workarounds should not be inherited unless the same bug is reported in the updated installation and the affected resources have not changed at all. If the affected resources have changed, the workaround must be updated to reflect those changes.
Pretty lengthy, but necessary given the complicated nature of mega-modification installations. I will try to summarise the duties of the modder and the player below.
Duties
Modder
- Nominate and notify of all changes of stance whether their modifications can be used in a mega-modification installation (yes, no). If so, nominate how it will be distributed (unrestricted, restricted to 'official' sites, restricted to 'official' sites plus centralised site) and which versions can be used (latest only, specific version, any version). If latest version is nominated, notify the centralised site of all updates to modifications and links. If older versions are nominated, the old version needs to be made available at the distribution method nominated by him or her.
- Endorse, and create or supervise patches and workarounds as necessary.
- Improve modding skills, help others improve modding skills, and update legacy code to modern standards, to emphasise compatibility.
- Be aware of the known compatibility issues between their modifications and other modifications.
- Develop skills in use of the console, use of debug mode, and bug diagnosis.
- Report bugs correctly at the centralised site.
- Stick strictly to the modifications mentioned in the installation order and the installation order itself, or otherwise abstain from seeking any help.
- Set up and maintain the centralised mega-modification installation site, including links, readme files, script generation, bug report database, installation repositories, and bug notification for bugs arising from single modifications.
- Communicate with modders who have not nominated for their modifications to be used in a mega-modification installation to get a response.
- Communicate with modders who have not notified of distribution and version of their modifications to be used in a mega-modification installation to get a response.
- Determine installation order and installation viability rules governing the automated script.
Discuss.
Edited by Ascension64, 29 December 2007 - 10:55 PM.