Author Topic: Nightly (Windows): 05 Nov 2009 - Revision 5641  (Read 2862 times)

0 Members and 1 Guest are viewing this topic.

Offline Zacam

  • Magnificent Bastard
  • Administrator
  • 211
  • I go Sledge-O-Matic on Spammers
    • Minecraft
    • Steam
    • Twitter
    • ModDB Feature
Nightly (Windows): 05 Nov 2009 - Revision 5641
Here is the nightly for Windows on 05 Nov 2009 - Revision 5641

fso-WIN-20091105_r5641-SSE.7z
MD5Sum: 1FBD2494BAFFECD4459CFE619D7460D8

fso-WIN-20091105_r5641-SSE2.7z
MD5Sum: CC8D74BF14DD4ACA8657E30262E69A6A

fso-WIN-20091105_r5641-INF-SSE.7z
MD5Sum: EB418182B3CD1FBA3980D66876CFF42B

fso-WIN-20091105_r5641-INF-SSE2.7z
MD5Sum: CEB5D070E095989154F3C475D9AE41AA

All packages also include the PDB files necessary for Debugging and posting errors.
This now includes Release versions of FRED in all flavors.

Code: [Select]
------------------------------------------------------------------------
r5637 | portej05 | 2009-11-02 23:28:25 -0800 (Mon, 02 Nov 2009) | 1 line
Changed paths:
   M /trunk/fs2_open/code/lab/wmcgui.cpp

Fix Assert in WMCGUI.cpp (Vector subscript out of range)
------------------------------------------------------------------------
r5639 | portej05 | 2009-11-04 05:03:02 -0800 (Wen, 04 Nov 2009) | 2 lines
Changed paths:
   M /trunk/fs2_open/code/globalincs/windebug.cpp

Fix for memory debugging functions.
Totals are now more accurate!
------------------------------------------------------------------------
r5640 | karajorma | 2009-11-04 22:16:15 -0800 (Wen, 04 Nov 2009) | 1 line
Changed paths:
   M /trunk/fs2_open/code/parse/sexp.cpp
   M /trunk/fs2_open/code/weapon/swarm.cpp

Doh x2
------------------------------------------------------------------------
r5641 | Sushi | 2009-11-05 14:46:54 -0800 (Thu, 05 Nov 2009) | 1 line
Changed paths:
   M /trunk/fs2_open/code/ai/ai.h
   M /trunk/fs2_open/code/ai/aibig.cpp
   M /trunk/fs2_open/code/ai/aicode.cpp

AI Profiles entries in AI.tbl are now overrides instead of multipliers.
------------------------------------------------------------------------


***Please note: For those of you counting on the Multipliers version of the AI flags, make a version based on over-rides to test the behaviour with, but be aware that the final release code may be in multipliers or a mixed bag.
This portion of the code is still volatile and as with anything, subject to change until Final is released.
« Last Edit: November 07, 2009, 01:50:10 pm by Zacam »
Report MediaVP issues, now on the MediaVP Mantis! Read all about it Here!
Talk with the community on Discord
"If you can keep a level head in all this confusion, you just don't understand the situation"

¤[D+¬>

[08/01 16:53:11] <sigtau> EveningTea: I have decided that I am a 32-bit registerkin.  Pronouns are eax, ebx, ecx, edx.
[08/01 16:53:31] <EveningTea> dhauidahh
[08/01 16:53:32] <EveningTea> sak
[08/01 16:53:40] * EveningTea froths at the mouth
[08/01 16:53:40] <sigtau> i broke him, boys

 

Offline Fury

  • The Curmudgeon
  • 213
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
Thank you Sushi & Zacam. :) Finally got rid of those stupid multipliers.

 

Offline chief1983

  • Still lacks a custom title
  • Moderator
  • 212
  • ⬇️⬆️⬅️⬅️🅰➡️⬇️
    • Minecraft
    • Skype
    • Steam
    • Twitter
    • Fate of the Galaxy
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641

This portion of the code is still volatile and as with anything, subject to change until Final is released.


And even then if we realize something completely sucks.  Tune in next week to find out what I'm rambling about!
Fate of the Galaxy - Now Hiring!  Apply within | Diaspora | SCP Home | Collada Importer for PCS2
Karajorma's 'How to report bugs' | Mantis
#freespace | #scp-swc | #diaspora | #SCP | #hard-light on EsperNet

"You may not sell or otherwise commercially exploit the source or things you created based on the source." -- Excerpt from FSO license, for reference

Nuclear1:  Jesus Christ zack you're a little too hamyurger for HLP right now...
iamzack:  i dont have hamynerge i just want ptatoc hips D:
redsniper:  Platonic hips?!
iamzack:  lays

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
The use of overrides instead of multipliers presents a big problem for multiple ai_profiles where you want to have things like $Glide Strafe Percent: off by default but have an alternate profile where it is on.  With the multipliers you could set each AI class and then just set the defaults in the additional ai_profile.  With overrides there is no way to set up a system like this.   This build makes all these features totally useless for TBP. 
   
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras

 

Offline Fury

  • The Curmudgeon
  • 213
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
Use of multipliers poses different problem. With multipliers you're forced to have settings like $Glide Strafe Percent in ai_profiles, which takes effect in all AI classes. This is something you may not want.

Consider a situation where you do not want retail AI classes to make use of any of the new AI features, but you still want to have custom AI classes to do just that. With multipliers that is not possible. Flags like $allow vertical dodge isn't AFAIK supported in ai.tbl, but that's a minor issue really and still close enough to retail behavior.

Multipliers would probably be better for total conversions who do not use or need retail AI classes, but for mods overrides work better. Multipliers are also annoying to calculate for every single AI class and difficulty level, you just can't look at the value in ai.tbl and see what it really translates to. I prefer overrides for its simplicity.

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
I agree they are a pain to calculate but preserving retail behavior (in this case TBP final behavior) is exactly what I am trying to do.  Adding a new profile that allows the FREDder to pick if he wants to use the new glide features or not by choosing the appropriate profile.   This cannot be done with overrides. 

Another solution might be to have the toggle in ai_profiles and use overrides in AI.  So if a particular ai_profiles has the feature disabled it just ignores the overrides. 

BTW Allow vertical dodge is supported in AI.tbl  http://www.hard-light.net/wiki/index.php/Ai.tbl#AI_Profiles_Overrides
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras

 

Offline Fury

  • The Curmudgeon
  • 213
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
While getting a haircut I was thinking about a solution.

Normally ai.tbl entry is like this (taken from the wiki entry)
Code: [Select]
$Name:         Captain
$accuracy:                      0.5      0.55     0.6      0.65     0.7
$evasion:                       10,      20,      30,      40,      50
$courage:                       10,      20,      30,      40,      50
$patience:                      10,      20,      30,      40,      50
$Get Away Chance:               0.40,    0.45,    0.50,    0.55,    0.6
$Autoscale by AI Class Index:     NO
$AI In Range Time:              2,       1.6,     1.2,     0.8,     0.4
$Primary Ammo Burst Multiplier: 0.6,     0.65,    0.7,     0.75,    0.8
$Glide Attack Percent:          30,      40,      50,      60,      70
$allow rapid secondary dumbfire:  NO
$allow vertical dodge:            YES

Now, to use one AI class with multiple AI profiles, you could use something like this
Code: [Select]
$Name:         Captain
$accuracy:                      0.5      0.55     0.6      0.65     0.7
$evasion:                       10,      20,      30,      40,      50
$courage:                       10,      20,      30,      40,      50
$patience:                      10,      20,      30,      40,      50
$Get Away Chance:               0.40,    0.45,    0.50,    0.55,    0.6
$Autoscale by AI Class Index:     NO
$AI In Range Time:              2,       1.6,     1.2,     0.8,     0.4
$Primary Ammo Burst Multiplier: 0.6,     0.65,    0.7,     0.75,    0.8
$Glide Attack Percent:          30,      40,      50,      60,      70
$allow rapid secondary dumbfire:  NO
$allow vertical dodge:            YES
$Profile: CustomProfile1
$Primary Ammo Burst Multiplier: 0.7,     0.75,    0.8,     0.85,    0.9
$Glide Attack Percent:          40,      50,      60,      70,      80
$Profile: CustomProfile2
$Primary Ammo Burst Multiplier: 0,     0,    0,     0,    0
$Glide Attack Percent:          0,      0,      0,      0,      0

In above example, when AI profile called CustomProfile1 is selected, AI class uses higher $Primary Ammo Burst Multiplier and $Glide Attack Percent values, overriding those that were set above $Profile: CustomProfile. And when profile called CustomProfile2 is used, those are disabled.

How does this sound?
« Last Edit: November 07, 2009, 04:19:03 am by Fury »

 

Offline Sushi

  • Art Critic
  • 211
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
Apparently, we're damned if we do and damned if we don't. :mad: Both ways screw somebody over. I still think overrides are the lesser evil, but we need to do something about FUBAR's scenario too...

I think Fury's idea is going in the right direction, although I'd be inclined to move the profile-switch stuff to a higher level, outside of the AI classes. So the structure of AI.tbl could be something like this.

(AI Class)
(AI Class)
(AI Class)
   .
   .
   .

#AI Profile Name
(AI Class overrides)
(AI Class overrides)
#end

#AI Profile Name
(AI Class overrides)
(AI Class overrides)
#end

The initial AI classes would be the defaults. But then, if you specify an AI profile, you can specify modifications to those AI classes that only apply to specific AI profiles. All of the stuff involving profiles would, of course, be optional.

Or, a completely alternative approach would be an AI Profiles YES/NO flag that specifies whether the override or multiplier method is used.

This discussion should probably be split out of this thread, too, and moved somewhere with a bit greater visibility.

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
Not 100% certain but it seems to be a 180 from what I was proposing and I don't see how it would work with an ai_profile that doesn't have things like $Glide Attack Percent.  I do think we are on the same page though

What I was thinking was something like this:

AI profiles has 2 entries.  This is the original one:

Code: [Select]
$Profile Name:                               TBP
  
$Player Afterburner Recharge Scale:          5,    3,    2,    1.5,  1
$Max Beam Friendly Fire Damage:              0,    5,    10,   20,   30
$Player Countermeasure Life Scale:           3,    2,    1.5,  1.25, 1
$AI Countermeasure Firing Chance:            0.2,  0.3,  0.5,  0.9,  1.1
$AI In Range Time:                           2,    1.4,  0.75, 0,    -1
$AI Always Links Ammo Weapons:               95,   80,   60,   40,   20
$AI Maybe Links Ammo Weapons:                90,   60,   40,   20,   10
$AI Always Links Energy Weapons:             100,  80,   60,   40,   20
$AI Maybe Links Energy Weapons:              90,   60,   40,   20,   10
$Max Missles Locked on Player:               2,    3,    4,    7,    99
$Max Player Attackers:                       2,    3,    4,    5,    99
$Max Incoming Asteroids:                     1,    1,    2,    2,    3
$Player Damage Factor:                       0.25, 0.5,  0.65, 0.85, 1
$Player Subsys Damage Factor:                0.2,  0.4,  0.6,  0.8,  1
$Predict Position Delay:                     2,    1.5,  1.33, 0.5,  0
$AI Shield Manage Delay:                     5,    4,    2.5,  1.2,  0.1
$Friendly AI Fire Delay Scale:               2,    1.4,  1.25, 1.1,  1
$Hostile AI Fire Delay Scale:                4,    2.5,  1.75, 1.25, 1
$AI Turn Time Scale:                         3,    2.2,  1.6,  1.3,  1
$Player Shield Recharge Scale:               4,    2,    1.5,  1.25, 1
$Player Weapon Recharge Scale:               10,   4,    2.5,  2,    1.5
  
$big ships can attack beam turrets on untargeted ships:  YES
$smart primary weapon selection:                         YES
$smart secondary weapon selection:                       YES
$smart shield management:                                NO
$allow rapid secondary dumbfire:                         NO
$huge turret weapons ignore bombs:                       NO
$don't insert random turret fire delay:                  YES
$hack improve non-homing swarm turret fire accuracy:     YES
$shockwaves damage small ship subsystems:                YES
$navigation subsystem governs warpout capability:        NO
$ignore lower bound for minimum speed of docked ship:    NO
$multi allow empty secondaries: YES
$allow event and goal scoring in multiplayer: YES

As you can see there is no ability for any of the new features even defined.  An additional profile to use them could look something like this:

Code: [Select]
$Profile Name:                               TBP_Glide
  
$Player Afterburner Recharge Scale:          5,    3,    2,    1.5,  1
$Max Beam Friendly Fire Damage:              0,    5,    10,   20,   30
$Player Countermeasure Life Scale:           3,    2,    1.5,  1.25, 1
$AI Countermeasure Firing Chance:            0.2,  0.3,  0.5,  0.9,  1.1
$AI In Range Time:                           2,    1.4,  0.75, 0,    -1
$AI Always Links Ammo Weapons:               95,   80,   60,   40,   20
$AI Maybe Links Ammo Weapons:                90,   60,   40,   20,   10
$AI Always Links Energy Weapons:             100,  80,   60,   40,   20
$AI Maybe Links Energy Weapons:              90,   60,   40,   20,   10
$Max Missles Locked on Player:               2,    3,    4,    7,    99
$Max Player Attackers:                       2,    3,    4,    5,    99
$Max Incoming Asteroids:                     1,    1,    2,    2,    3
$Player Damage Factor:                       0.25, 0.5,  0.65, 0.85, 1
$Player Subsys Damage Factor:                0.2,  0.4,  0.6,  0.8,  1
$Predict Position Delay:                     2,    1.5,  1.33, 0.5,  0
$AI Shield Manage Delay:                     5,    4,    2.5,  1.2,  0.1
$Friendly AI Fire Delay Scale:               2,    1.4,  1.25, 1.1,  1
$Hostile AI Fire Delay Scale:                4,    2.5,  1.75, 1.25, 1
$AI Turn Time Scale:                         3,    2.2,  1.6,  1.3,  1
$Glide Strafe Percent Enable:         Yes
$Glide Strafe Percent:                     40,      50,      60,      70,      80
$Player Shield Recharge Scale:               4,    2,    1.5,  1.25, 1
$Player Weapon Recharge Scale:               10,   4,    2.5,  2,    1.5
  
$big ships can attack beam turrets on untargeted ships:  YES
$smart primary weapon selection:                         YES
$smart secondary weapon selection:                       YES
$smart shield management:                                NO
$allow rapid secondary dumbfire:                         NO
$huge turret weapons ignore bombs:                       NO
$don't insert random turret fire delay:                  YES
$hack improve non-homing swarm turret fire accuracy:     YES
$shockwaves damage small ship subsystems:                YES
$navigation subsystem governs warpout capability:        NO
$ignore lower bound for minimum speed of docked ship:    NO
$multi allow empty secondaries: YES
$allow event and goal scoring in multiplayer: YES

In this example I only enabled $glide strafe percent.  The line for enable may not be needed it may just be enabled automatically if the values aren't all 0.  

Sorry was replying while Sushi replied.........
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras

 

Offline Sushi

  • Art Critic
  • 211
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
My proposal would cover what you're trying to do: the only difference is that instead of modifying the new AI profile directly, you'd modify an override for it in AI.tbl. In other words, you'd just add something to AI.tbl which says "when the AI profile is X, the AI class is adjusted like Y..."

So, at the bottom of AI.tbl, you'd add something like:

Code: [Select]
#Profile TBP_Glide

$Name: Captain
$Glide Attack Percent:          40,     50,     60,    70,    80

$Name: Major
$Glide Attack Percent:          45,     55,     65,    75,    85

#end

Except with all of the AI classes now capable of gliding listed.

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
OK I see what you mean.  That would probably work well and could in the long run be more flexible. 
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras

 

Offline chief1983

  • Still lacks a custom title
  • Moderator
  • 212
  • ⬇️⬆️⬅️⬅️🅰➡️⬇️
    • Minecraft
    • Skype
    • Steam
    • Twitter
    • Fate of the Galaxy
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
Consensus!  Yay!
Fate of the Galaxy - Now Hiring!  Apply within | Diaspora | SCP Home | Collada Importer for PCS2
Karajorma's 'How to report bugs' | Mantis
#freespace | #scp-swc | #diaspora | #SCP | #hard-light on EsperNet

"You may not sell or otherwise commercially exploit the source or things you created based on the source." -- Excerpt from FSO license, for reference

Nuclear1:  Jesus Christ zack you're a little too hamyurger for HLP right now...
iamzack:  i dont have hamynerge i just want ptatoc hips D:
redsniper:  Platonic hips?!
iamzack:  lays

 

Offline Fury

  • The Curmudgeon
  • 213
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
I would like to point out that instead of having profile-specific overrides at the end of ai.tbl, it would be better if located within the AI class as in my example. There you can compare global and profile specific settings in one glance, instead of scrolling back and forth to compare values of one and same AI class.

 

Offline Sushi

  • Art Critic
  • 211
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
I would like to point out that instead of having profile-specific overrides at the end of ai.tbl, it would be better if located within the AI class as in my example. There you can compare global and profile specific settings in one glance, instead of scrolling back and forth to compare values of one and same AI class.

Maybe. FUBAR & others, what do you think?

I do think that all others being equal, the parse code will be easier if I move the profile-specific section to the end. Remember, the current AI profile isn't known at the time the tables are parsed, so I'm going to have to store all the info somewhere until mission-loading time.

I haven't yet decided if it would be better to store a separate set of AI classes for each possible AI Profile or to create a more specialized data structure for Profile-specific AI class settings.

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: Nightly (Windows): 05 Nov 2009 - Revision 5641
I think putting it all under one AI while a decent idea for a few ai_profiles will start to get really messy and harder to read the more profiles you have.  Having the default profile be the default and the overrides for all others grouped by profile would be much easier.  A third solution might be going back to only retail entries for each AI class then having a separate overrides section for each profile.  Something like this:

Code: [Select]
$Name: Coward
$accuracy: 0.8 0.85 0.9 0.95 1.0
$evasion: 40, 50, 60, 80, 100
$courage: 50, 50, 50, 50, 50
$patience: 40, 50, 60, 80, 100

$Name: Captain
$accuracy: 0.5 0.55 0.6 0.65 0.7
$evasion: 10, 20, 30, 40, 50
$courage: 10, 20, 30, 40, 50
$patience: 10, 20, 30, 40, 50

$Name: Colonel
$accuracy: 0.7 0.75 0.8 0.85 0.9
$evasion: 30, 40, 50, 70, 90
$courage: 30, 40, 50, 70, 90
$patience: 30, 40, 50, 70, 90

$Name: General
$accuracy: 0.8 0.85 0.9 0.95 1.0
$evasion: 40, 50, 60, 80, 100
$courage: 40, 50, 60, 80, 100
$patience: 40, 50, 60, 80, 100

$Name: Perfect
$accuracy: 1.0 1.0 1.0 1.0 1.0
$evasion: 100, 100, 100, 100, 100
$courage: 100, 100, 100, 100, 100
$patience: 100, 100, 100, 100, 100

#Overrides

$Profile:   TBP
$Class:    Captain
+Glide Attack Percent:          20,     30,    40,    50,    60
$Class:    General
+Glide Attack Percent:          60,    75,     85,    95,    100

$Profile:    Glide
$$allow vertical dodge:            YES
$Class:    Captain
+Glide Attack Percent:          40,     50,     60,    70,    80
$Class:    General
+Glide Attack Percent:          60,    70,     80,    90,    100

$Profile:    Multi
$allow vertical dodge:           YES
$Class:    Captain
+Glide Attack Percent:          45,     55,     65,    75,    85
$Class:    General
+Glide Attack Percent:          60,    70,     80,    90,    100


$End

So it's like reading a mini AI profile for each AI class.  You could even copy all the AI profile settings that can be changed to each override even if you don't change them for ease of reading.   
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras