Final Frontier has no ground units, all units are some form of aircraft, and thusly all defences are AA of some sort, I dont know if this causes the AI to break or if im missing something... I tried the JCAI, and AAI both got the same exact error and would not tell me much in the AI log..
Just for reference im posting both config files for the AI's just to check that I set them up right...
JCAI Main Config
JCAI Arm Config//-------------------------------------------------------------------------
// JCAI version 0.20
//
// A skirmish AI for the TA Spring engine.
// Copyright Jelmer Cnossen
//
// Released under GPL license: see LICENSE.html for more information.
//-------------------------------------------------------------------------
armccrus = file "ff_arm.cfg"
corccrus = file "ff_core.cfg"
// You can put the author name here or a general message
StartLine = "Using the Final Frontier Profile of JCAI"
//------------------------------------------------------------------------------------------
// Side info
//------------------------------------------------------------------------------------------
SideInfo =
{
// all air defence buildings
aadefense = { armemt armfury armplasma coremt corplasma corscythe armglt armhemt armion attla corgzsam corhemt corion thumper xarmflak xcorflak }
// all ground defense buildings
gddefense = { armbstat corbstat firestorm impact }
}
//------------------------------------------------------------------------------------------
// General build manager config
//------------------------------------------------------------------------------------------
// These weight determine how much resources are spend per handler type
BuildWeights =
{
Resource = 0.8
Force = 1.5
Support = 1
Recon = 1
}
MaxTasks =
{
Resource = 10
Force = 10
Support = 10
Recon = 1
}
JCAI Core Config//-------------------------------------------------------------------------
// JCAI version 0.21
//
// A skirmish AI for the TA Spring engine.
// Copyright Jelmer Cnossen
//
// Released under GPL license: see LICENSE.html for more information.
//-------------------------------------------------------------------------
// the "build speed" used here is calculated from the actual build speed, the move speed, and the health
BuildSpeedPerMetalIncome = 0.05
//------------------------------------------------------------------------------------------
// Recon handler config
//------------------------------------------------------------------------------------------
ReconInfo =
{
UpdateInterval = 6 // Can be used to set frequency of recon updates, to reduce CPU use.
MaxForce = 5
Scouts = buildoptions
{
stil*2 sil
}
SearchHeuristic =
{
// Higher score is better
TimeFactor = 0.015
DistanceFactor = -2
ThreatFactor = -0.5
SpreadFactor = 200
}
}
//------------------------------------------------------------------------------------------
// Support handler config
//------------------------------------------------------------------------------------------
// The support handler can be used to create tasks for things like defenses or radar
SupportInfo =
{
groups = {
llt = {
units=buildoptions { armfury }
minmetal = 4
}
hlt = {
units=buildoptions { armplasma armfury*2 }
minmetal = 8
}
}
}
//------------------------------------------------------------------------------------------
// Resource unit handler config
//------------------------------------------------------------------------------------------
ResourceInfo =
{
// These factors determine the calculation of the 'cost' divisor in the energy production heuristic
// It's used to decide which energy producer to build (fusion/wind/solar)
EnergyBuildHeuristic =
{
// TODO: Fix this,it's unbalanced
BuildTime = 0
MetalCost = 1
EnergyCost = 0
// New energy making units have to fulfill this condition:
// 1.0f + (UnitEnergyProduction / CurrentTotalEnergyProduction) < MaxUpscale
// This makes sure the AI doesn't think "Hey, let's build a fusion right away!"
MaxUpscale = 2
}
// This applies to both metal makers and metal extractors
MetalBuildHeuristic =
{
/* score calculation:
Threat value for metal makers build spots is assumed to be 0, since they can be placed anywhere
PaybackTime = (MetalCost + MetalSpotThreatValue * ThreatConversionFactor) / MetalMake
score = PaybackTimeFactor * PaybackTime +
(ResourceUnitUsage) * EnergyFactor
*/
PaybackTimeFactor = -10
EnergyUsageFactor = -100
ThreatConversionFactor = 1
PrefUpscale = 2
UpscaleOvershootFactor = -50
}
// To optimize building the beginning of the base - this has to be a buildoptions node
InitialBuildOrders = buildoptions
{
armadvsol*2 armemex*2
}
MetalExtracters =
{
armemex
xarmmoho
}
MetalMakers =
{
armomkr
xarmmmkr
}
EnergyMakers =
{
armadvsol
armpfus
xarmfus
}
EnablePolicy =
{
MinUnitEnergyUsage=60
MinEnergy=0.1
MaxEnergy=0.85 // it's best to keep this below Storage.MaxRatio
}
Storage =
{
MetalStorage = xarmmstor
EnergyStorage = xarmestor
MaxRatio = 0.9 // The resource handler will build storage when Resource > ResourceStorage * MaxRatio
MinMetalIncome = 4 // minimum metal income before it builds storage
MinEnergyIncome = 80
// These maximums define the point where no more storage is build (so resources are spilled)
// They have to be multiplied by the energy income to get the real maximum:
// Max = Income * MaxStorageFactor
MaxEnergyStorageFactor = 500
MaxMetalStorageFactor = 1000
}
}
//------------------------------------------------------------------------------------------
// Force handler config
//------------------------------------------------------------------------------------------
ForceInfo =
{
DefaultSpread = 600
RushForce =
{
task = attackdefend
// the units fields always has to be a buildoptions value
units = buildoptions { stil }
batchsize=6
category=4
level=1
minmetal=6
}
BasicForce1 =
{
task = attackdefend
// the units fields always has to be a buildoptions value
units = buildoptions { wildcat*2 stil*3 }
batchsize=4
category=4
level=2
minmetal=14
}
}
And the AAI config file//-------------------------------------------------------------------------
// JCAI version 0.21
//
// A skirmish AI for the TA Spring engine.
// Copyright Jelmer Cnossen
//
// Released under GPL license: see LICENSE.html for more information.
//-------------------------------------------------------------------------
// the "build speed" used here is calculated from the actual build speed, the move speed, and the health
BuildSpeedPerMetalIncome = 0.05
//------------------------------------------------------------------------------------------
// Recon handler config
//------------------------------------------------------------------------------------------
ReconInfo =
{
UpdateInterval = 6 // Can be used to set frequency of recon updates, to reduce CPU use.
MaxForce = 5
Scouts = buildoptions
{
wisp*2 wraith
}
SearchHeuristic =
{
// Higher score is better
TimeFactor = 0.015
DistanceFactor = -2
ThreatFactor = -0.5
SpreadFactor = 200
}
}
//------------------------------------------------------------------------------------------
// Support handler config
//------------------------------------------------------------------------------------------
// The support handler can be used to create tasks for things like defenses or radar
SupportInfo =
{
groups = {
llt = {
units=buildoptions{corscythe}
minmetal = 4
}
hlt = {
units=buildoptions { corplasma corscythe*2 }
minmetal = 8
}
}
}
//------------------------------------------------------------------------------------------
// Resource unit handler config
//------------------------------------------------------------------------------------------
ResourceInfo =
{
// These factors determine the calculation of the 'cost' divisor in the energy production heuristic
// It's used to decide which energy producer to build (fusion/wind/solar)
EnergyBuildHeuristic =
{
// TODO: Fix this,it's unbalanced
BuildTime = 0
MetalCost = 1
EnergyCost = 0
// New energy making units have to fulfill this condition:
// 1.0f + (UnitEnergyProduction / CurrentTotalEnergyProduction) < MaxUpscale
// This makes sure the AI doesn't think "Hey, let's build a fusion right away!"
MaxUpscale = 2
}
// This applies to both metal makers and metal extractors
MetalBuildHeuristic =
{
/* score calculation:
Threat value for metal makers build spots is assumed to be 0, since they can be placed anywhere
PaybackTime = (MetalCost + MetalSpotThreatValue * ThreatConversionFactor) / MetalMake
score = PaybackTimeFactor * PaybackTime +
(ResourceUnitUsage) * EnergyFactor
*/
PaybackTimeFactor = -10
EnergyUsageFactor = -100
ThreatConversionFactor = 1
PrefUpscale = 2
UpscaleOvershootFactor = -50
}
// To optimize building the beginning of the base - this has to be a buildoptions node
InitialBuildOrders = buildoptions
{
coradvsol*2 coremex*2
}
MetalExtracters =
{
coremex
xcormoho
}
MetalMakers =
{
armomkr
xarmmmkr
}
EnergyMakers =
{
coradvsol
corpfus
xcorfus
}
EnablePolicy =
{
MinUnitEnergyUsage=60
MinEnergy=0.1
MaxEnergy=0.85 // it's best to keep this below Storage.MaxRatio
}
Storage =
{
MetalStorage = xcormstor
EnergyStorage = xcorestor
MaxRatio = 0.9 // The resource handler will build storage when Resource > ResourceStorage * MaxRatio
MinMetalIncome = 4 // minimum metal income before it builds storage
MinEnergyIncome = 80
// These maximums define the point where no more storage is build (so resources are spilled)
// They have to be multiplied by the energy income to get the real maximum:
// Max = Income * MaxStorageFactor
MaxEnergyStorageFactor = 500
MaxMetalStorageFactor = 1000
}
}
//------------------------------------------------------------------------------------------
// Force handler config
//------------------------------------------------------------------------------------------
ForceInfo =
{
DefaultSpread = 600
RushForce =
{
task = attackdefend
// the units fields always has to be a buildoptions value
units = buildoptions { wisp }
batchsize=6
category=4
level=1
minmetal=6
}
BasicForce1 =
{
task = attackdefend
// the units fields always has to be a buildoptions value
units = buildoptions { ironangel*2 wisp*3 }
batchsize=4
category=4
level=2
minmetal=14
}
}
Both these AI's gave me an unhandled exception error upon startup.. and crashed out spring.. I stopped trying other AI's since I assumed that I had set up the config files right and that perhaps there is something wrong with all AI.dll in that they dont like Air craft being the only type of units..START_UNIT1 ARMCCRUS
START_UNIT2 CORCCRUS
SIDE_NAME1 Arm
SIDE_NAME2 Core
MAX_UNITS 10000
MAX_SCOUTS 3
MAX_BUILDERS 15
MAX_BUILDERS_PER_TYPE 5
MAX_GROUP_SIZE 16
MIN_EFFICIENCY 0.1
MAX_XROW 8
MAX_YROW 8
X_SPACE 12
Y_SPACE 12
SECTOR_SIZE 100.0
MAX_SECTOR_IMPORTANCE 6
MAX_BASE_SIZE 4
SCOUT_SPEED 50.0
ARTY_RANGE 900.0
MIN_ENERGY 18
LEARN_RATE 4
AIR_DEFENCE 2