Patches for GOF ERAS2
Private: Welcome to the Reef! › Forums › GOF Eras Module 2 download & discussion board › Patches for GOF ERAS2
- This topic has 161 replies, 11 voices, and was last updated 1 year, 9 months ago by modernknight1.
-
AuthorPosts
-
-
November 11, 2015 at 1:42 am #1374modernknight1Keymaster
This thread is to provide a place where patches and bug fixes can be posted. In addition, any questions about the patches can be asked and answered here. As always, PLEASE READ the Read Me file for mod and patches. Its likely I have already answered your question there already.
To begin with here is the first patch for GOF ERAS2 version 1.5.7
MK
I am pasting the read me below and the link and decryption key below that:
READ ME
This is Patch 1 for GOF ERAS2 ver 1.5.7
WARNING: Once you apply this patch it will require you start a new game. DO NOT install if you want to continue the game you are in because it will no longer work once this patch is in place.
INSTRUCTIONS:
– Unpack RAR
– Drag the Age of Pirates 2 game folder found in the patch over your existing GOF ERAS2 ver 1.5.7 – Age of Pirates 2 game folder. When prompted to merge folders answer yes for all conflicts. When prompted to copy and replace existing files, answer yes for all conflcits.
If you want to keep your game files clean of unecessay folders, delete the following file after applying the patch: Fortune1 (this file can be found in RESOURCE/MODELS/Ships and another of the same name in RESOURCE/textures/ships)
The folders have been replaced by a new one entitled Fortuna1
The game will still run fine with the old folders in place but they no longer serve any purpose. I had to rename it because the ship Royal Fortune continued to be called “Luck” and also the interface picture was messed up because of naming. This is because the common file cannot have two entries called “fortune”. The word fortune is already entered in the INI/common file as describing the personal skill of luck. This is why it always called the ship “Luck” even when it has another applied name. By changing it from Fortune to Fortuna, it now appears correctly in the interface.
This patch renames a lot of other character models in the boarding process and replaces and fixes a bunch of bad interface pictures. You should see all ship interface pics now correct and none missing. This will be invisible to the player because all of the same characters will still appear – they just have different names under the hood now to make the game engine happy with no errors.
The French 4th rate had to be reskinned because it accidentally turned out purple when I wanted it royal blue. So two new skins – one greyish blue and one blue. The standard frigate got a nice darker version skin. They were all too light.
Please report any new bugs on Buccaneersreef.com
MK
LINK: https://mega.nz/#!xRoBxTqA
Decription Key required to open and download the file – copy & paste when prompted:
!ViiBgpWsE5HGdP6XMRhxJnlLdng4mMeUlZdZZBbgfOQ
- This topic was modified 9 years ago by modernknight1.
- This topic was modified 9 years ago by modernknight1.
- This topic was modified 9 years ago by modernknight1.
-
December 3, 2015 at 10:53 pm #1453cobenParticipant
Hi mk nice to know u, first of all thx for ur incredible modd, this game was awesome, ur better than the other side (if u know what i mean) those people always think inside of the box n doesnt have d balls to do new stuff lol, btw i’m pirates from indonesia n i’m really happy n thankful for ur great mod, please dont take to ur heart bout their comment, people out there will respectful with ur work, thx for that, n I want to report major bugs on pearl diver, the people are missing, so we cannot proceed the flying dutchman quest, and we cannot have the rat god totem, because there’s no people in that two places, pearl diver was important from my point of view because the gilded cuirass lol, i hope u would mine to check, n iswear i will put my videos on u tube bout ur amazing work, thx for everything MK
-
December 5, 2015 at 5:18 am #1458modernknight1Keymaster
Hello coben!
I can’t tell you how glad I am that you have brought this to my attention. With no beta testers this last round that’s what happens.
You are indeed correct. I finished the English Questline with NO BUGS and started the Dutchman mission. No people in the village just as you said. Well this is completely all my fault. This is me going overboard adding new characters all over. I am very sorry everyone.
I have already fixed this problem and will issue a new patch soon (before the site goes offline) with tons of new fixes to include this one. Lots of dialogue fixes and some changed models. New hand picked Governor Lynch model for the English questline.
If you are interested in fixing yourself go to Program\loc_ai\LAi_utilites
Go halfway down the page until you see Pirate models listed (1 through 28). Delete lines (1017 to 1034) pirates 11 thru 28. The character index will not handle more than 10 in the Pearl town quests and so it causes a stack error. Unfortunately it requires a new game after the edit in order to cause people to again appear to do the quest. I am attempting to add the files to the REINIT function so that all you would have to do is push the reinit button in mod options in your current game and then continue to play. Testing this now for the patch.
Again sorry folks, but THANK YOU so much for bringing this to my attention. With the lack of participation on the site I wasn’t gonna share anymore patches. However, with this serious bug needing fixed I will do this one last patch with all the combined fixes I’ve finished for everyone before the site goes dark.
MK
-
December 5, 2015 at 2:35 pm #1460cobenParticipant
I’m gratefully thx to u MK, ur the man with the neptunus sword n davinci’s gun, there’s nothing can’t stop ur steps event the red skeletons from creating a legacy of ur own AOP2 GOF Eras Knight Modern, thx for reply n i will try to fix d bugs n i’m sure I can’t fix that right lol, for d best result i will wait the hearty work from the eras knight, for the final patch, and thx for d lovely evening MK n i hope the nightfall comes with the bluemoon n lots of starlight that will comfort our heart on this reef,
-
December 8, 2015 at 12:06 am #1465cobenParticipant
Mk i’m so sorry for this late reply, i want to report major bugs on city of abandoned ship quest, after killing the jail keeper n talk to vanderdecken, there’s no storm n swimming moment to diffindur, it’s stuck when i open the door, the door freeze n there’s no sea at all, please teach me MK how to fix this bugs, ireally like morgan rapier n dog of war, but i can proceed to complete this quest because this bugs, i wish u would mine to teach me how to fix this, thx for this great game n d cereal MK..
-
December 11, 2015 at 5:05 pm #1474Blas de LezoParticipant
Thanks Modernknight1 for all your Work.
Sorry Im not well writting in english to express my thanks to you for this mod.I have no words to express due to my poor english,i hope you understand me hehehe
For me is the best mod of all the piracy games,after 10 months withoout playing,now Im downloading the mod+update for play this christmas and enjoy this mod again.
The vanilla game is old and buggy but you expanded his universe and added a lot stuff,you remake this game,make enjoyable,historic and realistic.
Tons of hours and fun sailing,trading and piracy with this mod so im so sad this web will dissapear soon and all of you work too.Sorry again for my english,from Spain to Idaho,thanks Modernknight1 for this mod.
Gracias amigo!!!
-
December 12, 2015 at 2:40 am #1477modernknight1Keymaster
@Coben, Thanks for bringing this up. Another member told me about the Tartarus glitch but I haven’t had the time because of other issues. However, with the new patch almost ready I want to fix this bug too. I have never actually every played the COAS quest. SO now I will. I will teleport one of my characters there and work my way through the quest with the error loggers working. My suspicion is that it is the same problem that happens with the treasure quest transitions at the beaches. I always press F2 to bring up my character interface when the transition goes black so it doesn’t freeze or crash and then close it a few seconds later. I will try that first.
So the new patch will be released when I have the fix for this problem ready. I have built the new patch on top of the old patch so that people only need to apply the one patch although it will not matter if you put it on top of a game that already has the old patch applied as well.
@Blas de Lezo, Thanks for the kind comments. As I commented on another thread:
Thanks for the comments guys. I am just very frustrated. The mod has been downloaded thousands of times yet only a handful of people comment or read my content or thumbs up anything. Only 15 people have read my article on Why the Golden Age was so Golden. Only 23 people have read my review on the movie Admiral Michiel de Ruyter.
I tell you what. I will let the actual community decide if I keep the site going or not. I will keep the site up and going if I receive 20 positive comments like the handful that you guys have provided – OR 20 thumbs up on my Article “Why the Golden Age was so Golden”.
MK
-
December 15, 2015 at 10:41 pm #1479JeffreyKeymaster
Greetings.
I only recently downloaded ERAS and will say that I quite enjoy your version of AoP/GOF; I appreciate the good work you’ve done spearheading this mod effort and everyone that contributed to it. Although I sensed your aversion to Assassins Creed Black Flag (I think I saw a comment somewhere you’re not too keen?), I play and enjoy both. I just imagine if the ERAS and Black Flag adherence to some of the historical elements of dress/building structure, and the physical fighting and scrambling/climbing elements of Black Flag were combined with the better ship/sailing elements of AoP/GOF/ERAS into one game; that would be exciting!
I have never been involved in AoP mods, but as a programmer by trade, do understand C code and was only recently turned on to trying AoP, then GOF because both my sons play them. I became quite fascinated and quickly enamored with it. While playing, I discovered the AoP mod sites, learned a bit about the capabilities, and have made some observations during my play and subsequently employed my own fixes within my copies that I’d like to share if you’re interested in some further corrections.
I realize I’ve come quite late to this AoP party and the age of the game has dramatically reduced interest in further mods and/or fixes, but just thought I’d throw this out here. Note that the majority of these issues have existed in AoP and GOF since day one, so no reflection on your particular ERAS; in fact, you have already addressed some of the AoP/GOF issues.Spelling/name inconsistencies in all versions of GOF and AoP within the Program\Text various .h files:
Find and replace Ed Law with Ed Low (I think you already addressed this in ERAS).
Find and replace Tizer (Dan Teaser) with either/or Tizer/Teaser (not in the .c file constants).
Find and replace Ozzy with Azzy.
Find and replace references to Modyford that within AoP and GOF, range from Moodyford, Moddyford, Maddyford, etc. to remain consistent.There are undoubtedly others I’ve seen/fixed, some of which I’ve forgotten the specific files and/or the exact text changes.
I remember one had you”l (RESOURCE/INI/TEXTS/ItemsDescribe.txt: You”l have to carefully…), instead of the correct: you’ll.I noted the fix you already mentioned concerning the Pearl village characters and removing the pirate_11-28 characters from LAi_utilities.c. Thanks for conveying that as it’s nice to be able to fix things before patch files become available when it merely involves a relatively simple text change.
The following problem exists in all version of AoP and GOF:
\DIALOGS\russian\Quest\Morgan.c
Fixed the Morgan Belize ending fort scene gold-buyout questions by translating the unreadable characters Morgan spews out in
his dialog to Cyrillic at mashke.org, then Russian-to-English:case “Step_3_10”:
if (GetCargoMaxSpace(pchar) >= RecalculateCargoLoad(pchar))
{
dialog.text = DLG_TEXT_Q[71]+
“Òâîÿ äîëÿ çîëîòà – ” + pchar.Ship.Cargo.Goods.gold + ” öåíòíåðà. Ìîæåò, ïðîäàøü ÷àñòü èëè äàæå
âñå? Âîçüìó ïî 200 ìîíåò çà åäèíèöó âåñà.”;
}
else
{
dialog.text = DLG_TEXT_Q[72]+
“Ìàêñèìàëüíàÿ ãðóçîïîäúåìíîñòü òâîåãî êîðàáëÿ ” + GetCargoMaxSpace(pchar) + ” öåíòíåðà, à â
òðþìàõ ó òåáÿ ñåé÷àñ ” + RecalculateCargoLoad(pchar) + ” öåíòíåðà\n”+
“Çîëîòà ó òåáÿ ” + pchar.Ship.Cargo.Goods.gold + ” öåíòíåðà. Ìîæåò, ïðîäàøü ÷àñòü? Âîçüìó ïî
200 ìîíåò çà åäåíèöó âåñà.”;
}Change to this:
case “Step_3_10”:
//(fix) Translated characters @ http://mashke.org/Conv/ and result @ https://translate.google.com/
if (GetCargoMaxSpace(pchar) >= RecalculateCargoLoad(pchar))
{
dialog.text = DLG_TEXT_Q[71]+
“Your share of gold – ” + pchar.Ship.Cargo.Goods.gold + ” hundredweight. Maybe you will sell
part, or even all? I’ll take 200 coins per unit weight.”;
}
else
{
dialog.text = DLG_TEXT_Q[72]+
“Maximum load capacity of your ship ” + GetCargoMaxSpace(pchar) + ” total , and holds now ” +
RecalculateCargoLoad(pchar) + ” hundredweight.\n”+
“Your gold ” + pchar.Ship.Cargo.Goods.gold + ” hundredweight . Maybe you will sell a part of
it? I’ll take 200 coins per One unit weight.”;
}Program\INTERFACE\option_screen.c
Change encoutered text to encountered on the Mod Options screen of GOF…again because the spelling error makes me anxious, LOL
Program\INTERFACE\itemsbox.c
In void OfficerReincarnation(…)
I inserted after code to set Hp to max:
int iLoc;
ref loc;
string sLoc = “sea”;
iLoc = FindLoadedLocation();
if (iLoc >= 0) {
loc = &Locations[iLoc];
if(CheckAttribute(loc, “type”) && loc.type != “deck_fight”)
sLoc = “land”;
}
rOfficer.PGGAi.location = sLoc;
rOfficer.PGGAi.location.town = GetCurrentTown();Now using F10 to see the whereabouts/status of PSHero characters, resurrected officers no longer remain “Dead” status. Doesn’t affect normal gameplay, but a little more accurate reflection so as not to annoy my eye, even though I think it has no effect on anything significant.
Related to this…if one plays a character for a very long time, I noted that the F10 screen showed all the other PSHero characters at sea and as time went on, I never saw them in a tavern…ever; they never land in a port.
Program\scripts\PSHero.c
In void PGG_DailyUpdateEx(…)
Change sti(chr.PGGAi.Task.Target.days) == GetNpcQuestPastDayParam
to
sti(chr.PGGAi.Task.Target.days) <= GetNpcQuestPastDayParam
It appears that there is a rand() function call above this target date check that jumps out of the remaining logic in cases where the random number doesn’t meet a chance threshold. If this bypass were to occur on the very day of an NPC task target date, the subsequent day checks will NEVER equal target day, and the NCP will forever more stay at sea; which is precisely what appears to happen. Play long enough, and eventually the random check will not be met on the exact target day for a given PSHero NPC. The change I made now shows the characters once again moving about when viewed with F10, with a healthy mixture of them at both sea and land and I again occasionally encounter other captains.
GOF English Quest line log entries don’t appear for the Curacao Intelligence step:
\RESOURCE\INI\texts\russian\questbook\quests_texts.txt
Change
#QUEST Eng_Line_4_Intelligence_Curaçao
to
#QUEST Eng_Line_4_Intelligence_Curacao
Only GOF changed the Curacao letter for the 2nd ‘c’ in many files, but just below that Eng_Line_4 section, for both GOF and
AoP change to fix the 2nd log entry for that part of the quest#TEXT 2l
to
#TEXT 2
\RESOURCE\INI\texts\russian\ShipsDescribe.txt
I noticed you added missing ArabellaShip, corvette_quest, BrigSW descriptions for ERAS, that are missing in AoP and GOF, but still nice to have entries, so the tooltip box is not blank, for:
XebekVML
BrigQeenIn all AoP and GOF versions — Program\Text\Dialogs\Quest\LostShipsCity
SesilGlard.h and Waitress.h
Search and replace Zil Baru with Gilles Barou
What happens to a player, is an NPC will mention Zil, you ask the NPC where to find them by typing Zil in the query, and the character you ask has no idea who you’re talking about…frustrating unless you can remember/correlate that they really mean
Gilles; that is the name the NPC will respond to and accurately tell you where to find him.Your new Hourglass item description says +30 Leadership.
Assuming this was to change Authority instead of Navigation, change in RPGUtilite.c
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_SAILING, “Mineral5_3”, iLev3Bonus);
to
skillN = skillN + SetCharacterSkillByItem(_refCharacter, skillName, SKILL_LEADERSHIP, “Mineral5_3”, iLev3Bonus);
Turning on error, trace logs in engine.ini.
tracefilesoff = 0
tracefiles = 1
runtimelog = 1Logs show that Ships_Init.c couldn’t compile (weird that it doesn’t seem to affect the ability to play the game), due to many lines where RandPhraseSimple function is used contain too many closing parens. Using a code editor that highlights mismatched closing parens, I scrolled through and removed all extraneous; they were all lines using RandPhraseSimple. Also, I remember one such line also contained a semicolon ; instead of a comma , between the parameters in the function call, causing a compile error.
A run-time error occurs in initItems.p, due to a stack error. The very last item causes the issue: makeref(rnditem,RandItems[248]). Due to items.h array instantiation and the fact arrays are zero-based, index 248 is one too large for instantiated array size of 248 (results in index range of 0 to 247) and the definition doesn’t accommodate:
#define RANDITEMS_QUANTITY 248
#define MAX_LOADED_RANDITEMS 248object Items[ITEMS_QUANTITY];
object RandItems[RANDITEMS_QUANTITY];Fixed by changing items.h to:
#define RANDITEMS_QUANTITY 249
#define MAX_LOADED_RANDITEMS 249Not fixing this array size doesn’t ruin the game as it still worked, but the errors show up in the log (if enabled).
However, I found that once this fix is employed, you can load a previous save, but as soon as you try to resave that game, the program crashes with a bad save; I could find no way around this. There must be something stored in the save file about the original array size and the index mismatch somehow wreaks havoc. But, if a brand new game profile is started, all is well for load/play/save game, the array is properly sized and will not omit that last element, and no more stack error in the log.To conclude, there is one remaining issue I have that is ERAS-specific; it does not occur in either AoP or GOF. I also don’t have a remedy and was hoping some further discussion could pinpoint the root and perhaps a solution. The symptoms and my efforts so far:
Keeping in mind that this may in fact be a factor of an underpowered machine and mere latency of insufficient processing power; faster/better machines may not experience this, so if these symptoms don’t appear for faster/better machines, then at least I know the cause. I am aware my machine is not optimal for gaming, but it does fit original AoP specs and I don’t have this issue in either AoP or GOF, just with ERAS; hence the reason I bring it up.
My machine:
Intel i5 2.67 GHz
2 gb of RAMThe symptoms, that seem somewhat related are when I select the icon to loot a body, or open a chest, there is massive delay before the item trade/transfer interface displays. Originally, it was a second or less while playing AoP or GOF, but was 20 to 30 seconds when playing ERAS. Also, a similar latency when prompting the bartender for crew recruits, or the store for personal items, a lengthy latency. Further, in the store personal item display, if I tried to scroll there was a 5 second latency for the next item to scroll into view, then another 5 second delay for the next one, etc., until the end of the list was reached. Then, if I tried to double-click an item at the end of the list for purchase, the entire game would halt/freeze and never recover.
While perusing/contemplating this, looking over files, etc., I noticed a large discrepancy in the the size of the item texture files between ERAS and GOF. On a hunch, I made a stab.
Using ConvertorTX.exe, where it also displays BPP for the files, I also noted that in addition to a size difference, there was a BPP difference between many item.tga.tx files as well (e.g. BPP 32 in ERAS vs. BPP 16 in GOF).
The following were all BPP 32 and quite large in ERAS (itemsXX.tga.tx were 21+ mb vs. the average of similar files in GOF are 513 kb):
Biblebook.tga.tx
blank_ship2.tga.tx
items1.tga.tx
items10.tga.tx
items14.tga.tx
items15.tga.tx
items17.tga.tx
items18.tga.tx
items2.tga.tx
items20.tga.tx
items22.tga.tx
items23.tga.tx
items24.tga.tx
items25.tga.tx
items26.tga.tx
items27.tga.tx
items28.tga.tx
items29.tga.tx
items30.tga.tx
items31.tga.tx
items32.tga.tx
items33.tga.tx
items34.tga.tx
items35.tga.tx
items5.tga.tx
items6.tga.tx
items7.tga.tx
items8.tga.tx
items9.tga.txI converted these all to .tga with the converter, then using an image editor, merely reduced the color depth, saved, and reconverted these files with ConvertorTX.exe back to tga.tx.
My conversions after reducing the color depth of the .tga file looked identical in quality to the original with my untrained eye (keep in mind though I’m no discerning graphics expert and just muddling/experimenting without a real clue here…there is probably a better way), and they look the same in the game to me, but the .tx files are now about half the original size, at 10 mb.
I found that icons.tga.tx was BPP 32 and also quite sizeable in ERAS, but the converted .tga file (using ConvertorTX.exe) looked unchanged from GOF, so I merely copy/pasted the icons.tga.tx file at BPP 16 from GOF.
After doing this with the above files, I saw considerable improvement. There is no longer a noticeable lag in the crew recruitment (I assume this had to do with blank_ship2.tga.tx as there is no other conceivable file/reason used on that minor interface screen). The store item screen, lags a tiny bit at first scroll attempt, but then nearly immediately ‘kicks in’ and allows scroll to the bottom fairly quickly and does not pose that halt/freeze when double-clicking a bottom item for purchase. The body-loot and open-chest is better, but not quite ideal; the lag of 20-30 second lag between icon-select and screen-display is now about 8-10 seconds; hence my bringing this up here. Though now tolerable, I would still like to get this reduced to the 1-second-or-less like my AoP/GOF experience.
I thought perhaps there was some logic within the .c files to help this. Looking at the various interface/item logic and calls, I wanted to isolate where the delay might be occurring. I started with generous insertion of Log_SetStringToLog(<my unique messages to help figure out where the code is>) to have a message scroll near the top right of the screen after selecting the ‘Open’ icon. But this did not help, as I select the icon, then the screen animation and game ‘freezes’, none of my messages appear for 8-10 seconds, then boom, my messages flash down the screen. So, the delay is not caused within the places I looked, but BEFORE. But, I can’t find it either…there may be some event posting/processing happening, that calls something else, but I can’t find it and don’t know what it could be. The delay is NOT caused where I have looked so far because it executes rapidly as far as I can see. Here is where I inserted my display messages:
interface.c LaunchItemsBox() and itemsbox.c InitInterface_RS(), itemLogic.c Items_FindItem(), RandItem_OnEnterLocator(), OpenBoxProcedure(),
As far as I can tell, the freeze-delay appears to occur right between the icon-select and LaunchItemsBox() from interface.c.
RandItem_OnEnterLocator() executes right when you confront the box (prior to selecting the icon to open) and is very fast. I just don’t know where to look and am unaware of a way to do some sort of stack trace of function/method calls and/or intercept and display the event queue to see what else might be occurring between that selection and interface launch.Any and all help/ideas to at least identify the culprit are appreciated. Like I said, a more powerful computer might not see this kind of delay at all and this just may be a weaksauce computer moment. That said, sometimes a revision in logic can achieve the same result more efficiently, and if that’s the case, I’d love to fix it that way if possible.
I appreciate all the work of the ERAS contributors, it looks to have been a substantial and significant amount of work. Thanks.
-
December 17, 2015 at 4:24 pm #1481JeffreyKeymaster
I had a game save during a hostile encounter with French and Dutch ships and saw an error in the log file. After reloading a couple times with error logging enabled, seeing the same error, I employed a correction that resolves it so that no error is produced in the log.
Error in log:
RUNTIME ERROR – file: battle_interface\BattleInterface.c; line: 3141
function ‘Rand’ stack errorLine 3141 is this:
case HOLLAND: retVal = rand(0,1,2,3,4,5); break;
I changed it to:
case HOLLAND: retVal = rand(5); break;
If the intent is for a random number between 0 and 5, rand(5) should do the trick.
Unrelated: During the game launch, in the messages that scroll on the splash screen when ‘scanning modules’, there are lines indicating fmodex.dll is skipped, no function found. While unimportant, it might look less disconcerting to the user, and ‘cleaner’ if fmodex.dll were removed from the modules subdirectory. The game needs it in the root dir with the start.exe, and it is there, so game sound and operation works fine, but now those skipped/function not found messages don’t show at game launch. Not a big deal, but it looks nicer and ‘more comforting’ to users.
-
December 18, 2015 at 3:55 am #1483modernknight1Keymaster
Hi Jeffrey!
Sorry for the late reply but I’ve been super busy and a lot of bad stuff has been happening with family.
I admit I played Black Flag but I think the replay-ability factor is very low. It is a totally pirate fantasy game that has a very low level of historical accuracy. Now having said that, I fully admit it is a VERY beautiful game (graphically speaking) and it WAS fun to play through – one – time. My greatest disappointment was that the devs made all these claims about how historically authentic it is and that was just plain laughable. What’s sad is that I think they really believed their own hype which shows a pretty poor historical understanding and education. I agree with you wholeheartedly that it would be UBER cool to have a game with Black Flag’s graphics and capabilities but with ERAS historical accuracy and open world playbox. I was trying to get my own sub start-up going to produce such a game in tandem with another already developed software producer, but the unfortunate ripple effects of what happened with PA! derailed that whole thing and made me somewhat of a pariah. This is one of the reasons I had asked them to delete all my content, since they had already deleted so much of the really good stuff already anyway. But they did not honor my request.
Thank you for all of these edits, fixes and updates! This TRULY really helps me out. I will gladly work them all into the upcoming patch and credit you. I had actually already identified the numbering error in the items list and the stack error – and have already put that in the new patch. Good catch! Good finds in the ships init file also. Thank you.
Interesting observations on the delays. I use a special built HPE with 16 core processors, 12 GB of native RAM and another 3 GB on top of that in my top of the line ATI linked cards. I have 2TB storage and another 2 TB external. So I get maybe a second or sometimes two of lag the first time I open the vendor stands. After that first time, no lag at all. It hadn’t occurred to me that this could be effecting users this way. 30 seconds of wait time is just unacceptable. Therefore, I will begin re-sizing all of the ITEMS textures. Perhaps I will make it a separate patch called “optimized texture mod” or something like that. This way others that don’t have these problems can just continue with what they have.
Thank you for your contributions and kind comments Sir! I hope you will continue to assist. A few more folks like you on the team could really energize me – and I would for sure keep the site going if I knew we were going to pick up some steam again.
To everyone else:
So here’s what I don’t understand….. why are some of you willing to write me private e-mails expressing your desires to keep the site open, but not willing to post that sentiment here on the reef? One of you (who I promised anonymity) did let me know that you are active on PA! and don’t want them to know you play and support ERAS. Is that how it is for others as well??????
Not to be mean but I think this shows a somewhat weak spine. Those PA! folks WAY over-reacted and what they did to me was total overkill for something so trifling. It was wrong what they did and it ended up hurting them badly in ways they could not foresee as well – and they know that now. I wish you guys wouldn’t sit back in the dark because “silence is consent” as they say. I wish we could all just put that behind us and go forward again in a positive way. I know some of you sent PMs to some of those guys that had no effect. That was always my problem with them – instead of supporting their users with what they want in all areas, they were way more concerned with their own egos and what they wanted to do. I was always about educating and getting new stuff and taking us forward. That is one reason that their accusations hurt so badly, because I never did any of the things they said I did. I never hacked anyone – ever.
Also – someone tried to pay for the site for the next year. Why do you people insist on this anonymity? I’m kinda like – are you embarrassed to show a presence here publicly or something?
So I will keep playing in this small sandbox by myself for just a little while longer – with an occasional playmate here and there. AND I promise I do not pee in the sandbox. Cross my heart.
Concerning the patch. I am travelling for the holidays so I don’t think it will be done until a few days after Christmas. The patch is turning out to be sizeable and will have a LOT of fixes.
If the site goes dark I will put the patch on my MODDB page.
Merry Christmas! MK
-
December 18, 2015 at 10:02 pm #1484cobenParticipant
ur suspicion is correct Mk, thx for ur attention n reply,
-
December 19, 2015 at 10:07 pm #1487JeffreyKeymaster
I showed our computer specs, compared to yours as listed in your last post to my oldest boy…my 12 year old son, and we both got a laugh comparing our mediocre power compared to your beast! As a programmer, people often wonder why I live with such an outdated measly machine, but the programming I do is all run on server class machines. So all running, testing of my code is done remotely, and all I need is basically a thin client as I ‘remote desktop’ to my development and testing machines; I don’t have much need for much processing power.
But I digress. Since I can’t yet let this ‘delay’ on box-open/loot-body go, I did some more digging. Since I also have my own dev source of stuff our company has written, and can debug stepping through actual source line-by-line if needed, I was a bit ruffled having to figure out how to find the ‘where’ this delay is happening. Then got the light bulb…WinDbg. Had to dust off the cobwebs in my brain about that tool (never have need), but came up with a strategy.
I stepped up to a chest, enabled WinDbg logging and went through the subsequent steps to open the box within the game, then disabled logging and checked it out. I discovered a likely breakpoint in IMM32.dll: IMM32!ImmProcessKey
I set a break there, went through the same process in the game, and sure enough, as soon as I select the ‘open’ icon, the game halts and WinDbg is waiting at the break point. Great. So I exited, relaunched and set things up this way:
Walk to and stand in front of chest in the Store of a town, hit <Enter>, get menu icons for opening box to display, and highlight/hover the ‘Open’ icon
Switch to WinDbg, set breakpoint at IMM!ImmProcessKey+0x9, Resume
Switch to game, with icon highlighted, hit <Enter> key, debugger immediately hits breakpoint and game process is halted
Switch to WinDbg, enable logging, Resume
Switch to game, when chest item displays, hit <Esc>…debugger stops game at break point
Switch to debugger, disable logging, detach from gameSo the log should contain only the activity between selecting Open and my immediate <Esc> upon the item-display. I did this for ERAS, then did the same in GOF and when viewing the .lgv files with LogViewer.exe, here’s what I see:
With debug logging all calls
GOF ~3 seconds
ERAS ~9 secondsI then did the same, but without debug logging to note time discrepancy between select and item-display with a stopwatch:
GOF less than a second
ERAS ~6 secondsUnfortunately, that is about as far as I think I’m going to be able to take this without knowing what all the other modules/calls are responsible for. There are calls within WorldMap.dll, Weather.dll, Location.dll, Animation.dll, battle_interface.dll, rigging.dll, Sailors.dll, sea.dll, sea_ai.dll, seafoam.dll, WaterRings.dll, etc. ERAS has a couple calls to modules not in GOF, but they appear insignificant in time-elapse: pennant1.dll, pennant2.dll…through pennant5.dll, pirateflag.dll, etc.
To my eye, the problem is likely in the accumulated time spent in XINTERFACE.dll calls in ERAS vs. GOF as that appears to show more time in the ERAS log as I scroll down the thousands of calls, but even by hiding the dsound, SoundService, Sound calls, there are literally hundreds of thousands of calls in the log, and no easy way to further examine. The export feature doesn’t give all the timestamp/elapsed info, and does not provide a fixed-width or delimited version I might be able to sort and subtotal some things in a spreadsheet. But, if the calls in this thread are tied to the GUI interface, it explains the ‘freezing’ of the display and animation after I select, then unfreezing when the item box displays. If the item box info/display is independent of the tasks performed in those threads, then perhaps they can be decoupled from the GUI interface and run background. However, if the tasks in the threads DOES impact what the item box needs, then something else will need to be done, though I am unfamiliar with those modules and can’t say what that might be. I kept the .lgv files though, just for further reference.
The Statistics for both ERAS and GOF are similar, it just seems to take longer in ERAS.
GOF Statistics
Calls Failed
————————————————————–
123915 0 GetLastError
123914 0 SetLastError
13 0 GetCurrentProcessId
86 0 GetCurrentThreadId
1 0 OpenProcess
116 0 TlsGetValue
1 1 GetModuleHandleW
5 0 GlobalMemoryStatus
951 0 HeapAlloc
951 0 HeapFree
2 0 HeapSize
528 0 LocalAlloc
204 0 LocalFree
11 0 LocalLock
2 0 LocalReAlloc
11 0 LocalUnlock
7 0 CreateFileMappingA
40 0 MapViewOfFile
37 0 UnmapViewOfFile
1 0 GetSystemDirectoryW
707 0 DeviceIoControl
27 0 CloseHandle
1 0 lstrcmp
31 0 lstrlen
1 0 lstrlenW
4 0 GetKeyboardLayout
4 0 GetKeyboardLayoutList
13 1 GetForegroundWindow
1 0 GetActiveWindow
9 0 GetWindowPlacement
6 0 GetDC
6 0 ReleaseDC
6 0 ClientToScreen
2 0 SendMessageW
10 0 PostMessageA
5 0 PostThreadMessageA
8 0 PeekMessageA
15 0 DefWindowProcA
10 0 GetWindowLongA
3 0 GetWindowLongW
2 0 GetFocus
1 0 GetGUIThreadInfo
2 0 IsIconic
107 2 IsWindow
35 35 GetPropW
4 0 MsgWaitForMultipleObjects
1 0 WaitForInputIdle
4 0 GetWindowRect
11 0 GetClientRect
86 0 GetWindowThreadProcessId
1 0 SystemParametersInfoA
11 0 GetParent
4 0 SetCursorPos
4 0 GetCursorPos
1 0 GetClassNameA
1 0 FindWindowA
7 0 OffsetRect
25 0 GetKeyState
181 0 GetAsyncKeyState
2 0 GetKeyboardState
4 0 GetQueueStatus
2 0 SetTimer
6 0 KillTimer
60 0 CallNextHookEx
1 0 CreateRectRgn
1 0 DeleteObject
1 0 GetRandomRgn
2 0 GetRegionData
5 0 SetPixel
————————————————————–
252237 39Total first level calls: 252128
ERAS Statistics
Calls Failed
————————————————————–
147552 0 GetLastError
147551 0 SetLastError
23 0 GetCurrentProcessId
99 0 GetCurrentThreadId
1 0 OpenProcess
109 0 TlsGetValue
1 1 GetModuleHandleW
6 0 GlobalMemoryStatus
785 0 HeapAlloc
785 0 HeapFree
2 0 HeapSize
1388 0 LocalAlloc
310 0 LocalFree
11 0 LocalLock
3 0 LocalReAlloc
11 0 LocalUnlock
7 0 CreateFileMappingA
70 0 MapViewOfFile
67 0 UnmapViewOfFile
1 0 GetSystemDirectoryW
1592 0 DeviceIoControl
27 0 CloseHandle
1 0 lstrcmp
33 0 lstrlen
1 0 lstrlenW
4 0 GetKeyboardLayout
4 0 GetKeyboardLayoutList
23 1 GetForegroundWindow
1 0 GetActiveWindow
19 0 GetWindowPlacement
7 0 GetDC
7 0 ReleaseDC
7 0 ClientToScreen
2 0 SendMessageW
10 0 PostMessageA
5 0 PostThreadMessageA
8 0 PeekMessageA
17 0 DefWindowProcA
10 0 GetWindowLongA
3 0 GetWindowLongW
2 0 GetFocus
1 0 GetGUIThreadInfo
2 0 IsIconic
129 2 IsWindow
36 36 GetPropW
4 0 MsgWaitForMultipleObjects
1 0 WaitForInputIdle
5 0 GetWindowRect
13 0 GetClientRect
98 0 GetWindowThreadProcessId
1 0 SystemParametersInfoA
21 0 GetParent
5 0 SetCursorPos
5 0 GetCursorPos
1 0 GetClassNameA
1 0 FindWindowA
8 0 OffsetRect
25 0 GetKeyState
246 0 GetAsyncKeyState
2 0 GetKeyboardState
4 0 GetQueueStatus
2 0 SetTimer
6 0 KillTimer
65 0 CallNextHookEx
1 0 CreateRectRgn
1 0 DeleteObject
1 0 GetRandomRgn
2 0 GetRegionData
6 0 SetPixel
————————————————————–
301257 40Total first level calls: 301148
It would probably be better to not clutter this forum thread with such and perhaps there is a better way to communicate this type of thing? It may also be a case where images are being processed by these threads, and simply reducing their size will work as the sequence and number of module calls in both GOF and ERAS look almost identical when viewed side-by-side in the LogViewer, but again GOF has no such delay compared to ERAS.
I also stumbled on a couple other minor game log errors and offer my corrections. These errors rarely occur in GOF and ERAS, don’t seem to affect/crash anything, but I like to try cleaning them up when I see them:
RUNTIME ERROR – file: sea_ai\AIShip.c
invalid index -1 [size:1000]
function ‘Ship_RecreateStaticSounds’ stack errorChange:
void Ship_RecreateStaticSounds()
{
for (int i=0; i<iNumShips; i++) {
//Fix for error: invalid index -1 [size:1000]
//RUNTIME ERROR – file: sea_ai\AIShip.c
//function ‘Ship_RecreateStaticSounds’ stack error
if (makeint(Ships[i]) > -1 && makeint(&Characters[Ships[i]]) > -1)
Ship_CreateStaticSounds(&Characters[Ships[i]]);
}
}I actually tried to just use Ships[i] without the makeint function since Ships[i] is clearly an int index for &Characters, but kept getting a CTD at startup with a compile error log…even though the syntax was correct, it complained of a missing ) paren. Weird. Encapsulating them both in makeint solved that.
RUNTIME ERROR – file: scripts\PsHero.c
missed attribute: startgoodsChange:
//Fix for log error: RUNTIME ERROR – file: scripts\PsHero.c
// missed attribute: startgoods
if (CheckAttribute(PChar.GenQuest.PGG_Quest, “StartGoods”))
PChar.GenQuest.PGG_Quest.Goods.Taken = sti(PChar.GenQuest.PGG_Quest.Goods.Taken) – sti(PChar.GenQuest.PGG_Quest.StartGoods);Lastly, I had an idea about scripts/officers.c about the Loyalty mod. I like the mod as it fixes a flaw in officer loyalty and also introduces the concept that Regular Sailor/Neutral characters are swayed by the majority; good idea. But, I thought an improvement might be made for officers that are extremely loyal and might sometimes overlook an act that is discrepant from their bad/good alignment on occasion, and that chance to overlook is higher the more loyal the officer currently sits, and nonexistent chance for low-loyalty officers.
Here’s what I did:
#define OVERLOOK_LOYALTY_SPAN 5
Then in void OfficersReaction, a favorable action relative to alignment is always a positive, but in the case where .loyality (their property misspelling) might go down, I added a random check for a chance to ignore the action, so for the passengers loop (other code is truncated to just show relevant part):
int iOverlook = 1;
if (getOfficerAlignment(&characters[iPassenger]) == alignment)
.
.
else
{
//Mod to give chance to overlook discrepant action
//Extremely loyal are more likely to overlook, but chance is never zero
iOverlook = rand(MAX_LOYALITY) + OVERLOOK_LOYALTY_SPAN;
if (iOverlook > makeint(characters[iPassenger].loyality))
characters[iPassenger].loyality = makeint(characters[iPassenger].loyality) – 1;
}Same for companions loop:
if (getOfficerAlignment(&sld) == alignment)
.
.
else
{
//Mod to give chance to overlook discrepant action
//Extremely loyal are more likely to overlook, but chance is never zero
iOverlook = rand(MAX_LOYALITY) + OVERLOOK_LOYALTY_SPAN;
if (iOverlook > makeint(sld.loyality)) {
sld.loyality = makeint(sld.loyality) – 1;
if (CheckAttribute(sld, “PGGAi”)) PGG_ChangeRelation2MainCharacter(sld, -1); //navy
}
}I also did the same in the Neutral/Regular Sailor voting function, DetermineMajorityReaction (other code is truncated to just show relevant part):
int iOverlook = 1;
if (getOfficerAlignment(&characters[iP]) == action) _vote++;
else {
//Mod to give chance to overlook discrepant action
//Extremely loyal are more likely to overlook, but chance is never zero
iOverlook = rand(MAX_LOYALITY) + OVERLOOK_LOYALTY_SPAN;
if(iOverlook > makeint(characters[iP].loyality)) _vote–;
}if (getOfficerAlignment(&companion) == action) _vote++;
else {
//Mod to give chance to overlook discrepant action
//Extremely loyal are more likely to overlook, but chance is never zero
iOverlook = rand(MAX_LOYALITY) + OVERLOOK_LOYALTY_SPAN;
if(iOverlook > makeint(companion.loyality)) _vote–;
}Again, we can probably take this type of info to another forum as it’s lengthy, clutters this thread, and probably annoys everyone else that has to scroll through the nonsense…PM or email or something? Let me know your preference.
-
December 20, 2015 at 12:59 am #1488JeffreyKeymaster
Was having a boarding issue with one of my companions and happened to have a save just prior to the battle.
Loaded saved game file
Clear system.log file
Send one of my companions to board a particular ship
As my companion draws near, I inspected the system.log file and see this error:CreateIndexBuffer::CreateIndexBuffer
The method call is invalid For example, a method’s parameter may have an invalid valueMy ship draws next to enemy ship and they fire at each other indefinitely, no boarding occurs.
Unsure whether this error skews my companions ability to board. I see that method call is in the various Flag.cpp, Rope.cpp, sail.cpp, Vant.cpp files.
Enemy ship in question is an Old War Carracca.
Next load, I tell my other ships to sail away, then I try to board and as I draw near, inspecting the log file shows the same error, yet I boarded just fine. However, I noticed that I could board from a far distance, similar to if they had stricken their colors. So it’s like there is some confusion that they had already surrendered, so my ships wouldn’t board, but they were both still firing at each other as if they were still combatants.
-
December 21, 2015 at 1:17 am #1489JeffreyKeymaster
Good news.
I had another saved game in a battle situation which was similar to before; I ordered my companion to board a ship and it aims at the ship, draws nigh, and they do nothing but fire at each other indefinitely. This case was slightly different than before in that the enemy ship clearly never surrenders; if I reload the game, I can board it, but they fight back.
I did a file comparison for sea_ai/AIShip.c between GOF and ERAS and found this line is different in Ship_CheckSituation:
ERAS version:
if (CheckCanSurrender(rCharacter) && Ship_CheckMorale(iCharIdx,true)) {GOF version:
if (CheckCanSurrender(rCharacter) && Ship_CheckMorale(iCharIdx,false)) {Change true to false the the Ship_CheckMorale call, reloaded that game and sure enough, my companion boards and grapples.
So this companion boarding problem looks solved.
There is also a difference in Ship_BortReloadEvent about left/right cannon sounds, but I’m not including that here…just mentioned as maybe something else to add, though not a bug, just sound alerts about guns reloaded.
-
December 21, 2015 at 5:40 pm #1490JeffreyKeymaster
The game has crashed a couple times due to a divide-by-zero error…most likely due to bad ships for some character generations as far as I can tell so far (calculations for ship speed and such).
I modified some trace statements in likely spots to give me more information, and found one bad ship.
For instance, function Fantom_GetShipType had a Trace statement:
if (!checkAttribute(rship, “class”))
trace (“bad ship is: ” + rship.name);But in the case of a ship entity without a .class, the .name was also missing, so I changed it to show the index:
if (checkAttribute(rship, “name”))
trace (“bad ship is: ” + rship.name);
else
trace (“bad ship is: N/A, i = ” + i);This eventually showed me that ship id 128 was ‘bad’ and sure enough, ships.h contains #define SHIP_COLONIALFRIGATE 128, but ships/ship_init.c does not provide for that ship. For now, I simply copied from GOF, the texture files still exist in the ERAS file set for the ColonialFrigate .name, so I can move on to identifying other errors.
-
December 21, 2015 at 9:30 pm #1491JeffreyKeymaster
OK, after adding ship 128 to the ships_init.c, I still get a problem with that ship. Somehow, after the initial ship configurations in ships_init.c, just that one ship index gets whacked.
I injected a loop at various points in the game to trace the ship attributes like so:
Trace(“<my unique message to show what part of the program I’m testing>”);
ref mytestship;
for(int jjj = 0; jjj<SHIP_TYPES_QUANTITY_WITH_FORT – 1;jjj++){
mytestship = GetShipByType(jjj);
Trace(“mytestship.Name = ” + mytestship.Name);
Trace(“mytestship.Class = ” + mytestship.Class);
}When the game launches, ColonialFrigate is fine.
Just prior to a saved-game-load for a ship on the worldmap, that ship is fine.
Just subsequent to a save-load for a ship on the worldmap that ship is fine.Log shows in each above case:
mytestship.Name = ColonialFrigate
mytestship.Class = 4But, when I load a game that is saved in a state of being on the worldmap, as soon as I enter sea-mode, that one ship, index 128, is messed up; it no longer possesses .name, .class…any ship object attribute as the loop injected in CreateBaseShip executes again.
Log shows the last test loop as:
mytestship.Name = error
mytestship.Class = errorStill searching for when just that particular ship index gets annihilated.
-
December 22, 2015 at 2:11 am #1492JeffreyKeymaster
Oof. I’m reluctant to divulge how much time spent, but in short, I could not find where/why/how just that one index of the ship object array gets blanked. However, I can find two spots in the game load where at the end of function LoadGame_continue, the array is entirely fine, but at the beginning of OnLoad, it is not; no matter how many event handlers I injected log messages, I failed to find anywhere in the available source what is happening between those two calls. Also, an OnLoad() event handler is not even defined in this source that I could find. I presume there is something within the other .dll objects that does this.
In any case, the OnLoad() reinitializes several object arrays and lo, by simply having the ship array reinitialized along with them solves the problem; looping through the entire array in many places during the run-time functions that get called, every ship object in the array looks fine.
So for now, that is my solution. In seadogs.c, add:
extern void ShipsInit();
void OnLoad()
{
.
.
.
ReloadProgressUpdate(); //Already exists, just to show where I placed ShipsInit
DialogsInit(); //Already exists, just to show where I placed ShipsInit
ShipsInit();ReloadProgressUpdate(); //Already exists, just to show where I placed ShipsInit
So far, so good with this fix as I haven’t experienced ships with those missing attribute problems.
-
December 22, 2015 at 3:30 am #1493JeffreyKeymaster
There is also a divide-by-zero error/game crash at the end of some of the captain quests that I resolved. In characters/GeneratorUtilite.c, function GetBoarding_player_hp_Bonus:
int GetBoarding_player_hp_Bonus(int mcrew, int ecrew)
{
m_rank_bonus = 0;
e_rank_bonus = 0;if(ecrew == 0) ecrew = 1; //Fix divide by zero error
if (true) {
.
.
.For now, this and the previous proposed changes seem to solidify the game considerably. It seems to have improved quite a bit. Gonna play for awhile without logging to see how it progresses…
-
December 22, 2015 at 7:10 am #1494modernknight1Keymaster
Jeffrey my friend you are doing incredible work! Sorry not to be available at the moment. Travelling across the US and in some pretty bad winter storms. Writing from phone. Please continue. Based on the responses I’ve had and your recent input I will try to extend the site another year when I get to my destination in a couple days. Then I plan to really jump into your discoveries and get a major mega patch compiled for the holidays. Thank you for your work!
MK
-
December 22, 2015 at 4:03 pm #1496JeffreyKeymaster
Ha! Further good news about the lag for opening boxes/looting. It turns out texture size probably was the contributing factor…for whatever reason. While turning off the log files, another setting caught my eye that I hadn’t noticed before.
The name was compelling, it was set to off, so I experimented and toggled it on:
texture_degradation = 1
Huge difference! Once again, my playing experience in ERAS matches what I expect after playing AoP standard, or GOF. The loot or open box screen is near immediate. Also, I cannot find any discernible difference visually, but that may be due to my particular graphics processing and resolution constraints. But for me, there is no visual difference, but massive performance improvement.
May be worthwhile to instruct others of this handy engine.ini setting. I hadn’t noticed it before and by default, it appears my AoP and GOF had this set to zero as well, but without the performance hitch.
-
December 24, 2015 at 10:27 pm #1506JeffreyKeymaster
OK, after muddling with many Trace statements, I resolved an issue with the Flying Dutchman quest (some vacation time, eh? LOL) and as a result, have a little better understanding of some things that have happened with a couple issues I have recently seen about the base arrays and loading saved game state; it explains that one missing ship getting whacked every game load awhile back, and that fix for wrong-sized array causing a crash. My new problem so far looks isolated to how the Dutchman is handled a bit differently in its special order of RealShip creation, and I decided to go ahead and explain myself to bolster why I propose this particular change. Also, this problem is not specific to ERAS, as I believe this would happen in all COAS versions.
There are some base arrays for ships, characters, realships, items, etc. that get initialized when first loading a game, but later some get certain values reset with some game state assembled from the saved load data just prior to the seadogs.c OnLoad event handler. This is why that one missing COLONIAL_FRIGATE would look fine post-init function everywhere I traced, but as soon as the OnLoad would fire (which appears to get posted outside the .c source I can see…I presume the interface .dlls), re-looking at the base Ships template array values would show that ship skewed. Why correctly resizing that array in the code caused a game-crash (the saved data was a smaller size and it apparently resets the array size from the saved data index entries, then crashes when it hits a piece of code to update that last index that is now one element bigger in the code, but not the old array state used to reinitialize a smaller size).
This leads me to the Flying Dutchman problem. This problem probably presented as a result of how I approached testing/debugging from a certain save-point and would probably not occur unless a player saved at a specific point, after manipulating ships, exited the game, then reloaded/continued (which is what I did and how I discovered this); if a player simply got the log message of the ship nearby, went out to sea and found it, then saved before resuming, I don’t think a problem would arise if the game were reloaded from a save instance while the ship is encountered.
What I did was talk to the tavern folk until I got the word the ship was nearby, then I saved. I stored an extraneous fleet ship (I know…cheating as I knew what was going to transpire 🙂 ). Then went out to sea and encountered the Flying Dutchman. But, after that save, I had exited the game to review logs and trace messages for a couple other issues I was tracking. This is what led to the problem at hand. When I reloaded the save I had made after getting the word and storing my ship, I boarded my ship, went to worldmap, found the Dutchman, ‘go to sea’ and go after the ship…the Flying Dutchman approaches and looks to have engaged in a battle with me, but with no cannon fire. It circles and navigates like it’s attacking, but no actual bombardment.
I traced, and traced and traced and ultimately found that the Dutchman ship and it’s commanding character are set up correctly on game load, through all the init functions, it is loaded with ammo, but after the OnLoad, the RealShip index of the character entity sailing the Dutchman has changed (refNPC.Ship.Type), and that RealShip entity has no cannon balls of any sort, so it can’t actually fire. It took me quite awhile tracing many functions, puzzling over this before once again discovering that right at that OnLoad in seadogs.c, the same scenario where the array data shifts value (refNPC.Ship.Type change to a completely different index ID), when it dawned on me how/why that RealShip index for that character gets set one way during the game-load, then magically changes to a new index, now to a ship that both doesn’t match and has no ammo data so can’t fire during the battle encounter.
A summation of what I suspect occurs:
The Dutchman ship creation is actually called during init character creation and the first empty/available RealShips array slot is found, a ship created there with ammo, and the character NPC sailing that ship gets the .Ship.Type set to that index number. When I saved the game, that is the index that I see in any seadogs.c OnLoad tracing.
However, possibly since I had stored ships just after receiving word, on game load init (happens prior to that OnLoad event) of characters, ships and such, the order of the various init functions that create RealShips for ships in port and such, relative to the Dutchman ship creation changes the index entry of it in the RealShips; it’s not consistent, though it was probably meant to be. So in my case, the RealShip index of the Dutchman after all the init functions are done, was 5, and that’s what the NPC.Ship.Type is set to. But right when the OnLoad starts, at the top of that function, trace messages showed it changed NPC.Ship.Type = 12, because that was apparently the index of the Dutchman in RealShips array when I saved the game. But, since the Dutchman was loaded into the RealShips[5] because RealShips is fairly dynamic during the game and is not assembled from a save as each entry gets created from characters of the save that have ships, but the NPC.Ship.Type is now pointing to a ship at 12, but it has no name, no ammo setup, so that ship can’t fire.
Regardless of how exactly it happened (I wearied of looking, so employed a workaround), the index entry for the NPC.Ship.Type sailing the Dutchman was now invalid, had no ammo and the ship could not shoot, so ruins the quest. I changed Program/Quests/Quests.c:
extern void GhostShipInit(); //This is called in initStartState2Character, from LSC_Q2Utilite.c that the game starts with during a game start
extern void GhostShipInit();
void QuestsInit()
{
..
..
..
SetEventHandler(ABORDAGE_START_EVENT,”QuestAbordageStartEvent”,0);
GhostShipInit(); //Added lineBut additional changes were also needed in scripts/Treasure.c. I made a considerable change by extracting a chunk of GhostShipOnMap() and making that its own that function, removing it from GhostShipOnMap, but calling it from both GhostShipOnMap and GhostShipInit:
//Added function
void SetGhostShipAttributes(ref sld) {
ref rRealShip;SetBaseShipData(sld);
sld.ship.sailscolor = argb(255, 60, 60, 60);
DeleteAttribute(sld,”ship.sails”);
DeleteAttribute(sld,”ship.masts”);
DeleteAttribute(sld,”ship.blots”);Ship_SetTaskNone(SECONDARY_TASK, sti(sld.index));
if (CheckAttribute(pchar , “GenQuest.GhostShip.LastBattle”))
{
rRealShip = GetRealShip(sti(sld.Ship.Type));
rRealShip.MaxCaliber = 48;
rRealShip.Cannon = CANNON_TYPE_CANNON_LBS32;
rRealShip.HP = 59500;
rRealShip.WindAgainstSpeed = 3.0;
rRealShip.TurnRate = 49.0;SetBaseShipData(sld);
DeleteAttribute(sld, “ship.sailscolor”); // áåëûé ïàðóñsld.ship.Cannons.Type = CANNON_TYPE_CULVERINE_LBS24;
Character_SetAbordageEnable(sld, true);
}
else
{
sld.ship.hp = 52000; // 13%
}SetCrewQuantityOverMax(sld, 666);
sld.ship.Crew.Morale = 90;
ChangeCrewExp(sld, “Sailors”, 100);
ChangeCrewExp(sld, “Cannoners”, 100);
ChangeCrewExp(sld, “Soldiers”, 100);Fantom_SetBalls(sld, “pirate”);
Fantom_SetCharacterGoods(sld, GOOD_BALLS, 3900 + rand(300));
Fantom_SetCharacterGoods(sld, GOOD_GRAPES, 2900 + rand(300));
Fantom_SetCharacterGoods(sld, GOOD_POWDER, 6900 + rand(300));LAi_SetCurHPMax(sld); // åñëè îí óìåð
}Remove all those same lines from void GhostShipOnMap()…careful to not remove the three sld.mapEnc lines that are intermingled…I just moved them be called after like this
void GhostShipOnMap()
{
ref sld;
int i;
ref rRealShip;sld = characterFromID(“GhostCapt”);
SetGhostShipAttributes(sld);
sld.mapEnc.type = “war”;
sld.mapEnc.Name = xiDStr(“GhostShipName”);
sld.mapEnc.worldMapShip = “pirates_manowar”;
..
..
..Also add the call to the new function in GhostShipInit. I just put it at the bottom
void GhostShipInit()
{
ref sld;
..
..
SetGhostShipAttributes(sld); //Boyer add
pchar.GenQuest.GhostShip.ShipType = sti(sld.Ship.Type);
..
..Now the Dutchman fires at me…which is good? Wait a minute…LOL
Moving on, somewhat related, I noticed that using the spyglass on the Dutchman, the face image is that of Beatrice Devlin, and the name that usually displays for a character in the glass-view is blank. Fixed that with this:
characters/characters_face.c
//Add a face image for Dutchman…not sure what to use, so chose same as “skeletcap”
case “DavyJones”: rCharacter.FaceId = 231; break;
Add to RESOURCE\INI\texts\russian\dialogsource.txt
GhostCapName {Davy}
GhostCapLastname {Jones}Other fixes…
Remove extra paren, islands/islands_loader.c
void Sea2Sea_Reload()
Change this line:
string imageName = RandPhraseSimple(RandPhraseSimple(RandPhraseSimple(“loading\sea.tga”,“loading\seaStand1.tga”), “loading\SeaA.tga”)));
Change to
string imageName = RandPhraseSimple(RandPhraseSimple(RandPhraseSimple(“loading\sea.tga”,
“loading\seaStand1.tga”), “loading\SeaA.tga”));
Fix to scripts/ShipsUtilites.c
ref GetRealShip(int iType)
{
if(iType >= REAL_SHIPS_QUANTITY)
{
trace (“— Wrong Ship Index. iType is ” + iType);
Log_TestInfo(“— Wrong Ship Index. iType is ” + iType);
//return &ShipsTypes[SHIP_TYPES_QUANTITY + 1]; // äëÿ îòëîâà
return &ShipsTypes[SHIP_TYPES_QUANTITY]; // Fix as index too big
}
return &RealShips[iType];
}ShipsTypes is instantiated with a size of 200, but being zero-based, we can’t get that same number as an index, it has to be less. The initial loop to initialize the array does loop to 199, so the change should work as it was probably intended, but Akella messed that up in the original COAS.
//For reference
#define SHIP_TYPES_QUANTITY 199
#define SHIP_TYPES_QUANTITY_WITH_FORT 200
object ShipsTypes[SHIP_TYPES_QUANTITY_WITH_FORT]; // RealShips#define SHIP_BOAT 197
#define SHIP_FORT 198Fix to SEA_AI/AISea.c
void CopyShipArrDetails(ref refMyCharacter, ref refEnemyCharacter)
{//This function and call wasn’t in AoP, but added to GOF and a crash often occurs in GOF/ERAS during quests after transporting to shore and reboarding own ship
if (!CheckAttribute(refEnemyCharacter, “curshipnum”))
return;
//End fix
if (CheckAttribute(refMyCharacter, “curshipnum”)) {
int curshipnum = sti(refMyCharacter.curshipnum);
refMyCharacter.curshipnum = refEnemyCharacter.curshipnum;
refEnemyCharacter.curshipnum = curshipnum;
Ships[curshipnum] = sti(refEnemyCharacter.index);
Ships[sti(refMyCharacter.curshipnum)] = sti(refMyCharacter.index);
} else {
refMyCharacter.curshipnum = sti(refEnemyCharacter.curshipnum);
Ships[sti(refMyCharacter.curshipnum)] = sti(refMyCharacter.index);
DeleteAttribute(refEnemyCharacter, “curshipnum”);
}
}Remember that attempt to fix GetGoodByType stack errors? I was getting a ridiculous index value in the error…like 4854830, but the array is size 83. I had put a check: if (iGoodType > -1 && iGoodType < GOODS_QUANTITY), but it was still passing the test with that huge number??? How? Careful eyeballs though the call stack and I think the problem is that even though the parameter is an int, what’s really getting passed is the mem pointer, but somehow its value gets de-referenced within the if() statement, passes the test, but not de-refed as the index for the array in the return statement &Goods[iGoodType].
Fix to SEA_AI/AIShip.c…add sti(…) within Ship_CheckSituation…do a search for rCharacter.Ship.Cannons.chargeoverride and in the call to Ship_ChangeCharge, encapsulate in sti() function:
void Ship_CheckSituation()
..
..
..
…Attribute(rCharacter, “Ship.Cannons.chargeoverride”)) {
if(sti(rCharacter.Ship.Cannons.chargeoverride) != iCurrentBallType) {
Ship_ChangeCharge(rCharacter, sti(rCharacter.Ship.Cannons.chargeoverride));
}
..
..
..I think that’s it for now.
-
December 26, 2015 at 7:13 pm #1521modernknight1Keymaster
Jeffrey,
Thanks for your continuing effort. I am now somewhere I can continue working on the patch. Between my own error reports and your fixes I have a lot to put into the new patch. In fact its turning into a MEGA patch.
To ALL,
Just to give members a preview of what will be in the patch, not only will there be DOZENS of important fixes and dialogue improvements, but I have overhauled the promotion again. Because I could not get it to behave as it does in the networked version with promotions based on experience points, I have caused your first promotion to be to captain now (in the various languages) so that by the end of the game you can have the title ADMIRAL (in the appropriate faction language).
In addition, the new cannon mod is also in the patch.
Still working on the additional fighters mod. I have them in but the interfaces pics aren’t yet correct.
MK
-
December 27, 2015 at 6:44 pm #1523JeffreyKeymaster
I also have better news. Since GOF, there have always been those crashes after completing either a shore-storming of stranded troops, or raiding/ransacking the nearby moored ships laden with gold/silver/slaves. I’ve been chasing it down, but my hope is they’re gone for good. Stay tuned on that one.
My prior fixes appears to finally allow me to get closer to the real culprit…the game would typically crash with only those index errors, but I suspect that the real error never quite got flushed from the buffer to the error log; the wrong-index/stack error weren’t actually causing the crash as the game appears to ably bypass those without an actual crash during gameplay. Well, we might be there now as I finally saw some divide-by-zero error surface in the log after it crashed.
I mentioned the one in my previous post, but then my eye caught another potential in that same piece of morale code, so implemented another check. I chose to skip those two pieces in the event the denominator is zero as I don’t think it harms much if just those minor adjustments are skipped in the event denominator is zero:
RUNTIME ERROR – file: sea_ai\AIShip.c
Divide by zero//Adjust Morale for dead crew
if(CheckAttribute(rCharacter,”seatime.lastcrew”))
{
//Fix for game crash after captain mission
if (sti(rCharacter.seatime.basecrewquantity) != 0) //Skip if basecrew zero
tempmorale = tempmorale – (stf(rCharacter.seatime.lastcrew) – makefloat(CrewQuantity)) / stf(rCharacter.seatime.basecrewquantity) / CREW_PCT_FOR_MORALE;
DeleteAttribute(rCharacter,”seatime.lastcrew”);
if (AISHIPDEBUG) trace(“subtract morale for crew dam, morale is: ” + fts(tempmorale,4));
}//Adjust Morale for damanged ship
if(CheckAttribute(rCharacter,”seatime.lastHP”))
{
//Foyer fix for game crash after captain mission divide by zero error
if (makefloat(GetCharacterShipHP(rCharacter)) != 0.0) //Skip if ShipHP is zero…would be dead anyway
tempmorale = tempmorale – (stf(rCharacter.seatime.lastHP) – makefloat(rCharacter.Ship.HP)) / makefloat(GetCharacterShipHP(rCharacter)) / CREW_PCT_FOR_HPDAM;
DeleteAttribute(rCharacter,”seatime.lastHP”);
if (AISHIPDEBUG) trace(“subtract morale for ship dam, morale is: ” + fts(tempmorale,4));
}Other fixes:
invalid index 1000 [size:900]
RUNTIME ERROR – file: sea_ai\AICannon.c; line: 289
invalid array indexscripts/ShipsUtilite.c
At the beginning of these functions: GetCannonsNum, GetBortCannonsQty, GetBortCannonsMaxQty
//Fix
if(nShipType == SHIP_NOTUSED)
{
Trace(“Character ” +chr.id + ” have invalid ship!”);
return 0;
}
..
..
..
sea_ai/AICannon.cint GetBortIntactCannonsNum(ref rCharacter, string sBort, int iNumCannonsOnBort)
{
//Fix stack error
if(sti(rCharacter.ship.type) == SHIP_NOTUSED) return 0;
if (!CheckAttribute(rCharacter, “Ship.Cannons.Borts.” + sBort + “.damages”)) return iNumCannonsOnBort;
..
..
..RUNTIME ERROR – file: sea_ai\AIShip.c; line: 127
invalid index -1 [size:1000]
RUNTIME ERROR – file: sea_ai\AIShip.c; line: 127
function ‘Sea_ClearCheckFlag’ stack errorvoid Sea_ClearCheckFlag()
/Fix to check valid index for Ships[] array
if(sti(Ships[i]) >= 0 && sti(Ships[i]) < TOTAL_CHARACTERS) {
if (!CheckAttribute(&Characters[Ships[i]], “DontCheckFlag”))
..
..
.. }sea_ai/AIGroup.c
// return group type
string Group_GetTypeR(ref rGroup) {
//Fix…
//RUNTIME ERROR – file: sea_ai\AIGroup.c; line: 59
//missed attribute: type
if(!CheckAttribute(rGroup, “type”)) rGroup.Type = “war”; //End fix
return rGroup.Type; }nations/nations.c
Bad index -1, invalid attribute error .type.int GetRelation(int iCharacterIndex1, int iCharacterIndex2)
{
int iMCI = GetMainCharacterIndex();//Fix
if(iCharacterIndex1 < 0 || iCharacterIndex1 >= TOTAL_CHARACTERS ||
iCharacterIndex2 < 0 || iCharacterIndex2 >= TOTAL_CHARACTERS)
return RELATION_UNKNOWN; //End fix
..
..
..Just a last curious note…I attempted to hit the shore of San Juan del Norte for the “Sharp’s Spy Quest”, near midnight, I moored as I should and got the log entry update. But, I also have a bounty on my head and at that same moment, bounty hunters hit me up right as I enter land, as they’re wont to do occasionally. After my dialog response to taunt them to ‘go ahead and try’. Nothing happens and I get the upper scrolling message “Can’t fight here.” with the notification I presume due to the usual automatic enter fight mode subsequent to hunter-dialog; the bounty hunters and I just stand around…”ho, hum.” Kinda funny. The error in the log:
RUNTIME ERROR – file: quests\quests_reaction.c; line: 1418
missed attribute: EncRaiders_429
RUNTIME ERROR – file: quests\quests_reaction.c; line: 1418
null ap
RUNTIME ERROR – file: quests\quests_reaction.c; line: 1418
no rAP dataI don’t know a good way around it because the error is due to this:
sTemp = “EncRaiders_” + pchar.quest.(qname).LocIdx;
iTemp = sti(pchar.quest.(sTemp).EncQty);I’m presuming since I’m also in the midst of walking on that same shore to Sharp’s people, that has something to do with it.
However, when I do walk up to Sharp’s men, engage, the bounty hunters then finally proceed to attack me along with Sharp’s guys. So really, doesn’t break anything, but you do have to fight both the hunters and Sharp’s people at the same time…and that was just due to dumb luck of having a bounty, getting the random encounter chance at the exact same time as the Sharp quest update. Was kinda funny watching the hunters just stand around for a moment though; like we were just friendly chit-chatting for awhile.
I will reiterate, simply changing that .ini command switch has made this so much faster. I can actually just leave logging on all the time, without any delays now whatsoever. Before, I could only tolerate logging in short bursts as interface selections and actions were dreadfully slow and intolerable if logging was enabled. That was such a great find as performance enhancer.
-
December 27, 2015 at 7:02 pm #1524JeffreyKeymaster
On a humorous note…for the first time, I have actually been playing a character devoted to the Pirate nation. Talk about raising the difficulty level! It’s so much harder trying to get anything done with the typical quest tasks when you can’t enter most of the towns with that low-stealth at the beginning of the game. Oof!
I quickly rocketed to hostile/bounty for just about every nation and often had to give up and just spend a bunch of money on either/and trading license/relation mending and jet around to every nearby town/island that might pertain to attend various quests I needed to before expiration. So I don’t make near the money in the end at all, LOL.
-
December 27, 2015 at 9:00 pm #1525DevoidbrahParticipant
Heya there, Ive been gone for a while, sorry for that. Nice to see that things are growing here!
I will redownload the game again, since Fallout 4 sadly took up so much space that I had to clean my small 128gb ssd… Maybe I get one extra for GOF, after all one who works in IT should have enough hard drive on his home PC…Been busy with my new car lately, I got myself an Audi TT 8n from 99′ with a mileage of 120.000km so yeh work and car and gym can really oversaturate the time one has. Im also busy on writing my gym book that covers the latest overall accepted information all summed up and on point. I tend to call it the “gym bible” cuz it most likely will take a lifetime to finish, or generations, if it ever gets finished at all.
Hello Jeffrey, nice to meet you, you seem to be quite dug in! My last playthrough on 2nd hardest difficulty, also as a pirate was quite intense. Took me 5 hours alone to get off the pirate island. One small tip: Try picking fights in bars and then try looting their corpses. Thats the first thing I usually do. theres a 1/25 chance you hit big (depending on luck) and you might walk out of the barfight with some nice “trinkets” that could pay your crew for months. needless to say 2nd hardest difficulty renders the cost per person on a ship to a ridicioulus amount, where at some point you will wish to just break even by boarding one ship after another. Thank MK for the ludicrous amounts of treasure to be found or I would have had to quit that gameplay after 10 hours 😉
-
December 27, 2015 at 10:42 pm #1527JeffreyKeymaster
Not sure about this problem. Seems related to a ship model and related files, of which I have little knowledge. But I seem to remember model problems can cause crashes? Anyway, as much detail as I can offer at the moment, as there were 3 ships in the mix that wound up different than what I had started with. A French squadron attacked:
My companion grappled and captured a Dutch 20 gun fregate, I captured a Holland Frigate. During the battle, I got boarded by, and won the fight with the French Navire de Guerre. In the end, I kept the Dutch 20 gun and the Holland Frigate in my squadron, sunk the Navire de Guerre. I can transfer cargo among my ships fine, but if I ever go to the cabin of any ship among my squadron, doesn’t matter which ship I choose as my primary, the game crashes as soon as I exit to sea again. Every time (I have several saves during battle and my last boarding action). But if I go to worldmap (using an immediate post-battle save), then back to sea, it’s all fine. Not sure if one or more of those 3 ships caused some sort of corruption, but in the end, it doesn’t matter what ship I’m on, it will crash until I go do worldmap, then does NOT crash even with the Dutch 20 gun or Holland Frigate in my squadron (remember I sunk the Navire).
There is no error.log at all, but in the system.log shows:
Can’t load texture resource\textures\-1.tx
CreateIndexBuffer::CreateIndexBuffer
The method call is invalid For example, a method’s parameter may have an invalid value
CreateIndexBuffer::CreateIndexBuffer
The method call is invalid For example, a method’s parameter may have an invalid value
FMOD_SOUND:stop error! (36) PS2 only. fmodex.irx failed to initialize. This is most likely because you forgot to load it.
ERROR in Sailors.dll : block ‘ShipMan::SetAnimation()’
ERROR in Sailors.dll : block ‘ShipMan::UpdatePos()’
ERROR in Sailors.dll : block ‘Sailors :: Realize()That’s about all I can think to relate right now. I still have several saves if I need to recreate anything.
For now, the resolution has been after that worldmap, go back to sea, create another save, and with 2 of those 3 different ships (the 20 gun Dutch Fregate and Holland Frigate), can resume without problem. Seems something among those 3 ships in the battle causes some sort of issue.
-
December 28, 2015 at 4:44 pm #1529JeffreyKeymaster
OK, I’m a bit perplexed, but I just recently got compile errors and found backslash problems in INTERFACE/shipyard.c. Why didn’t this show before? Anyway, a single backslash needs escape in C. Replace the strings:
“interfaces\ships\” to “interfaces\\ships\\”
“interfaces\blank_ship2.tga” to “interfaces\\blank_ship2.tga”
“resource\textures\” to “resource\\textures\\”
“resource\Textures\INTERFACES\Disketa_Empty.tga.tx” to “resource\\Textures\\INTERFACES\\Disketa_Empty.tga.tx”For instance the \t would indicate a tab in C anyway since the backslash is intended to tell the compiler a special character follows. So a backslash before a quote also tells the compiler to handle the next character differently, which means it is not used to complete the string, hence compile problems. Not sure why this was never indicated in my game so far…kind of like that ships_init that had too many parens, yet I didn’t get a compile error from the very start? Weird. And yet the shipyard interface also displayed without this? I don’t get it, but just fixed it anyway.
-
December 28, 2015 at 5:22 pm #1530JeffreyKeymaster
OK, I’m confused. Having discovered this backslash deal, I changed several of the interface programs to properly escape backslashes…what kind of mind-reading compiler is this?
How can “interfaces\\Maps\\treasure map.tga” and “interfaces\\Maps\\” + itmRef.imageTga + “.tga” be the same as “interfaces\Maps\treasure map.tga” and “interfaces\Maps\” + itmRef.imageTga + “.tga”? I chose that one because the \t and the \” should just not work at all give the special nature of escaping tabs and doublequotes within a string. I went and bought a treasure map in the tavern and checked them out both ways within my item screen and they both work/look fine on screen? I’m so confused…does the compiler look at the string and say to itself, “Hmmm, I think I know what image path you wanted…LOL
-
December 28, 2015 at 5:58 pm #1531DevoidbrahParticipant
Im no coder, but the way I see it, and the way the russians used to write this game its much likely a compromise on the code part, you can use both “\\” and “\”, I would go so far and say that if you used for example “interfaces\\Maps\treasure map.tga” it would still work. The commands seem to be the same, so the game registers all variants of it, regardless what your personal choice is. I dont know if this is a viable explanation since I am a mere Hardware tech guy and you can actually hunt me with anything closely related to code. But I can to an extent read/understand it.
-
December 29, 2015 at 5:02 am #1537JeffreyKeymaster
Devoidbrah, I suspect you are correct that the compiler (did they write their own?) used maybe only checks for \n and \\. If those are found, then it ‘escapes’ the next character. But if only one backslash is used without the next being an ‘n’ or ‘\’, then it will not escape the next character. My concern is that after all this time without any actual code change to shipyard.c, the fact it erred, there may be a flaw/bug in the compiler where it got confused parsing the code and gave the error.
So my ‘change’ didn’t actually fix anything, it just didn’t hit the bug the next times I ran the game trying both versions. Unfortunate, but we can’t change that.
Moving on…got another error:
RUNTIME ERROR – file: sea_ai\AISea.c; line: 70
invalid index -1 [size:1000]
RUNTIME ERROR – file: sea_ai\AISea.c; line: 70
process event stack errorvoid SeaAI_SailToEndFade()
{
DelEventHandler(“SeaAI_SailToEndFadeEvent”, “SeaAI_SailToEndFade”);
SendMessage(&SailToFader, “lfl”, FADER_IN, 0.5, true);// delete current cannonballs
AIBalls.Clear = “”;// reset all PLAYER_GROUP ship tracks
for (int i=0; i<iNumShips; i++)
{
int iCharIndex = Ships[i];
//Boyer fix
if (iCharIndex >= 0 && iCharIndex < TOTAL_CHARACTERS) //Fix for char index
{
if (CheckAttribute(&Characters[iCharIndex]…
..
..
..
}I’m running this game longer and longer without getting any log errors, haven’t experienced any problems with how it operates (quests, fights, behavior and such are as expected). Well, except this one:
RUNTIME ERROR – file: locations\locations_loader.c; line: 1006
incorrect argument index
RUNTIME ERROR – file: locations\locations_loader.c; line: 1006
Invalid conversationI get a fair number of those and has to do with this line:
locator = GetAttributeN(locator_ships, iCurNumShips);
And I can’t find GetAttributeN defined anywhere, so I’m guessing it’s a function that resides in objects outside the source we have. Doesn’t seem to break anything. Today, I have not experienced any crash and for the last couple hours playing, those are the only errors I have seen in the log…not counting the missing techniques, bad rope data, missing textures, leaks and such I see in the system.log. Those are outside my knowledge of this game at this time.
-
-
December 28, 2015 at 6:02 pm #1532JeffreyKeymaster
At some point, the game is passing a -1 location index and I periodically got the following errors in the log after finishing Tenochtitlan and retrieving the Jade Skull:
RUNTIME ERROR – file: characters\QuestsUtilite.c; line: 1871
invalid index -1 [size:702]
RUNTIME ERROR – file: characters\QuestsUtilite.c; line: 1871
function ‘QuestCheckTakeBoxes’ stack error
RUNTIME ERROR – file: characters\QuestsUtilite.c; line: 1871
invalid index -1 [size:702]
RUNTIME ERROR – file: characters\QuestsUtilite.c; line: 1871
function ‘QuestCheckTakeBoxes’ stack error
RUNTIME ERROR – file: characters\LSC_Q2Utilite.c; line: 2109
missed attribute: indexI inserted a check:
QuestsUtilite.c
QuestCheckTakeBoxesvoid QuestCheckTakeBoxes(ref itemsRef)
{
//Fix for invalid location
if (reload_location_index < 0) return; //End fixI made sure the Skull still works to revive by intentionally starting a fight with guards in a city and getting an officer killed. I could reincarnate them just fine, so far no adverse effects. I’m thinking that function gets called many times and during some sort of transition between locations, that index is -1, but once a valid location is loaded, all is fine? Seems OK so far.
-
December 28, 2015 at 7:58 pm #1533JeffreyKeymaster
Well, after the last fix in QuestUtilite.c, for awhile I stopped getting the index attribute error, but it resurfaced, so I guess I have to check the attribute that I opted to skip to see if just the QuestCheckTakeBoxes change eradicated that one too, but since it didn’t, change both:
bool IsAztecSkullOfficer(ref sld)
{
if (!CheckAttribute(pchar, “AztecSkull.id1”)) return false;
string sTemp;
aref arOfficer;
makearef(arOfficer, pchar.AztecSkull);
for (i=1; i<=3; i++)
{
sTemp = “id” + i;
if (CheckAttribute(sld, “index”) && arOfficer.(sTemp) == sld.index) //Fix added
{
return true;
}
}
return false;
} -
December 28, 2015 at 9:26 pm #1535StéphaneParticipant
Hello ,
First i have to tell i really enjoy all your work , and i have pleasure to play your mod.
I recently played to blood and gold Caribbean , but i was not satisfied, and it give to me the desire to play again Aop2 .. and i looked about all mods and started to play yours.
This is a few bug i encountered and breaking some quests :
city of abandoned ship :
at the end, when you get out the ship and have to swim to escape the storm , nothing happen, the screen is freezed out the ship , and you can’t move , the city isn’t in the water , you can still press F2 look your character etc … but nothing more, only way is to use console to teleport to tavern ….I notice when you are equiped with the best breastplate (Grandee’s cuirass) , you don’t swing with your sword , but with your gun …. removing the armor resolve the bug, but if you put it again, you still have the bug ( I played with Charles d’Angennes )
Search for Sharp’s Spy Quest:
There is no native when you go inside the Pearl Diver Village , so you can’t advance the quest speaking to the elder …When i m in a storm and i m raising my nav skill, if i stay longer in the storm instead of leaving it as soon as you can, i have some msg telling something like : incorrect character -1
Another bug: the quest fighter: Humphrey Douglas , don’t have his weapon in hand
Hope my English is enough good for you to understand what i mean 🙂
- This reply was modified 8 years, 11 months ago by Stéphane.
-
December 29, 2015 at 7:53 pm #1540DevoidbrahParticipant
Freeze on COAS at the last part before stormswimming can be avoided if you try to hit f2 before it completely loads. Thats the only workaround that can be found by MK as of now. This error has been around since first Eras release. I think it has something to do with the character which is there.
Pearl divers village problem is most likely a cause of MK trying to fix the head spaniard who had no face in first ERAS release. I tell you, that face gave one nightmares cuz he was not right aligned with his skin.
Some new characters are still bugged, keep it coming if you find more characters with similar problems 😉
Thanks for your reports everyone!
-
December 29, 2015 at 10:30 pm #1541modernknight1Keymaster
Stéphane, Welcome to the reef and thank you for the feedback! Already knew all you said but its always good to have it verified by another set of eyes. Thank you. I already posted the fix for the Pearl Divers earlier in this thread if you want to try editing yourself. If not, just wait for the upcoming patch. Everything you complained about should be fixed in the patch. I am worried by the Tartarus glitch, but there are two issues that I will fix, 1) replacement of a bad character, and 2) a non native particle file I was experimenting with that works much better in other places in the game but not in the COAS. More to follow later.
At David, Car sounds cool bro! Glad you were drawn back here. Getting more help. There is another quiet member who has contributed quite a lot the last several months. He is from Mexico and has promised to be more vocal and helpful here soon. Go Daddy is coming up with a solution to reformat the Forum in the manner you suggested. I should have that input right away!
I was gonna let the site die but suddenly Jeffrey appeared and he is a programmer by trade and he is simply a God-send. He is the kind of help I have been wanting for so long. We are really getting some things done now. I was hoping Hammer would have offered this kind of help, but he is far too busy with real world projects.
Between Jeffrey and many people coming out of the wood work to ask me to keep the site going and thanking us for our work, I went ahead and renewed the site for another year.
@Jeffrey, Once again, fascinating discoveries! You are finding things faster than I can update the patch. Would you like me to get you a copy of the sourcecode? I have the whole thing.
I am currently with my grand children so only working on this in the evening until after New Years.
TO ALL: I anticipate this new MEGAPATCH being ready by the end of the first week of January 2016 or the beginning of the second week. You know me I like to test a little first. In addition to all of the other things I have announced in this thread that will be fixed, there is also some weather improvements. I wanted the weather to flow a little better and some of the white overcast skies are being substituted with actual skyboxes. I liked it at first, but there is just too much inconsistent white overcast weather. There will still be a bit here and there just not near as much. For Jeffrey, Galleon and David, I will send you an early copy of the patch to test if you like.
Thank you all for the positive comments. I actually have some new stories, reviews, art and other material to put up here as well now that you have energized my positive waves again.
Thank you ALL!!! MK
-
December 30, 2015 at 12:26 pm #1556StéphaneParticipant
that’s great all this will be fixed ! thanks for working on it after so many time 🙂
Can i have a suggestion ?
Could you think is it possible to enable a 3 screen resolution ? i tried to play it on 5760×1080 , but the result was awful
-
December 30, 2015 at 6:05 pm #1559JeffreyKeymaster
Hey, that full source could prove useful. But then again, I might wind up spending less time playing the game, and more time code traversing…that would be more like work, ack! Also, an advance patch release for test goes beyond my available disk space, I’m down to about 4.5 gb remaining, LOL. I’ll have to devise some strategy for rearrangement. I’ve got plenty of external storage, so I can work something out; like move out the current version to external. I want to preserve what I’ve got so far for file comparisons, if needed.
I should probably start better documenting what I’ve experienced and my fix efforts for easier review/comparison. I’ve pretty much just posted as I went and have not really consolidated a central list. I’ll backtrack a bit and concoct a review checklist for myself.
As for weather changes…was that your doing on the way the sky/clouds look? It seems different than I remember in GOF and the vistas seem remarkably better in ERAS. It could also be because I turned off all the info bars and enabled realistic spyglass (which I had never done before), so I’ve been forced to do a lot of glassing on deck to figure out what’s going on at sea. Might just be me finally noticing stuff, LOL…like the solar system planets seen in the sky. I double-checked and those satellites are in the other game version too, but it is a nice little touch that I never noticed before.
-
-
December 30, 2015 at 7:59 pm #1561JeffreyKeymaster
On another subject that is totally OT, but I discovered something about my bounty. Not only can it be reduced though the diplomat in a pirate colony, but you can bribe the governor. I just found this because I’m attempting to collect black pearls for the Dutchman quest.
If you talk to the governor for work in hopes of the town being under siege, you can offer an exchange to reduce the bounty (out of curiosity, I have since reviewed the code and found you have to have a certain level of bounty/notoriety). And it is much cheaper than the diplomat fee as the Bloody Assassin I am (we’re talking millions for the diplomat as a level 30+ Bloody Assassin with a sizable bounty…I looked at the calc and see those elements are factors :), vs. a couple 100k the governor required), and this method changes status to Admiration rather than just Neutral (note, you’re still an enemy of the nation if you’re a pirate or different nationality and guards still accost you/forts still attack you if your stealth roll fails)! Nice find! Also, I eventually discovered you can’t get the ‘protect the town from siege’ task UNLESS you sail in to port first. Ah, the new things I learn. But be careful…there can be some unfortunate kinks in this plan that are dependent upon ‘stuff’ now that I’ve peeked at the ‘insider’ machinations of this dialog option 🙂
My curiosity hit, so I hardcoded in a fail, and found that part is actually broken…nice accidental discovery. This part is the same in all COAS version, so has been broken since the beginning. If the bribe fails, the game will freeze at the next dialog and is unresponsive to all key commands.
DeathExecutionStart appears to have been a contemplated feature, but not ever coded, so it was commented out in the Church files, and so was the arest_2 case in the Mayor files that also made a call to it, but the prior dialog case still links to arest_2, but since it no longer exists in the case statement, the dialog remains on screen and no further action can be taken by the game as the next step is gone. I just copied the ‘fight’ line from arest_1 in Program/DIALOGS/russian/Common_Mayor.c:
Used to look like this:
else
{
dialog.text = DLG_TEXT_BASE[389];
link.l1 = DLG_TEXT_BASE[390];
//Boyer fix, remove arest_2
link.l1.go = “arest_2”;
AddCharacterExpToSkill(pchar, SKILL_FORTUNE, 10);
}Changed to this:
else
{
dialog.text = DLG_TEXT_BASE[389];
link.l1 = DLG_TEXT_BASE[390];
//Fix, remove arest_2
//link.l1.go = “arest_2”;
link.l1.go = “fight”;
AddCharacterExpToSkill(pchar, SKILL_FORTUNE, 10);
} -
December 30, 2015 at 8:45 pm #1562StéphaneParticipant
I think you are aware about this too …
Following playing, i discovered another bug about quest officer Danielle Sheppard : his eyes are not in the right place, and she doesn’t have any picture on F2 menu or when she is on ground like a fighter officer
-
December 30, 2015 at 10:47 pm #1563JeffreyKeymaster
I remember seeing a fix for Sheppard in the characters_face.c file in the GOF code.
They replaced:
case “Danielle”: rCharacter.FaceId = 235; break;
with this:
case “Daniell2”: rCharacter.FaceId = 235; break;
Might be that naming issue.
As for the squirrelly eyes, those were in GOF too. In fact, they use a similar face on the female pirate officers and if you check them out on a ship deck, their eyes are the same.
-
December 30, 2015 at 11:14 pm #1564StéphaneParticipant
Do you know if it is possible to enable a 3 screen resolution ? i tried to play it modifying the engine.ini with screen_x = 5760 and screen_y = 1080 , but the result was awful
-
December 31, 2015 at 6:19 am #1567modernknight1Keymaster
@Stephane, I don’t think it would be possible without some engine modifications.
It was never meant to be played in three screens. It would be cool to have it set
up with interface on a separate screen. It might be possible as a future mod but I
have much more pressing work at the moment with stability and error fixes and new
colony/island importation.Concerning Danielle Shepard. There is a version of her running around in the mod
that is correct. The hands look right, the eyes are right and the animation is completely
correct. I just need to adapt all the other Danielle based models to that same combination.
This will be fixed soon. Its on my list – a list BTW which I plan to publish for the community.
I am pretty proud of the list and will publish a version that already shows all of the dozens
of fixes and improvements already implemented.Jeffrey, I know what you mean about fun factor versus work. One of the things that drives
me on this game is that I want to play it so badly but want the improvements in place that
I am working on before I play a new game – so I will work really had to get them in place.
I will upload the source and provide you a secure link. No pressure at all. Work only on
what you want to. I DO NOT want this to seem like work. Its one of my hobbies and that’s
how I always look at it. Periodically I will switch games when I get a little burnt out but
that only ever lasts for a week or so.VERY INTERESTING on the additional quest dialogue. That’s not the only one. There are numerous
ones in the Russian version that are not in the English. Once I have all the new colonies in
place my next priority is new quests. I almost know enough now to link them. This is
something that we may be able to enable in the future.To answer your question on the skyboxes YES that is my work – mostly imported work from
several other mods and one of them is a skybox I made from an Idaho sunset. I am adding
more for the overcast boxes that don’t really work for me. Weather will flow better and
the sky will be even prettier after the new upcoming patch is applied. I played a little
New Horizons this week. Its still a fun game and I will always like some things about it,
but that mod cannot even hold a candle to ERAS now visually speaking. Also the variety
in all areas pales to ERAS now.On the planets I believe that the DEVS originally were planning some kind of celestial
navigational system play in direct sail mode – but scrapped it. I have noticed some
consistencies in location at certain times. If one could make an almanac stating where
they could be observed at what times, common directions/azimuths could be determined
without a compass. An Item I have always wanted to add is a working Dutch Rutter/
navigational almanac like found in Sid Meier’s Pirates.MK
- This reply was modified 8 years, 10 months ago by modernknight1.
- This reply was modified 8 years, 10 months ago by modernknight1.
-
-
-
-
December 31, 2015 at 6:46 pm #1577JeffreyKeymaster
I have left the Tartarus while swimming and found the mast of the Diffindur and boarded the Dog of War!
Like others have complained, when I left the Tartarus, game is stuck, you are on deck, not in water. But, knowing there was a problem, I saved just prior to opening the door. We also got a handy error in the log at that moment:
RUNTIME ERROR – file: locations\locations_loader.c; line: 385
invalid operand
RUNTIME ERROR – file: locations\locations_loader.c; line: 385
function ‘LoadLocation’ stack errorFrom the file:
if(CheckAttribute(loc, “MaxWaveHeigh”))
{
if(stf(loc.MaxWaveHeigh) > 9.0)
{
/* These next 3 lines were the problem as they don’t work as assignments and are not a valid comparison */
Sea.MaxSeaHeight != stf(loc.MaxWaveHeigh);
NSWeather.WindSpeed > 14.0;
Sea.fMaxSpeedZ > 2.8;
}
}I compared the file to GOF and the only one GOF has is an assignment of Sea.MaxSeaHeight set to equal the loc.MaxWaveHeigh. Since I don’t know the intent for the additional .Windspeed and fMaxSpeedZ lines, I simply commented them out for now and made the MaxSeaHeight an assignment:
if(CheckAttribute(loc, “MaxWaveHeigh”))
{
if(stf(loc.MaxWaveHeigh) > 9.0)
{
Sea.MaxSeaHeight = stf(loc.MaxWaveHeigh);
//NSWeather.WindSpeed > 14.0;
//Sea.fMaxSpeedZ > 2.8;
}
}Voila! Exit the Tartarus, swim to Diffindur mast, see the padlock to enter the Dog of War and sail off!
-
December 31, 2015 at 7:20 pm #1578JeffreyKeymaster
I’m happy that the showcase quest is fixed. Seemed important that the quest giving the game its title be operable to its conclusion:). But by all means, do the candle sidequest first thing and get a map! The running around gets annoying enough as it is, LOL! The fast-travel is a necessity!
I’m sure I don’t catch them all, but when I see them, dialog fixes:
Program/Text/Dialogs/Quest/LostShipsCity/Barmen.h
Change: I’m just thinkin’ out out here
To: I’m just thinkin’ out loud hereProgram/Text/Dialogs/Quest/LostShipsCity/Mechanic.h
Change: Ahh… Wel,l
To: Ahh… Well, -
January 1, 2016 at 1:20 am #1580DevoidbrahParticipant
Great Work Jeffrey! You`re godsent indeed!
There are only 2 times in which I completed the COAS questlines.
GoF 1.2, and ERAS 2 first build up until the tartarus bug.
For some reason mines and CoAS give me strange headaches when playing it for longer than 30 minutes. maybe its the pathfinding or the unaestethic feel of the aligned areas. But Im glad that the freeze is fixed now. -
January 1, 2016 at 1:58 am #1581cobenParticipant
Wow ur really God-send for this reef jeffrey, lol..i really like coas stuff, if u would mine please explain bout edit just a little bit more,
Locators
Sea.maxseaheight = -01;
Nsweather.windspeed = 7.5;
Sea.fmaxspeedz = 3.9;
Sea.minseaheight = -4.0;
Sea.maxwaveheight = 50.5;
Sea. Minwaveheight = -2.5;If(checkattribute(loc, “maxwaveheigh”))
{
If(stf(loc.maxwaveheight)>9.0)
{
Sea.maxseaheight != stf (loc.maxwaveheigh);
Nsweather.windspeed > 14.0;
Sea.fmaxspeedz > 2.8;
}What file should we change and delete?
Thx for ur solutions n please helpme to fix this coas bugs hehehe-
January 1, 2016 at 2:49 am #1582JeffreyKeymaster
coben, it looks like you are showing lines from the correct file, locations\locations_loader.c
Find that part of the code you listed:
If(stf(loc.maxwaveheight)>9.0)
{
Sea.maxseaheight != stf (loc.maxwaveheigh);
Nsweather.windspeed > 14.0;
Sea.fmaxspeedz > 2.8;
}Just change the 3 lines in the middle of the braces {}, to this:
Sea.MaxSeaHeight = stf(loc.MaxWaveHeigh);
//NSWeather.WindSpeed > 14.0;
//Sea.fMaxSpeedZ > 2.8;Save the file and that’s all you need to do. You will then be able to exit the Tartarus and swim like you should.
-
-
January 1, 2016 at 3:00 am #1583cobenParticipant
Lol thx a lot jeffrey, i finally get wasted like a rag doll on the storm..
-
January 1, 2016 at 1:24 pm #1588modernknight1Keymaster
Jeffrey, This is simply fantastic! I can tell you that the bug is all my fault based on your findings. I modified those lines during an experiment last year trying to improve harbor water effects and ships mooring closer to the jetty. I was so desperate that I modified the code in that file even though it has nothing to do with harbor effects and I never changed it back. My thoughts are that if we simply changed it back to vanilla entries rather than commenting out the lines that it will work as well also. I am not certain of this however because I seem to remember people complaining of similar problems a few years ago before I even tinkered with that file.
I am not good about documenting my changes. One of my New Years resolutions is to do a better job of this so things aren’t lost like this. You have saved me a lot of detective work on this my friend because I had this on the top of my list as something to fix for the upcoming mega patch.
You my friend are quite simply AWESOME!!!
Thank you!
MK
-
January 1, 2016 at 3:08 pm #1591JeffreyKeymaster
I wasn’t sure if there was a particular intent for those lines that could still be implemented with proper syntax, so I commented them for the time being. But if that is no longer the case, they can certainly be stricken entirely.
I figured this resolution would make a good number of you happier with ERAS 🙂
I will add that I still get an occasional game-crash/CTD that is usually directly preceding a boarding event…boarding starts to occur, a load-image displays, but after a lengthy pause, crash. But, the cumulative effect of all the changes I have made so far has made this event far more tolerable due to another fact…I have not had a bad-save occur for several weeks now, which I used to get often enough in both vanilla and GOF, that I now employ a special strategy to always save in a slot 3-4 spots out from my last save, wait for it to be good, then do another fast-save to always have 2 identical saves because if I just do fast-save and it crashes into a bad save, then I don’t have to lose any activity as I have a backup of the same spot. I will guess that has to do with the several array-size fixes.
Given that I used to get quite a bit more CTDs, usually during the fast-save using F6, often during a regular save, and often during boarding, the experience of my mere 2 or 3 crashes during the last 5 days of play is MUCH better, but not only because it’s far more infrequent, but also because I have not had a bad-save file in about 2 weeks. So when my boarding event causes a crash, since I have auto-save boarding option enabled, the game state saves without a problem, so I can resume exactly from where I left off…a slight hitch.
Unfortunately, my last few game crashes leave no error.log update. The only file with a time-stamp matching the time of crash, is the system.log with the following:
CreateVertexBuffer::CreateVertexBuffer
The method call is invalid For example, a method’s parameter may have an invalid value
Can’t load texture resource\textures\AMMO\NOTEXTURE.TGA.tx
CreateVertexBuffer::CreateVertexBuffer
The method call is invalid For example, a method’s parameter may have an invalid valueHowever, I can see similar entries interspersed above this time, where no crash occurred, so not yet sure about this.
Anyway, I don’t think I posted another error. Error log:
RUNTIME ERROR – file: interface\perks\perks.c; line: 141
missed attribute: fellows
RUNTIME ERROR – file: interface\perks\perks.c; line: 141
null apChange following code in function GetOfficersPerkUsing
if (CheckAttribute(&ChrPerksList, “list.” + perkName + “.OfficerType”) && ChrPerksList.list.(perkName).OfficerType == sOfficerType)
{
if(!CheckAttribute(chref, “fellows”)) {continue;} //Fix added here to check for fellows attribute
cn = sti(chref.Fellows.Passengers.(sOfficerType));
if(cn<0) {continue;}
offc = &Characters[cn];
if (CheckAttribute(offc, “perks.list.”+perkName) ) ok = true;
if (CheckAttribute(offc, “perks.list.”+perkName+”.delay”) ) okDelay = false;
//if (GetCharacterPerkUsing(chref, perkName) return true;
}I will carry on…still working Dutchman and Sheppard/Enchanted City/Ascold. But, I’m going fishing today in about 5 minutes, so see ya!
-
-
January 1, 2016 at 10:10 pm #1599cobenParticipant
Absolutely Mk, and i think if both of u combine forces, this reef will gonna be historical lol, thx for ur dedication MK n thx for ur detail explorations Jeffrey,
-
January 2, 2016 at 3:52 am #1600JeffreyKeymaster
Some more updates…
quests_texts.txt, Change name Law to Low for all relevant Morgan questline messages in RESOURCE\INI\texts\russian\questbook\quests_texts.txt
Miquel de Valdez from the Isabella quest, her brother in Cumana as passenger, no face shows in crew scroll or bigger image
RUNTIME ERROR – file: interface\character_all.h; line: 179
missed attribute: faceid
RUNTIME ERROR – file: interface\character_all.h; line: 179
no rAP data
RUNTIME ERROR – file: interface\utilite.c; line: 451
missed attribute: faceid
RUNTIME ERROR – file: interface\utilite.c; line: 451
no rAP data
RUNTIME ERROR – file: interface\character_all.c; line: 169
missed attribute: faceid
RUNTIME ERROR – file: interface\character_all.c; line: 169
no rAP dataThe missing faceid is for model Ibarra, now used for Miguel
characters_face.c, FaceMaker function
case “Ibarra”: rCharacter.FaceId = 323; break; //Added…this is actually an image that looks like the ‘old’ Miguel, I couldn’t find a match for changed character, so modify as necessary
Kill Edward Low, log doesn’t properly show Sea Wolf retained, and neither will Jackmann acknowledge such.
In Programs/Quests/reaction_functions.c, function void PiratesLine_q3_over(string qName):
Change:
if (sti(RealShips[sti(pchar.ship.type)].basetype) == SHIP_MORDAUNT)
To:
if (sti(RealShips[sti(pchar.ship.type)].basetype) == SHIP_BRIGSW)
This fixes the log and Jackmann’s reactions.
-
January 2, 2016 at 7:18 am #1602cobenParticipant
Bugs report, Peter blood cannoner, there’s no Ned Ogle face, missing picture?
-
January 2, 2016 at 3:39 pm #1606modernknight1Keymaster
Thanks Coben, Face noted and added to list. This is a long-time running project of mine to get all of the faces right. It is SOOOOO time consuming.
Jeffrey, Thanks again. I knew about the line 169 and 179 problems. Just haven’t got around to it yet. The MORDAUNT TO BrigSW is my fault once again with all my endless tinkering. Good catch!
Hope you enjoyed the fishing. My plans for today are doing nothing but implementing as many of your fixes into the Mega-patch as I can – and work on the website. Thank you so much again for all of your work and your gracious SHARING!!!
You’re AWESOME!
MK
-
January 3, 2016 at 1:55 am #1612JeffreyKeymaster
The Ogle thing is similar to the Miguel issue. The call to NPC_GenerateCharacter specifies a model as the 2nd parameter and that name has to match a case in the characters_face.c FaceMaker function to get a faceID that matches the Portrait file name.
In reaction_functions.c, the Blood Line sets Ogle with this:
sld = GetCharacter(NPC_GenerateCharacter(“Ogl”, “Chard3d”, “man”, “man”, 10, ENGLAND, -1, false));
In GOF it’s
sld = GetCharacter(NPC_GenerateCharacter(“Ogl”, “Chard3a”, “man”, “man”, 10, ENGLAND, -1, false));
So it was changed, but no additional case was added in FaceMaker.
This is also why Daniell2 should be added, since that is the 2nd parameter specified when Sheppard is created in MagicCity.c
-
January 3, 2016 at 5:11 pm #1614JeffreyKeymaster
Well, with the Miguel portrait issue, there was a lingering problem. Adding a case for the Ibarra to get a faceid in characters_faces.c FaceMaker function, solved the larger portrait in the character screen, he still did not get a smaller photo showing in the officer/passenger scroll to the left. I tracked this down and it’s a missing entry in RESOURCE\INI\interfaces\pictures.ini. Add one for whatever faceid/image filename that corresponds. In my case, I’m still using the old one of 323 since I was unable to figure out what one is for Ibarra model:
[FACE128_323]
sTextureName = portraits\128\face_323.tga
wTextureWidth = 128
wTextureHeight = 128
picture = face,0,0,128,128 -
January 4, 2016 at 1:07 am #1629modernknight1Keymaster
Jeffrey,
I regret having changed any of the main character face numbers. I didn’t do it very much though. While learning I added hundreds of new faces to the directory. This is a major undertaking of mine to get the portraits right.
There was both a model problem and model change with the Chard models. I am going to change them yet again now that I have a full understanding of how the models work. Daniell2 will also be added.
A lot of the problems in ERAs are from my blind stumbling about learning how everything works and experimenting.
I love that you are reporting all of these issues as I keep adding them to a growing errata sheet that I am prioritizing and working on to get the mega patch complete.
Thanks again.
MK
-
January 4, 2016 at 1:46 am #1638JeffreyKeymaster
Bad news…I finally had a game crash. It’s been quite awhile! When going to sea mode from port, the crash occurred. There was no error.log file, but this was the last written to system.log:
Invalid model: resource\models\ships\Fwzp56m1\Fwzp56m1.gm
WARNING! Can`t model class pointer for ShipModel
WARNING!!! Missing INIT message to ROPE – bad ship model
Missing INIT message to FLAG: bad MODELMight have had something to do with it.
-
January 4, 2016 at 2:02 am #1639modernknight1Keymaster
Well that sucks. There are TONS of rope errors in the game. Hundreds….
That ship is the Export Warship I believe. Is that your ship or is that a ship in the port? If its a ship in the port simply go to an earlier save. Usually the ships are randomly generated. Also if it happens again wait 24 hours at sea before you try to enter port again because a different randomization will occur at that time.
I have played with that ship a bunch myself and have had no problems. Sometimes I think when there is a lot of memory being used, (because there is lots happening and lots of entities about), the rope error is the straw that breaks the camels back because most of the time the game doesn’t care about rope errors.
MK
-
January 4, 2016 at 6:17 am #1642JeffreyKeymaster
I did in fact have an Export Warship among my squadron at the time. No worries on the effect of this because I have a tendency to save just before leaving any port and all I had to do is relaunch, load from the save and had no subsequent problems, even with that same ship in the mix.
I do indeed see many rope bad-data errors and such in the system.log, but only brought this particular one up because it is different than what I normally see. These are what usually show:
Bad rope length = 0.076412 for rope num 1021
Bad rope length = 0.076411 for rope num 1038
Can’t load texture resource\textures\.tx
Can’t load texture resource\textures\.tx
Can’t load texture resource\textures\.tx
Bad rope data for rope: (model=ships\Fwzp56m1\Fwzp56m1) (rope num = 326) (begin group=-1, end group=0)
Begin pointer = 332234828? end pointer = 0
Bad rope data for rope: (model=ships\Fwzp56m1\Fwzp56m1) (rope num = 327) (begin group=-1, end group=0)
Begin pointer = 332234828? end pointer = 0
Bad rope data for rope: (model=ships\Fwzp56m1\Fwzp56m1) (rope num = 202) (begin group=-1, end group=0)
Begin pointer = 291464180? end pointer = 0They do happen all the time and don’t affect anything I see. What was unusual was the actual crash, then the different language of the errors.
- This reply was modified 8 years, 10 months ago by Jeffrey.
-
-
January 4, 2016 at 2:04 am #1640modernknight1Keymaster
Also I have new flag update going into the patch that might help with the flag issue.
MK
-
January 4, 2016 at 3:16 pm #1648JeffreyKeymaster
Since I’ve been playing pirate nation for the first time, I eventually figured out I was never going to get the Blue Bird quest. I’ve been to every store owner by now, and not a single peep about that quest. For any other startup nation, that is usually the first thing they mention when you opt to discuss business.
I finally took a peek and sure enough, a Pirate will never get the Blue Bird opportunity:
if (pchar.questTemp.BlueBird == “begin” && sti(npchar.nation) == GetBaseHeroNation() && sti(npchar.nation) != PIRATE && npchar.city != “Panama”)
The store owner cannot be a Pirate nation, yet the store owner must equal the player’s base nation. Since those are the only requirements, and this sits foremost in the dialog logic, this is why it’s the first thing mentioned by a store owner.
Since the Blue Bird ship can be such a boon to a lower level character, with it’s speed and sizeable guns for its class, to allow one to run away from a losing fight or when outnumbered (which can certainly happen when your skills suck in the beginning, LOL), I thought it would be nice to allow a beginning pirate to also get the Blue Bird quest option.
First, an aside…the code parser sucks! It complains every time I try to use an OR condition within an if() statement…but always about mismatched parentheses, which always turns out to NOT be true. I even experimented, after several failures with perfect syntax. I tried taking that original line, but a simplified OR just to make sure it was not my eyes deceiving me:
if (pchar.questTemp.BlueBird == “begin” && (sti(npchar.nation) == GetBaseHeroNation() || true) && sti(npchar.nation) != PIRATE && npchar.city != “Panama”)
The original statement with only one set of added parens, both matching, no extraneous. The store owner’s dialog breaks and the error.log states Common_Store.c contains mismatched ) at that very line number. So to make my proposition happen, I had to add a separate line that contained my either/or (this is around line 360, in Program\DIALOGS\russian\Common_Store.c):
//Change to allow Pirate nation Hero to get BlueBird quest
bool bNationOK = GetBaseHeroNation() == sti(npchar.nation) || GetBaseHeroNation() == PIRATE; //Added
if (pchar.questTemp.BlueBird == “begin” && bNationOK && sti(npchar.nation) != PIRATE && npchar.city != “Panama”)So, what do you think about allowing a starting Pirate to obtain the Blue Bird quest? I think it’s fair since all other nations, a player gets this quest first thing in their hometown, whereas a pirate will have to be able to sneak in to a non-pirate port.
I went ahead and did this for mine so I could actually test out the quest and lo, first stop to a non-pirate store owner, I finally got it! Now to complete the simple tasks…
-
January 4, 2016 at 11:32 pm #1652JeffreyKeymaster
A new discovery…dammit! LOL. Commencing with the Blue Bird quest, I found something new…the Puerto Principe shopkeep won’t talk to me about it because of my reputation sitting at near zero, Bloody Assassin; it got a slight bump during the Dutchman quest saving the towns from sieges, but a couple of my crew loyalties were taking a hit since they are Sharks/Scoundrels, so I quickly reverted back to my old unscrupulous ways. Of course a couple of my crew were Honest Captains and near Hero, but due to my mod of increasing possibility to overlook my bad ways if they were devoted, they have only taken a slight dent in their loyalty as I reverted. But Mary Harvey and Beatrice are still quite low in their devotion to me, so been working that nefarious angle some more to boost their view…hehehehe.
Sigh, didn’t realize this would be a problem. However, I’m very near the Honest Face perk, so gonna try to click that off and see if it negates this guy’s poor opinion of me, LOL
BTW, just obtained the Dutchman, so that quest worked out fine after my initial problems getting it to attack me during round 1 🙂 I wish that ship wasn’t such a high class, but since it’s so glaring, I can’t use it as I need the lower profile of class 3, 4, 5 ships to port in enemy territory, which is everybody! The Dutchman now sits at a port control after spending money on a trade license to put it away.
-
January 5, 2016 at 1:52 am #1658modernknight1Keymaster
Jeffrey, VERY COOL!!! I love the idea of Pirates able to get the Blue Bird quest as well. Let’s do it!
Also love the narrative of your experiences. Ah the difficulties of reputation and getting people to like you. SIGH…
MK
- This reply was modified 8 years, 10 months ago by modernknight1.
-
January 5, 2016 at 3:16 pm #1664JeffreyKeymaster
Ya know…as an aside, you mentioned lack of participation on this site. There might be a simple explanation for that.
I was unable to create an account because the activation link I was emailed did not work — got a 404 error when I clicked it. I sent a message through the contact message facility, but I’m wondering if you never got that either.
The only way I was able to participate is I happened to have a long-dormant WordPress account. I had almost forgotten that long ago, some other site required a WordPress account, so I had set one up. By chance, I tried to log in with the WordPress link and that worked.
So there might be some problem with the host’s account setup and for all I know, still exists. I don’t know because I just log in with the WordPress method now; but I was unable to get the user/pass entry method to work.
Just something I had set aside and neglected to mention earlier, but crossed my mind this morning.
-
January 5, 2016 at 3:19 pm #1665JeffreyKeymaster
Found a ship description problem for Batavia2. It’s missing, shows (null) when right-clicking for the tool-tip on the Ships screen and needs an entry in the common.ini file. I just copied the other Bataviaxxx versions:
RESOURCE\INI\texts\russian\common.ini
string = Batavia2,”Old Dutch Handelsschip”
-
January 5, 2016 at 3:51 pm #1666modernknight1Keymaster
Thanks Jeffrey,
I had already caught the Batavia2 description problem. I updated it in the patch with a description very close to the pirate corvair.
Darn it you are correct. That had been fixed but somehow during the plug in updates it must have gone bad again. I had noticed less people signing up again. I do go to see what users are pending one or two times a week. I will often approve a few users myself since it seemed that the process was slow. I have noticed by the names and emails entered that the vast majority of pending members were just spammers. So I thought the sight was screening them out of the process. However because you say you never got the email, I just tried to create a new membership account for myself and got the errors you just described. DRAT! Time to call Go Daddy again. Do me a favor and try signing in on the site direct and not through word press. I manually approved a bunch of memberships myself.
MK
-
January 5, 2016 at 6:11 pm #1671JeffreyKeymaster
Oh I got the email, but the link it offered for authentication prompted a 404 error on the site.
I did log out, then try logging back in without WordPress, using the name/pass I had selected when signing up and it indeed works now.
-
January 5, 2016 at 6:26 pm #1672OrazioModerator
About the activation issue, going to
buccaneersreef.com/join-us/activation/
and inserting there the activation key (the alphanumeric string at the end of the url https://buccaneersreef.com/join-us/activation/ACTIVATION_KEY), works.
- This reply was modified 8 years, 10 months ago by Orazio.
-
-
January 5, 2016 at 5:53 pm #1669JeffreyKeymaster
One thing that has bothered me for awhile, and since I’m running out of issues I can resolve, I went back to an old COAS save and tried to figure out the Max Taylor problem. This has been a longstanding thing since
the original gameGOF (correction), and has not been rectified…well, until now.Here is what every scene with Max looks like:
Here is after my meddling:
The problem resides in the parameter used to set the model.animation value. Code to generate is found in Program\characters\LSC_Q2Utilite.c
ref sld = GetCharacter(NPC_GenerateCharacter(“MaximTailor”, “korsar2”, “man”, “man2_ab”, 10, PIRATE, -1, false));
That 4th parameter sets the model.animation value. I had tried setting the model itself to several that I know worked, but they all had the same issue. I then noticed no other character gets that 4th setting. Of course in my game, he had already been created, so I had to set one of the debugger F keys to change Max properties, but simply changing model.animation to “man” instead of “man2_ab” fixed it.
So, in the LSC_beginElisHusband function, that line should change to:
//Fix, change model.animation parameter
//ref sld = GetCharacter(NPC_GenerateCharacter(“MaximTailor”, “korsar2”, “man”, “man2_ab”, 10, PIRATE, -1, false));
ref sld = GetCharacter(NPC_GenerateCharacter(“MaximTailor”, “korsar2”, “man”, “man”, 10, PIRATE, -1, false));- This reply was modified 8 years, 10 months ago by Jeffrey.
-
January 5, 2016 at 10:10 pm #1675belzeburgParticipant
Hello I am playing With Jean Batiste CuBasse, and Can`t find White Boy and the rest of them
-
January 5, 2016 at 10:18 pm #1676belzeburgParticipant
Me again for course And the patch I have downloaded
-
January 6, 2016 at 3:08 am #1679Blas de LezoParticipant
Its a bug,I had the same problem.
MK posted a easy fix that worked perfect for me.Thanks to MK!!!go to Program\loc_ai\LAi_utilites
Go halfway down the page until you see Pirate models listed (1 through 28). Delete lines (1017 to 1034) pirates 11 thru 28. The character index will not handle more than 10 in the Pearl town quests and so it causes a stack error.
And thats all,Now White Boy and the rest must be there in the village if you kill the sentry before he alerts the village(or have spanish trading/Letter of marque).
Mk,says that you probably must start new game,but i loaded a previous save before enter to the jungle level where is the sentry and it worked without start new game.
-
January 6, 2016 at 8:54 pm #1687modernknight1Keymaster
Thanks Blas!
-
January 6, 2016 at 9:58 pm #1693StéphaneParticipant
MK , any idea of a time line for the release of the new patch you are working on it ?
-
January 7, 2016 at 3:53 pm #1697OrazioModerator
Don’t hate me, MK, but I’ve never liked the ERAS picture in the items interface, where you equip the items from your inventory.
So I’ve done another version for myself, and I was wondering if you are interested in putting it maybe in the next patch? If you like it, of course!Here it’s my version:
By the way, I commented out that face icon that appeared in the top right corner in RESOURCE\INI\interfaces\items.ini, as it overlapped the image and I never understood what’s that for (a 5th item type equippable?)…
[ITEM_5]
position = 725,110,785,170
textureName = interfaces\empty_face.tga
bShowGlowCursor = 0
-
January 7, 2016 at 4:27 pm #1698JeffreyKeymaster
Orazio, I’m with you on this point. I also changed that image because it was a little too busy and the items displayed seemed to get lost among the rest of the image. I just changed mine to the old stock version. Yours is much nicer! I like what you did here.
-
-
January 7, 2016 at 5:03 pm #1699JeffreyKeymaster
Since this is kind of related, itmname_cirass6 {Corsair Officer’s Girdle}. The description mentions, “In addition it requires no special training or experience to wear.” This gives the impression that it can be used without the Cirass perk, yet it can’t be equipped and does not offer damage reduction without such. Should the description be changed, or perhaps allow that item to be equipped without the perk? The latter is certainly possible if you’d like me to look into it. Right now, looks like just a couple changes to items.c and CharacterUtilite.c. We could even have fighter character’s automatically don this particular item as well, if that was the intent with the ‘no training or experience,” phrase?
And since I’m on this cirass thing, what has annoyed me is that officers will forgo the Spanish, for lesser protection of the Dutch/Flemish cirass (this all COAS, stock or mods). I presume because with weapons, the weight factors into the decision algorithm, and this was not stricken for the case of a gun or cirass. Somehow (I’ve not yet looked), the weight reduction of the Spanish, relative to the added protection offered, does not sway the officer decision to use the Spanish; this seems wrong. I think item weight should not be a factor in the decision for a gun or cirass as neither affects energy during battle, only the blade swings. Should we change decision tree for gun/cirass?
- This reply was modified 8 years, 10 months ago by Jeffrey.
-
January 7, 2016 at 5:28 pm #1701JeffreyKeymaster
Hmmm, in addition, I suppose we could also think about adding the protective boots and gloves to an item that might be used without the cirass perk?
-
January 7, 2016 at 7:47 pm #1702JeffreyKeymaster
LOL, I’m so silly. I assumed there was all sorts of fancy math algorithm to officer item selection. Hardly. There is a little bit of calculation for blades, but nothing for cirass or gun. I found the reason Dutch/Flemish cirass is chosen over Spanish and why a Beretta single shot is chosen over a double-barrel in GOF (I had presumed the Berretta’s reloading time/accuracy/damage values overrode a weighted reloading/accuracy/damage value). It’s not a calculation, but merely the index placement in the array during InitItems().
The process is to traverse the base item array backwards. As soon as it finds a cirass item type, it returns that item for the officer to equip. Since Dutch/Flemish is defined with an index AFTER the Spanish, and it encounters the Dutch/Flemish first while looping (assuming the officer has both in their inventory), that is the cirass the officer will use. To change this, simply switching the order of them in InitItems() will change that behavior. Right now, InitItems():
makeref(itm,Items[n]);
itm.id = “cirass3”; //This is Spanish
itm.groupID = CIRASS_ITEM_TYPE;
…
itm.CirassLevel = 0.27;
n++;makeref(itm,Items[n]);
itm.id = “cirass4”; //This is Flemish
itm.groupID = CIRASS_ITEM_TYPE;
…
itm.CirassLevel = 0.22;
n++;Just switch the order:
makeref(itm,Items[n]);
itm.id = “cirass4”; //This is Flemish
itm.groupID = CIRASS_ITEM_TYPE;
…
itm.CirassLevel = 0.22;
n++;makeref(itm,Items[n]);
itm.id = “cirass3”; //This is Spanish
itm.groupID = CIRASS_ITEM_TYPE;
…
itm.CirassLevel = 0.27;
n++;This doesn’t work for an existing save. I had to reinit just the items (did this by adding a call to InitItems() in a debugger F function to check out the result.
This also explains why in GOF, the Beretta is chosen over the double-barrel. In GOF, there is only one double-barrel weapon. The Beretta is defined AFTER this double-barrel in InitItems. The way guns work is that the loop first checks if the weapon is defined with a single-shot (technically < 2). If so, that is the weapon chosen. The order of item definition in GOF is something like:
Pistol
Longbarrel
Blunderbuss
Double
Beretta
QuadBut since the loop is going backwards along the item array, the first weapon it encounters is the Quad, which is greater than 2, so it skips the first test. In this case, if the character has Clever Shot, it will be selected. But let’s say the character has Shootist only, and both a Double Barrel and Beretta. Since the next one is Beretta, and the first check of the loop iteration is for a single shot, the Beretta is selected. If the character had a double and a longbarrel, the double is chosen, because the single-shot test fails for the 2 charged weapon, but the character has Shootist, so can use the double.
This won’t happen much in ERAS (didn’t for me) because of so many double-barrel types I had picked up along the way and had my characters holding for when they got the skill. As soon as I opted them for the Shootist perk, then took and regave them a gun trade, they would select a double-barrel over even powerful single-shot weapons, simply because they are later in the InitItems array.
BTW, during this investigation and in case we decide on enabling the boots/gloves/girdles for wearing even without the perk, I discovered that the item definition for cirass13 (some boots) is missing in InitItems. Need to add it.
//Boyer fix…added missing cirass13
makeref(itm,Items[n]);
itm.id = “cirass13”;
itm.groupID = CIRASS_ITEM_TYPE;
itm.Clothes = false;
itm.name = “itmname_cirass13”;
itm.describe = “itmdescr_cirass13”;
itm.folder = “items”;
itm.model = “5”;
itm.picIndex = 16;
itm.picTexture = “ITEMS_33”;
itm.price = 380;
// boal 19.01.2004 –>
itm.Weight = 3.2;
itm.CirassLevel = 0.09;
// boal 19.01.2004 <–
itm.minlevel = 1;
itm.rare = 0.1;itm.skiptrade = false; // you can sell the item
itm.skipsell = false; // you can buy them
itm.skiprand = false;itm.Solder_o.rare = 0.04;
itm.Solder_o.min = 1;
itm.Solder_o.max = 1;itm.Warrior.rare = 0.001;
itm.Warrior.min = 1;
itm.Warrior.max = 1;
itm.ItemType = “SUPPORT”;
n++;Also, based on this new discovery, the fact they are defined with an index AFTER some wonderfully powerful armor items, if an officer has any of the boots/gloves in their inventory, and you give them a Grandee or English General’s, expecting they will use it, the character will opt for the boots or gloves…just sayin’.
-
January 7, 2016 at 8:02 pm #1703JeffreyKeymaster
Ha! I made that last statement about the officer opting for boots/gloves over Grandee without testing. I just tried and and sure enough, my officer equipped boots over the Grandee when I traded them the item.
Kind of hilarious though since the character I tried this with is Beatrice and when you give her a Grandee, her model changes to show the fancy garb. When she dons the boots, this doesn’t change, so she’s still walking around looking like a Princess warrior in the cool armor, but is really just wearing some somewhat helpful boots. LOL
-
January 7, 2016 at 8:10 pm #1704JeffreyKeymaster
Given this whole scenario, rather than try to reorder the gun/cirass items in the ‘right’ order for character selection, it might be easier and wiser to just do similarly as blade selection, which is to weight certain gun parameters and in the case of cirass, simple strength and just return the best one; this is how blades work and we can do similarly for both guns and cirass.
-
January 7, 2016 at 9:17 pm #1706modernknight1Keymaster
I am all about including user contributed content as long as it looks correct for the ERA. I was going for a Captain Hook or Bartholomew Redd flavor with the screen. Sorry about the empty item block in the upper right. That is only an experiment I am working on in version 9 of the game….same test version with the new islands and new fighters.
I like the new picture – lets use it. So I am going to add a new topic section for Member contributed mods. Anything you guys want to add there that is downloadable for members/players of ERAs can be posted there separately as their own independently downloadable mods.
Sorry I have been silent the last couple days. I am really quite ill and in bed most of the time right now.
Jeffrey, Please change whatever you like as far as the armor selection logic is concerned. That was my intent exactly to have some items like boots and gloves that did not require the perk. This is why I made them available as loot earlier in the game. I just didn’t know how to do it. I listed the glove selection problem over better breastplates as a bug in the earlier read me because I did not know how to fix it. So if you know how to fix it, please do and once again you will be THE MAN!
Regarding your PM, No worries on posting your fixes on other sites. Doesn’t bother me. Enthusiasts should have access. Will write more about this to you by PM.
MK
-
January 7, 2016 at 9:43 pm #1709JeffreyKeymaster
OK, we will make the girdles, gloves and boots as equipable, non-perk damage reducers. Will also have officers equip them if they don’t have the perk as well. Will change the officer selection to get the best cirass they have. Also, toyed with a gun formula for selection as well. What do you think of this order? It’s based on a formula, but looking at reload rates, number of charges, accuracy, and damage, I think it would turn out better selection on the officers part rather than the haphazard order they were entered within ItemInit. The higher Weight#, means the gun will be selected over lower numbers:
Charge Speed MinDmg MaxDmg Accuracy Weight# 1 pistol3 1 22 50 175 20 5.6818 2 pistol1 1 8 20 100 30 12.1875 3 pistol29 1 19 22 76 93 13.3382 4 pistol38 1 16 24 82 75 13.8281 5 pistol21 1 30 30 200 68 13.8833 6 pistol33 1 17 30 86 74 14.2559 7 pistol18 1 30 54 195 72 16.5600 8 pistol2 1 12 30 120 50 17.1875 9 pistol24 3 70 30 200 68 17.8500 10 pistol30 2 27 22 76 93 18.7722 11 pistol15 1 23 40 168 77 19.0826 12 pistol22 1 34 50 220 88 19.0882 13 pistol34 1 17 34 118 80 19.8824 14 pistol11 1 16 31 151 69 21.2930 15 pistol12 1 15 33 138 72 22.5000 16 pistol28 1 15 25 115 92 23.3833 17 pistol23 2 54 50 220 88 24.0370 18 pistol6 2 20 35 110 60 24.3750 19 pistol17 1 20 44 195 76 24.7950 20 pistol10 1 19 45 180 78 25.4013 21 pistol25 2 38 45 180 78 25.4013 22 pistol26 4 60 31 161 79 27.3208 23 pistol5 1 16 40 170 80 28.7500 24 pistol9 2 19 38 115 65 29.4211 25 pistol4 4 28 30 120 50 29.4643 26 pistol37 2 18 34 92 75 29.7917 27 pistol35 1 16 54 128 92 30.0438 28 pistol27 2 35 46 215 78 31.6457 29 pistol32 1 15 40 146 94 32.2733 30 pistol19 1 40 195 290 92 33.4938 31 pistol14 10 120 60 198 57 34.2000 32 pistol20 8 110 40 228 68 35.6073 33 pistol31 1 15 42 176 93 37.0450 34 pistol36 2 19 44 112 82 38.4105 35 pistol13 1 10 44 148 89 47.6150 36 pistol7 4 52 100 300 80 69.2308 37 mushket 1 10 85 270 70 69.5625 38 mushket1 1 10 80 280 80 80.0000 39 pistol16 3 16 42 165 75 80.1563 40 mushket2x2 2 12 90 290 80 141.6667
-
-
January 7, 2016 at 9:47 pm #1710JeffreyKeymaster
So using the first 2 pistols as example, pistol1 does less damage, but is slightly more accurate and can fire nearly 3 shots to one of the pistol3 shots, so in theory, pistol1’s damage numbers, based on the min/max numbers could exceed pistol3’s because you get 3 chances, which are even slightly better based on accuracy, to every one pistol3 shot. Therefore, pistol1 is selected above pistol3.
-
January 7, 2016 at 10:01 pm #1711modernknight1Keymaster
That’s pretty cool. I do like that you can see what I was trying to do from a graduated lethality thermometer standpoint. My driving factor was historical realism. The Davinci description on the one multi-firing pistol may seem far fetched but real sketches were found. The Graz pistol is real and I’ve seen it in person at the armory in Graz Austria.
This is fine with me Jeffrey – its much more important to me that the player be able to choose his favorite. However this chart is useful beyond this. For sometime I have been putting together a Players Guidebook for GOF ERAS that has narrative descriptions and illustrations of everything in the game. Tables of comparison could be quite useful in the guidebook.
My goal is to have this guidebook complete by April when I have to travel again.
MK
-
January 7, 2016 at 10:45 pm #1716JeffreyKeymaster
Certainly a player can choose whatever…but my concern is that officers that the player does not have control, will choose completely inappropriately due to the mere fact that items are mostly in a haphazard order in the init function and that’s the only basis for guns/cirass decision; they don’t choose the best cuirass. In fact, I have proven that if the officer has both a pair of gloves and a Grandee, they will choose the gloves at 5% protection vs. 40% for the Grandee. Same with guns, they will not even attempt to approach a decision logically, considering the pros/cons of the properties. This was my attempt to at least give the officer AI some better ‘decision-making’ skills if you will.
-
-
January 7, 2016 at 10:52 pm #1722JeffreyKeymaster
To add…for instance suppose my fighter has the Shootist skill, but right now only has a 2 barrel that takes 27 seconds to reload, 22 min., 76 max damage and 93% accuracy. But if I later hand them a single barrel, that reloads in 15 seconds, 42 min., 176 max damage and 93% accuracy, they will switch to the single, knowing that the reload time for 2 shots is nearly identical, with identical accuracy, but the chance to do more damage in the process.
As it stands right now, they won’t do that, even though it makes the most sense.
- This reply was modified 8 years, 10 months ago by Jeffrey.
-
January 7, 2016 at 11:10 pm #1726modernknight1Keymaster
No I understand completely what you are trying to do Jeffrey. There is one more thing I would have you consider however. Perhaps this is something that you can help me with. One of the most annoying things in this game is your own officers shooting you in the back when you are in a fight. This has got me killed (and my officers) more times than I can say when I have been engaged in a heavy fight with multiple opponents. Even though the fratricidal bullet does no damage to you it throws you off both in attacks and defending yourself(or defending your officers). This is such a huge deal for me that I carefully select the guns I give to my officers.
My criteria is always the slowest reloading matched with the greatest lethality. My thoughts are that historically the vast majority of guns during this time were single shot anyway. In addition, by having good lethality but slow reloading, your officers may score a brutal hit at the beginning of the battle and it will be at a time when you are less likely heavily engaged with the enemy. So if they do hit you at the beginning of the battle it wont matter so much.
So I usually give them the blunderbuss pistol, the heavy cavalry wheellock pistol or the miquelette dag – weapons like that. I’ve looked through the code until my eyes have bled trying to find a check I could put in place so that officers would not fire if myself or their companions were in the line of fire but to no avail. I seriously win large scale fights so much more often by using this method of slow reloading heavy lethality pistols for my officers. Just a consideration.
MK
-
January 8, 2016 at 3:16 am #1728JeffreyKeymaster
LOL, yeah, I know the pain. Especially on the boarding when your own muskets take aim at the opponent you’re engaging with and hit you…just watch your character stutter/stagger for a few seconds while your ‘enemy’ takes a whack or two at your disabled being. Ugh!
My technique when fighting with my officers has always been to run around the group we’re engaged with, putting them between me and my fighters; not always possible in tight quarters, but out of desperation, I’ve been known to quickly sheath, run through the crowd, and re-draw my weapon…they still get a whack though, so I’m not sure what difference it makes…hehehehe.
I too tend to carefully select which guns (or any weapon) I have my officers hold, so I’m wondering if either way we choose our automated-officer-selection-criteria, one of us is not going to be wholly pleased 🙂 Looking at the chart of how my initial logic will play out, the quicker loading single shots tend to win out more often. Since I have this formula in a spreadsheet to play around with, I tweaked the constant to give the higher damage more weight, but that only moves something like pistol19 up a couple spots, still edged out by some of the pretty lethal single shots that are faster loading like pistol31 and pistol13, though a couple moved behind.
Unfortunately, I think one way or the other, some people are not going to like the result based on personal preference and without the ability to equip the weapons for them, some discretion in which you hand over will still rule the day, which I think most of us that have played this often, already realize these implications and interact accordingly.
As a further thought about blades, one thing I’m irked about is if I give an officer skill enhancing points for say Light weapons, via bonus book/item, because they have very low energy values and I’d like them to use a lighter weapon, while their Medium or Heavy base scores are higher, yet still below the bonus-enhanced Light skill, they sometimes still select a Medium or Heavy weapon because it only looks at the base score. I’d like to change this to also factor in any bonuses the officer might be carrying.
In any case…I had started typing this, left it, then moved on to try this stuff and now I’m back….the cirass and gun selection changes work. Non-perk officers will equip a boot, perked officers now choose the better cirass, so now the boot-over-Grandee or Flemish-over-Spanish is solved (I tested both). I gave an officer that had a gun defined late in the array, with a better option that is defined much earlier and in the old version, they don’t use it, but in my version they do. So far it appears good, but I need to test more to make sure. I also need to go back to an early save where I don’t have the cirass perk and try to equip a glove, boot or girdle. Will let you know.
-
January 8, 2016 at 3:25 pm #1734JeffreyKeymaster
OK, after reviewing the blade selection, I’m fine with it as-is. I thought perhaps it was not factoring bonus points for skills, but it is in fact doing so. It factors blade damage, skill+bonus, and energy-drain; I think this is fine, so I will leave it be.
My recollection of an officer choosing a weapon contrary to bonuses was probably because the extra damage/weight was ‘worth it’ to the officer due to these considered factors.
I did come across another, unrelated issue in an error log…strange it took so long to occur, but here it is:
RUNTIME ERROR – file: dialog_func.c; line: 161
function ‘RandPhraseSimple’ stack error
RUNTIME ERROR – file: islands\islands_loader.c; line: 180
Unknown data type
RUNTIME ERROR – file: islands\islands_loader.c; line: 180
Unknown data typeChange this line in islands_loader.c:
string imageName = RandPhraseSimple(RandPhraseSimple(RandPhraseSimple(“loading\sea.tga”, “loading\seaStand1.tga”), “loading\SeaA.tga”));
Change to:
string imageName = RandPhraseSimple(RandPhraseSimple(“loading\sea.tga”, “loading\seaStand1.tga”), “loading\SeaA.tga”);
-
January 8, 2016 at 3:29 pm #1735JeffreyKeymaster
BTW, I will be open to altering my gun selection formula, but for now, I’m satisfied it’s an improvement over the ‘first gun I come to I’m allowed to use when going backwards through the array as it was originally built’. Cirass selection is solid as it’s now based purely on the highest protection value.
-
January 8, 2016 at 6:35 pm #1738OrazioModerator
I didn’t understand: is this formula and the cirass without perk being implemented in the new patch or is it just something you’re experimenting with privately?
Because from what I’ve read it looks like an improvement, and I’m interested in everything that can improve the game, but I’m not sure I saw instructions on how to do it. Did I miss something?-
January 8, 2016 at 7:02 pm #1740JeffreyKeymaster
I’m trying a couple things.
First, with cirass, only certain items like the Corsair Girdle, Fencing Gloves, and Cavalier boots will be able to equip both yourself and your officers will automatically equip them, even without the cirass perk. Any other cirass will still require the perk to use. However, there is also another problem in the original cirass code where if your officer has a Flemish cirass, but you give them a Spanish that has better protection, they won’t use the better one (they will use the better if you give them Grandee or English General but it has nothing to do with ‘because they are better’ but only because they are defined in a certain order that comes ‘first’ when the code looks for the cirass…just luck of how they were put in the game). Also, if your officer has even the best cirass possible, if you give them the 9% protection Cavalier Boots, they will replace the 30-40% protection of the good cirass, and instead use the 9% boot protection. In fact, try the Fencing Gloves (During this, I found that the Boots are missing in original ERAS, which is another fix) on one of your officers that has a good cirass…they will use the gloves instead. My changes have fixed that where the officer will use the best cirass protection they have based on the % the cirass prevents damage.
With the guns, there was a similar problem in that an officer doesn’t always use a better gun. Both the cirass and gun problem are similar in that what gets chosen by an officer has nothing to do with how ‘good’ something is, but only because of a certain order these things are placed in the program that ‘creates’ the items in the permanent base list of available items. Blade weapons are different, where there is code to figure out what is probably ‘best’ and officers will better decide which sword to use. I have found the blade code to be pretty good and doesn’t need change. So I use the same approach for guns as blades and I made a formula based on how many shots, reload times, weapon damage and accuracy that an officer will use to figure out whether to replace a gun when you give them something.
I have tested both the cirass and gun changes a little, but I want to start a newer game and try these things out more before releasing what I did. Also, the changes are more involved than some of the simple “change this line to this” that is easily copy/pasted, so I will probably have to post entire files with links or something. I will let everyone know in a short while after I do some more personal testing.
-
-
-
January 8, 2016 at 3:34 pm #1736JeffreyKeymaster
Going back to the topic of taking care what weapons to give officers, I’ll add a slightly humorous anecdote about my approach. I’ve sometimes cringed when I hand an officer a weapon I only want them to carry to reduce my weight only to find that the officer will actually take it for use, when it’s contrary to all good sense due to weight or such…
I’ve been known to actually save the game, THEN hand over the weapon and if they decide to use what I deem wholly inappropriate, I reload the game and NOT give it to that officer…save, save, save mantra can be used for all sorts of deviant game-play 🙂
-
January 8, 2016 at 7:00 pm #1739modernknight1Keymaster
@Orazio, My intent is to put ALL of Jeffrey’s changes into the mega-patch which is finally nearing completion and then will just need tested.
Jeffrey, I indeed do the same concerning weapons given to companions. I probably push F6 quicksave more than I do any other thing in this game. You can never save too much.
BTW I am adding a few more weapons into the patch so that might cause a little additional work for you.
MK
-
January 8, 2016 at 7:18 pm #1742JeffreyKeymaster
I don’t think any new weapons will cause need for further modification; it’s generic. The only specific is the list of cirass ids that won’t require the perk. Right now, I have included only cirass6, cirass12, and cirass13 in that list, so if there should be more, let me know.
You and I should probably discuss the easiest way to somehow review/synch up these changes. I figure you probably want to be the sole dissemination of this as a risk of me posting a link to a file here and there might wind up with some mismatch, where my code depends on other file changes I’ve made to not break stuff. For instance, I know that my array fix on some of the ships/goods/items will break a save game for other people where they will load fine, but as soon as they re-save, it will crash due to how the array sizing seems to be redone during the OnLoad from the save data, but now doesn’t match what the code contains; I had this happen after I fixed it up…new games work fine, or running a personal reinit in the debugger for the arrays I knew I had changed also fixes this, but this was handcoded within my game by me each time for testing and is not part of some official ‘reinit’ feature, but simply a call to the init function I wanted.
-
-
January 9, 2016 at 1:16 am #1776JeffreyKeymaster
Gun and Cuirass mod testing review.
I think it’s good. I went back to an early save of my game, before I had the perk, but a couple officers did and others did not. I also had a Corsair Girdle among my inventory at the time, hoping I could equip it, found I could not back then, but held onto it anyway. I also had a slew of Spanish ones in my ship’s chest for future officer use, but of course the officer I had already given the Flemish one had refused to use it back then. Through debugger, I added the Boots to my items, as I know that an officer will automatically use them in favor of all other armor, as I had already tried that in a recent save during my investigation/mod effort.
The Flemish-wearing one will now use the better Spanish.
I can equip the girdle without the perk.
A non-perk officer will also equip the girdle or boots.
A side-effect I found is that some hero officer models will change to an armor-wearing one if I give them a pair of boots. I discovered this yesterday and have fixed that so if they receive a girdle, boots or fencing gloves, they will not do this model-change.
Officers and Player still need to have the Cuirass perk to equip anything other than the girdle, boots or fencing gloves.
I have a ton of guns and did various trades and the officers will use a ‘better’ gun based on gun-specs. I checked this against my spreadsheet created with the same formula I’m using and the guns chosen by officers in the game all look as I would expect.Unfortunately for people like Modernknight, who would prefer their officers have slow-reloading guns, this mod means that the officer will act in their own best-interest and if given guns of equal lethality, accuracy, but with one being faster reloading, they will choose the faster one, contrary to your wishes 🙂
I think this is good to go.
-
January 31, 2016 at 4:49 pm #1858OrazioModerator
News about the mega patch? I read somewhere it was planned for the end of january, but Modernknight seems disappeared, and with him any information about the patch!
-
January 31, 2016 at 7:15 pm #1862modernknight1Keymaster
Still working on it. Not to worry, I don’t quit with this game.
Three things to consider:
1) Was really depressed about this post and it made me stop all work for a while: http://www.piratesahoy.net/threads/problem-with-model-in-maya.26695/
2) Joruba from Blackmark Studios has personally assured me that the new English version of POTEHO will be out this week, so I don’t want the new patch to be released until after people have had a chance to dig into POTEHO.
3) I have been VERY sick lately. My life is not very good right now and a few people saying a few selective mean spirited things about my work with this game mod and this website, just sometimes makes me want to stop completely and work this stuff privately for myself rather than share my hobby with others.
MK
EDIT: I need to quit calling it POTEHO, the new name is now SEA DOGS: To Each His Own
- This reply was modified 8 years, 9 months ago by modernknight1.
- This reply was modified 8 years, 9 months ago by modernknight1.
-
February 9, 2016 at 11:48 pm #1884NikosParticipant
Greetings modernknight! I’m a new member here but i’ve been playing this genre since the very first release with the known title Sea Dogs.
I know how much time you’ve spent on doing this project and all your effort is priceless. I appreciate so much your work and i am
grateful that persons like you and others are still contributing to this game. I wish i had the time and deep knowledge of the project
to contribute also. The least i can do is to point out bugs during gameplay. Keep up the good work! Cant wait for the mega patch!
-
February 14, 2016 at 5:30 pm #1892OrazioModerator
Please Modernknight release this megapatch!!
I tried Sea Dogs To Each His Own, but I’m stuck in the early stages of the game as it keeps crashing and prevents me to continue playing.
So I want to start a new game in ERAS2, but if I start now I’ll have to restart everything after the patch comes out! -
April 30, 2016 at 1:30 pm #2567DevoidbrahParticipant
soooo when is that megapatch going to be released?
-
May 15, 2016 at 4:48 am #2607JeffreyKeymaster
If interested, this link contains the fixes/mods discussed in the thread and elsewhere in the forum: https://mega.nz/#F!WtMDgRxK!hbeUg86kGLlQAqvWRNwTqg
Download ERAS.Patch.zip from the link. It is still the original ERAS, but with fixes/improvements. Overwrite any files from the .zip into your existing ERAS game directory.
Orazio’s lighting fixes.
Orazio’s item screen image.
Can have more fighter officers.
Array/crash problem fixes.
Cuirass/gun selection improvements.
Some gameplay fixes like Blue Bird/Ed Low quest problems when ship captured but still showing as quest fail, COAS sea exit game freeze, COAS Max character image leaking all over screen, retrieving ships from port controller, skill books available in store and from traders, Ascold fix for fighter officers that will vanish forever if not dismissed prior to cave enter, etc.The array problems, while now fixed, unfortunately mean that if this is downloaded, I don’t think you can use a saved game from before. I think a save will load, but if I remember correctly, game will crash upon resaving because the ship array size mismatch between loaded-from-save info and the in-memory ship array. This will most likely require a new game.
Probably some more stuff I’ve forgotten about by now…I plan to add Orazio’s cabin models as soon as I look at it. I just now downloaded it, so I still need to check it out.
-
-
May 15, 2016 at 6:16 am #2609JeffreyKeymaster
I just added Orazio’s new cabin work to the .zip file.
-
May 21, 2016 at 12:27 am #2623JeffreyKeymaster
Couple things about the new compilation testing.
KK had changed the character log read, and there was a bug. Click around enough of the log entries on the screen and eventually a crash. I identified and corrected the problem.
Also, I’m not sure if KK changed this or not, but I’m thinking perhaps he did because this problem did not exist: http://www.piratesahoy.net/threads/heap-corruption-random-crashes.19362/
All of the DirectX VertexBuffers were created with D3DUSAGE_WRITEONLY (which is what I think KK may have changed since I was not getting the heap corruption problem in tests). However, I started running the DirectX console logger and apparently, that particular usage can cause (using the console words) a ‘severe performance problem’ with the many vertex locks that are being used by the program and one should use D3DUSAGE_DYNAMIC in that case. Since the message was written to the log specifically because many locks were being used, I changed the the usage, but then got a message that the memory pool must also be changed for dynamic, so I changed from D3DPOOL_DEFAULT to D3DPOOL_SYSTEMMEM. Great. Lock performance problem solved…until I started changing locations while out at sea to cabin and then boom! Heap memory crash, just like the link describes. And the person from that old PA link that disassembled and hacked the .dll was correct about the battle_interface.dll causing the problem in the release of memory.
But, the advantage here is that I don’t have to hack around because I get a debug to point out that it was the line: VERTEX_BUFFER_RELEASE(rs,m_idMapVBuf);
Evidently, the default memory pool is safely managed by the DirectX code, but when using system mem, there is code that later gets a pointer to that vertex memory and manipulates it, but past the allocated space, which later causes the free memory release to crash.
The problem is they did not allocate enough space for what the code later manipulates in this statement: m_idMapVBuf = rs->CreateVertexBuffer(BI_ONETEX_VERTEX_FORMAT,(RADIAL_QUANTITY+2)*sizeof(BI_ONETEXTURE_VERTEX),D3DUSAGE_WRITEONLY);
I changed the (RADIAL_QUANTITY+2)*sizeof(BI_ONETEXTURE_VERTEX) to what it should be for the later manipulation and no more crash. So theoretically, with the vertex lock performance changed per the DirectX dev tool guidance, I’m wondering if there will be a boost in performance.
Anyway, the crash fixes and memory pool change is now available at: https://mega.nz/#F!WtMDgRxK!hbeUg86kGLlQAqvWRNwTqg
ERAS2Test.zip
AoPTest.zip (vanilla COAS)
GOF1.2Test.zip (GOF 1.2)An aside, I actually have a working DX9 version…but I need to talk to someone that either knows modeling, DirectX9 or both. Given that computer code repeats instructions exactly, every time, given a set of data, I am wondering how most character models in DX9 render perfectly, yet one or two do not. Same with ships…some are transparent through hull, jumbled garbage for textures like a spiderweb all over, yet some ships are 90% correctly textured. Sea, sky, trees and sharks are all rendered correctly. I compared the geometry/vertex read code with the DX8 version and the code is unchanged and an exact match, so I did not alter that part.
So questions remain…
-
May 21, 2016 at 9:28 am #2624OrazioModerator
Interesting work Jeffrey, though I’m not entirely sure what this changes: better performance and less crashes?
About the DX9 version, I must say this is a great result!
Unfortunately, I’m seeing there aren’t many people left these days still interested in AoP2 CoAS modding… and this means less or no help at all if something is beyond this little community’s abilities.
Actually, I’m getting the feeling this game is dying, or maybe it is because this site/forum is quite unknown to many? -
May 21, 2016 at 3:20 pm #2625JeffreyKeymaster
Well, since I got stuck at resolving some remaining DX9 issues, I went back to the DX8 version and turned up the DirectX debugging mode to output more messages and that’s when I noticed the WARN messages about a performance degradation. So I made the adjustment it suggested in the memory pool to hopefully enhance performance. The message did mention ‘possible’ performance penalty in the existing configuration, so I can’t say it really did pose a problem, but may as well try.
During this testing, I did occasionally experience two types of crashes as well. The character log screen (introduces only in KK’s own changes) and the battle_interface crashes noted in that PA thread. I fixed those.
Perhaps interest is waning/dead, but I thought (perhaps naively) that now that the full source of the entire game is running, and POTC was still attracting a mod crowd, that a successful source compile would renew things. It does open up many more possibilities for COAS now that it works. And if some knowledgeable modelers/DX9 folks could help wrap up the remaining trouble spots for the DX9 version, it could be further upgraded, extended and expanded upon quite easily. Oh well.
As for may this site’s participation, and perhaps being unknown to folks. Well, I did notice a link I posted at PA that directed here about an error/fix did get censored to **********.com. Kind of keeps people unaware when that sort of thing happens.
-
May 21, 2016 at 5:13 pm #2626JeffreyKeymaster
Orazio, you’ve done some modeling so maybe you can help find what’s different. See here: https://mega.nz/#!6kkCwB4R!RoSmTZe2yzhLAYLZ7t3yved9WdILxfRN1MXL13Rn7xc
That is a collection of screenshots I took in a DX9 game. The sun, sea, sharks and planets look good. Almost all the character and NPCs look good except for one. The Angelica model is messed up. If there was a problem with the code, they would all look similarly bad. So why is Angelica’s messed up? What’s different?
Notice the ship hulls of the English 2nd Rater, Small Galleon and Ordere Seconde look terrible, but the Dutch West Indiaman looks mostly good. The masts on the English 2nd rater look bad, but ironically, the masts of the Ordere Seconde look good. The cannons render properly. The deck crew look good. The various character info screens look good, and so does the game load screen, but the main menu looks bad. One corner of the English 2nd Rater cabin looks OK, but the rest of the cabin is terrible.
Some of the islands on the world map, like Antigua, San Martin, Guadeloupe look good, and mostly Nevis, but Puerto Rico and Hispaniola are messed up.
If something were wrong with the code, everything of similar nature would look similarly messed up, but yet some look OK and some don’t. What is different about them?
Anyone have a clue?
-
May 22, 2016 at 8:55 am #2627OrazioModerator
I really wish I could help, but I have no idea why that happens…
If I were you I’d ask on PA, that site has probably more visibility than this so the message may reach more people, hoping there is someone able and willing to help…
There was that german modder who managed to upgrade the Storm Engine to DX9, though he didn’t seem very inclined to cooperate with others…
-
May 22, 2016 at 2:48 pm #2629JeffreyKeymaster
I am just curious if eyeballing in the tools you use to view the models or something if there is some way to compare one that works in the game, like the Diane model against a view of one that doesn’t work, like Angelica, and see if there is some difference you can see the way it is constructed, or something that jumps out at you as something that looks like it was done differently. Same with a ship like the Ordere Seconde vs. one that mostly looks OK, like the Dutch West Indiaman.
From just the screenshots, it looks like locators for weapons and things are OK, because they are situated on the body in the correct spots, but the textures are somehow not right on the Angelica one.
Just a thought.
I could probably post that same question there, but use shots from something like GOF to ask the question over there.
And yes, Jan and his team got it working with a conversion to C# language and DX9, but I’ve seen someone else ask some questions about the conversion and he does not appear forthcoming/helpful with advice or help. I think it’s pretty clear that the team that did this, took a few years to get it and they rewrote EVERYTHING, probably including a redo of models. I think the team members clearly knew how to write a DirectX game, which I do not really know. I just followed the supposedly ‘simple’ advice I could find about changing a few of the DX8 calls to DX9, and while 99% of the code is unchanged, the small change did not really work as advertised and I don’t know enough about DirectX to know what/why the difference.
My guess is that since so much is very close (the actual model shape is correct, just some textures wrong), and much of it is already correct, a root reason for the behavior is probably easy to guess a couple reasons why it might happen, for someone familiar with how the models/DirectX work together.
-
May 23, 2016 at 8:51 am #2630OrazioModerator
The names you see in game don’t usually match the actual names of the models, so I hope I tested the right models! The ‘Dutch West Indiaman’ should be the Pinnace3_50 and the ‘Ordere Seconde’ the Poseidon; for the character Angelica I used the model Angelica.gm, but there are many of them…
This being said, viewing the models in GM Viewer (that should be one of the official Akella’s tools) reveals nothing anomalous.
I converted the GM models to OBJ through that tool, and opened them in Blender, Maya and 3DS Max without any problem.
I downloaded two 3D models viewers from the internet, loaded the OBJ models and again everything was fine. One of these programs clearly states it’s using Direct3D 9 API, so I guess the models are being rendered using DX9.In summary, I don’t think the models are the problem… Actually there are some games that let you choose which DX version to use before starting, and I don’t think all the models have been remade to comply with certain DX requirements unique for each version.
But I’m no expert in DirectX development/modeling, so everything may be… -
May 24, 2016 at 3:10 am #2634JeffreyKeymaster
Well, just like the human models…well, kinda, as the human models are mostly all correct, with only 1 or two rendered wrong. Conversely, most ships are textured wrong, but I found one in GOF 1.2 that is nearly 100% correct. The Soleil Royal. https://mega.nz/#!OlMGnYBL!qC7AuED–W5R5qtaZXx1FKcGkRn4FavM4ybaU0JZnU0
That ship is nearly perfect in DX9. Only thing I can see wrong is a missing deck texture — transparent. What is different about that one that allows it to render correctly with this code, while others don’t?
-
May 24, 2016 at 4:34 pm #2637JeffreyKeymaster
I got it! DirectX9 version is now working!
I reverted the Renderer code back to DX8, then started over with a conversion and I see where I messed up…simple really.
Portion of instructions:
In DirectX 8.x, IDirect3DDevice8::SetIndices required a pointer to the index buffer and a BaseVertexIndex for the starting position in the vertex buffer. An application batching different objects into the vertex buffer had to switch the index buffer (or make a call to IDirect3DDevice8::SetIndices) before calling IDirect3DDevice8::DrawIndexedPrimitive.
In Direct3D 9, the starting position in the vertex buffer, BaseVertexIndex, has been moved to IDirect3DDevice9::DrawIndexedPrimitive, and its data type changed from a DWORD to an INT.
I found 3 spots where d3d8->SetIndices(IndexBuffers[iIBuff].buff, iMinV) passed a second parameter, which is gone from DX9; that is the BaseVertexIndex.
However, when I added the extra parameter in the later call to DrawIndexedPrimitive (which is supposed to be that parameter stricken from SetIndices), I put the wrong variable. It is only in 3 spots, but when I corrected it, ALL the texture garbage was fixed!
Rock and roll! Not bad for a guy that knows nothing about DirectX, eh? LOL I’ll post screen shots of the working DirectX9 versions in a bit…
-
May 24, 2016 at 6:08 pm #2640JeffreyKeymaster
Pics of DX9: https://mega.nz/#!aoEwADrR!c-eW5ZHZSz9GdJ4JRKB86vrifgJ-qqrFjf18kzWy0rU
About freakin’ time I got it right! LOL
-
May 25, 2016 at 8:07 am #2641OrazioModerator
Oh nice one! So the models are ok, it was just something on the code, as I thought. Great achievement!
Now I wonder what possibilities this upgrade opens up: an improved graphic maybe? Or more stability? And to get those, I think some additional work is required on the coding side, rewriting/modifying old DirectX8 parts of code to make use of the new upgraded technologies, no? I mean, I suppose upgrading the way geometry data are read and drawn on screen isn’t enough to see significant changes… is this correct?
-
May 27, 2016 at 9:11 pm #2651JeffreyKeymaster
All my versions are available to try. I made a few tweaks to the DX8 version when I found a DX9 problem with missing ship track2 numbers. When missing, there were no defaults and the width would be some random, yet massive number that would cause the texture for the track wake to span the entire viewport. DX8 would sometimes cause what looked like z-fighting effect, but it wreaked havoc in DX9, causing a major whiteout.
I put some average defaults for width, speed, etc., in the case of missing info and no more problem, so I added the same to both DX8 and DX9.
https://mega.nz/#F!WtMDgRxK!hbeUg86kGLlQAqvWRNwTqg
AoPTest.zip = Age of Pirates 2 COAS DirectX 8
AoPTestDX9.zip = Age of Pirates 2 COAS DirectX 9
ERAS2Test.zip = ERAS DirectX 8
ERAS2TestDX9.zip = ERAS DirectX 9
GOF1.2Test.zip = GOF 1.2 DirectX 8
GOF1.2TestDX9.zip = GOF 1.2 DirectX 9 -
May 29, 2016 at 9:15 am #2660OrazioModerator
I’ve been testing the DX9 version (ERAS2TestDX9), and the first thing that I noticed was a pretty serious impact on performance: I experienced a huge FPS drop, ranging from 20 to 30 FPS less…
Setting “full_screen = 1” in start.ini helped, lowering the FPS drop to around 10/15, but it’s still a lot for my system; besides, playing the DX8 version with “full_screen = 0” didn’t hit performance so much.Has anybody else experienced this?
-
May 29, 2016 at 2:42 pm #2662JeffreyKeymaster
First, I’m glad they are both working well enough for you to try them.
Second, how do you measure FPS? I have tried enabling show_fps in start.ini and it shows me nothing.
Unrelated, I just noticed the stars are messed up in DX9. I found I inadvertently commented out the proper line to apply the vertex shader when I converted the code. I have it fixed, but haven’t yet uploaded it. Will let you know when it is available.
-
-
May 29, 2016 at 4:04 pm #2663JeffreyKeymaster
OK, never mind. I just traced the source and found that I also need to enable ondebugkeys in start.ini, then I can use the * key to see the FPS.
I have uploaded the newer DX9, with the stars fix. Also, I found that hic.dat and stars.dat in RESOURCE are hardcoded paths in the Programs/weather .c code, so I added them to the .zip files as well so one can set it up like I do without having a full copy of all the RESOURCE models and textures by pointing the start.ini at both the test and original RESOURCE models/textures.
I get about a 10% reduction in fps for DX9 vs. DX8. I guess for some cards, older in particular, this is not unusual? I found similar discussions around the ‘net. For instance: http://www.nogripracing.com/forum/showthread.php?t=7360
-
May 30, 2016 at 7:57 am #2667OrazioModerator
I used Rivatuner Statistics Server to check the FPS, but another famous program is Fraps.
Only 10%? Strange, in my case it was much more, making the game almost unplayable. Unfortunately I don’t have a good hardware, but it’s powerful enough to smoothly run the game in DX8 with a forced 4x anti-aliasing; so I don’t get why there is this huge difference between DX 8 and 9.
I’m curious to know if this happens to others too…
-
May 30, 2016 at 4:57 pm #2677JeffreyKeymaster
Well, for what it’s worth, my home machine is very slow on DX8 too, so given an already terrible frame-rate in 8, I only see another 10% degradation in 9 because I was already so low to begin with, LOL
But it may also be that the in-game fps number may not be all that accurate because I didn’t trace that all the way through to see how they measure. I may install something like Fraps to see what it says.
-
-
May 30, 2016 at 11:36 am #2670SamirParticipant
I have also tested your DX9 patch. It works, but I’m also having performance drops when in 3D Sailing mode… World map runs smoothly. I haven’t tested it much, since 3D sailing mode is unplayable for me. Too low fps…
-
May 30, 2016 at 6:37 pm #2679JeffreyKeymaster
Seriously? WTF is this about? http://www.piratesahoy.net/threads/age-of-pirates-ii-piratesahoy-edition.16966/page-7#post-539660
Sorry, but the original game already working on DX9 basis.
DX8 is displayed, because errors in the codes.Buncha tools.
-
May 30, 2016 at 8:50 pm #2680SamirParticipant
I don’t really understand what he ment.
Ok, what I did, I downloaded the ERAS2TestDX9.zip from your mega folder and pasted it in my Eras 2 folder (which is located in C:/Games/Age of Pirates 2/) and overwrite all the files. Then I opened start.ini and changed the source for game path, resources, sounds etc. I started the game and I got a Storm Engine 2.8 loading with a different background than the original. Everything loaded normally, and I was even able to use my existing savegames from my current game. The savegame loaded just fine, but the 3D sailing performed pretty bad, with lag. Even in town I experienced lag. Only world map was fine.-
June 1, 2016 at 10:45 pm #2708JeffreyKeymaster
I actually agree with you Orazio. When I say I don’t care, it means I’m not all that interested in what transpired or what their disagreement is. I just want to contribute what I might be able to in order to make the game we are all interested in a little better, if I somehow am able.
However, it has become very clear to me that it is the behavior of a few at PA! that is questionable and leads me to believe that it is they who are being childish and petty. I was explicitly told here in a PM that I can post and describe the work/fixes done in either place. While they are explicitly telling me that regardless of my remaining impartial and silent about their personal issue, I am unwelcome and any work I might be able to accomplish is worthless. That gives me a bit of insight; they don’t care about the game their site supposedly supports and provides a forum/avenue for sharing and they very likely are the real problem in the situation surrounding this personal vendetta.
I’m growing weary and find them rather tiresome. Which is sad, because I’d like to somehow reach others, without this grudge, that might be over there because it is, for now, a more prominent place. But, I’m also leaning toward your conclusion that at this point, it is probably a waste of my time.
-
-
June 1, 2016 at 7:49 pm #2707OrazioModerator
I saw that thread on PA, and how the discussion evolved.
Particularly, that message “anyone associated with MK is held in very low esteem around here. Expect nothing good to come from visiting here” reveals how narrow-minded and childish they are (even though that has been quite clear in other occasions): so even if someone comes to offer help he must be treated as the enemy no matter what, even if he personally did nothing bad to them? What a nice attitude!
The sad thing is that a moderator said that, a person that should be balanced, that should work to make the community a peaceful place, avoiding flames and such, and yet he (and not only) proved himself very hostile and aggressive.
I don’t know what MK did, and actually I’m not interested, but I believe – whatever he did – that this behavior is just stupid: they may have reasons to hate him, I don’t discuss that, but why treat as enemies people who just write in this forum or play ERAS, even if those people did nothing against them, and on the contrary were only offering their help??
I am very disappointed by the behavior of those people on PA (especially the moderators!). I had thought PA was a welcoming place for everybody willing to contribute or just wanting to play a pirate-themed game, but I was clearly wrong.
To conclude, at this point I think it’s not even worth replying anymore on that thread (and on that forum too). They “held us in very low esteem”, as they said, and I don’t spend my time with people who don’t like me based on a mere prejudice. And let’s be honest, on that forum they are only interested in PoTC, so trying to offer help about COAS is quite useless.
-
-
May 30, 2016 at 9:11 pm #2683JeffreyKeymaster
Ack…if you’re going to run any of the Test versions, make a new folder ERASTest and ERASTestDX9 and put everything in there so you don’t wipe out the original .exe/module files so that if you run into any problems, you can still run the original if you’d like.
If you want to load SAVE games for testing, copy them into those Test folders so you can load them.
I think I’m going to try multithreading the DX9 rendering to see if that helps performance, but it might take me awhile to get right.
-
June 1, 2016 at 3:03 pm #2706JeffreyKeymaster
Well, I looked into multithreading, but I don’t think that’s a solution.
First, setting DX9 to run a multithreaded device is apparently unwise as it is not thread-safe and thus locks every call to allow one to self-manage.
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476890%28v=vs.85%29.aspx
Direct3D 9 does not default to thread safe. However, when you call CreateDevice or CreateDeviceEx to create a device, you can specify the D3DCREATE_MULTITHREADED flag to make the Direct3D 9 API thread safe. This causes significant synchronization overhead. Therefore, making the Direct3D 9 API thread safe is not recommended because performance can be degraded.
Apparently, one can not set D3DCREATE_MULTITHREADED and still get away with setting a thread or two to handle certain non-DX9 tasks and I tried this for reading/setting textures, and it ran for a bit, but then crashed because somewhere along the line it did try to cross a boundary; this would not be a trivial task to get right within the way this program is structured.
I think a better answer is improved state management. Running the DirectX PIX to profile calls, I see that render/stage states are set several thousands of times per frame and many of them are redundant (which DX will ignore), but there are things that flag a state change when called, and then I think even a redundant call will no longer be recognized as redundant and will be set again.
In fact, I was reading https://blogs.msdn.microsoft.com/shawnhar/2007/10/25/graphics-state-management/ and the program we are dealing with takes “Approach #2”:
Approach 2: Leave No Trace
People are often tempted by logic along the lines of “in order to avoid class B messing up the rendering of class A, I will just have B put back whatever states were previously defined”. The SaveStateMode.SaveState parameter to SpriteBatch.Begin and ModelMesh.Draw implements this behavior.
Trouble is, this is not a smart way to do things.
For one thing, it is slow. Really slow.
For another, it leads to a logical mess. Who says that B must restore state in order to avoid messing up A? Why isn’t it A that should avoid messing up B? What about if you introduce a third class C? It quickly gets confusing trying to keep track of who does what when.
This is exactly how this program operates. Upon a new draw call, set a bunch of states, restore previous states.
Since all DX calls are wrapped in a central location of sdevice.cpp, I think a form of state management would be more easily incorporated, but I need to find a good solution/example because I still don’t really know enough about DX9 to make a determination of what calls/state implications exist and how to efficiently group/manage them properly within the context of how DX9 graphics work, then again within the context of this program.
-
June 1, 2016 at 10:51 pm #2709JeffreyKeymaster
Whoops, just noticed my last post was clicked on the wrong reply and went to Samir, instead of Orazio. Oh well, I’m sure you’ll find it, LOL
Anyway, I implemented a state management solution to reduce the number of render state, sampler state, pixel shader application and vertex shader calls. Works wonderfully! PIX showed a reduction from 3,000 plus sampler/render state calls per frame, down to 1,000. Pixel/vertex shader calls down from 100+ to 15-20. And my FPS had ZERO change between with and without the change, LOL
So much for that idea being the bottleneck. So much to learn about how to measure and optimize this thing 🙂
-
-
June 3, 2016 at 3:38 am #2727JeffreyKeymaster
Well this is interesting.
I benchmarked FPS with stock original game, our compiled DX8, and our compiled DX9. I ran AoP COAS, GOF and ERAS. Here is the ranking of fastest to slowest:
AoP stock
ERAS stock
GOF stock
AoP our DX8
AoP our DX9
ERAS our DX8
GOF our DX8
ERAS our DX9
GOF our DX9Our DX9 averages roughly 50% of stock FPS, and our DX8 averages roughly 2/3 the FPS of stock. Why?
Well, remember that D3DUSAGE_WRITEONLY, locks/unlocks, and DX dev tools warning of ‘severe performance problem’ with that combo that I discovered while getting this together? I decided to change it back to the ‘wrong’ way that gives all those warning messages. Our DX9 version now runs the same speed as our current DX8 version. Still slower, but better than it was. Weird. I’m going to try the same with our DX8 version and I’m guessing it will bump up to at/near the stock DX8.
So much for DirectX dev tool guidance, LOL
-
June 3, 2016 at 3:53 am #2728JeffreyKeymaster
LOL, yep…reverted it back and in fact, our DX8 version is now very slightly faster at times than the stock game within the same scene I’ve been testing.
-
June 3, 2016 at 5:02 am #2729JeffreyKeymaster
Well, well, I initially noted DirectX 9 debug runtime was better, yet still slower than original. But release runtime is a different story. Our DX8 is slightly faster, across the board, than the original, and DX9 is just about equal speed as stock game, with one exception; ironically (because it was slowest for my first tests) GOF DX9 was slightly faster than even stock in the scene I tested.
https://mega.nz/#F!WtMDgRxK!hbeUg86kGLlQAqvWRNwTqg
AoPTest.zip = Age of Pirates 2 COAS DirectX 8
AoPTestDX9.zip = Age of Pirates 2 COAS DirectX 9
ERAS2Test.zip = ERAS DirectX 8
ERAS2TestDX9.zip = ERAS DirectX 9
GOF1.2Test.zip = GOF 1.2 DirectX 8
GOF1.2TestDX9.zip = GOF 1.2 DirectX 9-
June 3, 2016 at 11:41 am #2731SamirParticipant
Weird thing happens when I apply the patch from your Mega folder, ERAS.Patch.zip. I replace all the files in the game folder with the files from your Eras.Patch.zip, but when I start the game, I get an error message saying: “Age of Pirates 2 has stopped working”, and I can only click End task…
Am I doing something wrong? I must add that I haven’t installed the original AoP2 game, I only extracted the Eras 2 MOD to C:/Games/Age of Pirates 2 and started playing it like that, because I saw that MK included all the necessary files with the MOD (start.exe, config.exe etc.) -
June 3, 2016 at 7:50 pm #2740JeffreyKeymaster
Off topic, but I’m still laughing about a post ‘over there’ where the game log was posted, showing ‘Initializing DirectX 9″.
Too funny. My original, stock COAS game shows the same thing:
Scanning modules\
Loading modules…
Loaded 45
Reset…
Initializing CORE…
Creating atoms space: 128
done
initializing complete
Initializing DirectX 9
Techniques: 22 shaders compiled.
Techniques: 227 techniques compiled.
Techniques: compiled by 111579695 ticks.
Using FMOD 00040805
Sound inited ok !!!Funny thing about programming…the programmer can make it say whatever they want. Doesn’t make it true. Especially when a Sysinternals Process Explorer shows that while running, the game actually loads d3d8.dll and nothing from d3d9 at all. This is a fact that KK, the guy that originally worked this source code I have, actually posted that the program was indeed coded to say exactly that, even though it didn’t use DX9. Falls on deaf ears.
To take the game’s box cover and what it writes to the log file as gospel is silly and stupid. I would think the person that posted such was smarter than that.
Then there’s the spiel about how if configured such a way, it will use DX9, but that also can’t be true, because any wrapper, while it can add a NULL parameter for things like CreateVertexBuffer and CreateIndexBuffer that have a new and superfluous extra parameter, the CopyRects has to be changed to one of 3 different functions that depend on the memory space the source/destination surfaces reside, which that information is not passed to the function. SetVertexShader needs the compiled shader passed to it, instead of the FVF code that DX8 uses…where would a wrapper get that information, because it’s not passed in DX8 versions? It can’t.
Wrappers only work if a game doesn’t use certain functions, as a majority of features from DX8 and DX9 have a passable way to work around it. But if the game uses SetVertexShader with non-FVF, like COAS does, they don’t work and that’s why all the attempts with DX8-DX9 wrappers that worked for some games, those years ago when this came out, didn’t work at all for COAS.
Not sure why I’m still mulling/laughing about this, but I suppose I’m curious why some of the posters feel compelled to spout and cling to this sudden nonsense…why they feel beholden and a need to defend this stupid claim. Why they criticize and try to diminish my post of successful work to port DX9. It’s strange, but I have some gut feelings about the ‘why’ and wherefore.
-
June 3, 2016 at 8:26 pm #2743OrazioModerator
I also found it kind of funny that he just posted the content of a log file, knowing that on the log it’s possible to write whatever one wants. The same for the game cover.
I don’t know what to think about the other story, that the game is DX 8 but can be made DX 9 simply changing paths and other things he said. My experience in programming is very limited, but this story doesn’t sound very believable to me.
And after reading several of your posts, where you explain in detail some of your work on the game code, I believe you much more than that other modder, which is always very vague and mysterious.As to why the moderators were so hostile, do you think they don’t want interest to rise again around CoAS modding, so their New Horizons mod can continue being the “n.1 mod”? Especially considering that MK is “on the other side”? That’s the only explanation I can think of, except obviously just pure hate towards MK.
-
June 4, 2016 at 12:02 am #2745JeffreyKeymaster
“…except obviously just pure hate towards MK.”
That is my gut feel of why I’m attacked. They knew from the start where I came from and it’s been a petty battle ever since I started posting.
LOL…check out the last from from Armada. It’s like the frickin’ Ministry of Truth over there…repeat the lies often enough and it all must be true. What an idiot to post that ‘illegitimate’ comment. In the same thread as the permission and files were given.
-
June 4, 2016 at 1:16 am #2746JeffreyKeymaster
OK, I’m sure this topic is a complete bore, a waste of time, and I don’t mean to derail what we’ve got going on here, but I’m still laughing my ass off, over the last hour, about my last salvo; so short, sweet and very likely caused things to go nuclear.
I’m sure I’m delusional, but it’s been silent for nearly an hour. Here’s what I picture now happening behind the scenes in moderator PM-land.
“Do you think this Chez is actually MK?”
“What is the IP address…it’s gotta be him.”
“Says Oregon…do you think he moved?”
“Maybe. What can we do? How do we get rid of this pest? We gotta figure something out.”
Here’s what’s happened since I started posting:
I posted some info about about some ERAS fixes in a thread titled, GOF Eras MOD Module #2 (v1.0)
Hylie decides I’m suspect, through poor reading comprehension: “There was never a bug when boarding the Blue Bird. I have done it many times in GOF2. This makes your other claims suspect.”
I correct him that this is for ERAS and post links here, describing the Blue Bird issue being discussed.
Hylie: “This is for eras? And you are using IPs known to be spam sites? Post this in the eras site. Thread locked.”
Because, apparently, posting about ERAS, in an open thread for the ERAS mod, pinned to the top, is somehow wrong, and this site is spam, and links are censored from my post.
In another thread, I mention this, and that Google’s Safe Browsing says the site is safe. Thagarr tells me not to trust Google on that one…but in an interesting twist of irony, Google does state that PA! has been known to infect with a virus and a search on PA! itself ascertains that it was happening to users in the past, LOL
My guess is that the recent declaration I made that the KK source now works with DX9, I suspect someone sought out Jan to post, in order to discredit and diminish this work as any sort of accomplishment, with spurious and false claims that it always worked with DX9. Jan is wrong and possibly outright lying just to put it down.
So they lie about this as a spam site, and in complete hypocrisy, their own site is known for this. Anything I fix, they claim is suspect, and/or a lie from me. They all agreed, several years ago, that CoAS was running DX8, contrary to the box, and they all agree…until I make it happen, then it always ran DX9 and I’m a liar. They lie about the source being given directly to MK. They constantly feel compelled to throw out the expulsion link to everyone. I have never written/talked about it, because I have no reason or care to involve myself, yet it is constantly thrown in my face by all the mods, even though I’ve never brought it up.
I am impartial…just an observer of this situation, but I’m pretty certain my simple little illustration of Armada’s lies will not go over well and you just KNOW they’re probably thinking I must somehow be MK or someone close to him and are now really itching to get me the hell out of there. Another irony is that I am impartial and everything is now plain as day to me; they are insane and obsessed with this vendetta and will outright lie to fit their propaganda.
I wish this weren’t true, but it seems so obvious at this point.
-
-
-
-
June 3, 2016 at 2:33 pm #2732JeffreyKeymaster
There ERAS.Patch is indeed intended to work with the original installation. If you extracted and copied over to your game directory, it will replace some files in Program and RESOURCE, but the rest of the files remain as-is and it should work. The only caveat I can think of is that if you have saved games from before trying my patch, it might crash when you try to re-save them due to some ship/item array fixes I made, but there might even be a way around that.
After you launch the game and it ends, in the game directory where start.exe sits, do you see an error.log, system.log and compile.log file? If so, what do they say? If you don’t see those files, rename your engine.ini file to engine.orig, go to my link and download the engine.ini file I just put there. It has the debug and log settings turned on. Try the game and then let me know what the error.log, system.log files say.
-
June 3, 2016 at 3:40 pm #2733SamirParticipant
I managed to make it work. It seems that the folder SAVE from the ErasPatch.zip was causing the problem. I overwrote all the files except SAVE folder. Now it’s working smoothly and I can also continue with my current savegame. I tried loading it, and it didn’t cause any trouble. Thanks, and sorry for false alarm 🙂
P.S. I didn’t use the original installation. So it means that Eras MOD has all the files needed.
- This reply was modified 8 years, 5 months ago by Samir.
-
June 3, 2016 at 3:53 pm #2735JeffreyKeymaster
That’s good. I meant original ERAS, when I referred to original installation as I intended for that patch to work with the existing ERAS stuff. Same goes for AoP COAS and GOF 1.2 patches; they should work with the existing versions of those particular games. The .exe are the same for all of them, but there are differences in Program and RESOURCE files, so they are usually not interchangeable. I made the specific changes needed for fixes and such for each different vanilla/mod version.
Weird that the SAVE folder would have caused the issue as I only provided a few of my own games for example only, and they shouldn’t be required. I would think that your own SAVE folder would have already been there and not copying my provided one would not cause a problem, since presumably, the game would already have its own from your own saved games.
Oh well, no worries and I’m glad to hear it’s working out for you.
-
-
June 3, 2016 at 5:17 pm #2736SamirParticipant
First time I encounter sea like this. It looks a bit awkward. I loaded the game after applying the patch. But I have tried sailing through other weather conditions. The sea looks normal and beautiful. I looked into your ERAS.Patch folder, it seems that your patch doesn’t change sea textures. Maybe the old savegames are not compatible with the new files from the patch? Or it’s just normal, but I haven’t encountered it until now…
-
June 3, 2016 at 6:18 pm #2737JeffreyKeymaster
The sea qualities are in the various Program\Weather\init programs, depending on the hour of the day, it will be Morning.c, Day.c, Evening.c, Night.c and in certain cases of rain/storm/etc., the others: Special.c, Rain.c, DayStorm.c.
Though the patch contains some changes to Day.c and Special.c, that was simply to correct some folder paths to the correct hour for sky textures and I’m pretty sure nothing changed to the sea qualities. Most likely, you may have just not happened to look out at sea at those particular hour/weather/sun combinations that produce the effect you see in that pic.
If you think the sea in your case is erroneous or inaccurate, and could look better, it would be helpful to know the time of day that is in your game so we can compare the various sea properties to another time of the day that looks better and see if there is something that is too skewed for that particular weather situation.
Edit: Never mind about the time…I found I could enlarge/magnify and can see the time myself 🙂
-
-
June 3, 2016 at 7:37 pm #2739OrazioModerator
I quickly tried the new DX 9 version, and the FPS drop seemed disappeared. Good job!
I didn’t check if the framerate is still lower than that of the DX 8 version, but this time the game is playable. I will try it again though, to be really sure!
-
June 3, 2016 at 8:16 pm #2742JeffreyKeymaster
I’m so happy about this. I feel so stupid for following the advice of the DirectX debug tool. It told me to change, I did, then spent days trying to figure out why it was slower.
Only yesterday, did I get the idea, “Hey, why not put it back to what it was originally and check it out…” Instantly faster.
Thanks for taking a look, and definitely compare more when you get a chance. My tests of AoP, GOF 1.2 and ERAS on our compiled DX8 were slightly faster than stock and our DX9, was nearly identical to stock DX8 and in my GOF 1.2 DX9, was actually a little faster than stock. But I only tested each for a minute or two, using the exact same game and sailing scenes between each of the stock, DX8 and DX9 tests.
-
-
September 15, 2016 at 4:36 pm #3241
-
September 16, 2016 at 5:36 pm #3245AlexParticipant
thx……i have anothe question…. i don’t understand how to do DX9?
-
September 16, 2016 at 6:43 pm #3248JeffreyKeymaster
Depends on the computer system you have.
If you have downloaded ERAS2TestDX9.zip from https://mega.nz/#F!WtMDgRxK!hbeUg86kGLlQAqvWRNwTqg , you need to unzip that to a new folder, like C:\MyGames\ERAS2.
Next, that download does not have all the models, textures, etc., so you need to change the start.ini to point at those files for the original ERAS installed game.
Change:
resource_directory = C:\Program Files\Playlogic\ERAS\RESOURCE
sound path = C:\Program Files\Playlogic\ERAS\RESOURCE\soundsIf you have is somewhere different than C:\Program Files, just change that part so that the whole path to RESOURCE and RESOURCE\sounds is correct.
Now, here’s where it depends on your computer. If you have WinXP, it might not have the latest DirectX 9 and maybe even the proper C++ runtime. Try to play START.exe, and if you get a problem, run the vcredist_x86.exe and the directx_Jun2010_redist.exe. They are both from Microsoft and will update DirectX and the C++ runtime. However, if you have a later operating system, the game might just work with no further action needed.
Let me know if you have any questions/problems.
-
September 17, 2016 at 4:18 am #3252AlexParticipant
thx…. i will try this
-
September 17, 2016 at 4:16 pm #3253AlexParticipant
no voices now…. music and other sounds be there
-
September 17, 2016 at 6:20 pm #3255JeffreyKeymaster
Hmmm, which DX9 are you trying? AoP COAS or ERAS? I did have a problem with the original COAS music files not working with the newer fmodex.dll, and I had to redo all of the music files for that one. But I don’t seem to remember a problem with any others. If that’s the case with the dialog sounds, I may have to redo those the same way. I will check a little closer.
-
September 17, 2016 at 10:02 pm #3256JeffreyKeymaster
Yep, no voices. But it’s not the .wav files. I hardcoded several of them to play within the game and they do so it’s not the sound files themselves. But, the ‘greetings’ don’t ever play when they are supposed to in the game. I’m working on figuring why. I had made some minor changes to the SoundService, so I put back the original code and that doesn’t work either, so it’s something other than what I changed.
-
September 19, 2016 at 5:12 am #3260AlexParticipant
i’ll try it now
-
September 19, 2016 at 7:09 am #3261AlexParticipant
it’s work!!!!
Great -
September 19, 2016 at 10:04 am #3262AlexParticipant
i found a new problem with the shipcam
i can’t see the ship (raa frigate), i see only the part.-
September 19, 2016 at 2:14 pm #3263JeffreyKeymaster
Some ships borrowed from GOF, POTC and others along the way, still have a high-camera problem like that. Some have been fixed along the way by people that know ship modeling, but I can’t do that. I don’t have modeling skills, and the model and its camera locator need to be changed and I don’t know how to do that.
We will make a note of this ship and hopefully someone else can fix it. Orazio has fixed a couple high-cameras when they were discovered in the past.
-
-
September 19, 2016 at 2:25 pm #3264AlexParticipant
(((
-
September 19, 2016 at 4:31 pm #3268AlexParticipant
i found another bug…… smoke after the shot and same trouble with the fire on board
-
September 20, 2016 at 10:54 am #3277AlexParticipant
any ideas about fixing cam’s?
-
-
AuthorPosts
- You must be logged in to reply to this topic.
by modernknight1