A downloadable game for Windows

Download NowName your own price

Dungeon Hunters is a top-down 2d shooter where you go through 3 locations to find a treasure deep in the desert dungeon.

Choose from 4 weapons, use cover to fight through 6 enemy types while avoiding traps, collect coins to buy cool upgrades for your character.

Special features:

  • Enemy AI — enemies shoot a random number of projectiles which makes the fights somewhat unpredictable. And running enemies will always retreat a bit in a random direction after shooting making it harder to aim at them.
  • Level generation — room type and layout as well as enemy, trap and cover placement and type are completely random in each level. And in addition to this with each level the number of rooms increases and new room types and enemy types are introduced. Last level of each location is an arena with spawning enemies and a lot of traps and cover.
  • Random but fair health and coin drops — a special system that checks the amount of coins and health given to the player so their spawning is a bit more fair between the runs and not just luck-based.
  • Purchasable upgrades — there are 4 upgrades in total from which 3 are selected in a shop at the end of each location. Each upgrade has a very different effect on a character—increased fire rate, movement speed, max health and no trap damage.
  • Save and load system — player can choose from 3 save files to try out different weapons, character upgrades, check out level generation (and maybe 2nd character in the future) or to compete with a friend.



Technical stuff.

Ivan Sazanov—audio: all sound effects and music tracks. He also makes his own music—https://open.spotify.com/artist/2rD6fJeKIVgsrvpcPezcea?si=5KGOZeV8S9yGJnATNSnA5g

Assets/libraries — all the sprites, except for rooms in 2nd and 3rd locations and broken cover, were downloaded from Unity asset store for free. Also the A* Pathfinding project is a free version from Arongranberg.com.

Sergei Kulenkov — game design, programming, testing and everything else (including sprites for rooms in 2nd and 3rd locations and broken cover with a little help from an artist).

So as for writing code:

  • Some statistics — 118 .cs files from which there are 5 interfaces, 2 files with data classes, 5 abstract base classes, 4 static classes with some definitions and helping functions, 43 scriptable objects.
  • General coding style — all the parameters for spawning objects are set in scriptable objects which are used as configs. So it provides easy access to edit all parameters for designing or testing, for example set enemy’s health or number of enemies to 1 to test general level behavior. Also there are no public fields—instead of them it’s either a property with private set or an event—and as little as possible public methods—it’s mostly events instead. In general a lot of events are used for communication between classes which makes it really easy to expand and edit. And some special enums, strings and numbers (like enum of enemy types, 5 for one health point) are defined as constants in the special Definitions class.
  • How level generation works — there’s a loop which spawns rooms randomly selecting a room type and corridors to a next room while checking for overlapping with other rooms. After the corridor to the next room is placed, the walls on all other sides of the room are spawned. When the number of spawned rooms is more than 2, some additional conditions are checked and some corridors can be extended to move the new room further from another room. For placing objects inside rooms there’s a specified area in each room depending on the room's size, some minimal distance between them and a random offset for the object's spawn point. So using these parameters and some large random offsets—like moving the spawn point from one side of the room to another when an object can’t be placed for too long—all objects are spawned in a specified order: enemies, cover, traps. While spawning all objects get random type in their category except enemies—there’s a specified probability for each enemy type in a level’s config. Also the number of objects is random within specified limits in a level’s config and is increasing with each level.
  • How saving and loading data works — player can save at the beginning of each level which writes all the data about current level, as all levels are random it means some specific information about rooms and objects needed to recreate that level, and player’s progress—coins, health, upgrades, etc.—in a file. Saving on the last level of each location is implemented a bit differently: only the player's progress is saved so the player has a bit of a challenge because all positions of enemies—and their types—and objects are random. On load screen some important to the player save data is shown on a save file panel—like number of collected coins and current health. Options are also saved in a separate file after each exit from the options menu.
  • How camera following works — when going between rooms the camera goes on the same axis as the player and stays still inside the room, sometimes changing its zoom to show the whole room. There are some long rooms which have camera movement inside them on a specified axis. So the camera always adapts to the room’s size, type and player’s direction and can change its following in different ways—like no following in a large-sized room, following horizontally in a corridor, following vertically in a long medium-sized room.
  • Music behavior — music track plays continuously during gameplay: there’s an intro for each track that plays first till the end, then the main part of the track is played in a loop. Also the track is randomly selected when the player goes to a next level. And when the player opens the pause menu music fades out to 0.4 volume and fades back in upon resuming the game.

Download

Download NowName your own price

Click download now to get access to the following files:

Dungeon Hunters.zip 43 MB

Leave a comment

Log in with itch.io to leave a comment.