Code Monkey home page Code Monkey logo

ecgberht's Introduction

Ecgberht

Build status License: GPL v3

Description

Ecgberht is a Starcraft: Brood War AI written in Java.

Currently participating in SSCAIT and BASIL ladders:

Ecgberht Profile on SSCAIT

Frameworks and libs used:

Main features:

  • Only knows how to play Terran properly.
  • Capable of executing different strategies. Prefers to play Bio oriented strategies (centered around Marines and Medics) but can also add a few mechanical units to the mix.
  • Implements UCB-1 algorithm for learning best strategy to pick depending of opponent game history.
  • Gaussian Mean Shift Clustering (GMS) for simulations.
  • Can play different sounds.
  • Configurable using config.json file. You can change some debug options, enable or disable sounds, etc.

How to build

Requisites:

Gradle

With Gradle there is no need of extra dependencies as a Gradle wrapper its included in the repository, just run execute the following command at Ecgberht root folder:

./gradlew clean fatjar

Ecgberht jar file will be generated at build/libs folder.

How to run

java.exe -jar Ecgberht.jar

Its required to run the jar using the 32-bits java.exe executable.

ecgberht's People

Contributors

adakitesystems avatar jabbo16 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ecgberht's Issues

Refactor almost everything

Right now GameState its too big and does too many things, It should contain objects relegated to general tasks and manage them.

Fix repair

SCVs fail to repair buildings other than bunkers.

Test AIST S2 Map pool

Test if choke/base detection logic works fine and army doesnt derp anywhere with AIST S2 map pool:

  • (2) Benzene

  • (2) New Heartbreak Ridge

  • (3) Aztec

  • (4) Circuit Breaker

  • (4) Eddy

  • (4) Fighting Spirit

  • (4) Roadkill 1.08

Full Mech build and behaviour

  • ImproveMech Build Order (implemented right now but floats a lot of minerals).

  • Add Armory building, upgrades.

  • Goliaths.

  • Finish #12 .

  • Reactive unit composition for mech, add more goliaths if enemy air units spotted, no marines to kill air.

Improve Agents micro

List of current bugs/improvements to be done:

  • Vultures suicide too much, combat sim ignores sunkens?
  • Wraiths should be able to target/focus Overlords.
  • Wraiths should be able path around the enemy base to target workers/overlords.
  • Air agents should run from scourges if they cant kill them before getting hit.
  • Vessels dont run away if getting focused
  • Vessels irradiate Zerg Eggs ยฟ?ยฟ? ๐Ÿ’ฉ nvm It was hydralisks morphing into lurkers after getting irradiated.
  • Run away from spores.

Give and check buffer when building Factory

Factory needs some space to build the addon, currently not implemented in our BuildingMap class.
It should check the extra size required for the addon when choosing the position where to build the new Factory and also update the map with the extra addon size.

The bot currently gets bugged when the factory has no space for constructing the addon.

High ground Siege Tanks

Use of JPS to calculate best positions for sieging tanks to protect main path from enemy base

Fix Squad movements

Sometimes the marines get stuck at ramps/chokepoints when changing the "objective" to attack.
Orders should be issued instantly instead of waiting for the squad to get close to the previous objective.

Improve BioMech logic

The marines usually get too far ahead and leave the tanks undefended at the backline, this usually gets the tanks killed and the marines then exposed to the enemy units.

One improvement I have thought is to split the squads by "Bio" and "Mech", setting the "Bio" squads to protect the "Mech" squads and to not get too far from them.

Also tanks wont unsiege when enemies are too close and get killed while sieged.

Fix InfluenceMap

Something its wrong with it, Squads dont try to attack enemy buildings in sight and only move to the center of the enemy base.

Fix Scouting

Sometimes when destroying enemy main base Ecgberht doesnt send a scouter to check other BaseLocations.
Probably has something to do with the enemyBuildings Set not being empty when It should be.

Different strategies per matchup

Right now all of the bot strategies are meant for TvX, so the bot can play worse strategies vs certain matchups (like Bio vs Protoss or Terran).

Current strategies should be reworked/deleted/added so the bot plays using proper metagame and not meme strategies.

One example its the new 2PortWraith build that its good vs Zerg.

Track supply

Because of latency supply is not tracked correctly when not playing singleplayer, this messes up some timings that check supply numbers like scouting.

Add EMP vs Protoss

Not sure if worth it but It would be really easy to implement because Its similarity with the Irradiate implementation.

Improve scans and detection of cloaked units

Issue related to #6

  • Use scans only when being able to kill invisible units.

  • Squad retreating if no detection available against cloaked units.

  • Training of Science Vessels and implementing an agent for them.

Improve bunker placement heuristic

Current algorithm sometimes builds the bunker a bit far from the command center.

A nice heuristic could be a mix of key buildings distances and maybe? covered/protected tilepositions by bunker range.

Firebats against Zerg

The bot should train a few firebats when playing against Zerg, the max amount of firebats should be a fixed value, around 2-3 firebats max, may be increased/decreased depending on the amount of zerglings.

More defenses at key locations

Right now Ecg only builds one bunker and one turret at the Main Chokepoint that is closest to the Natural Region, some improvements would be:

  • Being able to place defenses at other locations like the natural base, this helps FE builds.

  • Build more turrets if getting drops or cloaked unit attacks like DTs or Lurkers, helps with #8

  • Bunker rush for BBS?

Add proper drops

Dropships are already implemented but only for island expansions (not used right now because of BWAPI bug).

Should be just adding new logic to DropShipAgent to pick units, follow a proper path to the enemy base and to drop them to cause the max amount of damage to the economy (killing workers, etc.).

Add Config File and Parsing

Add config file to allow for different config parameters like text debugging, build orders enabled/disabled, tournament mode and debug drawing.

Fix Random opponents learning

Ecgberht learning versus Random opponents is bugged because of BASIL picking a race from the start.
A fix would be generating a learning file for each opponents played race (including proper random)

Fix Attack

In some test game against the built-in AI Ecgberht stopped attacking after sending the first wave.
Got to 150+ supply but didnt attack when It should have.

AIST S2 planned improvements and fixes

Fix these current opened issues:

Other improvements/fixes:

  • Fix tanks looping (siege -> unsiege, repeat) when enemy targets are in range but not visible ๐Ÿค”

  • Vessels still run fly float into scourges ๐Ÿ˜ž

  • Vultures suicide when retreating ๐Ÿ˜ฅ

  • Implement high ground siege tanks (insert star wars prequels meme)

  • Ebay bm and proxy fac learning?? (kinda similar to SH gas steal or locutus pylon bm)

  • Medic only squads should move to closer non-medic squad instead of chilling around the nearest Command Center ๐Ÿน

  • Implement own fixed getDistance method

  • Add new memes ๐Ÿ‘

Port to BWAPI4J

Port latest version to BWAPI4J
https://github.com/OpenBW/BWAPI4J

Two main benefits from this is:

  1. Bot will be faster because of BWAPI4J caching.
  2. Being able to use BWEM instead of BWTA.

Taking advantage of this rework also complete #2 at the same time

Fix Wraiths

Related with #22, wraith logic was is borked.
Atm the wraiths just flee when there are enemies close enough to the cluster which the wraith belongs, It should consider wraith's distance to enemy units to see It if can kite any of them or one of the units are close enough to be a danger. Logic before used tried to do that but It was awful and didnt work.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.