game dev

README.md

COSMIC CRUSADE [download from github]

ICONTROLS:

ABOUT - This program was inspired by the retro classic Space Invaders. It is a 2 player arcade-style shooter, where the goal is to survive longer than your opponent. Enemy drones attack in waves and you must dodge and fire back in order to raise your score. Once the game ends you can see wether you won, lost, or tied.

TECHNICAL - I decided to use pygame because of the many built in features it has that make game development more simple. There are also many resources online to help with pygame specific development. At first I used parent and child classes to keep my code organised and easy to read. But as my project grew I found this to be unsustainable. Separating the code into modules taught me a lot about concepts such as scope, inheritance, object methods and properties, and general good practice for trying to keep a project legible. I decided to implement a state machine into my program. I found the increasingly large number of classes and loops starting to become overwhelming, especially when I started working on different screens I wanted to use. Despite not being able to use all of those screens at this stage of the project, I am still happy with the state machine I have at the moment and am sure I can add to it with more knowledge and time.

CHALLENGES/FUTURE - One of the things I initially struggled with was sprite groups and collisions. Being a beginner to pygame I had learnt about groups hoping for better organisation of my code and implemented them without understanding them fully. I learnt an important lesson about getting ahead of my own knowledge. Another big challenge was creating the state machine. I did a lot of research and preparation because I was already converting a program that was about 800 lines long. I did so because I was determined to implement my idea of the user being able to select a character. Unfortunately I couldn't figure out the logic in time but I hope to work on this project more in the future. I would love to add sound, animations, and a background, as well as more states that could include levels, a pause screen etc.

CREDITS -