Spring break is over, and I have had another two meetings with my mentor and some plans moving forward.
In the last three months, I worked on a calculator application. The plan was to make a basic calculator, but it ended up becoming a full scientific calculator. It took longer than I planned, so I don’t have too much time left. In the last two meetings with my mentor, we discussed potential options for a final project. I already decided a while ago that I’m not going to be making Conway’s Game of Life, and now I made the desicion to make a chess A.I/engine instead of making my own indie strategy game for my final project. Here are a couple reasons why I made this decision:
- Depending on the game, indie games can sometimes take a really long time to make, and I don’t have too much time left.
- I am much more interested in chess right now, and I feel like it would be much more fun to make the chess engine.
I want to spend try to get the basic chess game working as quickly as possible so I have more time to make the chess engine/A.I., which is my main focus for this final project. My plan is to find an open-source or free chess game on the internet, and reuse some of the code from it to build my chess game. This is so I don’t waste much time building the chess game itself, but instead I spend more time making the chess engine.
To test the skill of my engine, I will use the website chess.com to test my chess engine against other players of various skill levels, as it is the most popular chess website and has a variety of different players which makes it a great testing environment.
To make the chess engine and the graphical user interface (GUI), I will be using Unity, a great, easy-to-use game engine. Unity only supports the coding language C#, so I’m going to say goodbye to Java for a little bit. This may sound like a big change, but C# and Java are actually almost identical to each other. C# and Java are both strongly typed, compiled, general purpose, object-oriented-programming languages. I’ve already played around with C# during spring break, and I’m fully up to speed on it. The only difference I’ve noticed are slightly different syntaxes, but this shouldn’t be too much of a problem.
My learning centre
On In-Depth night, I will be showing most of my learning in a final blog post. If possible, I’ll find a way to upload my calculator and chess game and engine and I’ll provide download links as well for any visitors to make my learning centre more interactive. I will explain a little bit on the basics of how they work and some techniques, and I’ll explain some of my learning process. I’m thinking I can do this either through a video or a slideshow, but I haven’t decided quite yet. My goal is to make it as informative yet engaging as possible so that people can learn about the basics of programming.
Update on my learning
Over spring break, I also learned a lot about Dictionaries, or as they’re called in Java, HashMaps. They are a really useful data structure, commonly used when a large data structure needs to be searched often. It works through a hash function, and if implemented well, it can have extremely fast searching times. Java also has an additional data structure, HashSets, which are similar but have a little bit more functionality.
How to have a beautiful mind
Here is a clip of me asking for clarification on a concept for the chess A.I. that I found online. The recording quality turned out quite bad this time, so I’ll provide a little transcript:
C: “The way I was looking at it online, it looked like you need to see all the legal moves, and then you evaluate them to see which one is the best, and then you need some efficient way to search through them, and then find the best one.”
S: “Yes, exactly.”
The reason I asked for clarification is because I found the idea online, and I was not sure if I understanded the idea correctly. From this, I was able to confirm the general idea of how I should go about making a chess engine. If I follow this concept well, hopefully my engine can be as efficient as possible, and I can avoid some common mistakes. This is only a general idea to follow, so there should still be a lot of flexibility in the way I actually intend to code and implement it.
C: Maybe I could just make a 2d game.
S: Yeah, you could make it 2d as well.
I haven’t actually worked with 2d much but overall it should be easier.
C: I think it’s just simpler. Isn’t there really no reason to make a 3d chess game?
S: But, with Unity there won’t be too much of a difference, I think, in terms of simplicity because Unity makes 3d stuff pretty simple.
Here is a clip of me suggesting a 2d graphical user interface instead of a 3d one. My reasoning is that it would be simpler to work in two dimensions rather than three. However, Unity does an amazing job with 3d and the A.I. would still be the same, whether in 2d or not (chess engines always work in 2d). So, I don’t think it matters too much if I make a 2d game or not and I will just use whatever is easily available online.
Thanks for reading!