Hey everyone,

I've been working on a sprite-based FPS with multiple different weapons, some basic enemies, etc. over a few months with spare time on the weekends and recently decided to scrap the project, as I just lost some inspiration on it. However, I concluded that the code might be of some use and therefore I decided to release the entire project source code for free on Itch.IO so others might benefit from it.
It uses Godot 4.1+ and C#, and it was a good learning experience for me with making FPS games, which surprisingly I hadn't really done prior to this point. I made lots of first person games, but not really with weapons. I think the weapon system should be pretty useful as a reference if anyone is looking to make such a system, though I made mine have duel wielding and might have made it a touch too flexible for some use cases. I'm hoping that if someone is completely unsure on how to go about making a FPS weapon system, it might help serve as a possible reference/inspiration they can use to make their own (better) system.
The project has the following, more or less, implemented:
- A duel wielding gun system
- Guns keep track of ammo, even when dropped.
- More ammo can be gotten for guns of the same time when picking up.
- Decently flexible system for adding more guns
- A full character controller with health and shields.
- Basic enemy wave system with basic enemies
- Enemies give currency when destroyed, which can be used at the vending machines.
- Vending machine system that uses currency.
- Basic enemies that track the player and attack when close. Have basic damage animation and death animation.
- Item pickup system for health, ammo, and shields. Includes both big and small pickups.
- Basic HUD, win, and loose UI (that doesn't fully work...)
If interested, you can find the link to the project here: https://twistedtwigleg.itch.io/sprite-based-fps-project-starter
side note: I'm working on another Godot project instead of this one - which is part of why I shelved this one - but it's not far enough along yet to have anything to share. If/When that project matures, I'll make a post for it 🙂