The First “Finished” Project

At the beginning of 2019, I completed my first project: Drop Throw Dungeon.

The project started with a strange question that popped into my mind: What if all weapons could only used by “Throwing”?

Furthermore, my non-school-based experimental education (self-learning) evaluation period was approaching, and i hadn’t entirely finished any of my previous projects. While i had created many learning projects and interesting game ideas, they always came to a halt once the main game system was done.

So, I decided to embark on a new project, aiming for a truly finished game. I took on this challenge as part of my evaluation, to explore this unique idea, and, of course, for the fun of it.

The article was written many years ago, based on my memories and old devlog content. I have tried to provide as much detail as possible. I hope you enjoy it.

Item and Inventory

Before starting this project, I developed a simple item and inventory system for research purposes. It was a highly generic system based on my abilities at that time.

All i needed to do was create item prefab and set up their IDs and properties. The functions such as placing, dropping, and throwing items were already included in the system.

image display error, please report: [/devlog/drop-throw-dungeon/inventory.gif]

So, the main part of the game system is already completed!

Drop Throw Dungeon !

In this action-packed game, the core gameplay revolves around the act of throwing. Players can unleash the true power of the sword by throwing it at enemies, while the wand’s magical spells can only be cast when thrown !

Aim…Throw !

To interact with the game world, player can pick up items by pressing the space key and throw them using the left mouse button.

image display error, please report: [/devlog/drop-throw-dungeon/player_throw.gif]

In the initial version of my code, I experimented with camera scaling and offset to provide a better player view. However, after several tests, it became evident that this approach made aiming challenging and caused discomfort. Therefore, I decided to remove this effect.

To aid players in aiming, a dotted lines is displayed when they hold down the mouse button, indicating the trajectory and target of the throw. I also incorporated a scrolling animation by gradually changing the material properties over time.

image display error, please report: [/devlog/drop-throw-dungeon/player_aiming.gif]

In the game engine, a common issue arises where objects move to fast and pass through obstacles due to physics simulation. To address this, I implemented a simple solution using “RayCast”. This technique allow the game to detect if an object blocks the path, ensuring that the movement is appropriately stopped.

image display error, please report: [/devlog/drop-throw-dungeon/player_raycast.jpg]

More Items

I have added a variety of different type of items to enhance the game’s content. To preserve an air of mystery, I kindly request that some details of the items be kept hidden.

  • Basic Weapons: These are the foundation of throwing items and deal damage when they hit enemies. Each weapon type has its own Lethality and Durability ratings.
image display error, please report: [/devlog/drop-throw-dungeon/item_basis.jpg]

  • Consumable Weapons: Smaller versions of weapons with lower durability, but they can be stacked and continuously thrown.
image display error, please report: [/devlog/drop-throw-dungeon/item_throwing.jpg]

  • Wands: Rare item that, when thrown, unleash magical spells.
image display error, please report: [/devlog/drop-throw-dungeon/item_magicWand.jpg]

  • Magical Swords: Three types of special swords that can only be purchased from merchants.
image display error, please report: [/devlog/drop-throw-dungeon/item_magicSword.jpg]

  • Potions: Single-use potions that, when thrown, leave a lasting effect on ground or cast the magical missile.
image display error, please report: [/devlog/drop-throw-dungeon/item_potions.jpg]

  • Bombs: Inflict damage to all targets within range, including the player.
image display error, please report: [/devlog/drop-throw-dungeon/item_bombs.jpg]

  • Money: The currency used in the dungeon. It can be use to purchase items form merchants and, of crouse, thrown!
image display error, please report: [/devlog/drop-throw-dungeon/item_money.jpg]

  • Hearts: Item used for player healing. When hit, the amount of healing depends on the number of stacked hearts.
image display error, please report: [/devlog/drop-throw-dungeon/item_healHeart.jpg]

Each item has a different probability of dropping, and they serve different purposes. Players need to carefully consider which items are most important at any given time.

It’s worth nothing that all items can only be used by throwing. This means that once a player attacks an enemy, they lose the weapon in the process and must either retrieve it of find another one.

Enemy

Currently, the player is alone in the game world. To enhance the gameplay experience, we need to introduce some enemies for the player to interact with.

Tracing: Enemies exhibit bacis behavior by attempting to get close to the player.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_tracing.gif]

Attack: When the player is within range, enemies will pause briefly and then dash towards the player’s direction. During the attack, enemies change color to red as a warning for the player to move away; otherwise, they sill take damage.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_attack.gif]

Drops: Upon defeating an enemy, it will randomly drop an item base on its enemy type. These enemy drops serve as the primary source of items for the player to obtain.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_treasure.gif]

More Enemy!

I have also added more enemies with different behaviors to increase the game’s challenge.

Shooter: A ranged enemy that maintains a safe distance form the player and casts projectiles. If the player gets too close, they will try to run away. Shooters have lower health and serve as interference for the player, supporting melee enemies.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_shooter.gif]

Artillery: Slime enemies that squirt toxic fields to the player’s location, causing continuous damage if the player remain in the field. Slimes are sturdy but move slowly, effectively limiting the player’s movement.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_slime.gif]

Summoner: Stationary enemies located at the map boundary that frequently spawn smaller enemies to attack the player. Summoners do not have direct attacks but can overwhelm the map with enemies.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_summoner.gif]

Little: Smaller enemies spawned by the Summoner. They have fast speed and low health, force the player to move quickly and consume their items.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_little.gif]

Supply Enemy: Special enemies with item icons on their heads. Killing them will drop health and money items.

image display error, please report: [/devlog/drop-throw-dungeon/enemy_supply.jpg]

These different enemy types add more challenge to the game. Melee enemies post a higher danger, while ranged enemies are annoying. The Summoner can spawn an endless number of Littles, creating a continuous enemy assault that the player must deal with. Players need to adjust their strategy and tactics over time to survive in this chaotic dungeon.

World

I utilized the Unity Tilemap system to create the game world.

Map: The map serves as a simple gamer area, with enemy spawn points located on the sides and bottom.

image display error, please report: [/devlog/drop-throw-dungeon/map.jpg]

Traps: Spike traps are strategically placed to damage any creatures attempting to pass through them. Of course, include player :P

image display error, please report: [/devlog/drop-throw-dungeon/map_trap.jpg]

Clearing: At the start of each wave, some items are cleared from the map. This is done to prevent an excessive number of items cluttering the map, as there are more dropping items than the player needs at once.

image display error, please report: [/devlog/drop-throw-dungeon/map_clear.gif]

Chest: Chest are provided for players to store their items, although their usefulness is limited. I have set a restriction on map clearing, allowing only low-level items to be removed.

image display error, please report: [/devlog/drop-throw-dungeon/map_chest.gif]

Merchants: Merchants are positioned on the top side of the map. Players can drop money to them and choose items to purchase. The merchants refresh their merchandise every wave.

image display error, please report: [/devlog/drop-throw-dungeon/map_shop.gif]

Game Loop

The game follows an endless playing mode, continuing until the player dies. This simple mechanic is suitable for the prototype.

Title: A simple layout welcomes players into the dungeon.

image display error, please report: [/devlog/drop-throw-dungeon/scene_title.gif]

Transition: A transition screen displays player and pumpkin animation during transitions.

image display error, please report: [/devlog/drop-throw-dungeon/scene_translate.gif]

Pause: During gameplay, players can press the ESC key to pause the game. They can open the tutorial by clicking a button in toe top-right corner.

image display error, please report: [/devlog/drop-throw-dungeon/scene_pause.jpg]

Waves: Enemies spawn in waves, with the first six serving as tutorial waves to introduce each enemy type. After defeating all enemies in wave, a reward item spawn in the center of map. Picking up the reward items start the next wave.

Although the games is in endless mode, the difficulty curve is steep. Initially, the number of enemies their maximum activity increase to keep the player excited.

Sound Effect

The SFX used in game are CC0 assets, with modifications to made frequency and pitch using Audacity to mach the game’s style. Here are some examples.

image display error, please report: [/devlog/drop-throw-dungeon/audio.jpg]

Throwing: A wind slicing sound accompanies the object flying quickly.

Dropping: A popup effect is used for added fun.

Purchase: An iconic sound from a cashier.

Item Broken: A sound resembling something made of metal breaking.

Metal Item Hitting: A sound with metal hitting something.

Potion Throwing: A sound like glass smashing.

To reduce the feeling of repetition, i randomly change the volume and pitch each time a sound is played in the game. This technique creates a more nature and varied listing experience.

Back Ground Music

I used Bosca Ceoil create 8-bit gameplay BGM. Since i had no prior knowledge of music arrangement, i looked for Brackeys’s tutorial to learn how to create music for games.

image display error, please report: [/devlog/drop-throw-dungeon/bgm.jpg]

I created three simple melodies and added playing condition to combines them in the game, aiming for an additional felling. Each melody thread dynamically displayed base from different game states. The beat thread plays during the title screen and game pause, while the other two thread switch during waves and rest time.

To achieve this style, i synchronize the timing of the music.

image display error, please report: [/devlog/drop-throw-dungeon/bgm_tracks.jpg]

Gameplay Feedback

Many enemies interact with player, and sheer amount of activity on the screen can make the game appear chaotic, potentially cause the player to missing important information. To address this, i focused on improving feedback without breaking the immersion of the game.

For enemy attack, i added particle effect to indicate their intentions before dashing towards the player.

image display error, please report: [/devlog/drop-throw-dungeon/feedback_attack.gif]

When the player is damaged, i incorporated slow motion and camera shake to create a heightened sense of impact. The blowout particle effect and a dull sound were also added to intensify the feeling of being attacked.

image display error, please report: [/devlog/drop-throw-dungeon/feedback_hurt.gif]

To enhance feedback when items are hit, i implemented particle effects emitted by enemies. When an item breaks, particle fly out accompanied breaking sound, further emphasizing the fore of impact.

image display error, please report: [/devlog/drop-throw-dungeon/feedback_itemborken.gif]

There are many more details in the game. If you’re interested in experiencing it, please download and have fun playing!

Thanks For Reading

Thank for taking the time to explore this devlog.

This project took me a month to complete. and as my first project, it give me a great sense of accomplishment. The game has been released on Itch.io for free, and i hope you find it interesting to play. Feel free to leave your comment below.

Download link: Drop Throw Dungeon

The Real Idea

In the early stages of the project, I had initially planned to create a dungeon exploration and physical puzzle-solving game. The original design featured items in the game world with interactive effects, such as chain reactions triggered by bombs or the ability to burn wooden items to access new areas. However, due to the complexity of the systems involved, I had to make some adjustments as I lacked the necessary skills to implement them effectively.

image display error, please report: [/devlog/drop-throw-dungeon/real_interaction.gif]

As a result, i decided to focus on the core gameplay mechanic of “Throwing” and expanded upon it to create an endless defense game with entertaining mechanics.

Now that my game development skills have improved, perhaps it’s time to plan new feature for this game and attempt to bring them to life?

Acknowledgement

The pixel art use in game is provided by 0x72.

16x16 Dungeon Tileset

dungeontileset-ii