← All projects

Eldrin Tales

Top-down bullet hell for mobile with auto-aim shooting, an upgrade shop and saved progress.

Gameplay & UI Programmer

Unity 6, C# / Team of 2 / 2026

Overview

Eldrin Tales is a top-down bullet hell for mobile. You move with a touch joystick while your character shoots on its own at the enemies in range, and between levels you spend the gems you collected on upgrades in a shop.

We made it as a team of two for one of our ESAT course projects, using Unity 6 and C#. I programmed the player and the systems around it: the controls, the upgrades, the shop, saving, the audio and the menus.

What I did

Player, auto-aim and touch controls

The player shoots on its own: it looks for enemies inside its range, sorts them by distance and fires at the closest ones, with projectiles taken from an object pool. You move with a floating joystick that appears wherever your thumb touches the screen, and the gems enemies drop are picked up just by walking over them. Getting hit pulses a red vignette on the post-processing volume and fires a Cinemachine impulse that shakes the camera (the shake can be turned off in the options).

Upgrades and shop

Ten upgrades, each with its own level: health, damage, fire rate, range, move speed, multi target, multi shot and orbiting swords, plus their speed and damage. Stats are base values plus a fixed increase per level. After each level the shop offers three random upgrades to buy with the gems you collected, and the sword upgrades only show up once you have swords. The cards pop in one by one with an elastic bounce and confetti, and the gem counter ticks down when you buy.

Menus, saving and audio

The main menu, options, credits, pause and shop screens, plus the player's health bar and gem counter in the HUD. Buttons squash when pressed and bounce back when released, and screens fade between each other, all animated with DOTween. The game keeps one save in a JSON file with the current level and every upgrade level, so Continue picks up where you left off. Volume and camera shake settings are stored with PlayerPrefs, and a small audio manager (a singleton) plays the music and the sound effects.