The Grind Never Stops
This is a game about your character going through endless levels, slaying enemies, making money, and getting more powerful.
Automatically saves and procedurally generates harder levels, making neverending fun!
Coding done by Samuel Price.
Enjoy everyone : )
Presented by Cosmologicon
Presented by JustAnotherCode
Ratings (show detail)
Final Level Loop
Final Game Submission
Final Main Menu
Deciding Game Concept
I have been wanting to make some kind of fighting game for a while, so I figured I could do a third person fighter with procedural levels that increase in difficulty over time, in a neverending cycle.
To add some distinction to my project, I will use my 3D isometric math I made.I developed some math a while ago that allows a 3D isometric view in pygame, explained here.
(To reference the rules, as I understand it I can still re-use maths as long as I redevelop the code for it, which I will do)
Time to begin!
I also implemented some basic movement controls for the player, and a shadow that shows when they jump.
I implemented a background first, in fitting with the theme, which can be viewed on my home page.
This background uses a turtle type approach (i didnt actually use turtle tho, because it's annoying with screen sizes and saving, so i remade a basic turtle in pygame myself). It starts from the centre, then goes forward a certain amount, and turn 91 degrees. The amount it goes forward increases each time, and the resulting shape is a spiral. By playing these images in a row with 2 degree differences in starting angle, it creates an effect that makes it look as if the background is constantly (or neverending-ly) spiralling into the centre screen.
Next I implemented some basic enemies. I made them as red cubes that constantly move toward the player, do damage when close enough, have invincibility frames of a 1/2 second, and an attack cooldown of a 1/2 second. The next thing i did was implement damage for these enemies, that when the player's sword comes into contact they take damage and get knocked into the air and in the direction away from the player, adding a nice bonus that if they fall off the map they die. They also die if they get hit enough times, and the border of their cube changes colour based on the invincibility frames.
The next thing i did was view ordering. I havent bothered to make the enemies not collide yet, but i can at least make them show in the correct order. In this isometric view you can sort drawing by y-x, lowest to highest, for the order, with an extra condition in this situation that falling enemies/player that is behind the map must be drawn before the map, and the rest drawn afterwards. I made a function to seperate all entities into two lists for these categorisations and in drawing order.
Then i made a main menu, with the buttons 'Play' (which i may change to continue to fit the theme more), 'Skills' and 'Blacksmith', adding a money counter, a level counter, an enemy kills/ enemy amount that shows when in round, and i plan to add an exp counter of some kind that will be used in the skills tab. I intend to give the player the ability to upgrade passive and active skills. Passive skills may be things like max health, movement speed, sword length, damage and so forth. Active may be things like a knockback 'burst' where all enemies around are knocked back , which i then implemented. An isometrically drawn circle shows the burst visually, and i plan to have some sort of icon indicating a cooldown when the ability is unlocked in the skills tab. Other active abilities could include a temporary shield, a temporary damage/health boost (beast mode lol), and maybe a full heal if its not OP.
I added functional screens for the blacksmith (does sword upgrades like rotation speed, damage, and length)
and for skill upgrades (active and passive skills)
I also decided that i wanted more delineation for the enemies so I made them different sided polygonal prisms. The more difficult the enemy, the more sides the polygon has, as well as a different colour. This allows for the player to have a visual understanding of how difficult a certain enemy is. I also implemented a system to determine when a point is inside of a polygon that i designed a while ago.(i can explain it if anyone is curious but its a bit of a mouthful, and sounds more complicated than it actually is).
I also implemented a feature where you can throw your sword and control it still (like Yondu lol), with the duration of this decided by an upgrade from the blacksmith.
Next i will have to make pixel art for all of these icons
I'm quite happy with this pixel art, I feel like i have definitely improved.
Didn't get much else cos it was my birthday, but more updates to come tmr
Items and Saving
Items come as either coins, hearts, or treasure chests.
I thought about doing texture mapping or something fancy, but instead opted for just colouring, for time's sake.
The result isn't too bad, in my eyes, and i think is at least something that can be understood without explicit explanation.
The other thing i did was implement automatic saving and loading seamlessly so that the player will just earn coins and buy upgrades and not worry about saving.
The game is saved every time a level is beat or an upgrade is purchased, stored in a text file with line and space seperated numbers.
Not much left to do now, just sound effects, a credits menu, a tutorial, and ideally some distinction between enemies? might be a bit much for 12 hours tho