Entropy III v1.0 RC4 (Updated 2/19/10)

Help - Resources - AI Scripting - Grafting - Plugins - Modding Projects
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Mon Jun 01, 2009 11:18 pm

Another rep - Me zerg vs 2 T, most likely Raynor T and Kryose Terran.

Kryose Terran (brown) was recognizible since it builds a much heaver defense, practically impenetrable, than most other scripts
Image

Usually Raynor Terran (red) is recognizable by it's rather all in m+m tank push. It started heading towards my natural, but for some reason it turned somewhere else, leaving all the medics behind. Eventually I found out where the marines went-- laying waste to my remote expansion.

Image

But since Red's base would be empty, a quick counter attack would destroy it. Brown appeared to thwart my plans, but for some reason had no scan (??), leading its entire army to die to 3 lurkers.
Image

With red down, brown seemed to amass a pretty big force, but it didn't bother trying to attack or expand. And it still had no detection. :o The script may need a few tweaks since detection is pretty much critical to any player. Or maybe it didn't like the map, we'll just have to see.

Image
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Tue Jun 02, 2009 7:05 am

I would like to think that Entropy Ai represents the BEST Ai's not just the only ones available. That Brown Terran AI is pretty bad and could use some serious work before it qualifies for Entropy Ai.


Eh, I will try making a few adjustments. I do think that script may have been incomplete, though unfortunately it does look very complex and editing a complex foreign script is very annoying, as it is already very difficult to make sure my own scripts work. ;) But probably a few additions and some simplification will help.

Edit: I think I'll just have to remove it, unless someone wants to fix it up. The script is too complicated and fixing it would require rewriting very large parts.

I remember worrying about that first attack with my Terran. I wrote it so that it clears out its base just as it is expanding. I figured that would give my Terran's expo the best chance to survive. Expand while you're attacking! smile.gif Most the time ppl won't be as aggressive expanding to places so separated by their main base so early.


It's still pretty effective as losing an expansion sucks. But it really needed some turrets. I also think it'd be better to hit faster with 2 rax+ tank. Intrestingly, no AI in entropy ever does this, including Rocky and Unleaded AIs


Maybe to beat CounterZerg! smile.gif Avance wrote that script much later than this Terran and had something to test against.


That script still easily defeats most Ais in a straight up macro fight. Enemy protoss and zerg can easily defeat it by rushing, but much harder for terran to do the same. Usually my terran ai can only beat it if it stays turtled up. It also only stands a chance if it takes a fast expand, any kind of 1 base rush tends to suck. It wouldn't be hard to write a script that directly counters it (BBS, or just excessive turtling) but then it wouldn't be very effective against people or other scripts.
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Tue Jun 02, 2009 8:29 pm

No, unforunately it can't stand up to Blizz AIs. :(

Anyhow, instead of trying to fix it, I just started over again and reimagined the script. Shit happens if you write a whole bunch of lines without testing. Thanks to the power of copy and paste, I scrapped together the following, which is a very barebones script with basic counters and random builds that would work similarly to the original script's intention.

I called it Template Terran, which may make for a useful study script as it as the basic parts of a AI that works.

[spoiler]# ASC3 File generated by ScAIEdit III
#
# Script name : Terran Expansion Custom Level
# Template Terran
# Reimagined version of Kryose Random Build 1.0, by Archon_Wing
#
extdef C:/Program Files/PyMSwinEXE/unitdef.txt
TMCx(1342, 101, aiscript):

# === STARTUP COMMANDS ===

start_town()
transports_off()
farms_notiming()


# === MAX UNIT DEFINITION ===

define_max(50, Terran SCV)
define_max(100, Terran Marine)
define_max(30, Terran Medic)
define_max(30, Terran Firebat)
define_max(30, Terran Ghost)
define_max(30, Terran Vulture)
define_max(35, Terran Siege Tank<0>Tank Mode)
define_max(35, Terran Goliath)
define_max(40, Terran Wraith)
define_max(20, Terran Battlecruiser)
define_max(2, Nuclear Missile)
define_max(8, Terran Science Vessel)
define_max(5, Terran Dropship)
define_max(255, Terran Valkyrie)

build(1, command_center, 80)
wait_build(1, command_center)
build(8, scv, 80)
wait_build(8, scv)
build(1, supply_depot, 80)
build(1, barracks, 80)
multirun(scv)
multirun(cloak_detect)
random_jump(86, mech)
#random_jump(40, air) <<--- merged with mech
#infantry
multirun(moar rax)
wait_build(1, barracks)
defenseuse_gg(1, marine)
defenseuse_ga(1, marine)
defenseuse_aa(1, marine)
defenseuse_ag(1, marine)
defensebuild_gg(1, marine)
defensebuild_ga(1, marine)
defensebuild_aa(1, marine)
defensebuild_ag(1, marine)
train(1, marine)
farms_timing()
multirun(defense)
multirun(ebay_up)
multirun(tech)
train(16, marine)
random_jump(224, acad wait)
send_suicide(0)
--acad wait--
defensebuild_gg(1, marine)
defensebuild_ga(1, marine)
defensebuild_aa(1, marine)
defensebuild_ag(1, marine)
wait(200)
notowns_jump(academy, acad wait)
random_jump(183, i stage 2)
attack_add(16, marine)
attack_add(3, medic)
attack_add(3, firebat)
wait(300)
attack_prepare()
attack_do()
attack_clear()
--i stage 2--
expand(99, expansion)
train(35, marine)
train(6, firebat)
train(6, medic)
wait(200)
random_jump(201, i stage 3)
send_suicide(0)
--i stage 3--
wait(1)
notowns_jump(machine_shop, i stage 2)
defensebuild_gg(1, siege_tank)
defensebuild_ga(1, siege_tank)
defenseuse_gg(1, siege_tank)
defenseuse_ga(1, siege_tank)


expand(99, expansion)
attack_add(50, marine)
attack_add(10, medic)
attack_add(10, firebat)
attack_add(6, siege_tank)
wait(500)
attack_prepare()
attack_do()
attack_clear()
random_jump(201, i stage 4)
wait(100)
goto(i stage 3)

--i stage 4--
wait(1)
notowns_jump(science_facility, i stage 3)
wait(1)
notowns_jump(science_facility, i stage 4)
train(3, science_vessel)
wait(1)
goto(i stage 3)

--expansion--
start_town()
build(1, command_center, 80)
wait_build(1, command_center)
multirun(scv)
get_oldpeons(8)
--ebay expo--
wait(300)
notowns_jump(engineering_bay, ebay expo)
player_need(1, academy)
build(1, comsat_station, 80)
build(3, missile_turret, 80)
build(2, barracks, 30)
stop()

--ebay_up--
wait(500)

notowns_jump(engineering_bay, ebay_up)
upgrade(1, t_infantry_weapon, 60)
wait(4500)

upgrade(1, t_infantry_armor, 60)
wait(3000)
player_need(2, engineering_bay)
wait(1500)

wait_build(1, science_facility)
upgrade(2, t_infantry_weapon, 60)


upgrade(2, t_infantry_armor, 60)
wait(4500)

upgrade(3, t_infantry_weapon, 60)

upgrade(3, t_infantry_armor, 60)
stop()







--tech--
wait_build(3, barracks)
build(1, engineering_bay, 80)
build(1, academy, 80)
wait_build(1, academy)
tech(stim_packs, 30)
wait(2700)
upgrade(1, marine_range, 70)
build(1, factory, 80)
wait_build(1, factory)
build(1, machine_shop, 80)
wait_build(1, machine_shop)
build(1, comsat_station, 80)
tech(siege_mode, 30)
wait_build(4, barracks)
build(1, starport, 30)
wait_build(1, starport)
build(1, control_tower, 30)
check_transports()
build(1, science_facility, 30)
stop()











--scv--
wait_build(1, command_center)
build(1, scv, 80)
wait_build(1, scv)
build(2, scv, 80)
wait_build(2, scv)
build(3, scv, 80)
wait_build(3, scv)
build(4, scv, 80)
wait_build(4, scv)
build(5, scv, 80)
wait_build(5, scv)
build(6, scv, 80)
wait_build(6, scv)
build(7, scv, 80)
wait_build(7, scv)
build(8, scv, 80)
wait_build(8, scv)
build(9, scv, 80)
wait_build(9, scv)
build(10, scv, 80)
wait_build(10, scv)
build(11, scv, 80)
wait_build(11, scv)
build(12, scv, 80)
wait_build(12, scv)
build(13, scv, 80)
wait_build(13, scv)
build(14, scv, 80)
wait_build(14, scv)
build(15, scv, 80)
wait_build(15, scv)
build(16, scv, 80)
wait_build(16, scv)
build(17, scv, 80)
wait_build(17, scv)
build(18, scv, 80)
wait_build(18, scv)
build(19, scv, 80)
wait_build(19, scv)
build(20, scv, 80)
wait_build(20, scv)
build(21, scv, 80)
wait_build(21, scv)
build(22, scv, 80)
wait_build(22, scv)
build(23, scv, 80)
wait_build(23, scv)
build(24, scv, 80)
wait_build(24, scv)
build(25, scv, 80)
wait_build(25, scv)
stop()

--cloak_detect--
enemyowns_jump(templar_archives, detection)
enemyowns_jump(starport, detection)
enemyowns_jump(lair, detection)
wait(400)

goto(cloak_detect)


--detection--
build(1, academy, 100)
wait_build(1, academy)
build(1, comsat_station, 80)
player_need(1, engineering_bay)
--no ebay check--
wait(200)
notowns_jump(engineering_bay, no ebay check)
build(1, missile_turret, 80)
wait(300)
build(2, missile_turret, 80)
wait(300)
build(3, missile_turret, 80)
stop()

--defense--
build(1, bunker, 80)
wait_build(1, bunker)
build(2, bunker, 80)
wait(2700)
build(3, bunker, 80)
wait(3300)
build(4, bunker, 80)
stop()

--moar rax--
build(2, barracks, 80)
wait_build(2, barracks)
build(3, barracks, 80)
wait(3400)
build(4, barracks, 80)
wait(3400)
build(5, barracks, 80)
wait(3500)
build(7, barracks, 80)
wait(3300)
build(8, barracks, 80)
stop()





--armory_up--

wait_build(1, armory)
upgrade(1, t_vehicle_weapon, 50)
wait(4500)
upgrade(1, t_vehicle_plating, 50)
wait(4500)

wait_build(1, science_facility)
build(2, armory, 80)
wait_build(2, armory)
upgrade(2, t_vehicle_weapon, 40)
upgrade(2, t_vehicle_plating, 40)
wait(4500)

upgrade(3, t_vehicle_weapon, 40)
upgrade(3, t_vehicle_plating, 30)
wait(4500)

wait_train(1, battlecruiser)
upgrade(1, t_ship_weapon, 30)


upgrade(1, t_ship_plating, 30)
wait(5000)
upgrade(2, t_ship_weapon, 30)


upgrade(2, t_ship_plating, 30)
wait(5000)

upgrade(3, t_ship_weapon, 30)

upgrade(3, t_ship_plating, 20)
stop()












#mech
--mech--
wait_build(1, barracks)
define_max(8, marine)
defenseuse_gg(1, marine)
defenseuse_ga(1, marine)
defenseuse_aa(1, marine)
defenseuse_ag(1, marine)
defensebuild_gg(1, marine)
defensebuild_ga(1, marine)
defensebuild_aa(1, marine)
defensebuild_ag(1, marine)
train(1, marine)
multirun(m defense)
farms_timing()
build(1, refinery, 80)
train(2, marine)
multirun(m tech)
multirun(moar fact)
train(3, marine)
multirun(armory_up)
--fact wait--
defensebuild_gg(1, marine)
defensebuild_ga(1, marine)
defensebuild_aa(1, marine)
defensebuild_ag(1, marine)
wait(200)
notowns_jump(factory, fact wait)
defensebuild_gg(1, vulture)
defensebuild_ga(1, vulture)
train(2, vulture)
wait_build(1, machine_shop)
train(1, siege_tank)
defensebuild_gg(1, siege_tank)
defensebuild_ga(1, siege_tank)
defenseuse_gg(1, siege_tank)
defenseuse_ga(1, siege_tank)
random_jump(183, m stage 2)
attack_add(6, vulture)
attack_add(6, siege_tank)
wait(300)
attack_prepare()
attack_do()
attack_clear()
--m stage 2--
expand(99, m expansion)
train(12, siege_tank)
train(12, vulture)
wait(200)
random_jump(201, m stage 3)
send_suicide(0)
wait(1)
notowns_jump(armory, m stage 2)


--m stage 3--
wait(1)
notowns_jump(armory, m stage 2)
defenseuse_gg(1, goliath)
defenseuse_ga(1, goliath)
defenseuse_aa(1, goliath)
defenseuse_ag(1, goliath)
defensebuild_gg(1, goliath)
defensebuild_ga(1, goliath)
defensebuild_aa(1, goliath)
defensebuild_ag(1, goliath)
expand(99, expansion)
attack_add(16, siege_tank)
attack_add(16, vulture)
attack_add(16, goliath)
random_jump(37, m stage 4)
--final--
attack_prepare()
attack_do()
attack_clear()

wait(400)
goto(m stage 3)

--m stage 4--
wait(1)

notowns_jump(science_facility, final)
train(3, science_vessel)
notowns_jump(physics_lab, final)
defenseuse_gg(1, wraith)
defenseuse_ga(1, wraith)
defenseuse_aa(1, wraith)
defenseuse_ag(1, wraith)
defensebuild_gg(1, wraith)
defensebuild_ga(1, wraith)
defensebuild_aa(1, wraith)
defensebuild_ag(1, wraith)
attack_add(8, wraith)
notowns_jump(physics_lab, final)
train(8, battlecruiser)
defenseuse_gg(1, battlecruiser)
defenseuse_ga(1, battlecruiser)
defenseuse_aa(1, battlecruiser)
defenseuse_ag(1, battlecruiser)
defensebuild_gg(1, battlecruiser)
defensebuild_ga(1, battlecruiser)
defensebuild_aa(1, battlecruiser)
defensebuild_ag(1, battlecruiser)

wait(1)
goto(final)

--m expansion--
start_town()
build(1, command_center, 80)
wait_build(1, command_center)
multirun(scv)
get_oldpeons(8)
--m ebay expo--
wait(300)
notowns_jump(engineering_bay, m ebay expo)
player_need(1, academy)
build(1, comsat_station, 80)
build(3, missile_turret, 80)
build(2, factory, 80)
wait_build(2, factory)
build(2, machine_shop, 80)
stop()






--m tech--
wait_build(1, barracks)
build(1, factory, 80)
wait_build(1, factory)
build(1, machine_shop, 80)
wait_build(1, machine_shop)
tech(spider_mines, 80)
wait(2700)
tech(siege_mode, 80)
wait(2800)
build(1, engineering_bay, 80)
build(1, academy, 80)
wait_build(1, academy)

wait(2700)

build(1, comsat_station, 80)
build(2, armory, 80)
wait_build(1, armory)
upgrade(1, goliath_range, 35)
build(1, starport, 30)
wait_build(1, starport)
build(1, control_tower, 30)
check_transports()
build(1, science_facility, 30)
--m tech 2--
resources_jump(2000, 2000, air)
wait(1000)
goto(m tech 2)
--air--

build(3, starport, 80)
wait_build(3, starport)
build(3, control_tower, 80)
wait_build(3, control_tower)
tech(cloaking_field, 40)
build(1, physics_lab, 80)
stop()









--m defense--
build(1, bunker, 80)
wait_build(1, bunker)
build(2, bunker, 80)
wait(2700)
build(3, bunker, 80)
stop()

--moar fact--
wait_buildstart(1, factory)
build(2, factory, 80)
wait_build(2, factory)
build(2, machine_shop, 80)
build(3, factory, 80)
wait(3400)
build(4, factory, 80)
wait(3400)
build(5, factory, 80)
wait(3500)
build(7, factory, 80)
stop()[/spoiler]

Anyhow it made quick work of Blizz's AIs, though unfortunately it looks suspiciously similar to unleaded Terran. Oh well. =p Below is a file containing the script. The protoss and zerg are the ent prime ones.
User avatar
JH24
Posts: 323
Joined: Sat Mar 14, 2009 6:25 pm

Postby JH24 » Tue Jun 02, 2009 9:15 pm

Wow, you made this script in such a short time? Amazing!



I've downloaded your replay you posted earlier. I'm looking forward to watch it.
User avatar
Archon_Wing
Posts: 903
Joined: Wed Jul 25, 2007 11:22 pm

Postby Archon_Wing » Wed Jun 03, 2009 2:34 am

It was made in an hour or two, but some parts were copy and paste from my other script and also for the 2nd random build i just copied it twice and made the unit changes. There's probably mistakes, but as long there are no crashes, I don't really care. :lol: Like I said, I am only responsible for my own scripts.

Anyhow, Kryose's original script was supposed to go infantry, mech, or air and within those branches there were a lot of random attacks. It's probaly the most complex script I've seen, and unforunately BWAI doesn't cooperate well with them.

I will warn you btw, to avoid using wait_build/wait_buildstart commands concerning workers past the early game. The problem is that the AI is only hardcoded to build so many workers in a base and it's possible for it to be waiting for workers it will never build. For this reason, I usually put workers in a multirun past like, 10. The main exception is zerg because worker production conflicts with unit production, but usually worker production comes in batches anyways for them. The other thing is that wait_buildstart is somewhat unreliable. If you have two workers trying to build and they clash (AI does this a lot) it may consider the building it was trying to be build to be started, even if that didn't really happen.



I only did the infantry and mech parts (they have some random attacks) , and then combined the air with mech at the end of the script; I wasn't gonna write yet another branch. :) That and massing wraiths is not effective in the hands of the AI. I've uploaded a file in the previous post and you can try out some of the bwai war III reps to see how it works. I will not be editing the script, but if someone wants to bother, they can do it. This will all be there once Rocky 1.0 comes out. ;)
User avatar
JH24
Posts: 323
Joined: Sat Mar 14, 2009 6:25 pm

Postby JH24 » Wed Jun 03, 2009 7:25 am

Thanks for the advice about the wait_buildstart. So it would be best that I remove those command lines in my main thread after the start?


I download your Tempt. file. I want to play against your Terran AI. :)



EDIT: A 1 vs 1 replay against the Terran AI. I'm not a good player so 1 vs 1 is the best I can do, but I must say I really liked how the AI played. It got a very nice attack force, it's perhaps a good thing I planned to go for carriers otherwise I might have been overwhelmed. A very enjoyable game.


[attachment=1588:1.rep] (Version Tempt)
bmnbmn
Posts: 5
Joined: Thu Jan 01, 2009 3:08 pm

Postby bmnbmn » Wed Jun 03, 2009 5:26 pm

@Archon_Wing
Thx for the hard work, its lot of fun to play against the AI.
One thing i notice: the Ai has problems against Carrier attacks.
It doesn't matter whether the AI plays terran or zergs, they can't defend/counter Carrier attacks.

Return to “StarCraft Modding”

Who is online

Users browsing this forum: No registered users and 1 guest