entelectchallenge / 2018-towerdefence Goto Github PK
View Code? Open in Web Editor NEWMain repository for the Entelect Challenge 2018 tournament
License: MIT License
Main repository for the Entelect Challenge 2018 tournament
License: MIT License
Using py -2 and py -3 is not recognized commands on Linux for python.
Rather use python2 and python3 commands
https://forum.entelect.co.za/t/questions/322/33
Test game for Tie endings:
java.lang.NullPointerException
at za.co.entelect.challenge.bootstrapper.GameBootstrapper.lambda$getGameCompleteHandler$2(GameBootstrapper.java:174)
at za.co.entelect.challenge.engine.runner.GameEngineRunner.publishGameComplete(GameEngineRunner.java:159)
at za.co.entelect.challenge.engine.runner.GameEngineRunner.processRound(GameEngineRunner.java:112)
at za.co.entelect.challenge.engine.runner.GameEngineRunner.startNewGame(GameEngineRunner.java:74)
at za.co.entelect.challenge.bootstrapper.GameBootstrapper.startGame(GameBootstrapper.java:130)
at za.co.entelect.challenge.bootstrapper.GameBootstrapper.main(GameBootstrapper.java:47)
Add the building type to the building data in the TextMap.txt.
https://forum.entelect.co.za/t/game-engine-updates/369/3
TowerDefenseRoundProcessor.java, line 114
Check/remove missile when it's speed is set to zero
Add a ReadMe file to the c# .net core starter bot for some guidance on how to get started or troubleshoot.
public class Building
{
public int Health { get; set; }
...
Building should extend Cell, so that it has access to the x-y-coordinates and playerType field
Have the console not output any console map. It can run much faster this way.
Have a "verbose" property in the config that will change this
All game-engine exceptions should be handled/logged into a file for audit purposes
in state.json files, constructionTime is 1 greater than the values in game-config.properties
in the game map in state.json, “energyPerShot” for tesla towers has a value of 0 instead of 100.
Every building and missile type should be defined in the state file, so that bots can reference that for values. Game balancing is bound to change when new features are added, this will give a concrete reference point for bots to find this info
Score based on health is calculated at the end of the match, but if health is a negative value then the score will be as well
Rather use a per damage score system (when the opponent loses health, the ally gains score). Only valid for positive health
The following info is used by the game-engine, but not by the bots. We need to remove these
buildings:
-price
-weaponDamage
-weaponSpeed
-weaponCooldownPeriod
-destroyMultiplier
-constructionScore
-energyGeneratedPerTurn
cell:
-cellOwner
https://forum.entelect.co.za/t/questions/322/42
Also add it in the textMap.txt
Add the maximum rounds number to the state.json file, so that bots can calculate when their last turn could be
Give instructions on building and packaging new changes to the bot runner and engine so that people are able to test their bots
Looks like missile damage score doesn't get the 100x multiplier as stated in the rules when hitting the base in this build (1.1.2). Ran a few games where the score was below 10k, which is the minimum with the correct multiplier.
Add a ReadMe file to the Python starter bot for some guidance on how to get started or troubleshoot.
This file should contain the bot's standard output, so that bots can express their life issues
I am having a bit of trouble running the starter-pack out of the box. I want to write a bot in Python 2.7.10.
Current PC:
./config.json
{
"round-state-output-location": "./tower-defence-matches",
"game-config-file-location": "./game-config.properties",
"verbose-mode": true,
"max-runtime-ms": 20000,
"player-a": "./starter-bots/python3",
"player-b": "./reference-bot/java"
}
./starter-bots/python3/bot.json
{
"author": "John Doe",
"email": "[email protected]",
"nickName": "Guido",
"botLocation": "/",
"botFileName": "StarterBot.py",
"botLanguage": "python2"
}
Tried the botLanguage as python3 with the same error.
The error I get is:
=======================================
Starting game
=======================================
=======================================
Starting round 0
=======================================
Bot execution failed: Cannot run program "py" (in directory "C:\Entelect\2018\111_1\starter-bots\python3"): CreateProcess error=2, The system cannot find the file specified
BotRunner Started.
File C:\Entelect\2018\111_1\starter-bots\python3/command.txt not found
BotRunner Started.
Error List: []
Player A Health=100, Energy=25, Score=5
Player B Health=100, Energy=5, Score=6
[0 0][1 0][2 0][3 0][3 0][2 0][1 0][0e0]
[0 1][1 1][2 1][3 1][3 1][2 1][1 1][0 1]
[0 2][1 2][2 2][3 2][3 2][2 2][1 2][0 2]
[0 3][1 3][2 3][3 3][3 3][2 3][1 3][0 3]
=======================================
Starting round 1
=======================================
Bot execution failed: Cannot run program "py" (in directory "C:\Entelect\2018\111_1\starter-bots\python3"): CreateProcess error=2, The system cannot find the file specified
BotRunner Started.
File C:\Entelect\2018\111_1\starter-bots\python3/command.txt not found
BotRunner Started.
Error List: []
bla
bla
bla...
Any suggestions?
Add a ReadMe file to the Java starter bot for some guidance on how to get started or troubleshoot.
We will rectify the game rules on this, so that missiles always move over buildings under construction without hindrance
...za/co/entelect/challenge/entities/Building.java
getInvertedXInstance() should use a different constructor for building. one that does not set weaponCooldownTimeLeft to 0
https://forum.entelect.co.za/t/game-runner-error/443/5
Missiles on the last column, deal double damage to player hp. The missile might not stop at the end of the map.
Missiles should move like this:
for each step in max_steps:
for each missile in missile_list:
move missile one step
Sometimes, buildings DO NOT generate missiles if they are destroyed in that round (contradictory to the rules). In the example below the A’s attack building on (2,1) will fire next round. However, there is a missile on (3,1) which destroys the building before it can fire off a missile in round 11.
=======================================
Starting round 10
=======================================
BotRunner Started.
BotRunner Started.
Error List: []
Player A Health=100, Energy=30, Score=110
Player B Health=100, Energy=25, Score=88
[0E0][1 0][2 0][3 0][3E0][2 0][1 0][0 0]
[0E1][1 1][2A1][< 1][3 1][2 1][1D1][0 1]
[0E2][1 2][2 2][3 2][3 2][2 2][1 2][0 2]
[0 3][1 3][2 3][3 3][3 3][2 3][1 3][0 3]
=======================================
Starting round 11
=======================================
BotRunner Started.
BotRunner Started.
Error List: []
Player A Health=100, Energy=14, Score=125
Player B Health=100, Energy=13, Score=103
[0E0][1 0][2 0][3 0][3E0][2 0][1 0][0 0]
[0E1][1 1][2 1][3d1][3 1][2 1][1D1][0 1]
[0E2][1 2][2 2][3 2][3 2][2 2][1 2][0 2]
[0 3][1 3][2 3][3 3][3e3][2 3][1 3][0 3]
In the next example, the attack building at 0,3 (for player B) gets to fire off its missile before it gets destroyed. This is different to what happens for player A above and in line with the rules.
=======================================
Starting round 132
=======================================
BotRunner Started.
BotRunner Started.
Error List: []
Player A Health=90, Energy=1637, Score=3261
Player B Health=25, Energy=1411, Score=3541
[0D0][1 0][< 0][3 0][3 0][2 0][<D0][0A0]
[0E1][1E1][2A1][3D1][3 1][2 1][1E1][0 1]
[0E2][1D2][2 2][3 2][3D2][2E2][<E2][0A2]
[0D3][1 3][2 3][3 3][3 3][2d3][1 >][0A3]
=======================================
Starting round 133
=======================================
BotRunner Started.
BotRunner Started.
Error List: []
Player A Health=90, Energy=1651, Score=3281
Player B Health=25, Energy=1425, Score=3560
[0D0][< 0][2 0][3 0][3 0][< 0][1D0][0A0]
[0E1][1E1][2A1][3D1][3 1][2 1][1E1][0 1]
[0E2][1D2][2 2][3 2][3D2][<E2][1E2][0A2]
[0D3][1 3][2 3][3 3][3 3][2D3][< 3][0 3]
In the state.json file, show the base amount of extra energy that a bot will receive on each round
Do not take the energy buildings into account, since they could be destroyed
Some scoring events do not match up with the rules. These results needs to be investigated
When the runner tries to run the sample java bot, there is no visible error when it fails to find the actual executable jar file. This makes it really hard to realize the actual issue.
For example, with the change in version number, the java jar file produced by the build is java-sample-bot-1.1-SNAPSHOT-jar-with-dependencies.jar
instead of the java-sample-bot-1.0-SNAPSHOT-jar-with-dependencies.jar
. The bot.json file still pointed at the old version number.
When I ran the run.bat
command there was no indication from the runner that it was failing to locate the defined jar file. Instead it just complains that no command file is present. I would have expected a big error message saying the jar file is missing or at least that the java command it must be running internally failed.
It is not intended to destroy all missiles hitting a “dead” building, or else a player could win by having their attackers fire in-phase
If 5 attackers are placed in the same row, at the correct time, they will fire 5 missiles moving in the same cell. When these 5 arrive at a weak building, then all 5 will be destroyed, although 1 missile already killed the building
Add a ReadMe file to the Kotlin starter bot for some guidance on how to get started or troubleshoot.
Some ideas in the comments about config files:
_I would really like to be able to configure:
Max Rounds
Map Size
Starting Energy
Energy Per Turn Net Of Energy buildings_
We need to discuss what properties should be moved out of the hardcoded "game-config.properties"
Add a ReadMe file to the Javascript starter bot for some guidance on how to get started or troubleshoot.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.