Ideas to add
This section is going to be completely hands-off from this guide. There are just some more features which would be good to have but would be gratuitous to include a whole section on.
You have literally all the tools you need to figure everything else out. You’ve been taught most best practices, although it may be a good idea to read the Godot best practices docs eventually.
Enemy health
Section titled Enemy healthThe enemies should have health so that things like piercing shots can do less damage but hit more enemies. It provides a good tradeoff that requires at least a modicum of thought and adds dynamics and interplay with your systems. Make it so that one weapon is not better than the other, but they provide two halves of a whole.
Give them a health bar while you’re at it, similar to the player. But only show it after they have been hurt so it doesn’t clutter up the screen.
Making it a True Survivors-like
Section titled Making it a True Survivors-likeRight now, the player is only firing one type of projectile at a time. Your first goal should be getting several kinds of projectiles firing all at the same time.
Make them all unique by using a gradient texture instead of a placeholder texture to change their color.
Then, make them move in weird and wacky ways. Perhaps make projectiles that spawn from from the edge of the screen. Or large, slow-moving ones that push enemies from a single direction to let piercing projectiles pierce through stacked up hoards for insane DPS (damage per second).
Animations
Section titled AnimationsYou could do fancy 2D animations and play each of the different animations with an AnimatedSprite2D. But, that requires making 2D animations, which takes a long time. Or using someone else’s animations, like from an asset pack, for example, which makes your game less personal to you.
What you should do to add more ‘game feel’ is use an AnimationPlayer. You’ll quickly learn to love this node.
When you fire a bullet, make the player shake a little. Or, add a sprite that aims at the nearest enemy at all times and does a little recoil animation. If you’ve done enemy health and the enemy doesn’t die you can do a hurt animation that is just the enemy kockback from a bullet and settle back into place. Or, you could use a GradientTexture1D or GradientTexture2D to create simple flashing red animations for when they get hurt. Or make the knockback and the flashing red, then add play some sprites with GPUParticles2D for truly stunning game feel.
There are so, so many opportunities here. You don’t need fancy hand-drawn art to make a video game look pretty. There are tons and tons of games out there that use awesome shaders, particles, and tons of other math-intensive ways of making the game look dope!
Enemy types
Section titled Enemy typesAdding more enemy types would add more challenge to the game. Perhaps you could have a timer to see how long the player has lasted. The longer it goes, the harder the enemies get.
Add in ranged enemies that dodge bullets if the player is too far away from them.
Add in small little enemies that come up and nibble the player’s heels.
There are so many opportunities for creating different types of enemies that add unique and different challenges. Force the player to choose between adapting or dying.
Using inheritance you can even do some cool fancy stuff. For example, you can have a base enemy class, then mêlée and ranged enemy base classes, and then make your actual enemies inherit from either the mêlée or ranged classes,
Money
Section titled MoneyAdding a shop system would add so much to the game. You’d need a lot more types of things to buy, but it would let users customize to their play style.
If you’ve got different types of enemies they can each have their own money value as well.
It’s a good idea to try out other games and see how they do this one.