1 |
2 types of names:
|
1 |
2 types of names:
|
2 |
\n
|
2 |
\n
|
3 |
1) "internal" name - unique string ID of a unit.
|
3 |
1) "internal" name - unique string ID of a unit.
|
4 |
Ex: factoryspider, striderhub, cloakheavyraid.
|
4 |
Ex: factoryspider, striderhub, cloakheavyraid.
|
5 |
\n
|
5 |
\n
|
6 |
2) "human-readable" name - in-game unit title, no unique restriction.
|
6 |
2) "human-readable" name - in-game unit title, no unique restriction.
|
7 |
Ex: Spider Factory, Strider Hub, Scythe.
|
7 |
Ex: Spider Factory, Strider Hub, Scythe.
|
8 |
\n
|
8 |
\n
|
9 |
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.
|
9 |
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.
|
10 |
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.
|
10 |
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.
|
11 |
\n
|
11 |
\n
|
12 |
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.
|
12 |
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.
|
13 |
\n
|
13 |
\n
|
14 |
a)
If
units
are
forbidden
by
internal
name
->
AI
knows
that
factory
is
unavailable
and
sends
build
command
only
for
those
that
are
available
->
ZK
checks
build-request
and
allows
build
command
with
available
unit.
|
14 |
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.
|
15 |
|
15 |
|
16 |
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
unit
stands
idle.
|
16 |
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.
|
17 |
\n
|
17 |
\n
|
18 |
I still don't want to add filter based on human-readable names inside AI, because of how i think it should be: [url=http://zero-k.info/Forum/Post/183475#183475]in-lobby proper validation requires graphical representation of build-options[/url]
|
18 |
I still don't want to add filter based on human-readable names inside AI, because of how i think it should be: [url=http://zero-k.info/Forum/Post/183475#183475]in-lobby proper validation requires graphical representation of build-options[/url]
|
19 |
\n
|
19 |
\n
|
20 |
[q]The following also WORKS (uses in game names):
|
20 |
[q]The following also WORKS (uses in game names):
|
21 |
\n
|
21 |
\n
|
22 |
Missile Silo+Antinuke+Big Bertha+Trinity+Zenith+Disco Rave Party+Starlight[/q]
|
22 |
Missile Silo+Antinuke+Big Bertha+Trinity+Zenith+Disco Rave Party+Starlight[/q]
|
23 |
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.
|
23 |
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.
|