Winter Time and Fine-Tuning ML Agents

Howdy! I hope everyone is enjoying their march into winter as much as I am. Living in Michigan on the western edge of my time zone, it has started to get pretty dark, pretty early, but we finally started seeing some snow recently. I also be came an uncle! While my family and I have to be a little cautious and hands off with my sister’s new kid, it feels great to have such a big source of happiness come about in an otherwise sort of tough year.

On the project side of things, my capstone group has moved on to fine-tuning and perfecting our ML agent. Essentially, we’re just tweaking its observations bit by bit so we can get it to learn more effectively. It actually catches on quite quickly in some of our tests, though it has retained this hilarious jitter behavior throughout development. I think it’s primarily due to the limited (2) inputs that it has available, as shoots rapidly left and right, being 2 of the 3 things that its able to do. It also seems to like the left side of the screen quite a bit more than the right side, though we haven’t been able to sort out any kind of reason for that bias. All together, it’s coming along swimmingly, and I am ever grateful to my excellent group mates that have contributed their best efforts to our project.

ML-agent Playground

This week, my capstone team and I created our machine learning agent that will play our Breakout clone! There aren’t too many observations necessary to train it successfully, and each round of breakout provides a ton of rewards and punishments, so I expect training to go pretty quickly once we have all of the observations ironed out.

To learn about ML-agent implementation, specifically in Unity, I took a look through the awesome and exhaustively documented Unity-Technologies ml-agent learning environment repository at This resource is excellent for playing around in Unity and learning a variety (18 environments!) of ways to implement basic observations and methods for testing agents. My favorite of them is probably the 3DBall example, where a series of cubes (the agents) would rotate to keep a ball (the target) from rolling off of them. This one is cool because of how it translates the velocity and position of the ball into the required speed and angle of rotation for the cube. The first few tests look like the agent has no idea what’s going on, and it’s cool to see it steadily catch the hang of the game.

If you’re reading this, check out that repo for yourself! Making an AI play a game is a weirdly fun game in and of itself!

Post Halloween Update

Hey! I hope everyone had a fun and safe Halloween! In Michigan, where I’ve lived all my life so far, this is about when we start getting our first snow and it gets VERY dark by 7pm. At the very least, my car door is pretty consistently frozen shut now when I go to open it in the morning. However, with the passing of Halloween, we have entered what I and many radio stations all over the country consider the Holiday Season. Soon we’ll be chowing down on turkey and stuffing!

This week marks the midpoint for development on my capstone project, and so far my team and I have successfully made a functioning Breakout clone. That is, you can now win and lose, so it feels much more like a game now! The second half of this project promises to be a bit more challenging, as it involves creating and training a machine learning agent in Unity to play our now fully developed game. I really want to put my nose to the grindstone here and finish strong on the 2nd half of this capstone. Since this will be my last class for this degree, I’d like to end on as successful of a note as I can muster.

In other news, all of my recent free time has been eaten up by the newest entry in the Age of Empires series, after it’s 10 year(?) hiatus. I’m loving the current direction, especially the “history education”-ish focus of the campaigns. Playing out those old medieval campaigns was a huge draw when I was a kid, and I can still get into it today.

Project progress! But also movies and games.

This week has been a bit slower on the project progress front. Partly due to the apparent difficulty of implementing a Game Over screen for our Breakout clone, but also because of all the fun distractions this week.

I finally got to go out to a movie theater again to see Dune! I haven’t quite made my way through the first book yet, but I definitely enjoyed that movie. Then, today actually, we were also graced with the 4th entry in the Age of Empires series, which has a special place in my heart. My girlfriend and I have also picked up this cute little fishing game, Moonglow Bay. It’s fun, relaxing, and has a sort of Stardew Valley vibe to it.

Back on the subject of the project, we are very nearly done with the complete functional Breakout game itself. By the end of this weekend, I’ll have the win and lose screens implemented, which should technically complete the single player portion of the game! I really appreciate the talent and work ethic of my team. Communication is super fluid through Discord and our Sunday meetings, and it feels like we’re all contributing well to this fun capstone.

Project Progress and Other Thoughts

Development on the capstone is going strong! I gained much more familiarity with Unity’s UI over this past week, as I added scripts to the ball and paddle of my team’s Breakout clone. Given our progress so far, I’m optimistic that we’ll get to start working on our machine learning agent soon.

I’m actually happy that I got to work on this Breakout capstone project specifically since, though I haven’t been able to devote the time that I’d like, I’ve always wanted to make games as a hobby. Now, after having an excuse, and obligation, to work in Unity throughout the week, I’m really enjoying finally using one of the more popular tools of the game-making trade. I don’t think I’d ever sign on to pursue game development as a full time career, but seeing the success of some single-developer games like Stardew Valley makes that effort look very satisfying.

I’m also finding just working in Unity to be overall very smooth. I really enjoy the responsiveness of dynamic adjustments to component values while the game is running. As long as the scripts compile, there are a plethora of interesting values to tweak just using a slider or number field.

Explorations in Unity

This week marked the official start of my group’s work on the Unity portion of our capstone. That is, creating the Breakout game replica that our ML Agent will be trained to play.

Over the course of this week, I’ve been getting familiar with Unity, as this is actually my first time developing in it. I’ve been really enjoying it so far! I’ve gotten the hang of the basic features of the interface so far, as well as adding and configuring 2D game objects.

Current game object arrangement.

After starting work on the Breakout replica and gaining a lot of confidence with Unity, I’m excited to get working on the scripts for the game so that I can get to testing gameplay. The sooner we can get our game built, the more time we have to work on our ML-Agent, which I expect to be the more challenging aspect of the project.

First post!

To anyone reading this, hello! My name is Nick Charney, and this is my blog dedicated to cataloguing my journey through my CS467 capstone course.

First though, I’d like to introduce myself! I live in Ypsilanti, Michigan with my dog Bo, and I currently work in desktop support at the University of Michigan. I originally graduated from UM with a degree in biology but, after 2 years as a lab manager in a liver disease medical lab, I decided to pivot and shoot for new career opportunities. That led me here to OSU a little over 2 years ago! I ended up needing to take a break from the program through 2020 due to how hectic the pandemic made my life then, but I’m excited to jump back in and finish strong!

I’ve held a passion for video games since I picked up my first Gameboy Color in 1998, and I’d love to get into game development as a hobby. With that said, I filled out the project selection survey pretty heavily leaning towards projects that involve some form of gaming component. To my future partners, I hope we have a great time struggling and learning our way through this term!