Loading...
  OR  Zero-K Name:    Password:   

disable units list doesn't work for the AI

17 posts, 1168 views
Post comment
Filter:    Player:  
sort
CArankni
6 years ago
Disabling units doesn't work for the AI. I put two brutal AI's on separate teams and spectated the match.

They both built one mex and then just stood around doing nothing.

The disable list I used:
Shieldbot Factory+Rover Assembly+Hovercraft Platform+Gunship Plant+Airplane Plant+Spider+Factory+Jumpbot Factory+Tank Foundry+Amphbot Factory+Shipyard+Strider Hub+Ronin+Reaver+Knight+Sling+Scythe+Gremlin+Phantom+Imp+Iris

So the AI's should have built cloakbot factories, engineers and glaives.

Please fix. I like playing against AI's.

Thanks
+0 / -0
!setoptions disabledunits
=factorygunship
+factoryamph
+factoryspider
+factoryveh
+factoryhover
+factoryplane
+factorytank
+factoryjump
+factoryshield
+factoryship
+striderhub
+cloakheavyraid
+cloakskirm
+cloakriot
+cloakassault
+cloakarty
+cloaksnipe
+cloakbomb
+cloakjammer
+cloakaa

http://zero-k.info/Battles/Detail/496725
Works for me.
+0 / -0
CArankni
6 years ago
you disabled the same factories I did? And the brutal AI's still build the only factory remaining? As that didn't work for me.
+0 / -0
CArankni
6 years ago
You disable text is cut off, I can't see all of it
+0 / -0
Reformatted disabledunits.
A link to battle that you tried would be helpful (just like i provided): it gives such info as what exact map, game version, options were used.
+0 / -0
did u try 2 brutal ai's with the disable list i provided? it was on a brown map that alwys comes by default when starting skirmish. Titan something. one ai was top left, another bottom right.

I don't see option to upload files on here.

game version is latest as when i posted this.
+0 / -0
CArankni
6 years ago
Map is TitanDual 2.2.

Also did you try with 2 brutal AI as I described with my disable string and did you try creating multiple games? I think if the AI happens to pick the only factory available randomy then it might work, but usually it won't do this. I have seen 2 brutal AI often pick different starting factories on the exact same map, so I think the choice is random. Maybe you just happened to get the right factory randomly.
+0 / -0

6 years ago
Works for me on TitanDuel too, using different lobby for linux and the "bleeding-edge" version of the AI. But I guess the issue is in how lobby interprets and passes disabledunits params. That's why i need replay - it holds exact values. I won't be able to test Zero-K lobby in the near future.
+0 / -0
CArankni
6 years ago
Okay, I did more testing and I found some interesting things and some new bugs.

Using my string, I got it to work for one AI but not the other once. This confirms that if the AI picks the matching building randomly, it works. However this isn't reliable.

I also tried making all the names in my string all lower case and this seemed to let the AI pick any buildings, but I ran into another issue as well, so I only got this result once. Explained below.

I also tried your string and that seemed to work pretty consistently.

This indicates that I was informed wrong that I could use the in game unit names to disable them. It seems I have to use the code names. This brings me to two new bugs/enhancements:

1 BUG) there should be error checking on the disable string and the game should tell me if it's wrong and what part of it does not match an existing unit or building

2 ENHANCEMENT) You should be able to use the in game display names of units and buildings to disable them, or their code name should show up easily right after each units' name in brackets (without having to open the unit details window or have to go digging for the info).

3 BUG) Now I also ran into an issue where with 2 brutal AIs on separate teams and me spectating where the AI's would not pick a starting location and the game would time out and put them in the middle of their starting zones. They they did absolutely nothing. I went back to lobby and put in the disable string that you provided that worked before, and same behaviour, the AI's would do absolutely nothing and not pick a starting location. I had to restart the game to fix this. It seems this is unrelated to anything else, just randomly the AI's fail to load.

4 BUG) I got some game crashes with playing with the 3 versions of this disable string as well. Several times when I went to start the game, it would crash right away, but using the same string later after restart worked.

5 ENHANCEMENT) There should be a separate disable list for each team, or 1 for human players, and 1 for AI's so they can be set independently
+0 / -0
CArankni
6 years ago
lamer, is there a way I can run Zero-K in offline mode, without it going to the internet? I would love this feature, but the launcher for zero-k terminates if it can't get to the internet. I should still be able to play direct ip, lan, campaign and skirmish without internet.
+0 / -0


6 years ago
This is achieved in the campaign by passing AiOptions to the AI. These options allow per-AI unit disabling. A UI for this could be added for the AIs in skirmish or multiplayer.
+0 / -0
CArankni
6 years ago
That would be great
+0 / -0
CArankni
6 years ago
Any update on this? On disable lists per team or at least for AI vs humans.

What about why different disable strings seem to work while other do not. For eg. Specifying the in game unit name works for some things but not others.

The following DOES NOT WORK:

Shieldbot Factory+Rover Assembly+Hovercraft Platform+Gunship Plant+Airplane Plant+Spider Factory+Jumpbot Factory+Tank Foundry+Amphbot Factory+Shipyard+Strider Hub+Ronin+Reaver+Knight+Sling+Scythe+Gremlin+Phantom+Imp+Iris


The following WORKS (same as above but uses internal names):

factoryshield+factoryveh+factoryhover+factorygunship+factoryplane+factoryspider+factoryjump+factorytank+factoryamph+factoryship+striderhub+cloakheavyraid+cloakskirm+cloakriot+cloakassault+cloakarty+cloaksnipe+cloakbomb+cloakjammer+cloakaa

The following also WORKS (uses in game names):

Missile Silo+Antinuke+Big Bertha+Trinity+Zenith+Disco Rave Party+Starlight

As I stated above, there should be better error checking and telling the user if, and what can't be parsed, and either all in game names should work, or make the internal names visible in game right after the in game name so users can easily find it and know what to use to disable units.

As always great work everyone. Zero-K is a fun game. Keep the good updates coming, and please add saving and loading in multiplayer. Nothing fancy, just if you load a multiplayer save, take the user to the lobby with all settings being read only. Add player slots for all human players and let the players that join pick which human player then want to take over, then load the game :). I would really love this feature.
+0 / -0
In my opinion in-lobby proper validation requires graphical representation of build-tree: list of clickable icons, and probably remove editbox, leave maybe end-result static text string for "Very advanced users", and also add checkbox "Very advanced users". That way player doesn't have to misspell anything.
In-lobby solution doesn't require AI alterations. But it doesn't looks as fast solution either.
Alternatively or additionally AI can be enhanced to understand in-game unit names (maybe even partial names). There's an AI feature request for that, but i always thought it's impractical. Anyway, changes to the AI side will probably make it into Zero-K only some time after steam release.

WRT what should work now: CircuitAI accepts only internal unit names. Game may have its validations and interrupt attempts to build units forbidden by in-game names. That way we have AI that doesn't know about disabled units and thus tries to build it anyway, hence sometimes randomly in-game unit names works and sometimes not.

Just use internal unit names fo now, prove that you are the advanced user indeed!
+0 / -0
CArankni
6 years ago
Your explanation of why sometimes in game names work is unclear. They should all work. It's also not very intuitive how to get the code names of units.
+1 / -0
CArankni
6 years ago
So why do some in game names work, while others do not? I would expect this to be consistent, either all in game names work on none do. I would also expect that everything would be easily visible in game that is needed for the disable list (in game name or internal name).
+0 / -0
2 types of names:

1) "internal" name - unique string ID of a unit.
Ex: factoryspider, striderhub, cloakheavyraid.

2) "human-readable" name - in-game unit title, no unique restriction.
Ex: Spider Factory, Strider Hub, Scythe.

AI (Circuit) - doesn't care about human-readable strings, it checks and marks units in own memory pool as non-available only by internal name.
Game (Zero-K) - knows and cares about both human-readable and internal names. It checks and marks units in own memory pool as non-available by internal name and human-readable.

CircuitAI works like a player - sends build,move,attack commands to the game. If ZK-game gets a request to build unit marked in own lua memory as non-available - it rejects the request and does not execute build command.

a) If units are forbidden by internal name -> AI knows that unit is unavailable and sends build command only for those that are available -> ZK checks build-request and allows build command with available unit.

b) If units are forbidden by human-readable name -> AI tries to build it (the choice of units marked as available inside AI has a bit of randomness) -> ZK rejects build-request with forbidden name -> AI builder stands idle.

I still don't want to add filter based on human-readable names inside AI, because of how i think it should be: in-lobby proper validation requires graphical representation of build-options

quote:
The following also WORKS (uses in game names):

Missile Silo+Antinuke+Big Bertha+Trinity+Zenith+Disco Rave Party+Starlight

Nope, it only looks like it works because AI sends command to build those super units only in super late game. But AI will send build-commands and ZK will reject build-requests.
+0 / -0