Final Year Project - Chess Engine

For my final year project at University, I chose to create a chess-playing computer in C++. The university project is now completed, but I continue to work on the program for my own personal interest. The program, named Atlas, is capable of a level of play roughly equivalent to a good amateur player.

I was awarded a first class mark of 73% for my project.


I have included below download links to the two main documents that have been produced for this project so far.

The first of these is a review of chess computer literature, detailing the main areas in which I was planning to research. This document is mostly included for the sake of completeness, though it may be interesting should you wish to learn a bit about how the algorithms for the engine run.

The second is a specification document which details the specific way in which I was planning on creating the chess engine. This document was created prior to starting work on the engine, but the main design is still fundamentally the same.

Literature Review (.pdf, 420KB)
Specification (.pdf, 305KB)


The program runs in one of two modes - either console-based or GUI. In console-based mode, the player will enter in commands such as "play e2e4" in order to manipulate the pieces on the board. This allows a simple standalone executable of the game to be distributed easily, and was also a great part of the time-planning of this project.

The second mode is GUI-based, utilising a free downloadable GUI called Arena. The engine runs in a mode that outputs commands which adhere to a standardised protocol called the Universal Chess Interface, and this allows interaction with the GUI.

Download Atlas

If you wish to try the console-based version of Atlas out for yourself, the latest executable is downloadable from the link below.

NB: Unless you have a current install of Visual Studio 2010, you will also need to download these .dll files and store them in the same directory as Atlas to ensure that it is able to run. Please note that I am licensed to redistribute these files in their unedited form.

Atlas (.exe, 247KB)
msvcp100 (.dll, 415KB)
msvcp100d (.dll, 617KB)
msvcr100 (.dll, 750KB)
msvcr100d (.dll, 1,433KB)

It is slightly more complex to get the GUI version running correctly and as such I will detail the process needed.

If you wish to see any of the code behind Atlas, then please just drop me an email or call. The details are on the Contact page.

Known Issues

Atlas is still in development, and you should therefore expect it to sometimes be a bit temperamental. For instance, it sometimes has difficulty playing legal moves when put into check. This will likely cause the .exe version to crash.

It is also worth noting that the code has not been optimised for speed. As this is a computer science project rather than a specific exercise in making a game, I have been advised that it would be best to focus on other aspects of the program. For instance, was I to be creating this with no time constraints, there would likely be some change in the basic data structure and data type usage. For example, the engine currently stores a lot of information in vectors, which could very well be leading to slowdown.