We would firstly like to thank maintainers and creators William Edwards and Benjamin Bean for letting us invade their project for a weekend!

Inspiration

In the spirit of other open source clones like SuperTux and SuperTuxKart, Tuxemon aims to create an open source game with its own unique style that sets it apart from other monster fighting RPGs. Most of the goals of this project is to make game creation accessible to the average user. It is very easy to create new items, monsters, NPCs, maps, and moves (called techniques) by simply creating a json file or using a tileset editor like Tiled. This project isn’t just about making one game, but making an extensible, modular engine that can be used for other game projects or for eventual sequels to Tuxemon.

Tuxemon’s gameplay is heavily influenced by Pokemon but its story is influenced by other RPGs such as Digimon and Yugioh.

What it does

Tuxemon is an open source game clone of the Pokemon games. It does not copy one specific game but rather is its own spin on the monster collecting and fighting genre. It uses all original assets and code and allows anyone to submit new monsters and maps. It has an (as of now, incomplete) original story campaign that puts a player in a world where only the elite can own and tame Tuxemon. The player works against a large corporation to get the public the right to befriend Tuxemon.

The game in its current state has several features including a snippet of the campaign with interactable objects and NPCs as well as in-engine cutscenes, random encounters with wild Tuxemon, trainer battles with other Tuxemon trainers, catching new Tuxemon, evolving your Tuxemon into new states, gaining experience, healing at Tuxemon Centers, and a variety of healing and capture items available from Tuxemon Marts.

How we built it

Tuxemon is a pre-existing open source project that we did some bug fixes for. It consists almost entirely of Python code (the only exceptions being configuration and data files) running the Pygame engine. Because it runs on Pygame, the game is nearly completely platform agnostic. This means that it has been built for Windows, Linux, MacOS, Android and even the open source game console the GCW-Zero.

The project uses a couple of interesting Python packages: pygame, obviously, is used for the game engine, pytmx is used to read in Tiled map editor files, six is used for Python 2 and 3 compatibility while the code is being refactored into 3, pyscroll for animating maps in the overworld, and finally neteria for online game networking.

Challenges we ran into

The Tuxemon project is huge (Over ten thousand lines of code separated in over a hundred files!) and the documentation is out-dated, making it harder to trace where an action is defined and triggered in the code. We also had problems installing the project on the latest version of MacOS, as one of the dependencies is not compatible with Mojave 10.14.5 yet. And the virtual machine was also hard to work with, thus we had to rely on one computer to run the tests. Additionally, we tried to fix a bug where you were able to catch other trainer's Tuxemon. This seemed simple like "if in a trainer battle, don't let them throw a ball". However, because of the object-based structure of the engine, we couldn't simply access that from the Item class. So we had to get creative and build a filter in where the different kinds of menu state interface. However, after hours of looking through the code, we feel like we now have a good understanding of the engine’s modular layout and even how to script world events (if we wanted to)!

Accomplishments that we're proud of

We're really proud of all the work that we've put in over the weekend. Together, we've overcome a lot of technical challenges (preparing environment was a pain), filed a couple issues and fixed several bugs, learning about a lot of different technologies, about the open source community, as well as about each other! We were even able to get in contact with the original creator of the project. This weekend has been super fun (props to the HackIllinois organizers!).

What we learned

We learned a lot about how to find a open source project, get connected with a open source project community, navigate through tens of thousands of lines of existing code and figure out what impact each function has on the game, as well as structural design of a project and contributing to open source through writing clear concise issue description, pull request messages, and in-line comments. We also learned a lot more about python through the project. We encountered yield for the first time, messed around with inheritance and import trying to maintain the state of the objects and events. This is actually my (Amy’s) first hackathon!

What's next for Tuxemon

There are a lot more bugs in the Tuxemon community waiting to be fixed, and there are also a lot of features missing, so we would love to continue working with this community and build a better Tuxemon!

In terms of their roadmap, they’ve recently organized their objectives using the milestone feature on GitHub. The next release will be Alpha 0.5 which will include more robust monster features such as storing those Tuxemon that don’t fit in your party and learning new moves. Future releases on the horizon have more robust multiplayer (traversing the world with your friend, battling your friends, etc.) as well as more customization features like choosing custom campaigns.

Built With

Share this project:

Updates