Inspiration

Pokémon has always been a beloved franchise for people across the world, and we're no different. This franchise of both cute and incredible monsters has entranced us for years, and now we want to pay homage to Pokémon through our very own fangame. However, we wanted to add a twist —unlike anything seen before — to the Pokémon fangame scene and create something very festive and relevant as we enter the holiday season. This is our fangame: Mockmon: The Legally Distinct Pocket Creatures at Home

What it does

Our fangame takes the player character against a formidable foe with a full team of 6 custom-made Pokémon with their own special moves and typing. You can run around the overworld for as long as you please, but your opponent will be staring right at you, waiting for a fight! And don't wait too long, because your challenger is none other than a corrupted Santa Claus! With his minions by his side, he plans on taking over Halloween and making it a 2nd Christmas, but we definitely can't have that! Challenge him to a 6v6 singles battle that'll have you at the edge of your seat!

How we built it

To make our fangame, we used Godot v4. We used Godot because it was an easily accessible game development software that matched well with our goal of offering a quick but fun Pokémon fight. We used trainer sprites and overworld map tiles from Pokémon Emerald, and Addison created custom sprites for each mockmon used in our game. Since the game is heavily based on Pokémon, we also decided to base our combat directly on it, by making a 2D space for the player to run around and a turn-based combat system. I designed an enemy AI that makes several decisions (ie, checking enemy Pokémon's weaknesses and resistances against both itself and its team) before finally deciding its move, leaving the player constantly on their toes and not knowing what to expect next.

Our Mockmon are all created based on a node 'class' we created called Mockmon, which houses all of the information that a typical Mockmon would need, whether it be their typing or resistances. This allows for easy accessibility to all attributes that may need to be referenced in other parts of the program, making battling a much simpler experience for us to code. Speaking of battling, Alison created the battle system that the player will see once they interact with their opponent, while I worked on mapping the overworld and adding the different sprites that the player will see once they enter battle.

Challenges we ran into

The biggest challenge we ran into was getting Mockmon to work in Godot, as we implemented it as if it were an object in Java rather than a proper Godot class that follows different rules. This led to issues in other classes when it came to calling parameters for mockmon or using mockmon in the trainer AI. We tried to circumvent this by creating a plugin for Mockmon, but that didn't work because our Mockmon couldn't recognize our Moves class. After all, it became a tool rather than a normal class. This led us to choose to extend to Node2D instead of Mockmon, as it was a more general approach to calling each object and still allowed us to use Mockmon's parameters. A challenge I faced was that this was my first time ever using Godot, so there were many cases of me thinking of the development software through a lens of Java or C, when Godot uses its own GDScript language based on Python. This led to development issues for me as I had to constantly pay close attention to my syntax and make sure there weren't any errors, but I was thankfully able to persevere and work through Godot.

Accomplishments that we're proud of

An accomplishment we're proud of is getting the character sprites to work and run across our map properly. The character sheets for the main characters of Pokémon Emerald aren't made for Godot, so it was difficult to create sprite frames that linked together well (because of the offset and sizes of each frame needing to consistently be 20px) and made believable animations. It felt like a sigh of relief, making the sprites work together and having a smooth, walking, and running playable character across the tilemap.

Another accomplishment we're proud of is getting the game to run its battle functions. The Mockmon class debacle took hours to figure out, and it severely halted our ability to actually use our battle functions and play the game. Not only that, but the AI of the enemy trainer was unresponsive to some of the player's actions, and that led to us having to rewrite some of our code. Thankfully, Addison and I were able to figure it out and have a fully running battle system with competent AI, displayed health percentages, and working moves and type comparisons between Mockmon.

What we learned

I learned how to use a brand new software in Godot, and I also learned the importance of time management and being able to learn on the fly. I went into this project with nothing but passion for Pokémon, and that passion drove me to learn under Addison, who was a great help in coaching on how to properly use it. Addison learned what it was like to work with a team and with someone who is just learning the software and language that we're using. It taught him both patience and his enjoyment of working in a team in such a strong time crunch.

What's next for Mockmon: The Legally Distinct Pocket Creatures at Home

Our next goal for Mockmon is to add more trainer battles and a more diverse and expansive map for players to run around. Another goal is to add more features to each Mockmon, akin to Pokémon, like abilities, status moves, or moves with special effects. We want Mockmon to feel like a true Pokémon experience, even if it is a parody.

Built With

  • godot
Share this project:

Updates