The Type of Rings is a simple tower-defense game where resources for the towers are generated by typing words matched to a prompt. This program is largely a proof-of-concept at the moment with the ability to be fleshed out and expanded later. It includes real-time movement by graphically rendered enemies that move along a path. When they reach their destination, the player takes damage and the game ends. Additionally, there are towers that will shoot enemies that get too close. They are also able to be upgraded. Both level generation and user score are persisted through rudimentary data storage, and they can be upgraded later into more thorough systems.
There are a few aspects of the game which haven't been fully implemented yet, but they should be able to be added in the coming weeks or months. The important thing is that the core skeleton of the game is there and able to be fleshed out. Levels are easily creatable just by populating data, enemy classes can be extended to implement more complex behaviors. Enemies, towers, and bullets can be given varied attributes based on level or based on procedural difficulty.
For this game, we used the Python Arcade library. We favored Python because it's a high-level language that most of the team was familiar with and because optimization was not a major concern for this project. Using the Arcade Library, we were able to offload a lot of the rendering constraints and collision detection, so we could focus more on game flow and logic.
We also used Google Cloud for a lot of our backend-related stuff and json for local storage. If we wanted to expand on it later, we could likely create a custom REST API to handle data requests. While our current data implementation would not necessarily be suitable for a production environment, it works well as a proof-of-concept.
As we worked on this project, we also took time to study software design patterns and best practices. Because we were learning a lot of these things as we did them, there are certainly inconsistencies in the architecture and design of the game, but it was a valuable learning opportunity for getting a handle on making a program extensible and flexible.
- Python Arcade
- Google Cloud
- Clean Architecture by Robert Martin
- JC here: I strongly recommend this book. It's not the end-all, be-all of software engineering, but I started reading it a couple months ago (and am almost done with it), and it really offers solid theory to help write clean, extensible software. If you're finding yourself getting tripped up by code that you wrote earlier in the project, it may be super useful for you.
- Finish Getting Typing and Upgrades to Work (they're nearly there, they just need a little oomph).
- Fix Architectural inconsistencies and flaws
- Implement more Robust Data Storage systems.
- Flesh out the gameplay loop.
- Add more enemies, tower types, and general gameplay elements.