Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
a91dc18
Largely working version of Conquest, using GUI.
Oct 5, 2024
4fab05c
Make killed troops disappear from the board
Oct 5, 2024
0e3969d
Fix issue of not being able to select troop after applying command
Oct 5, 2024
1eaae4e
Implement what _should_ work for correctly showing the decks
Oct 7, 2024
66db64d
Merge branch 'master' into conquest
Oct 7, 2024
ea06692
Make RandomPlayer work correctly, as a setup to implement MCTSPlayer
Oct 9, 2024
abf6572
Split up boilerplate action code into CQAction; optimize UI buttons
Oct 11, 2024
a4ea186
Work off some TODOs, clean up some code
Oct 14, 2024
767344a
Implement A* for distance calculations, apply to where needed
Oct 15, 2024
f8f516d
Add heuristic score and actual score
Oct 15, 2024
5491a45
Allow double clicking to perform the primary action for that selection
Oct 15, 2024
beb509b
Add different colors for different players
Oct 15, 2024
31e24b8
Move utility functions to more appropriate locations
Oct 16, 2024
f80e661
Clean up some code, fix some issues with copying.
Oct 17, 2024
77ff41b
Fix minor issue causing null exception
Oct 17, 2024
36fbee5
Small tweaks for GUI, fix small bug, add MCTS config json
Oct 21, 2024
c84f33a
Make selected troop get correctly highlighted; better heuristic score
Oct 22, 2024
80a6ad2
Some parameter search code, but not sure if it works fully
Oct 23, 2024
36596cc
Version actually used to perform parameter tests
Oct 23, 2024
0d44abc
Implement game tuning: allow different board setups to compete
Nov 1, 2024
d25983b
Fix order of default troops based on in-game default
Nov 4, 2024
6bff4e6
Proof of Concept: Allow RunGames to be run in parallel
Nov 5, 2024
d7ee875
Functioning parallelization for RunGames
Nov 5, 2024
2909cc1
Split off activating a tournament after ParameterSearch
Nov 7, 2024
0233c8d
Implement parallelization for ParameterSearch
Nov 7, 2024
9f4e619
Separate recursive matchup generation to separate method
Nov 8, 2024
e0e31ec
Allocate only # of threads needed when doing ParameterSearch
Nov 8, 2024
b42f4b4
Correct mistake in RunArg help string
Nov 8, 2024
b6ed36d
Condense duplicate code into a single wrapper method
Nov 8, 2024
1ebe068
Add some more useful output when verbose / debugging
Nov 11, 2024
5a9ccc5
Modify heuristic, change json.
Nov 12, 2024
9ae43bd
Several changes to optimize the game, heuristic changes, and small fixes
Nov 15, 2024
43e02de
Reinforce .equals() and .hashCode() checks
Nov 15, 2024
2836bc6
Some search space optimizations for MCTS
Nov 20, 2024
8dca90d
JSON updates and QOL changes for some files; small bugfix
Nov 23, 2024
ac7904d
Make game deterministic for its sole random action
Nov 23, 2024
177a9c6
Working on improvements in selecting actions by creating custom player
Dec 2, 2024
580568f
Synchronised Metrics and FeatureListeners
hopshackle Dec 15, 2024
01f3bdf
WIP commit
Dec 23, 2024
8e10f97
Small fix
Dec 23, 2024
cfad411
WIP updates to the MCTS agent and the heuristic
Jan 3, 2025
0133592
Working demonstration of alternative MCTS agent
Jan 7, 2025
999f7f1
Small further improvements
Jan 8, 2025
e055f54
WIP. Saving before making some bigger changes.
Jan 22, 2025
d759897
Not the most efficient but at least it works
Jan 23, 2025
dea40f3
Some minor fixes and removing of debug messages
Jan 27, 2025
d3be8da
Merge branch 'master' into conquest
Jan 27, 2025
78deedb
Fix issues causing build failure
Jan 27, 2025
c1c6bb2
WIP implementing baseline RandomSearch for comparison
Jan 28, 2025
f5e3f9a
Merge branch 'master' into conquest
Jan 28, 2025
8e5bcaa
Implement working RandomSearch player
Jan 30, 2025
f44b725
Configuration that seems to work pretty well. Setup for ParameterSearch
Feb 3, 2025
60ba4de
Merge branch 'master' into multithreading
Feb 3, 2025
6dbb478
Merge branch 'multithreading' into conquest
Feb 3, 2025
b60ca0a
Fix unfinished merge
Feb 3, 2025
3eb7ad1
Merge branch 'master' into HEAD
Feb 3, 2025
cd25564
Merge branch 'multithreading' into HEAD
Feb 3, 2025
88bc876
Merge branch 'conquest' of github.com:Joeytje50/TabletopGames into co…
Feb 3, 2025
b9869ba
Merge branch 'multithreading' of github.com:Joeytje50/TabletopGames i…
Feb 3, 2025
d4effd0
Small fix
Feb 3, 2025
3d20981
Game score to actual 1 or 0 result
Feb 4, 2025
f6d3e0a
Fix typo that broke RR Tournaments
Feb 4, 2025
6b001e0
Fix issue caused by faulty merge
Feb 6, 2025
9e8010b
Merge branch 'multithreading' into conquest
Feb 6, 2025
1106333
Fix check to see which player wins
Feb 6, 2025
b06bc18
Attempt to optimize the game setups
Feb 7, 2025
a8e83a2
Fix issue where the last 2 remaining troops both got chastised.
Feb 17, 2025
2d6eec4
Fix another chastise+WoF issue
Feb 18, 2025
6f53225
Create JSON file for each setup, to facilitate round robin tournament
Feb 19, 2025
7417af1
Re-size to original 20x20 game
Feb 20, 2025
89a42f8
Event listener to analyze all moves made
Feb 24, 2025
b039752
Fix newlines for some configurations, set default to empty setup
Feb 27, 2025
a4ab588
Log kills as ACTION_CHOSEN to end up in the same log file
Mar 1, 2025
d4812d8
Merge branch 'master' into conquest
Mar 1, 2025
fd76b07
Merge branch 'master' into conquest
Mar 1, 2025
9dc597e
Improve reporting by specifying selected troop / target troop
Mar 5, 2025
3f31af3
Revert "Improve reporting by specifying selected troop / target troop"
Mar 19, 2025
dfb160b
Fix ShieldWall issue independent of the reporting changes
Mar 19, 2025
2a9d1ba
Minor change to troop setup, flipping symmetries
Apr 15, 2025
eadc9af
Fix small issue with counterattacks
Apr 23, 2025
10ab899
Some small unimpactful tweaks in advance of creating PR
May 9, 2025
3b83081
Remove multithreading in preparation for PR
May 9, 2025
acaecb8
Change Game.java to make it run with 2 players for Conquest
May 9, 2025
c2af3ad
Merge branch 'master' into conquest-standalone
May 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added data/conquest/Battle Cry.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Bombard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Charge.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Chastise.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Regenerate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Shield Wall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Stoicism.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Vigilance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/Winds of Fate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added data/conquest/unknown.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/AntiMelee.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 28
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/AntiRush.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 2
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/BombardSetup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 6
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/ChampionMage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 10
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/Championeer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 11
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/ChampioneerKiller.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 12
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/Default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 0
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/DefaultVariant1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 8
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/DefaultVariant2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 9
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/DefaultVariantArcher.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 7
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/Devastation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 13
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/FakeBombard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 14
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/FootySpam.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 3
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/GlassCannon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 20
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/HalberderHedge.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 24
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/HalberderHedgeVariant.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 25
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/HalberderPure.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 30
}
21 changes: 21 additions & 0 deletions json/experiments/Conquest/Setups/HealthOverDamage.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"rolloutIncrementType" : "TURN",
"rolloutTermination" : "END_TURN",
"rolloutLength" : 4,
"actionHeuristic" : {
"class" : "games.conquest.players.CQRandomSearchHeuristic"
},
"rolloutType": "PARAMS",
"rolloutPolicyParams" : {
"class" : "players.simple.BoltzmannActionParams"
},
"FPU" : 10.0,
"K" : 0.5,
"class" : "players.mcts.MCTSParams",
"maxTreeDepth" : 3,
"budget" : 3000,
"treePolicy" : "AlphaGo",
"reuseTree" : true,
"instantiationClass": "games.conquest.players.CQSetupPlayer",
"omaVisits": 16
}
Loading