Game Programmer

By: James Keats | December 15, 2017

The final project for Artificial Opponents is complete, and the final test/battle was... exciting, to say the least. My AI was relatively successful; it was not the best, nor the worst, although I ran into bugs during the test that never once appeared during any of my testing. We ran into other unexpected issues with almost everyone's final submission during the final test, as has often been the case in this class.

The Good (My Code)

Category: Artificial Opponents 

Tags:

By: James Keats | November 13, 2017

As previously mentioned, the next Artificial Opponents project is a four-player tank battle. The movement portion has already been completed, and so the next step is to plan the AI for things like combat and planning.

First, though, a look back at moment. In my last post, I wrote about my plans to use Context Behavior for the movement in this project. After getting a quick implementation in place (heavily based off of my previously iteration of it), I realized that it was not going to work as well as I had hoped for this project. While it worked perfectly fine in the initial sample level we were given, more complex levels left it confused and unable to move anywhere. This may be a limitation to my code and not Context Behaviors in general, b...

Category: Artificial Opponents 

Tags:

By: James Keats | November 02, 2017

The next Artificial Opponents project is going to be a tank battle. Unlike the previous two projects which were established games with known strategy and rules, the Tank Battle is going to be a real test of our ability to write a smart AI that can adapt to change. The design of the levels can change at any point, the health and damage values can change, and the points that different actions score you can change. The result is a complex game with many different variables and a lot of data for an AI to process.

The first step in this AI is going to be writing a movement system. The locomotion of the tanks is decided by differential drive kinematics. We are given two treads that we can control the speed of independently, by certain stepped quan...

Category: Artificial Opponents 

Tags:

By: James Keats | October 23, 2017

The results for the Gin Rummy tournament are in, and the results are... a little disappointing.

My AI performed extremely well during our first round of pre-testing, winning most of the games it played by a landslide. I think that might've made me a target; during the actual testing, my AI was knocked out very early, and ended up in one of the lowest tiers on the bracket. This was very surprising to me after the previous, very strong showing. I assume that at least a few of my classmates used my AI specifically to test against after the landslide win during the first test.

Category: Artificial Opponents 

Tags:

By: James Keats | October 12, 2017

General Approach

The general approach for the Gin Rummy AI closely follows what was outlined previously in my planning post.

Category: Artificial Opponents 

Tags:

By: James Keats | September 23, 2017

Our next project for Artificial Opponents is to write a Gin Rummy player. Unlike Minesweeper, where our AIs played against the “game” itself, for Gin Rummy, we will be playing against each other—which makes the competition all the more intense. Also unlike Minesweeper, I have never played Gin Rummy before, so a lot of this intro period has been spent on researching the rules of the game and strategies that players take.

In order to get the best performance from the AI, I plan to use a Utility AI system that will be able to score a series of actions and then choose an action based on whichever has the highest score when a multitude of factors have been considered.

Category: Artificial Opponents 

Tags:

By: James Keats | September 18, 2017

Our competition for the Minesweeper AIs has concluded, and the results are in!

For this competition, our board sizes were:

Category: Artificial Opponents 

Tags:

By: James Keats | September 08, 2017

General Approach

As was planned in the planning post, I approached Minesweeper in a similar way to what was outlined by Bai Li (luckytoilet) in the blog post "How to Write your own Minesweeper AI".

Category: Artificial Opponents 

Tags:

By: James Keats | September 02, 2017

General Approach

My plan for Minesweeper is to follow the general approach outlined by Bai Li (luckytoilet) in the blog post “How to Write your own Minesweeper AI” which is also linked to in the references section.

Category: Artificial Opponents 

Tags: