Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - keith.lamothe

Pages: [1] 2 3 ... 732
1
I actually played with seeds until I got an awesome honeycomb map with loads of really weird holes, and you can create quite an interesting effect with the holes and the patterned layout... but this probably shouldn't be happening.
You mean the "broken honeycomb" effect ZaneWolfe was talking about?  Quite intentional, actually, on a certain portion of the seeds for each planet-count.  The pattern of which AI gets which planet is going away in the next release, though.

On the mine enthusiast, I don't know why it'd be placing the mines that way, but I don't think it's necessarily a bug.  I just checked to make sure its special logic works right with dual-AI and I don't see where it wouldn't.


@ZaneWolfe: No-Tractors not disabling TDLs is a bug, yea.  I just checked the code and it's got the normal preventative measures for that, so something else could be going on.  Do you have the seed and settings?

On the map seeds and "tweaking", there's really no way to predict what a change in the seed number will do; that's kind of one of the design goals with an RNG :)


Quote
Well, congratulations Keith, your new AI changes have presented me with a challenge that has killed me over and over again: Hunter Killers + Mass Starship Disassembler Guardians. They eat all my Starships, then the HKs just kill anything that's left, and there goes my army.

I'm having more fun with this half-finished expansion than I ever have before :D
Haha, glad to hear it :)  Yea, those disassemblers are a case of malice-aforethought on my part.  The H/Ks are just brutal overwhelming firepower, and are the bulk of why if you're playing Hunter the proper response to the SF is to "hit them where they ain't" ;)  The recent AI changes make said SF go from "idle" to "heading to target" much faster than they would have a few weeks ago.

2
AI War / Re: Dump of galaxy wormholes?
« on: Today at 08:20:15 AM »
Thanks again Keith for this information -- I am having a lot of fun digging around in my save games.

Is there some step other than compression in writing and reading the compressed save files? It looks like they are base64 encoded.
Yes, I think you're right about that.  I didn't actually write the steps that take it from the "normal text" to what you see in the compressed files so I don't remember them all.  I could post those bits of the serialization/deserialization but I'm thinking you may actually be able to get those answers faster (and more completely) by using .NET Reflector (there's a free version, any recent one should work because this is actually compiled in VS despite being run in mono) on Assembly-CSharp.dll in (ai war directory)\AIWar_Data\Managed ; the deserialization (the part you're trying to emulate, at least at first) really gets going in case 12 in the switch statement in method ContinueLoadingGame in class Game, where it calls Compressor.DecompressStringGZip.

3
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 08:13:51 PM »
Is this deliberate?
Completely accidental, actually :)  I had no idea, but apparently the planets are assigned simply by going "one for me, one for you" on down the list by order of generation.

Will make it more random, thanks for pointing that out.

4
AI War / Re: Dump of galaxy wormholes?
« on: Yesterday at 07:44:24 PM »
One more question: is the save game compression done by some standard method? In other words, could it be uncompressed (or even recompressed) outside of the game?
It uses GZip.  Specifically we use Ionic.Zlib.GZipStream from Ionic.Zlib.Reduced.dll .

Quote
In theory you could even write to the planet's location fields in the save game record to perform the untangling :)

 :o
FYI, here's the first bit of the serialization code for the planet object:
Code: [Select]
        Builder.Append( this.PlanetNumber ).Append( '|' );
        Builder.Append( this.GalaxyLocationOriginalCenter.X ).Append( '|' );
        Builder.Append( this.GalaxyLocationOriginalCenter.Y ).Append( '|' );
        Builder.Append( (int)this.Type ).Append( '|' );
        Builder.Append( 0 ).Append( '|' ); //was diffuse color
        Builder.Append( this.ControllingPlayer ).Append( '|' );
        Builder.Append( this.Name ).Append( '|' );
        #region fow
        isFirst = true;
        for ( int i = 0; i < this.LastKnownControllingPlayers.Length; i++ )
        {
            if ( isFirst )
                isFirst = false;
            else
                Builder.Append( ':' );
            Builder.Append( this.LastKnownControllingPlayers[i] );
        }
        Builder.Append( '|' );
        #endregion
        #region linkedPlanets
        isFirst = true;
        foreach ( Planet p in this.LinkedPlanets )
        {
            if ( isFirst )
                isFirst = false;
            else
                Builder.Append( ':' );
            Builder.Append( p.PlanetNumber );
        }
        Builder.Append( '|' );
        #endregion

and the corresponding deserialization:

Code: [Select]
string[] stateParts = StateString.Split( '|' );

        this.PlanetNumber = Convert.ToInt32( stateParts[0] );
        this.GalaxyLocationOriginalCenter.X = Convert.ToInt32( stateParts[1] );
        this.GalaxyLocationOriginalCenter.Y = Convert.ToInt32( stateParts[2] );

        this.Type = (PlanetType)Convert.ToInt32( stateParts[3] );
        //stateParts[4]; //unused
        this.ControllingPlayer = Convert.ToInt32( stateParts[5] );
        this.Name = stateParts[6];

        if ( stateParts.Length > 7 && stateParts[7].Length > 0 )
        {
            string[] fow = stateParts[7].Split( ':' );
            for ( int i = 0; i < fow.Length; i++ )
                this.LastKnownControllingPlayers[i] = Convert.ToInt32( fow[i] );
        }

        if ( stateParts.Length > 8 && stateParts[8].Length > 0 )
        {
            string[] linkedPlanets = stateParts[8].Split( ':' );
            for ( int i = 0; i < linkedPlanets.Length; i++ )
                this.LinkedPlanetIds.Add( Convert.ToInt32( linkedPlanets[i] ) );
        }

Before anyone asks: yes, we are aware that there are massively more efficient ways to do this, and in fact our later stuff is much more efficient, but this particular bit really doesn't need the optimization and the chance of breaking something outweighs the benefit ;)

5
Been a bit over 4 days, so calling a close to this one.  Interesting how different the results were from the other two polls, the gap between the lowest and highest is very different.  I think this particular question wasn't nearly as important to players as the others.  Anyway, the winners:

11    Core Riot Control Guard Post
11    Implosion Drone Host
9    Core Arachnid Guard Post

Pain Fabrication Units shall being put to work!

Thanks for the feedback :)

6
This has run for a bit over 4 days, so going ahead and calling it (partly because my dev schedule calls for these to be in the process of implementation now) :

23    Lightning Torpedo Cruiser
21    Neinzul Combat Carrier
14    Sniper Laser Pods
12    Protector Starship
12    Zenith Battleship
11    Hydra Flame Thrower

The protector starship will probably be a little tricky due to new mechanics, but we'll see :)

Thanks for the feedback!

7
Ok, it's run over 4 days so here's the top 3 (with a tie for third) :

The Nanoswarm Fortress - 24
Flux Projector - 16
Hunter/Seeker Factory - 15
Displacement Field Generator - 15

I'll break the tie by picking the H/S F because it will be way less implementation pain ;)

Though it will need its own adjustments because stuff that isn't caused by a faction/plot/etc isn't allowed to unilaterally hunt the player from minute 1... but we'll figure something out.  My guess is that the drones will go into the SF until a certain point in the game (either clock or AIP or whatever) and then they'll come out as normal threat.  By then the player will have had time to get their footing and probably read the description on one of the drones and realize what they're dealing with.

Thanks for the feedback :)

8
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 06:22:11 PM »
Yea, on the tiny maps mapgen can get... interesting.

9
AI War / Re: Dump of galaxy wormholes?
« on: Yesterday at 06:20:52 PM »
Ah, it's right there in the save game. I had looked at this a while ago but didn't think to turn off the compression (duh).

I can get what I need from there, thanks everyone!
In theory you could even write to the planet's location fields in the save game record to perform the untangling :)

10
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 03:47:45 PM »
I was playing around with a Sniper V turret controller, and I've kind of gone backwards on my previous belief that there was too many turrets per controller. For the snipers (and spiders) at least, while they're very nice to have and do make a difference, they're not overpowering. To my not terribly experienced eyes, the balance on that controller feels good (desirable but not game breaking).

I've got a game going now with a needler controller, if I can grab that I'll do some more experiments.
Good to know.  Yea, I'm figuring that the core turret controllers enable various new forms of cheese, but that it's mostly of the mild variety that doesn't really short-circuit challenge except perhaps in a few cases where the player really takes the ball and runs with it (taking a few outpost planets and plopping down 3 or 4 controllers worth of mkV turrets on every planet in supply including a ton of AI planets, taking a massive bite out of any roaming AI force... even that wouldn't really be a problem, per se).

More importantly, I think they're fun :)

11
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 03:39:21 PM »
Did you get a chance to look at the over abundance of AI Shadow Frigates, Keith?
Yep :)  The fix is in 6.031 (which was released a little earlier today) :
Quote
* Fixed a bug in recent versions where the "offensive nemesis" component of the AI's response to human champions could spawn too many nemesis champs because the previously spawned ones were dropping out of threatfleet due to being cut off from the AI HW's, and the "how many should I spawn?" logic for that particular bit counted TF nemesis units against its cap. Now it will count normal-Threat ones too.

That won't help you against any that have already spawned, but it should keep things from getting out of control (that particular way) in the future.

12
AI War / Re: AI War Beta 6.028-6.031 "So I Rewired It" Released!
« on: Yesterday at 02:33:12 PM »
Update: 6.031 hotfix to fix some more issues discovered by the alpha, as well as some non-expansion-related bugs.

13
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 02:16:34 PM »
Oops, meant to mention: the reason popping the station on Chareras doesn't cause a response is that it's controlled by the other AI player, who doesn't have the Vengeful type.  To generate the first sample in my previous post I popped one of the Vengeful players stations.

14
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 02:13:47 PM »
@Wingflier:

Code: [Select]
Triggering Vengeful Spawn due to death of OrbitalCommandStationAI
base vengeful value of unit = 100
AIP = 47
balancing factor = 0.5
tantrum exo budget = base * AIP * balancing factor =  2350

Triggering Vengeful Spawn due to death of WarpGate
base vengeful value of unit = 50
AIP = 52
balancing factor = 0.5
tantrum exo budget = base * AIP * balancing factor =  1300

Triggering Vengeful Spawn due to death of AISpireShieldSphereGuardPost
base vengeful value of unit = 50
AIP = 52
balancing factor = 0.5
tantrum exo budget = base * AIP * balancing factor =  1300

5/20/2013 3:02:58 PM (6.030)
-----------------------------------
Populating EventAttackArmada, 3525 total points; Game Time: 0:34:21

5/20/2013 3:02:58 PM (6.030)
-----------------------------------
BattleGroup of 3525 Points
FGType SubTier Tier CostEach Count TotalCost ReferenceOnly_StrengthEach ReferenceOnly_TotalStrength
Raider Medium Drone 8 8 64 1.96 15.67
RaiderII Heavy Drone 12 4 48 3.92 15.67
Fighter Heavy Drone 12 4 48 4 16
RaiderIII Light Cutter 16 4 64 5.88 23.51
MissileShip Light Cutter 16 2 32 4 8
FighterII Light Cutter 16 2 32 8 16
FighterIII Medium Cutter 24 4 96 12 48
MissileShipII Medium Cutter 24 3 72 8 24
RaiderIV Medium Cutter 24 1 24 7.84 7.84
FighterIV Heavy Cutter 32 2 64 16 32
BomberII Heavy Cutter 32 2 64 8 16
CoreRaider Heavy Cutter 32 3 96 9.79 29.38
Cruiser Heavy Cutter 32 1 32 12 12
ZenithBombardment Light Corvette 64 4 256 24 96
CoreFighter Light Corvette 64 1 64 20 20
BomberIII Light Corvette 64 1 64 12 12
CoreSniper Medium Frigate 96 2 192 96 191.99
ZenithSiegeEngineII Medium Frigate 96 1 96 24 24
AISpirecraftShieldBearerII Heavy Cruiser 2048 1 2048 48 48
Battlegroup actual budget spent: 3456 on 50 ships (for reference that is 325.38 strength).


5/20/2013 3:02:58 PM (6.030)
-----------------------------------
Populating EventAttackArmada, 1950 total points; Game Time: 0:34:21

5/20/2013 3:02:58 PM (6.030)
-----------------------------------
BattleGroup of 1950 Points
FGType SubTier Tier CostEach Count TotalCost ReferenceOnly_StrengthEach ReferenceOnly_TotalStrength
Raider Medium Drone 8 8 64 1.96 15.67
Fighter Heavy Drone 12 4 48 4 16
RaiderII Heavy Drone 12 4 48 3.92 15.67
RaiderIII Light Cutter 16 4 64 5.88 23.51
FighterII Light Cutter 16 2 32 8 16
MissileShip Light Cutter 16 2 32 4 8
FighterIII Medium Cutter 24 3 72 12 36
RaiderIV Medium Cutter 24 2 48 7.84 15.67
MissileShipII Medium Cutter 24 1 24 8 8
Bomber Medium Cutter 24 2 48 4 8
FighterIV Heavy Cutter 32 1 32 16 16
Cruiser Heavy Cutter 32 4 128 12 48
BomberII Heavy Cutter 32 2 64 8 16
ZenithBombardmentIV Light Frigate 64 1 64 96 96
SentinelFrigate Light Frigate 64 1 64 10.11 10.11
MunitionsBoosterII Light Frigate 64 1 64 20.21 20.21
AIGuardianSpiderIV Light Cruiser 1024 1 1024 384 384
None None None 0 0 0 null null
None None None 0 0 0 null null
Battlegroup actual budget spent: 1920 on 43 ships (for reference that is 605.91 strength).


5/20/2013 3:02:59 PM (6.030)
-----------------------------------
Populating EventAttackArmada, 1950 total points; Game Time: 0:34:23

5/20/2013 3:02:59 PM (6.030)
-----------------------------------
BattleGroup of 975 Points
FGType SubTier Tier CostEach Count TotalCost ReferenceOnly_StrengthEach ReferenceOnly_TotalStrength
Raider Medium Drone 8 8 64 1.96 15.67
RaiderII Heavy Drone 12 5 60 3.92 19.59
Fighter Heavy Drone 12 3 36 4 12
FighterII Light Cutter 16 4 64 8 32
RaiderIII Light Cutter 16 1 16 5.88 5.88
MissileShip Light Cutter 16 3 48 4 12
FighterIII Medium Cutter 24 4 96 12 48
Bomber Medium Cutter 24 2 48 4 8
RaiderIV Medium Cutter 24 1 24 7.84 7.84
MissileShipII Medium Cutter 24 1 24 8 8
CoreRaider Heavy Cutter 32 2 64 9.79 19.59
Cruiser Heavy Cutter 32 2 64 12 24
BomberII Heavy Cutter 32 1 32 8 8
FighterIV Heavy Cutter 32 2 64 16 32
AIGuardianRaider Light Destroyer 256 1 256 96 96
None None None 0 0 0 null null
None None None 0 0 0 null null
None None None 0 0 0 null null
None None None 0 0 0 null null
Battlegroup actual budget spent: 960 on 40 ships (for reference that is 201.38 strength).


5/20/2013 3:02:59 PM (6.030)
-----------------------------------
BattleGroup of 975 Points
FGType SubTier Tier CostEach Count TotalCost ReferenceOnly_StrengthEach ReferenceOnly_TotalStrength
Raider Medium Drone 8 8 64 1.96 15.67
Fighter Heavy Drone 12 5 60 4 20
RaiderII Heavy Drone 12 3 36 3.92 11.75
MissileShip Light Cutter 16 5 80 4 20
FighterII Light Cutter 16 3 48 8 24
MissileShipII Medium Cutter 24 3 72 8 24
Bomber Medium Cutter 24 1 24 4 4
FighterIII Medium Cutter 24 2 48 12 24
RaiderIV Medium Cutter 24 2 48 7.84 15.67
BomberII Heavy Cutter 32 1 32 8 8
FighterIV Heavy Cutter 32 3 96 16 48
Cruiser Heavy Cutter 32 3 96 12 36
AIGuardianGravity Light Destroyer 256 1 256 96 96
Battlegroup actual budget spent: 960 on 40 ships (for reference that is 185.71 strength).

This combined force caused some trouble for the HWs defenses and may actually result in death (unattended), but I didn't let that play out before popping one of the CSG-E's:

Code: [Select]
Triggering Vengeful Spawn due to death of CoreShieldGeneratorGroupESecondary
base vengeful value of unit = 200
AIP = 52
balancing factor = 0.5
tantrum exo budget = base * AIP * balancing factor =  5200
So that shouldn't actually be fundamentally worse than the above (whose before-difficulty-adjustment total is 4950), right?

... wrong.  Y'know what else happens when you kill a CSG-E?

All the other CSG-E's (3 in this case) in the galaxy go boom at the same time.

Result: Ow.

Will adjust the CSG-B-thru-E responses ;)

15
AI War / Re: Private alpha of Vengeance expansion has started
« on: Yesterday at 01:30:10 PM »
But once again I kill 1 CSG and it sends an overwhelming force of 400 units suddenly that just wipes me out in seconds when I still only have 2 planets. Surely it wasn't intended to work like this. Doesn't it send a small force or anything when you kill guard posts and Comm Stations?
It is supposed to respond to each thing killed, yes, though if AIP is low enough the budget may be so small it fails to actually generate an exo.

Do you have a save where killing a GP does nothing, but killing a CSG does something really nasty?

Pages: [1] 2 3 ... 732