Author Topic: Difficulty level information  (Read 2061 times)

Offline NickAragua

  • Sr. Member
  • ****
  • Posts: 281
Difficulty level information
« on: November 15, 2010, 07:12:52 pm »
So, as I was complaining on the bug tracker/patch release thread about wave sizes being freaking huge, I had this idea that maybe I was just setting my difficulty too high. However, I also realized that I don't really have anything other than an incredibly vague "certain AI tactics don't get activated until difficulty 7" and "difficulty level may be affects wave size and frequencey" understanding of what difficulty level actually does. I'm thinking that turning the difficulty level down from 7.6 to 7.3 or 7 might deal with my wave problems - but would I notice the AI suddenly becoming completely stupid?

So, as an open question (and maybe something to put up on the wiki), what does difficulty level control exactly? Is this documented somewhere already and I just couldn't find it?

Offline oddlaurence

  • Newbie Mark II
  • *
  • Posts: 18
Re: Difficulty level information
« Reply #1 on: November 15, 2010, 07:22:43 pm »
having same problem by being hit 1k+ waves like every 2 minutes at diff 7 (Ai progress 350) - that's kinda frustrating  :(

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #2 on: November 15, 2010, 07:27:36 pm »
The partial difficulties, like .3 and .6 just affect things that linearly scale, they don't affect general intelligence at all.  What size waves are you seeing at difficulty 7, and on what frequency, Nick?
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline wyvern83

  • Sr. Member Mark II
  • ****
  • Posts: 398
Re: Difficulty level information
« Reply #3 on: November 15, 2010, 07:36:38 pm »
Difficulty controls alot of things which you've already mentioned, not all of which is explicitly documented; though x4000 shares stuff he thinks of interest in the beta release threads and/or beta release notes so be sure to check them out. Here are a few I know:

- Difficulty controls spawning rates guardians. ( 4.0 Release notes: http://www.arcengames.com/mediawiki/index.php?title=AI_War_-_4.000_Release)

- Difficulty + Map size factor into the formula for maximum Hybrid Hive formation (briefly explained by Keith here: http://www.arcengames.com/forums/index.php/topic,6949.0.html)

- Difficulty factors into when the Tech level advances for waves (Official Wiki: http://www.arcengames.com/mediawiki/index.php?title=AI_War_-_AI_Techs)


Offline NickAragua

  • Sr. Member
  • ****
  • Posts: 281
Re: Difficulty level information
« Reply #4 on: November 15, 2010, 08:02:36 pm »
I started a round with difficulty 7.6, and the first two waves I am going to see were a double team with 400 bombers and 800 fighters (plus the starships). The AI progress is what you get at the start, since I haven't left my homeworld except with some scouts.

If the wave size intentional, then that's fine - since "brains" aren't really affected by incremental difficulties, I can just turn the difficulty down to 7.0 or hit the 1/2x wave multiplier switch in the future.

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #5 on: November 15, 2010, 08:26:36 pm »
Hmm, that sounds excessive on the size for your difficulty.  You should be seeing waves of more like 120 times two at that stage.  It's possible there's some sort of bug there that I'll have to hunt down in the morning (but, oddlaurence, your thing shouldn't be a bug, as the time between waves hasn't been changed and should never be 2 minutes apart even on difficulty 10 unless it's from some external source like a raid engine).

Nick, do you know what AI Types you are facing?  Possibly if they are both mad bombers or something, that would do it.
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline NickAragua

  • Sr. Member
  • ****
  • Posts: 281
Re: Difficulty level information
« Reply #6 on: November 15, 2010, 10:13:09 pm »
After letting them blow up my home command station, it turned out to be a counterspy and starfleet commander.

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #7 on: November 16, 2010, 10:55:26 am »
Okay, yeah -- the Starfleet Commander has double-sized waves.  The full breakdown on wave sizes by AI type is thus, for those curious:

Code: [Select]
public static int AdjustNumberShipsFromAIType( AIPlayer player, AIPlanet planet, int NumberOfShips,
        bool IsForReinforcement )
{
        FInt multiplier = Mat.One;
        bool isCore = planet.IsCoreAIPlanet || planet.IsHomePlanet;
        if ( planet.ControllingPlayer < Configuration.FIRST_AI_PLAYER_INDEX )
            isCore = false;

        switch ( player.AIType )
        {
            case AIType.NeinzulYoungster:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 250 );
                else
                    multiplier = FInt.FromParts( 1, 500 );
                break;
            case AIType.Mad_Bomber:
                if ( IsForReinforcement )
                {
                    if ( !isCore )
                        return 1; //only gets one ship per non-core reinforcement
                    else
                        multiplier = FInt.FromParts( 0, 250 );
                }
                else
                    multiplier = FInt.FromParts( 3, 0 );
                break;
            case AIType.Vicious_Raider:
            case AIType.Technologist_Raider:
            case AIType.Attritioner:
            case AIType.ZenithDescendant:
            case AIType.StarfleetCommander:
            case AIType.Experimentalist:
            case AIType.GravDriller:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 300 );
                else
                    multiplier = FInt.FromParts( 2, 0 );
                break;
            case AIType.The_Tank:
            case AIType.The_Core:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 300 );
                else
                    multiplier = FInt.FromParts( 0, 500 );
                break;
            case AIType.Feeding_Parasite:
            case AIType.Technologist_Parasite:
            case AIType.Bully:
            case AIType.Assassin:
            case AIType.SpeedRacer:
                if ( !IsForReinforcement )
                    multiplier = FInt.FromParts( 1, 500 );
                break;
        }

        int numberOfShips = ( NumberOfShips * multiplier * AILoop.Instance.UnitCapScale.AIShipCountScale ).IntValue;
        if ( numberOfShips < 1 )
            return 1;
        else
            return numberOfShips;
}

In light of the recent wave size changes, these ones that do SUCH huge increases as 2x or 3x wave sizes might be a little harsh.  Or not -- after all, variety is good.  What do folks think?
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline superking

  • Hero Member Mark III
  • *****
  • Posts: 1,205
Re: Difficulty level information
« Reply #8 on: November 16, 2010, 10:59:38 am »
3x is  overkill, considering that might make a normal 700 wave into a 2000+ killer wave

1x/1.5x/2x for normal/agressive/beserk AI types would probably be sufficent now that waves are much scarier

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #9 on: November 16, 2010, 11:11:53 am »
True.  I've redone it to the following for the next release:

Code: [Select]
    public static int AdjustNumberShipsFromAIType( AIPlayer player, AIPlanet planet, int NumberOfShips,
        bool IsForReinforcement )
    {
        FInt multiplier = Mat.One;
        bool isCore = planet.IsCoreAIPlanet || planet.IsHomePlanet;
        if ( planet.ControllingPlayer < Configuration.FIRST_AI_PLAYER_INDEX )
            isCore = false;

        switch ( player.AIType )
        {
            case AIType.NeinzulYoungster:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 250 );
                else
                    multiplier = FInt.FromParts( 1, 500 );
                break;
            case AIType.Mad_Bomber:
                if ( IsForReinforcement )
                {
                    if ( !isCore )
                        return 1; //only gets one ship per non-core reinforcement
                    else
                        multiplier = FInt.FromParts( 0, 250 );
                }
                else
                    multiplier = FInt.FromParts( 2, 0 );
                break;
            case AIType.Vicious_Raider:
            case AIType.Technologist_Raider:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 300 );
                else
                    multiplier = FInt.FromParts( 1, 500 );
                break;
            case AIType.Attritioner:
            case AIType.ZenithDescendant:
            case AIType.StarfleetCommander:
            case AIType.Experimentalist:
            case AIType.GravDriller:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 400 );
                else
                    multiplier = FInt.FromParts( 1, 250 );
                break;
            case AIType.The_Tank:
            case AIType.The_Core:
                if ( IsForReinforcement )
                    multiplier = FInt.FromParts( 0, 300 );
                else
                    multiplier = FInt.FromParts( 0, 500 );
                break;
            case AIType.Feeding_Parasite:
            case AIType.Technologist_Parasite:
            case AIType.Bully:
            case AIType.Assassin:
            case AIType.SpeedRacer:
                if ( !IsForReinforcement )
                    multiplier = FInt.FromParts( 1, 250 );
                break;
        }

        int numberOfShips = ( NumberOfShips * multiplier * AILoop.Instance.UnitCapScale.AIShipCountScale ).IntValue;
        if ( numberOfShips < 1 )
            return 1;
        else
            return numberOfShips;
    }
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline Winter Born

  • Hero Member
  • *****
  • Posts: 527
Re: Difficulty level information
« Reply #10 on: November 16, 2010, 12:45:12 pm »
will plan to add this thread result to the wiki.

I hope to get a new section on the relationship between armor / armor piercing / hull type / weapon type and modifiers (ZR trader, starship, etc.) going by the weekend as a key concept

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #11 on: November 16, 2010, 03:05:20 pm »
Thank you SO much for all you've been doing with that!  That has been just an enormous help!
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!

Offline superking

  • Hero Member Mark III
  • *****
  • Posts: 1,205
Re: Difficulty level information
« Reply #12 on: November 16, 2010, 03:19:10 pm »
on the subject of multiplier overkill with the new waves, the ion cannon multipliers..  ;D

Offline x4000

  • Chris McElligott Park, Arcen Founder and Lead Dev
  • Arcen Staff
  • Zenith Council Member Mark III
  • *****
  • Posts: 31,651
Re: Difficulty level information
« Reply #13 on: November 16, 2010, 03:26:37 pm »
on the subject of multiplier overkill with the new waves, the ion cannon multipliers..  ;D

Yeah, I'm not entering that discussion until next week. :)
Have ideas or bug reports for one of our games?  Mantis for Suggestions and Bug Reports. Thanks for helping to make our games better!