I'm still here and I'm hearing all of you. The dev team is currently extremely busy, so, unfortunately, we can't provide any new information (and missed all the previous estimations around the blog posts and whatnot). As soon as I learn anything, I'll share it.
@Doubledimas That's not a solution neither an information, thus I'll keep waiting for either one of them.
I wish I had the power to give you a solution.
It is information in the sense that you can probably keep posting your comment for a number of weeks as it seems that Beamdog will miss some more deadlines.
For those that are fed up with the pathfinding + happen to be playing on Windows, I've attached a WeiDU mod that does a really quick exe patch. It attempts to revert the relevant pathfinding code to how v2.3.67.3 worked - it might not function perfectly, but it seems to help on my end:
Clumping, (notice two characters stack near the bottom):
Patched, (notice characters not walking to the same spot + bumping each other):
Edit: And I should note that this is by no means the "correct" way to fix the issue - only the devs can do that. This is just a temporary hack until the next version is released.
For those that are fed up with the pathfinding + happen to be playing on Windows, I've attached a WeiDU mod that does a really quick exe patch. It attempts to revert the relevant pathfinding code to how v2.3.67.3 worked - it might not function perfectly, but it seems to help on my end:
Bubb's exe patch does help with the crazy pathfinding, kudo for supplying this. However, I still see party members getting stuck on/near each other for a few seconds before they eventually extract themselves from the tangle.
This is, simply put, a really horrendous bug - I can't fathom how they let this exist for so long and how people put up with it. It's especially aggravating when it happens during combat, when you send 3 melees to target a single foe and one of them ends up stuck/unable to act or attack - happens on a regular basis. I also suspect it contributes to the 'npc spawns and needs to approach party to start dialog but gets stuck and dialog is skipped' bug, which seems to happen more frequently with EE 2.5 than the originals.
This by itself is nearly enough to make me go back to the original BG2 engine.
ERROR: [Baldur.exe] -> [Baldur.exe] Patching Failed (COPY) (Failure("Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed."))
ERROR: Failure("Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed.")
Bubb's v2.5.16.6+ Pathfinding Revert (Restore Pathfinding) was not installed due to errors.
Without this component the installation cannot be continued.
You can try to repair the problem and install the component again afterwards. In this case please select "retry" after the repair.
If you don't want to spend time on that now, you can also exit the program.
Enter [r]etry or [e]xit.
So this is the second time this error occurs. I restarted everything last time and tried again. When I retry nothing occurs, any suggestions?
@antisthenes: Which game are you trying to run this on, what version is it, and which storefront did you buy from? The patch should function on all games versioned v2.5.16.6 or v2.5.17.0, though maybe I missed a specific executable.
Gog for BG1:EE/SOD and Steam for BG2:EE. Version 2.5.17.0
I did take both the fully installed games out of their original directories but I've always done this and it hasn't been an issue. I just gave them their own directories in my SSD drive.
For those that are fed up with the pathfinding + happen to be playing on Windows, I've attached a WeiDU mod that does a really quick exe patch. It attempts to revert the relevant pathfinding code to how v2.3.67.3 worked - it might not function perfectly, but it seems to help on my end:
Clumping, (notice two characters stack near the bottom):
Patched, (notice characters not walking to the same spot + bumping each other):
Edit: And I should note that this is by no means the "correct" way to fix the issue - only the devs can do that. This is just a temporary hack until the next version is released.
Anyone know if Bubb's patch works with 2.6?
I still can't believe that they won't fix the issue with characters getting stuck on top of each other/unable to move.
For those that are fed up with the pathfinding + happen to be playing on Windows, I've attached a WeiDU mod that does a really quick exe patch. It attempts to revert the relevant pathfinding code to how v2.3.67.3 worked - it might not function perfectly, but it seems to help on my end:
Clumping, (notice two characters stack near the bottom):
Patched, (notice characters not walking to the same spot + bumping each other):
Edit: And I should note that this is by no means the "correct" way to fix the issue - only the devs can do that. This is just a temporary hack until the next version is released.
@Bubb I had issues with the pathfinding mechanism on a vanilla BG2EE 2.6.6. I guess the problem hasn't been solved with the last version of the game. Would you also recommend your patch on the V2.6.6 ?
Hey @Bubb . Sadly this now fails to install on either of the BGEE games v2.6.6.0 (on gog). Any chance for an update? Playing with a party without this patch is incredibly frustrating.
Error below:
Copying and patching 1 file ...
[Baldur.exe] loaded, 7124992 bytes
FAILURE:
Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed.
ERROR: [Baldur.exe] -> [Baldur.exe] Patching Failed (COPY) (Failure("Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed."))
Stopping installation because of error.
For the record, it's not fixed. For shame, BD. It's been 3 years
I spent a long time reversing what the engine was doing to get some more insight on this. Basically two changes broke things:
1) Pre-v2.5.16.6 group-targeting did very little adjustment to the character placements. The only verification it did amounted to checking if the main target, (where you clicked on the map), was passable. This meant that if you clicked near a wall and half of your characters ended up with an invalid target, those characters would just give up at some point.
v2.5.16.6+ tried to fix this. If characters ended up pathing to an impassible spot on the map it would fall back to routing them to the main target. Well, this means you can get multiple party members all walking to the same exact spot — this happens frequently in tight spaces.
2) The bumping code was broken. I don't know the specifics here, but it appears a change to some multiplayer sync function causes characters to no longer get out of each other's way in very tight spaces. This also means that if they end up occupying the same part of the map they get stuck.
You can see why these changes cause problems when put together.
I've attached an updated version of my patch that works with v2.6.6.0. Since I now understand what the whole walking-to-the-same-point thing was trying to fix I've left it in, but fixed the characters not unstacking themselves.
Do you think it's possible to translate them, and / or, make the text more reader-friendly, without causing problems with the executables ? And do you have any hints on the method to follow ?
If you don't have any idea, it' s fine...
I'd like to take this opportunity to thank you for your mods and the help you give to players and modders!
This mod _does_ make a modification of the executable, on disk, so it pretty much should not matter when you install it. EEEx doesn't, as far as I know, change the executable on disk. Instead, makes you launch the game through a wrapper.
About the lines, it should be doable to edit the strings, yes. Those are string literals in the game, so it's possible to modify them.
Do you have any advice about install order, rather at the end? At the beginning ?
And particularly before or after EEex which patches the executable ?
As suy says, this patches the exe on disk. Since EEex patches the exe in-memory and doesn't touch the pathfinding locations, there's no order requirements between the two.
Do you think it's possible to translate them, and / or, make the text more reader-friendly, without causing problems with the executables ? And do you have any hints on the method to follow ?
It's possible to replace the strings with new ones, though the order in which the data is presented is fixed.
There's two ways to change the string:
1) Replace the strings in-place. As long as the new format string is shorter than or equal to the length of the old one you can simply overwrite the contents, making sure to place a null byte ('\0') at the end.
2) Allocate a new string at runtime and patch the code to refer to it. For example, to replace " +Luck:%d":
Find every location that references the string, you'll have to use Ghidra / IDA Freeware / x64dbg for this. Then come up with a pattern for each address; I get:
Put that in InfinityLoader.db. Now we have to patch the location, (put this in a M_*.lua file):
(function()
local B3ReplaceString = function(pattern, existingInstructionSize, destRegister, newString)
if existingInstructionSize < 5 then EEex_Error("Existing instruction too small to replace") end
EEex_HookNOPs(EEex_Label(pattern), existingInstructionSize - 5, {[[
lea #$(1), qword ptr ds:[#$(2)] ]], {destRegister, EEex_WriteStringAuto(newString)}, [[ #ENDL
jmp #L(return)
]]})
end
EEex_DisableCodeProtection()
B3ReplaceString("B3LuckStringRef", 7, "rdx", " +Lucky Mod:%d")
EEex_EnableCodeProtection()
end)()
where B3ReplaceString(<pattern name>, <size of existing instruction>, <destination register>, <new string>)
For example, using x64dbg:
The characters on the left are the instruction bytes. So <size of existing instruction> = 7, (two characters make one byte), <destination register> = "rdx".
Comments
In the July blog entry (and subsequent comments), we explained why we couldn't work on the patches at all.
I'm working on getting the information about the patch status at the moment.
It is information in the sense that you can probably keep posting your comment for a number of weeks as it seems that Beamdog will miss some more deadlines.
Patched, (notice characters not walking to the same spot + bumping each other):
Edit: And I should note that this is by no means the "correct" way to fix the issue - only the devs can do that. This is just a temporary hack until the next version is released.
@Doubledimas You don't have to have that power, this task falls upon Beamdog's shoulders.
Very nice!
This is, simply put, a really horrendous bug - I can't fathom how they let this exist for so long and how people put up with it. It's especially aggravating when it happens during combat, when you send 3 melees to target a single foe and one of them ends up stuck/unable to act or attack - happens on a regular basis. I also suspect it contributes to the 'npc spawns and needs to approach party to start dialog but gets stuck and dialog is skipped' bug, which seems to happen more frequently with EE 2.5 than the originals.
This by itself is nearly enough to make me go back to the original BG2 engine.
ERROR: [Baldur.exe] -> [Baldur.exe] Patching Failed (COPY) (Failure("Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed."))
ERROR: Failure("Couldn't find bad_force_point; most likely you are attempting to install on a game version where pathfinding is already fixed.")
Bubb's v2.5.16.6+ Pathfinding Revert (Restore Pathfinding) was not installed due to errors.
Without this component the installation cannot be continued.
You can try to repair the problem and install the component again afterwards. In this case please select "retry" after the repair.
If you don't want to spend time on that now, you can also exit the program.
Enter [r]etry or [e]xit.
So this is the second time this error occurs. I restarted everything last time and tried again. When I retry nothing occurs, any suggestions?
I did take both the fully installed games out of their original directories but I've always done this and it hasn't been an issue. I just gave them their own directories in my SSD drive.
Anyone know if Bubb's patch works with 2.6?
I still can't believe that they won't fix the issue with characters getting stuck on top of each other/unable to move.
@Bubb I had issues with the pathfinding mechanism on a vanilla BG2EE 2.6.6. I guess the problem hasn't been solved with the last version of the game. Would you also recommend your patch on the V2.6.6 ?
Error below:
For the record, it's not fixed. For shame, BD. It's been 3 years
1) Pre-v2.5.16.6 group-targeting did very little adjustment to the character placements. The only verification it did amounted to checking if the main target, (where you clicked on the map), was passable. This meant that if you clicked near a wall and half of your characters ended up with an invalid target, those characters would just give up at some point.
v2.5.16.6+ tried to fix this. If characters ended up pathing to an impassible spot on the map it would fall back to routing them to the main target. Well, this means you can get multiple party members all walking to the same exact spot — this happens frequently in tight spaces.
2) The bumping code was broken. I don't know the specifics here, but it appears a change to some multiplayer sync function causes characters to no longer get out of each other's way in very tight spaces. This also means that if they end up occupying the same part of the map they get stuck.
You can see why these changes cause problems when put together.
I've attached an updated version of my patch that works with v2.6.6.0. Since I now understand what the whole walking-to-the-same-point thing was trying to fix I've left it in, but fixed the characters not unstacking themselves.
@ithildurnew @Mordekaie @Allbrother
Once again, thank you @Bubb
Does the 2.6 pathfinding patch also work on 2.5?
Also @beamdog_ed, hire Bubb!
I have two questions, if you have some time...
- About your mod "bubb_revert_pathfinding.2.6".
Do you have any advice about install order, rather at the end? At the beginning ?
And particularly before or after EEex which patches the executable ?
- And about some lines in baldur.exe, BaldursGateII, SiegeOfDragonspear.exe, SiegeOfDragonspear...
Roll:%d +Luck:%d +SpecialAC:%d +HitMod:%d +Attack of Opportunity:4 +Attack of Opportunity:0 +Berserk:2 +Berserk:0 +Left:%d +Right:%d +Invisible:%d +Invisible Target:%d +Range:%d +Hated Race:%d +Special Target:%d +Protections:%d Roll:%d +DamageMod:%d +Hand bonus:%d *Backstab:%d +Berserk:%d +Strength:%d +Special Bonus:%d +Min Damage:%d
Here a screenshot in-game...
Do you think it's possible to translate them, and / or, make the text more reader-friendly, without causing problems with the executables ? And do you have any hints on the method to follow ?
If you don't have any idea, it' s fine...
I'd like to take this opportunity to thank you for your mods and the help you give to players and modders!
This mod _does_ make a modification of the executable, on disk, so it pretty much should not matter when you install it. EEEx doesn't, as far as I know, change the executable on disk. Instead, makes you launch the game through a wrapper.
About the lines, it should be doable to edit the strings, yes. Those are string literals in the game, so it's possible to modify them.
https://www.gibberlings3.net/forums/topic/33931-baldurs-gate-install-order-list-repository/?do=findComment&comment=313871
No, download the old version for v2.5.
As suy says, this patches the exe on disk. Since EEex patches the exe in-memory and doesn't touch the pathfinding locations, there's no order requirements between the two.
It's possible to replace the strings with new ones, though the order in which the data is presented is fixed.
There's two ways to change the string:
1) Replace the strings in-place. As long as the new format string is shorter than or equal to the length of the old one you can simply overwrite the contents, making sure to place a null byte ('\0') at the end.
2) Allocate a new string at runtime and patch the code to refer to it. For example, to replace " +Luck:%d":
Put that in InfinityLoader.db. Now we have to patch the location, (put this in a M_*.lua file): where B3ReplaceString(<pattern name>, <size of existing instruction>, <destination register>, <new string>)
For example, using x64dbg:
The characters on the left are the instruction bytes. So <size of existing instruction> = 7, (two characters make one byte), <destination register> = "rdx".
And for our troubles:
I am neither a modder nor a coder, so i don't understand much about all that...
BUT ! I'm trying to dig in and find a way to do it !
So, I try !
Ghidra.... didn't get to launch it...
x64dbg.... Absolutely too difficult to understand...
IDA Freeware... launch and minimal understanding !
I pick up the lines :
Hex View-1 too :
and... I didn't retrieve your value,...
and... I don't have the same format that...
...I'm not sure about what is the "Pattern" and "Operations" in this case...
Like I said, terrifying !
I'm gonna look further and will come back with better understanding (I hope), but it will take some times, so I wanted to thanks you !