Upgrade.ini question

Hi guys,

does anybody know if I can assign a different engine to a car via the upgrade.ini?

I downloaded the 75 F1 livery pack by Keith Windsor for the Formula Retro and build myself some engines which should show some differences in performance, but every time I test it, it is still using the standard engine.
I also did another test just increasing the weight of the car via the upgrade.ini and that works.

I set my upgrade file like this for the Ferrari (based on Keith Windsor's 1988 mod:

UpgradeType="Engine Power Changes"
{
UpgradeLevel="Engine Power Change"
{
Description="Engine Power Changes"
HDV=[GENERAL]
HDV=[ENGINE]
HDV=Normal=75_ferrari_engine.ini
HDV=RestrictorPlate=75_ferrari_engine.ini
}

}
Thanks for reading and any help is appreciated =)
 
In your Vehicles folder in Game Data then folder of car, you will have a example: F_Extreme_Spinner.ini.
H:\Automobilista\GameData\Vehicles\F_Extreme - F_Extreme_Spinner.ini.

It looks like this when opened:



//
// All information is proprietary to Image Space Incorporated.
//
// (c) 2007 Image Space Incorporated
// All Rights Reserved.
//
//////////////////////////////////////////EXAMPLE UPGRADES//////////////////////////////////////////
///
/// UpgradeType="PARTS" //Type of upgrade. This can be named anything
/// {
/// Instance="LVL1 Front Part" //What instance in the GEN file to modify
/// UpgradeLevel="STOCK" //what level of upgrade
/// {
/// GEN=<FPARTEXISTS>="//" //This replaces the token <FPARTEXISTS> with // in the GEN. To comment it out
/// GEN=<FPART>= //YOU need some definition here, even though it doesn't exist
/// }
///
/// UpgradeLevel="LVL2 Front Part" //what level of upgrade
/// {
/// GEN=<RWINGEXISTS>="" //This replaces the token <FPARTEXISTS> with nothing in the GEN. To uncomment it out
/// Description="Front Part lvl2" //THis is the description that goes in the in-game menus
/// GEN=<FPART>=FPART_lvl2.gmt //what GMT file replace that token (<RWING>) in the GEN File
/// }
/// }
///
///
/// You can create any number of upgrades with any name you wish. Just use the above sample and expand upon it
///
//////////////////////////////////////////END EXAMPLE//////////////////////////////////////////

BaseVehiclePrice=0
UnlockExperience=0

UpgradeType="Tire Compound"
{

Instance="LFTIRE"
Instance="RFTIRE"
Instance="LRTIRE"
Instance="RRTIRE"

Incremental=0
ResaleValue=0.0

UpgradeLevel="Prime Tires"
{
Description="Prime Tires"

IconLevel=0

GEN=<LFTIREA>=LF_TYRE_A.gmt
GEN=<LFTIREB>=LF_TYRE_B.gmt
GEN=<LFTIREC>=LF_TYRE_C.gmt
GEN=<LFTIRED>=LF_TYRE_D.gmt
GEN=<RFTIREA>=RF_TYRE_A.gmt
GEN=<RFTIREB>=RF_TYRE_B.gmt
GEN=<RFTIREC>=RF_TYRE_C.gmt
GEN=<RFTIRED>=RF_TYRE_D.gmt
GEN=<LRTIREA>=LR_TYRE_A.gmt
GEN=<LRTIREB>=LR_TYRE_B.gmt
GEN=<LRTIREC>=LR_TYRE_C.gmt
GEN=<LRTIRED>=LR_TYRE_D.gmt
GEN=<RRTIREA>=RR_TYRE_A.gmt
GEN=<RRTIREB>=RR_TYRE_B.gmt
GEN=<RRTIREC>=RR_TYRE_C.gmt
GEN=<RRTIRED>=RR_TYRE_D.gmt
}

UpgradeLevel="Option Tires"
{
Description="Option Tires"

IconLevel=1

GEN=<LFTIREA>=LF_OPT_TYRE_A.gmt
GEN=<LFTIREB>=LF_OPT_TYRE_B.gmt
GEN=<LFTIREC>=LF_OPT_TYRE_C.gmt
GEN=<LFTIRED>=LF_OPT_TYRE_D.gmt
GEN=<RFTIREA>=RF_OPT_TYRE_A.gmt
GEN=<RFTIREB>=RF_OPT_TYRE_B.gmt
GEN=<RFTIREC>=RF_OPT_TYRE_C.gmt
GEN=<RFTIRED>=RF_OPT_TYRE_D.gmt
GEN=<LRTIREA>=LR_OPT_TYRE_A.gmt
GEN=<LRTIREB>=LR_OPT_TYRE_B.gmt
GEN=<LRTIREC>=LR_OPT_TYRE_C.gmt
GEN=<LRTIRED>=LR_OPT_TYRE_D.gmt
GEN=<RRTIREA>=RR_OPT_TYRE_A.gmt
GEN=<RRTIREB>=RR_OPT_TYRE_B.gmt
GEN=<RRTIREC>=RR_OPT_TYRE_C.gmt
GEN=<RRTIRED>=RR_OPT_TYRE_D.gmt
}
}

Do not move anything or add spaces
Simply copy that and rename to each team.

example: F_Extreme_Upgrades_Banbury FR Team.ini
inside that before the last } enter:
UpgradeType="Engine Power Changes"
{
UpgradeLevel="On"
{
Description="Engine Power Changes"
HDV=[ENGINE]
HDV=GeneralPowerMult=0.90
}

HDV=GeneralPowerMult=0.90 //(this is the power, set at 1.00, lower teams to o.85 etc)

Do one of these for each team.
it should look like below


//
// All information is proprietary to Image Space Incorporated.
//
// (c) 2007 Image Space Incorporated
// All Rights Reserved.
//
//////////////////////////////////////////EXAMPLE UPGRADES//////////////////////////////////////////
///
/// UpgradeType="PARTS" //Type of upgrade. This can be named anything
/// {
/// Instance="LVL1 Front Part" //What instance in the GEN file to modify
/// UpgradeLevel="STOCK" //what level of upgrade
/// {
/// GEN=<FPARTEXISTS>="//" //This replaces the token <FPARTEXISTS> with // in the GEN. To comment it out
/// GEN=<FPART>= //YOU need some definition here, even though it doesn't exist
/// }
///
/// UpgradeLevel="LVL2 Front Part" //what level of upgrade
/// {
/// GEN=<RWINGEXISTS>="" //This replaces the token <FPARTEXISTS> with nothing in the GEN. To uncomment it out
/// Description="Front Part lvl2" //THis is the description that goes in the in-game menus
/// GEN=<FPART>=FPART_lvl2.gmt //what GMT file replace that token (<RWING>) in the GEN File
/// }
/// }
///
///
/// You can create any number of upgrades with any name you wish. Just use the above sample and expand upon it
///
//////////////////////////////////////////END EXAMPLE//////////////////////////////////////////

BaseVehiclePrice=0
UnlockExperience=0

UpgradeType="Tire Compound"
{

Instance="LFTIRE"
Instance="RFTIRE"
Instance="LRTIRE"
Instance="RRTIRE"

Incremental=0
ResaleValue=0.0

UpgradeLevel="Prime Tires"
{
Description="Prime Tires"

IconLevel=0

GEN=<LFTIREA>=LF_TYRE_A.gmt
GEN=<LFTIREB>=LF_TYRE_B.gmt
GEN=<LFTIREC>=LF_TYRE_C.gmt
GEN=<LFTIRED>=LF_TYRE_D.gmt
GEN=<RFTIREA>=RF_TYRE_A.gmt
GEN=<RFTIREB>=RF_TYRE_B.gmt
GEN=<RFTIREC>=RF_TYRE_C.gmt
GEN=<RFTIRED>=RF_TYRE_D.gmt
GEN=<LRTIREA>=LR_TYRE_A.gmt
GEN=<LRTIREB>=LR_TYRE_B.gmt
GEN=<LRTIREC>=LR_TYRE_C.gmt
GEN=<LRTIRED>=LR_TYRE_D.gmt
GEN=<RRTIREA>=RR_TYRE_A.gmt
GEN=<RRTIREB>=RR_TYRE_B.gmt
GEN=<RRTIREC>=RR_TYRE_C.gmt
GEN=<RRTIRED>=RR_TYRE_D.gmt
}

UpgradeLevel="Option Tires"
{
Description="Option Tires"

IconLevel=1

GEN=<LFTIREA>=LF_OPT_TYRE_A.gmt
GEN=<LFTIREB>=LF_OPT_TYRE_B.gmt
GEN=<LFTIREC>=LF_OPT_TYRE_C.gmt
GEN=<LFTIRED>=LF_OPT_TYRE_D.gmt
GEN=<RFTIREA>=RF_OPT_TYRE_A.gmt
GEN=<RFTIREB>=RF_OPT_TYRE_B.gmt
GEN=<RFTIREC>=RF_OPT_TYRE_C.gmt
GEN=<RFTIRED>=RF_OPT_TYRE_D.gmt
GEN=<LRTIREA>=LR_OPT_TYRE_A.gmt
GEN=<LRTIREB>=LR_OPT_TYRE_B.gmt
GEN=<LRTIREC>=LR_OPT_TYRE_C.gmt
GEN=<LRTIRED>=LR_OPT_TYRE_D.gmt
GEN=<RRTIREA>=RR_OPT_TYRE_A.gmt
GEN=<RRTIREB>=RR_OPT_TYRE_B.gmt
GEN=<RRTIREC>=RR_OPT_TYRE_C.gmt
GEN=<RRTIRED>=RR_OPT_TYRE_D.gmt
}
UpgradeType="Engine Power Changes"
{
UpgradeLevel="On"
{
Description="Engine Power Changes"
HDV=[ENGINE]
HDV=GeneralPowerMult=0.90
}
}

then you need to go to the team folder and open every .veh file for drive and change the line Upgrades="F_Extreme_Upgrades.ini" // Vehicle upgrades information

to
Upgrades="F_Extreme_Upgrades_Brackley GP.ini" // Vehicle upgrades information to read your new upgrade power ini.

do that for each team.

If you have trouble shout.
 
Last edited:
For example my old F1 Extreme folder was done with this,

1.png

Take banbury for example, once the ini is ready go to banbury team folder, and edit both driver .veh files
2.png

You will see my line for upgrades changed from

Upgrades="F_Extreme_Upgrades.ini" to

Upgrades="F_Extreme_Upgrades_Banbury FR Team.ini"

Be careful not to add spaces etc
 
Simply rename to F_Extreme_Upgrades_(TEAM_NAME).ini , then change driver .veh files in team folders to direct upgrades to that ini, changing the ini value of multiplier at the end of the upgrades ini e.g 0.99 to 0.60 will change power. I have already done this for 2016 season and its super realistic.

3.png
 
Hi everybody,
i know that's an old post... but i have a question, since you are more expert than me...
I tried to change engine power and it works great: is it possible change mechanical failure for each team, editing the upgrades.ini?
And, in case, how?
thanks in advance!
and sorry for my english...
 
I believe the values you are seeking are in the engine.ini per below.

EngineHyperWearMinRPM=14600 //Min revs to wear the engine EngineHyperWearFactor times faster
EngineHyperWearFactor=50
EngineInstantBlowUp=15800

LifetimeAvg=15705
LifetimeVar=2000

I am not 100% which way to edit the specific but these will definitely influence the mechanical failures. I believe setting EngineInstantBlowUp to a very high value would make the engine never fail. ;)
 
I believe the values you are seeking are in the engine.ini per below.

EngineHyperWearMinRPM=14600 //Min revs to wear the engine EngineHyperWearFactor times faster
EngineHyperWearFactor=50
EngineInstantBlowUp=15800

LifetimeAvg=15705
LifetimeVar=2000

I am not 100% which way to edit the specific but these will definitely influence the mechanical failures. I believe setting EngineInstantBlowUp to a very high value would make the engine never fail. ;)

I believe EngineInstantBlowUp is primarily used to stop abusing downshifts as it causes an instant blowup when that number, in rpm, is exceeded.

LivetimeAvg= is the value you'd want to increase to overcome general unreliability.
 
I believe the values you are seeking are in the engine.ini per below.

EngineHyperWearMinRPM=14600 //Min revs to wear the engine EngineHyperWearFactor times faster
EngineHyperWearFactor=50
EngineInstantBlowUp=15800

LifetimeAvg=15705
LifetimeVar=2000

I am not 100% which way to edit the specific but these will definitely influence the mechanical failures. I believe setting EngineInstantBlowUp to a very high value would make the engine never fail. ;)

thanks for answer!
I already know those lines in engine.ini: my question was if I can assign different values for each team, adding strings in upgrade.ini and how ;)
I guess not...
engine failure works in a strange way: if I set, p.e., LifetimeAvg=3600 (1 hour), engines start to blow (or cars ritire) after this time, but all together... If cpu decides that 10 cars will be retire, they will retire after 1 hour instead of 25 minutes, or 1h and half and so on...
Better that nothing... :unsure:
 
thanks for answer!
I already know those lines in engine.ini: my question was if I can assign different values for each team, adding strings in upgrade.ini and how ;)
I guess not...
engine failure works in a strange way: if I set, p.e., LifetimeAvg=3600 (1 hour), engines start to blow (or cars ritire) after this time, but all together... If cpu decides that 10 cars will be retire, they will retire after 1 hour instead of 25 minutes, or 1h and half and so on...
Better that nothing... :unsure:

Set lifetime var to be the same, and you'll get failures from the start of the race, until 2x 3600.
It's 3600+/- var
And yes, you can set it per team by giving each team a different engine.ini in their upgrade files. Check the 88 skin pack and files to get an idea of the structure.

There is one problem - if the AI suffer a gearbox failure they go slowly round for the rest of the race, ruining it. I have basically begged Reiza to fix it, but with no success
:cry:
 
Last edited:
thanks!
If I setting Engine failure 3600 e var 3600, i'm afraid only 5 cars will arrive at the end... Testing is the key: let's see what happens.. :)
I'll take a look at the 88 mod :thumbsup:
I noticed that cars with gearbox failure ritire after some laps
 
another question... :whistling:
what those strings mean?
LifetimeAvg= 3600 // 12000
LifetimeVar= 3600 // 5000
life is between 3600 and 12000?

Anything that comes after the // does not do anything, they were just some previous numbers left there as a reminder of some previous settings. You can safely delete them.

LifetimeAvg= 3600
LifetimeVar= 3600

In this example, the average life of the engine is 3600 seconds.
This can vary by the LifetimeVar, which is also 3600 seconds.
So in this example the engine lasts for an average of 3600 seconds (1 hour), but might fail any time between zero (immediate failure as you drive out of pits) and 2 hours.
 
Anything that comes after the // does not do anything, they were just some previous numbers left there as a reminder of some previous settings. You can safely delete them.

LifetimeAvg= 3600
LifetimeVar= 3600

In this example, the average life of the engine is 3600 seconds.
This can vary by the LifetimeVar, which is also 3600 seconds.
So in this example the engine lasts for an average of 3600 seconds (1 hour), but might fail any time between zero (immediate failure as you drive out of pits) and 2 hours.

So, if you want to replicate an engine with a typical life-cycle of 4 F1 races, but that could fail on the first lap, you would use:

LifetimeAvg= 28800
LifetimeVar= 28800

If you wanted an engine that was much less likely to fail in the first race, but more likely in the second, you could not replicate that because the wear is not properly carried forward (sim-style) from one race to the next.

It's very basic, but the longer the life-cycle (LifetimeAvg), the less likely you will see a failure within the span of a race, even if you set the incidence range (LifetimeVar) to be identical (allowing a failure from moment one onward).

The more reasonable approach is to use a higher lifetime number(s) to ensure only a few cars die, but punish engine abuse more strictly. For that, you need to use the other factors:

EngineHyperWearMinRPM=14600 //Min revs to wear the engine EngineHyperWearFactor times faster
EngineHyperWearFactor=50
EngineInstantBlowUp=15800

These allow the (longer) lifetime values from above to be accelerated for the rpm range in between some value and the maximum rpm to blow-up the engine.

So, if the old-style F1 car had a nominal 10,000 rpm redline, you might set the instant blow-up at 12,000, with extra wear starting at 9,500. You can decide how much extra wear factor to apply. If you set the rev limit of the engine below the blow-up rpm, then I guess that means the engine will never instantly blow up! If you set it higher (like the olden days when they did not have electronic limiters), then any mis-shift or not careful full throttle on long straights is going to end in tears pretty quickly.

Most mod cars set the engine rpm limit below the InstantBlowUp rpm to prevent those tears.

But I think this gives a lot of flexibility as long as you are not trying to replicate something like the current F1 number of engines limit per season, since none of these are season-based factors.
 
Back
Top