• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 15:07
CET 20:07
KST 04:07
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy7ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book20Clem wins HomeStory Cup 289
Community News
Weekly Cups (March 16-22): herO doubles, Cure surprises3Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool48Weekly Cups (March 9-15): herO, Clem, ByuN win42026 KungFu Cup Announcement6BGE Stara Zagora 2026 cancelled12
StarCraft 2
General
What mix of new & old maps do you want in the next ladder pool? (SC2) Potential Updates Coming to the SC2 CN Server Behind the Blue - Team Liquid History Book herO wins SC2 All-Star Invitational Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool
Tourneys
Sparkling Tuna Cup - Weekly Open Tournament RSL Season 4 announced for March-April StarCraft Evolution League (SC Evo Biweekly) WardiTV Mondays World University TeamLeague (500$+) | Signups Open
Strategy
Custom Maps
[M] (2) Frigid Storage Publishing has been re-enabled! [Feb 24th 2026]
External Content
The PondCast: SC2 News & Results Mutation # 518 Radiation Zone Mutation # 517 Distant Threat Mutation # 516 Specter of Death
Brood War
General
RepMastered™: replay sharing and analyzer site ASL21 General Discussion KK Platform will provide 1 million CNY Recent recommended BW games Gypsy to Korea
Tourneys
[ASL21] Ro24 Group B [ASL21] Ro24 Group C [ASL21] Ro24 Group A [Megathread] Daily Proleagues
Strategy
What's the deal with APM & what's its true value Fighting Spirit mining rates Simple Questions, Simple Answers
Other Games
General Games
General RTS Discussion Thread Nintendo Switch Thread Stormgate/Frost Giant Megathread Darkest Dungeon Path of Exile
Dota 2
The Story of Wings Gaming Official 'what is Dota anymore' discussion
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Five o'clock TL Mafia Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia
Community
General
US Politics Mega-thread The Games Industry And ATVI European Politico-economics QA Mega-thread Canadian Politics Mega-thread Russo-Ukrainian War Thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
Formula 1 Discussion 2024 - 2026 Football Thread Cricket [SPORT] Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1091 users

Towards a good SC bot - Month 2 Report

Blogs > imp42
Post a Reply
imp42
Profile Blog Joined November 2010
398 Posts
November 15 2016 16:05 GMT
#1
Towards a good StarCraft bot - Month 2 - Progress Report

Last month I pointed out several issues, such as:
- Poor development and testing environment
- Lack of setup to play two bots against each other
- Unmodifiable maps

I also promised to write how the type-safe API turned out. So, let’s go through these points:

Development and Testing Environment

Requirements towards a development and testing environment:

- Stability
Obviously, it should never crash. It should not require constant modifications.

- Fast test iterations
“Fail fast” (a term adopted from the lean startup methodology) applies here too . Hot swapping code (altering the code while it executes by rewriting the source, compiling on-the-fly and then swap it with the running code) really speeds up the development process.

- Traceability
Probably one of the most important features is a reliable way to link outcomes to causes. The “Credit Assignment” problem of development, so to speak… This mostly translates to good support for modular tests and a good debugger.

- Ease of use
It would be nice if you could achieve what you have in mind with relative ease. Without having to e.g. debug the development tools first, or do a lot of pre-processing steps. etc.

I am in the process of changing several parts in the tool chain. It probably deserves its own post in the near future. Some parts I am experimenting with, in random order:

- Eclipse IDE vs IntelliJ IDEA
- GNU Prolog for Javavs SWI-Prolog
- BwMirror 2.5
- BWAPI 4.0.2
- BWTA2
- Checkstyle / PMD
- Git / GitHub
- Gradle
- Quasar Fibers (lightweight threads for Java)
- Torch 7 / Lua (Neural Net programming)
- Weka 3 (Machine Learning)
- MaryTTS (speech synth)
- Windows 10 vs Ubuntu 16 (Mint)

In conclusion, I feel like the (lack of a good) development environment is one of the issues that holds back bot developers. Therefore, I am looking into providing such an environment out-of-the-box to lower the entry barrier for future developers.

Playing two bots against each other

Solved. Multi-instance Chaoslauncher now works fine. I can run two bots as Java processes together with two instances of Brood War on the same machine.

Unmodifiable maps

Solved. I got a version of Fighting Spirit which I could modify to allow for single-player or multi-player marines-only games.

Type-Safe API

Personally, type-safe development helps me a lot. I often find myself in a position where I could do things “the proper way”, with considerable effort. Or “cheating just a little bit” to get results faster, because “I can always do it the proper way later”. Well, “later” is usually “never” and that’s how technical debt accumulates. For most developers that means nobody else will understand their code. For me it means not even I will understand my own code two months from now. Type-safe environments enforce “the proper way” to some extent. It is definitely more difficult to cheat (circumventing your own software architecture guidelines for the benefit of a quick win), so you might as well do it the right way to start with.

To summarize, by now I am so convinced that I decided to release a type-safe Java API for BWAPI. It will probably be out early 2017.

Last but not least, a big announcement was made a couple of days ago:

Blizzard provides an API for SC2

This has of course already been discussed in the forums. No need to re-iterate all the points made. Let me just state two things:
- The statement that Brood War and StarCraft 2 are two different games is true even more so for AI / bots than for humans.
- Any researcher would agree that it is a good thing to have as many variables under control as possible.
Personally, I will stick with BW for a good while for sure. Not only do I like the strategic aspect of BW more, but I also feel uncomfortable developing against an API I cannot influence in any way (see the “stability” requirement in the development environment part above). Who knows at what point Blizzard will introduce new patches or even decide to shut down the API because the CEO woke up one day and found he valued paying customers higher than a handful of people doing fancy research.

Credits:
Thanks CardinalAllin!


50 pts Copper League
Acrofales
Profile Joined August 2010
Spain18246 Posts
November 16 2016 18:33 GMT
#2
I can't help you with the APIs, but in terms of Prolog, my experience is that running SWI Prolog through the JPL is faster and more stable than JIP, although if I understand things right, this GNU project is new and completely separate from JIP. An alternative is to generate prolog code and can run it as a separate process and just wait for its return. However, this only works if your prolog requirements are fairly large, and mostly independent of your Java code.
DarkNetHunter
Profile Joined October 2012
1224 Posts
November 17 2016 10:41 GMT
#3
I'm enjoying your series of blogs, as a complete non-programmer it's sometimes hard to follow but very much an interesting read!

I am happy you're sticking to BW even though the SC2 API is coming out.

Keep at it, looking forward to seeing the results of your development environment as it pans out!
Learn from the mistakes of others. You can't live long enough to make them all yourself.
Jukado
Profile Blog Joined May 2011
805 Posts
November 19 2016 12:09 GMT
#4
No worries, you can borrow my gamma-neutron demystifier anytime. By the way it also has a demistify setting incase you find yourself caught in a spontaneous indoor cloud formation.
Star Tale Public Domain project. Maps: (2)Gates Of Memphis, (2)Marshmallow Toast, (4)Bubbles, (4)Clay Fields, (6)Numbskull Desert. Also the Vaylu Public Domain Tileset. Also Ramp Palettes, Brood War guides and some fun stuff. Links in my profile
imp42
Profile Blog Joined November 2010
398 Posts
November 23 2016 05:01 GMT
#5
thanks all for your comments and input.
The deeper I dig the slower is the progress. For example, I have spent the last weeks taking several online classes on Neural Networks, in order to understand the concept better. This is obviously a bit of an investment, time-wise. I hope I can still provide content regularly.
50 pts Copper League
Please log in or register to reply.
Live Events Refresh
PSISTORM Gaming Misc
15:30
FSL s10 FINALS! PTB vs POG
Freeedom74
Liquipedia
Platinum Heroes Events
15:00
PHSC2 Tour S26 Cup #2
SteadfastSC234
CranKy Ducklings133
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SteadfastSC 234
LamboSC2 151
JuggernautJason65
Vindicta 23
SC2Nice 21
PattyMac 2
StarCraft: Brood War
Britney 23303
Mini 962
EffOrt 597
Shuttle 343
Soulkey 140
firebathero 124
hero 106
IntoTheRainbow 13
Dota 2
Gorgc7329
League of Legends
Reynor67
Counter-Strike
fl0m4133
byalli994
Super Smash Bros
hungrybox177
Heroes of the Storm
Khaldor516
Liquid`Hasu456
MindelVK20
Other Games
Grubby3460
summit1g2622
ArmadaUGS851
Beastyqt589
Trikslyr45
Organizations
Other Games
gamesdonequick2068
StarCraft 2
angryscii 32
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 20 non-featured ]
StarCraft 2
• printf 29
• CranKy Ducklings SOOP3
• sooper7s
• Migwel
• LaughNgamezSOOP
• IndyKCrew
• Kozan
• AfreecaTV YouTube
• intothetv
StarCraft: Brood War
• Airneanach71
• HerbMon 17
• Michael_bg 2
• Pr0nogo 2
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• lizZardDota273
League of Legends
• Jankos1716
Other Games
• imaqtpie982
• Shiphtur176
Upcoming Events
BSL
53m
RSL Revival
14h 53m
ByuN vs Maru
MaxPax vs TriGGeR
WardiTV Team League
16h 53m
BSL
23h 53m
Replay Cast
1d 4h
Replay Cast
1d 13h
Afreeca Starleague
1d 14h
Light vs Calm
Royal vs Mind
Wardi Open
1d 15h
Monday Night Weeklies
1d 20h
OSC
2 days
[ Show More ]
Sparkling Tuna Cup
2 days
Afreeca Starleague
2 days
Rush vs PianO
Flash vs Speed
Replay Cast
3 days
Afreeca Starleague
3 days
BeSt vs Leta
Queen vs Jaedong
Replay Cast
4 days
The PondCast
4 days
Replay Cast
5 days
RSL Revival
5 days
Replay Cast
6 days
RSL Revival
6 days
BSL
6 days
Liquipedia Results

Completed

Proleague 2026-03-27
WardiTV Winter 2026
Underdog Cup #3

Ongoing

BSL Season 22
CSL Elite League 2026
CSL Season 20: Qualifier 1
ASL Season 21
Acropolis #4 - TS6
2026 Changsha Offline CUP
StarCraft2 Community Team League 2026 Spring
RSL Revival: Season 4
Nations Cup 2026
NationLESS Cup
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

CSL Season 20: Qualifier 2
CSL 2026 SPRING (S20)
Acropolis #4
IPSL Spring 2026
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
IEM Atlanta 2026
Asian Champions League 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.