• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Feature Request Bring Arcade ship stats into consistency

I'll look into that, however why is it that a realism settings the ship steer better than on arcade settings?
Have a look at the (now incomplete) "New Horizons Ship Recognition Guide.pdf" in your game's "Documentation" folder.

Long story short: By vastly increasing ship inertia and steering rate too, the ship behaviour starts to feel like the ships require counter-rudder.
Like any real boat does. ;)
 
Okay, I get that. Just need to figure out a formula to work from for Realism vs arcade settings in terms of turn rate.

Most ships come about *0.5 for their turnrate how it is right now, however if comparing the ones in now versus how base game was than the stats of arcade have been majorly altered already.
 
Okay, I get that. Just need to figure out a formula to work from for Realism vs arcade settings in terms of turn rate.
This page may help there because it has pretty much all the stats on it in table form:
PotC - Ship Data Extraction Tool

Most ships come about *0.5 for their turnrate how it is right now, however if comparing the ones in now versus how base game was than the stats of arcade have been majorly altered already.
I doubt the arcade game values are very relevant any longer, but feel free to check!

The one thing I'm REALLY curious about is if a formula can be found for those inertia values too.
 
I'll be looking into the inertia values too.
Already used the page to get the values, I just imported it all into excel and then compared the difference between realism/arcade speed and turnrate and let it calculate the average of it.
I guessed that way some of the ships will get a little faster and some a little slower but overall shouldn't be too big of a difference in total.

The inertia values are probably going to be quite a bit harder to find a formula for but I will see if I can get an average factor by which it needs to be multiplied to get more consistency across the board.
 
That sounds great! :woot

The relative difference between ships would indeed end up changing in Arcade, but that is not a problem.
In fact, it is the whole reason for doing it. ;)

Inertia is of course related to ship weight.
If you can't seem to find a formula, it might be OK to leave that as an if-statement.
Speed and Turn Rate are probably far more important anyway.
 
The Speed and Turn Rate will most likely indeed be the most important since there already seems to be some consistency in Inertia values. Since the same types of ships do have the same inertia values only some very minor differences so far.
At least for as far as I'm currently at with indexing it. :)

But should the values in Arcade just become a programmed piece in which it takes Realism speed and multiplies by the average difference between all ships? (This is somewhere between 1.15 and 1.20)
 
Last edited:
If we are already looking at this, here a minor hint/advise from me: In arcade your ship can get pretty fast, which is sometimes in battles or ports not that good, because as soon as you stroke down all sails your ship brakes "without resistance", meaning that you either have to stroke them down very early (and loose turn rate control as that is also an effect of stroked sails) or smash W and S all the time to have the sails in a good "braking status". I hope you get what I mean xD
 
But should the values in Arcade just become a programmed piece in which it takes Realism speed and multiplies by the average difference between all ships? (This is somewhere between 1.15 and 1.20)
That is indeed the approach I would prefer as it is the simplest and requires the least code.
But only playtesting could confirm if that is actually a good idea.
 
I could make a file in which all Speed and Turn Rates have been adjusted to a consistent value.
Hower coding it in would be a challenge for me since I haven't yet really done any coding. I might be able to figure out how to setup the formula but I'm not certain.
Also I can't get clear for myself what happens with the value of refShip.SpeedRate (Realism) when playing arcade. Can it still access it or should the speed be transformed to some sort of other variable?
 
It's in an if-statement so as far as the game knows, only one of the two exists depending on what setting you chose.
To use a transformation, those if-statements would have to be removed or disabled so that the Realistic values always apply.
Then they can be transformed elsewhere.
 
Well I wouldn't be able to do that straight away. Gonna need to learn some programming for that.
But I could start changing the values so they become more consistent to at least be able to playtest it out and see if the formula would actually even work correctly. :)
 
If you want to change the values manually, that'll work too of course.
Bit more work probably, but as long as it works...? ;)
 
I was just looking through some of the files and in InternalSettings.h I found the following two lines:
Code:
#define ARCADE_MULT_TURN            3.0         // FLOAT - this multiplies base ship-turn-rate, default: 3
#define ARCADE_MULT_SPEED             2             // INT - Shipspeed if you set the menu "Options/Sailing mode" to ARCADE MODE
                                                // 1: Same speed as in "Realistic Mode"
                                                // 2: Twice as fast (default setting)
                                                // 3: 3x as fast etc.

Is this code currently active? Since the comments seem to say it should do what we're trying?
 
Is this code currently active? Since the comments seem to say it should do what we're trying?
I think it indeed IS active, so that pretty much works ON TOP OF the differing stats in ships_init.c .
So the best solution might be to simply remove the "Arcade" stats from the file altogether and then tweak those two numbers.

This unfortunately does require substantial manual labour, but it should be relatively easy to do.
Sections like this:
Code:
 if(iRealismMode>0 || REALISTIC_SHIP_INERTIA){
   refShip.SpeedRate = 11.3;
   refShip.TurnRate = 65;
   refShip.InertiaAccelerationX  = 6;  refShip.InertiaBrakingX  = 0.4;
   refShip.InertiaAccelerationY  = 2.5;  refShip.InertiaBrakingY  = 0.5;
   refShip.InertiaAccelerationZ  = 2.5;  refShip.InertiaBrakingZ  = 2.0;
 }else{
   refShip.SpeedRate = 11.8;
   refShip.TurnRate = 40;
   refShip.InertiaAccelerationX  = 0.2;  refShip.InertiaBrakingX  = 2.0;
   refShip.InertiaAccelerationY  = 6;  refShip.InertiaBrakingY  = 4;
   refShip.InertiaAccelerationZ  = 3.0;  refShip.InertiaBrakingZ  = 3.0;
 }
Should then be replaced like this:
Code:
refShip.SpeedRate = 11.3; // This is the realistic value
refShip.TurnRate = 65; // This is the realistic value
 if(iRealismMode>0 || REALISTIC_SHIP_INERTIA){
   refShip.InertiaAccelerationX  = 6;  refShip.InertiaBrakingX  = 0.4;
   refShip.InertiaAccelerationY  = 2.5;  refShip.InertiaBrakingY  = 0.5;
   refShip.InertiaAccelerationZ  = 2.5;  refShip.InertiaBrakingZ  = 2.0;
 }else{
//   refShip.SpeedRate = 11.8; // This is the former arcade value
//   refShip.TurnRate = 40; // This is the former arcade value
   refShip.InertiaAccelerationX  = 0.2;  refShip.InertiaBrakingX  = 2.0;
   refShip.InertiaAccelerationY  = 6;  refShip.InertiaBrakingY  = 4;
   refShip.InertiaAccelerationZ  = 3.0;  refShip.InertiaBrakingZ  = 3.0;
 }

If a straight conversion can be found for the inertia as well, we can add similar #defines for that too.
Advantages of that:
- Switching between Arcade and Realistic updates the ship performance correctly STRAIGHT AWAY!
- Ship stats do not visibly differ between both modes at all
- What holds true in Arcade on good/bad performance applies in Realistic too (and vice versa)
 
I'll get started on doing this. Already started on manually updating the values but this seems to be the more elegant option.
 
So already half way through the amount of lines. :)
Will probably be done tomorrow or this evening.
 
So all arcade lines should be commented out and all the realistic handling lines should have been moved out of the if() statement.
Haven't yet been able to boot up the game to see if it still works. :)
 

Attachments

  • Ships_init.c
    799.7 KB · Views: 151
What I could see ingame is that A. it at least still functions.. and B. it seems to use the numbers of realism in arcade.
However I couldn't so fast see if the speed of the ship is doubled. (should this reflect in the values under ship?)
 
:aarHere to help/test! :) I already downloaded it, I will merge my personal values (crew, some HP and stuff) with it. And then I will test how it behaves compared to the old ships_init.c and will give a feedback here by the end of the week ;)
 
Back
Top