Capstone Project Blog

Blog Post #4: New Technologies

In-game screenshot of our app

At this point, our project is well underway in the development process. Our 1-player game mode is mostly complete, with just a few minor bug fixes left (peep the screenshot above!). Over the past week I’ve been learning how to leverage Unity’s ML-Agents toolkit to implement an AI opponent for our 2-player game mode. This is a new technology for me, so I wanted to spend some time to describe my process for learning new technologies.

I typically like to have a somewhat well-rounded understanding of what I’m working with before getting into the nitty gritty details of what my specific project requires. As such, I find reading or watching an “Introduction to …” tutorial on the web or YouTube to be a great start. Assuming a good resource is found, this is an excellent way to get your feet wet in learning the basics of a new technology. Having a basic understanding of the new technology is then usually enough for me to start attempting some practice projects or looking through example code. Afterwards, I typically feel confident enough to tackle my specific project at hand, and simply look-up information on an as-needed basis for when I run into issues.

The above process has worked well for me in this project, and has helped me learn C#, Unity, and Unity’s ML-Agents toolkit, and I expect to be using it well into the future for any other endeavors I may have.

Blog Post #3: Project Start

Source: https://unsplash.com/photos/y5_mFlLMwJk

After all that project planning and setup, we’ve finally started implementing the actual project! It’s been a busy (but fun) past two weeks. I’ve been in charge of implementing the paddle and bricks, so I’ve been working hard on those. I found some free assets online (over at https://kenney.nl/) and adjusted some of those for our project.

The paddle wasn’t too difficult to implement, but I had to ensure that it didn’t fly off the screen by clamping it to the game’s boundaries. For the bricks implementation, I had a bit of fun with Unity’s Particle System and created a brick destruction effect whenever a brick was destroyed. I had to make some changes to our image assets to make the color work properly, since it works best if Unity sets the sprite color itself, which means that our assets need to be grayscale, so I had to do some image editing for that. But overall it turned out really well, and the effect adds a nice touch to the game. After finishing with the paddle and bricks, I also began working on the level generation, and implemented a procedural level generation system via a levels.txt file. When the game starts, it reads the levels.txt file and stores the level information, which is then used whenever a level needs to be generated.

My teammates have been busy also, and have created the ball, walls, and UI for the game. Overall, everything is coming along nicely and our 1-player mode is nearing completion. There are a couple features that still need to be added, but our timeline matches the project plan timeline well so far. We’ve been holding regular Discord meetings (1-2x weekly) for planning and catch-up, which has worked well so far.

Blog Post #2: Project Planning & Setup

Source: https://unsplash.com/photos/pREq0ns_p_E

Following up with my previous post, I did in fact get placed into an ML Breakout team! We met up a couple of times last week to iron out our Team Standards and our Project Plan. So far so good!

In accordance with the ML Breakout project specifications, our team will be using Unity to create the game and Unity ML-Agents / TensorFlow for the AI/ML aspect of our project. The primary programming language we will be using is C#, which is the standard language for Unity projects. We will also be using Git/GitHub for version control and Jira for task management. Our team will be using both Visual Studio and Visual Studio Code for development.

I spent the last week learning the basics of C# and feel confident in getting started. The next learning step for me is to learn the basics of Unity and create a prototype of Breakout in Unity using C#!

Blog Post #1: Intro

Source: https://unsplash.com/photos/m3hn2Kn5Bns

Hey everyone! My name is Kai and I’ll be blogging about my Capstone Project journey here. I’m in my final quarter at Oregon State University and will be working in a team to build a capstone project to wrap up the Computer science program that I’m in.

I’m hoping to get placed into the ML Breakout project since that project aligns very closely with my interests. In this project, we build Atari’s Breakout in Unity and implement ML algorithms to create an AI opponent. So far in my education, most of my classes have focused on Python, with some branching out to cover JavaScript, C/C++, etc. A big motivation for me choosing the ML Breakout project is so that I have an excuse to learn a new language, C#, and leverage it to create an interesting project. I’m a huge fan of gaming and would love the opportunity to create a game with AI using Unity!

In addition to learning a new language, the ins and outs of Unity, and how to leverage AI/ML, I’m also hoping to gain more experience working in teams using methodology such as Agile Scrum and more generally, with the SDLC overall. I’m excited about this journey and can’t wait to get started!

Leave a Reply

Your email address will not be published. Required fields are marked *