Skip to content

Forking for record-keeping purposes. Unlikely that I will contribute more to the codebase due to IP Ownership concerns, though I may use it as inspiration for other projects.

Notifications You must be signed in to change notification settings

codingthunder/The-Type-of-Rings

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

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.

Software Demo Video

Development Environment

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.

Useful Websites

  • 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.

Future Work

  • 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.

About

Forking for record-keeping purposes. Unlikely that I will contribute more to the codebase due to IP Ownership concerns, though I may use it as inspiration for other projects.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%