Hello once again everybody, I hope you are all having a great week. Here’s part #2 of my Camelot The Build development blog, a board-to-digital conversion I am doing with Wotan Games.
The main difference since last time, as you might notice, is the scoring is more or less completely working now. The counters at the top show how many points the tile placed is worth (red), how many points it gains from surrounding tiles (brown/green icon), then the total for that tile (blue). There are three sets of these, representing the 3 tiles a player can place on their turn, then finally the accumulated total with an indicator to tell the player whether the score is doubled from placing 3 tiles end-to-end.
The game is progressing well, and I would estimate I am nearing the half way mark to total completion. We have the game in more or less a completely playable state, albeit with just local hotseat players. The next step I think is to add in some AI- basic at first, but something I can build on and make more complex over the course of the rest of the project.
So, this week I’ve been planning and working out how a computer can play Camelot The Build. It’s probably one of the more challenging tasks of this project- my others games up until now have not had AI with big decisions to make. This is completely different…
At time of writing I am about to implement my first ideas on how this could work. What needs to be done initially is have the ai calculate high scoring positions for it’s three tiles. This should be fairly straightforward, and just involve looping through all the possible tile locations and combinations. I’m not sure having it scan every combination is viable, and I could end up having ai with harder difficulty settings scan more combinations than an ai on an easier setting. So I will likely build a system that calculates obvious places first- using high scoring tiles (placed or in-hand) to start the analysis.
But Camelot The Build has more strategic depth than just laying the tiles with the highest score of course. We also need the ai to be wary about other players scoring off it’s placed tiles and getting more value out of them than it did. This is where things are going to get complicated! It needs to take into account the free spaces around the tiles it wants to lay by having a rough idea of the probability that the other player(s) have a tile that will score off it. This obviously needs to be more of a priority for high scoring tiles than low ones.
So, with all that in mind, I’m going to build a system where the ai assigns a value to each combination of tiles it could play. This value will consist of the number of points it can get this turn with that combination minus the risk (amount of game points + probability that other plays can score off it). Then it will order that list, and the combination of tiles with the highest value is the one it chooses. Done!
There are lots of different variables I can plug into this. Stuff like the aforementioned number of combinations it checks, how aggressively it wants to score points vs how much it wants to keep others from scoring etc. I might even make it able to screw up it’s maths a little!
There’s also the issue of the last tile being played counting double against you. This is probably something I’ll implement later- I just want to get the basics working for now. But this is going to have to be incorporated into the decision making process at some point.
The weird thing about developing all this is that I won’t know how effective it is until I’ve completed the system. Which is very unusual for me, as I usually get to see how well stuff is working as I’m making it.
So in my next update I’ll hopefully be telling you how badly my ai is beating me at the game!