GenreHobby ProjectPlatformPythonRoleMachine Learning, DevelopmentYear2023

This was a side project I worked on in the background over the course of a year and a half. Most of the time was spent learning python, machine learning, and banging my head.
For those of you that don't know, MapleStory is an old 2D MMORPG that has a huge nostalgic fanbase. I have great memories with the game, but the biggest reason I don't play anymore is because it's too repetitive and grindy. You need to fight hundreds to thousands to HUNDREDS OF THOUSANDS of monsters to keep leveling up. Just thinking about it gave me all the motivation to learn machine learning in order to automate that process.

GitHub Repo

Video coming soon!

Insights & Highlights

Going into this project, I was picking up python and machine learning in a serious capacity for the first time. I knew things were going to take time and I was fully prepared to give myself as long as I needed. Which worked out very well! Code has always been one of those things I needed to sit on in order to understand.

There was a lot of head banging along the way. There’s a lot of arbitrary things to learn when beginning python, which put me off for a long time (like the init file, how they handle directories, setup errors). But after getting more familiar with it, I do really like it!

I got the hang of packages, GUI, IO, threading, etc with relative ease.

Issues & Challenges

One of my biggest headaches were trying to get packages installed. There are so many machine learning dependencies and configurations outside of the IDE, that at some point it must’ve been pure luck that I got things working.

Besides that, many of the problems I faced involved how to improve the accuracy of my training model. Unlike code, training machine learning is a very heuristic process, and exploring any number of solutions can all be rewarding in their own way.

Firstly, I realized the way I was collecting my data was incorrect. I was gathering sprites of the monsters themselves. This meant the training resolution was incredibly different and didn’t represent the real world cases.

Eventually I tried again with proper data and got far better results. However some classes were getting poor results, because I didn’t have enough instances of them. It’s fairly time consuming to collect and annotate each image.

That’s when I found out about image augmentation, and was able to tenfold my dataset. Now all my results were doing well and the graphs had no indications of maladaptation.