Creature Isle Pathing - Printable Version +- BaW Forum (http://bawsite.com/forum) +-- Forum: Black & White Discussion (http://bawsite.com/forum/forumdisplay.php?fid=3) +--- Forum: Modding (http://bawsite.com/forum/forumdisplay.php?fid=11) +--- Thread: Creature Isle Pathing (/showthread.php?tid=85) |
Creature Isle Pathing - Shane - 09-09-2020 Hey! I recently finished porting all of the Black & White story into the Creature Isle engine and during this, I noticed that the pathing for the villagers is...strange. There are a good few times where the villagers fail to get up or down hills and can get constantly stuck in a loop. They even sometimes starve to death since they can't get out of this loop. Obviously, Black & White never had this problem. I think it could be related to how Creature Isle changed how landscapes worked slightly, as loading the Isle map into Black & White causes an insane amount of movement issues since the Isle is disconnected at a part and the game doesn't know what to do. The disconnected island (where you fight the Crocodile) is what causes the issues. Have you guys ever noticed something like this? And if so, is there any fix for this? Such as loading the original Black & White pathing instead? RE: Creature Isle Pathing - Lant - 09-09-2020 Hi, In Creature Isle villagers don't go on steep hills and try to run around them (in B&W they could move on any height). This feature was not implemented well. That is the reason for the problem. I have no idea how to fix this and if it can be fixed at all. RE: Creature Isle Pathing - Shane - 10-16-2020 I may have found a potential fix but I need some help. After having a dig into the Creature Isle Mac files, I found the following function: Living::MoveToPos((void)) Here's the IDB code for that function in CI: Code: seg000:000509D0 # Living::MoveToPos((void)) After some debugging in game and forcing villagers to use many other variations of MoveToPos, it seems that each variation inherits from the code above. Even animals don't ignore altitude. I even tried forcing villagers to use the football variation of MoveToPos, but it still checked for altitude. If the MobileWallHug::MoveTo((void)) function can be skipped, this may avoid checking altitude and make the villager just go to the position instead, which is what we want. The only problem is, I'm struggling to find this function within the Creature Isle .exe equivalent. Even finding it within the more documented Black & White .idb is pretty tough. Any ideas how I could find this function in CreatureIsle.exe? This pathing issue ruins playthroughs of Creature Isle, particularly my mod as it uses the Creature Isle engine as a base. Would really appreciate some help with this! RE: Creature Isle Pathing - Lant - 10-17-2020 If you succeeded in finding "Living::MoveToPos" in the .exe file, then why are you failing with the "MobileWallHug::MoveTo"? The first one is calling the second one. So just check what the first one is calling. And what "more documented Black & White .idb" do you mean? What did you use to disassemble the mac version? The free version of Ida Pro seems to not be able to do that. RE: Creature Isle Pathing - Shane - 10-17-2020 Sorry, I wasn't clear. I found all that code in the Mac files, not the .exe. I was hoping to get some help finding it in the CreatureIsle.exe. Even if I knew where it was in the runblack.exe, that would be a huge help! It's a .IDB I got from the OpenBlack project, it's the only .IDB I know that exists for Black & White. Unless you have one to share? Also I'm using IDA Pro 7.0, not the free version. RE: Creature Isle Pathing - Lant - 10-17-2020 Can you send me this .IDB file? Also, as far I as know, IDA Pro is pretty expensive... Did you buy it? RE: Creature Isle Pathing - Shane - 10-17-2020 Sure, here's the MAC IDBs for both Black & White + Creature Isle: https://mega.nz/file/O0MHGQxS#U5opwF5WXwYkikqrfx61gGETCxsdsZcZpAAT1lETjTA Also no, I didn't buy it! The version I have can disassemble as much as I want though. RE: Creature Isle Pathing - Lant - 10-18-2020 I tried to open it in IDA Free versions 5 and 7, not working... Do you know any other free disassembler for mac version? And by the way, how did you force the villagers to use many other variations of MoveToPos, if you didn't find the location? RE: Creature Isle Pathing - Shane - 10-19-2020 I don't know any free disassembler, sorry. You should grab a cracked version of 7.0 though, that will do the trick. (DM me if you want help with this). Villager enums can be changed by editing the info.dat file. In Info5.txt, there is a value for each villager known as MoveState:ENUM_VILLAGER_STATE, and this seems to handle the default move enum that is used (when not using a path movement state etc.). By default, this is set to VILLAGER_STATE_MOVE_TO_POS, so changing this to something like VILLAGER_STATE_FOOTBALL_WALK_TO_POSITION will force the villager to now use this as their default one. Once I made the enum change, I would compile a new info.dat and hex compare it to a clean info.dat. After finding the new change (usually a single hex value changed), I'd then find the same hex equivalent in the CI info.dat and manually make the changes in that. I had to do this because we can't compile new info.dat files for CI. I experimented with every move state available and they all had the same behaviour of not ignoring altitude. Do you and "." have any sort of documentation for Black & White functions? Even if you guys had an .idb for Black & White, that would be seriously helpful. |