GenrePassion ProjectYear2023ToolsPython, YoloV5, Docker, DBeaver
About
I learned machine learning and python over the course of a year and a half to work on this passion project. MapleStory is an old 2000s 2D MMORPG that is still relevant today. For me, it is a nostalgic game filled with great memories. However I wouldn’t play it today because it is very repetitive and grindy. You need to fight hundreds, to thousands, to hundreds of thousands of monsters to keep leveling up. Thinking about that gave me the motivation to learn how to make a bot in order to automate the process.
I built my bot using:
- Threading
- YoloV5 for machine learning
- Tkinter for GUI
- Ctypes for accessing windows functions
Details
I got started by setting up my own private server using a docker image and an SQL database editor. I took my time learning.
I haven’t used python seriously before so I allotted lots of time to learn the concepts and find the right packages for my project. I always find that learning new code requires ample time to digest.
Challenges
One of my biggest headaches were trying to get python 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 haha.
I enjoyed learning how to train a model. Unlike coding, it is a very heuristic process, in the sense that you can think outside the box for solutions, and find that everything yields results (opposed to banging your head until the code works).
Firstly, I found out the way I was collecting my data was incorrect. My initial precision was terrible. I was gathering sprites of the monsters themselves with no background. This meant the training set didn’t represent real world usage and the resolution was way off. 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 learned 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!