Bullet Hell Jam
June 2025
Demo
Play Vampiric Ascension
View Project
Unity Engine 6
Lead Programmer/Designer
2
A fast-paced and challenging bullet hell inspired by the Touhou Series, with a theme centered around vampires. Are you strong enough to beat the Sun?
Introduction
Vampiric Ascension was developed as an exploration of bullet hell design principles, with a focus on replicating and understanding the mechanics that define the Touhou Project series. The project emphasizes precision movement, readable bullet density, and player reward through a grazing system that balances tension and flow.
Built in Unity for Bullet Hell Jam 6, the game integrates a multi-phase boss AI, infinite scrolling backgrounds, and a tightly tuned player controller to maintain responsiveness during high-intensity sequences.
The goal was to capture the essence of danmaku gameplay — clarity within chaos — while building a solid foundation for scalable enemy and bullet system design.
Graze Mechanic Breakdown
One of my goals with Vampiric Ascension was to capture the thrill of the Graze mechanic from the Touhou Project series — rewarding players for narrowly dodging bullets without taking damage. In researching how Touhou handled this, I found that players could actually touch bullets visually and still count it as a graze. That meant I needed a more nuanced detection system than a single collider could offer.
To achieve this, I built a two-collider system around the player: an outer collider for grazing detection and an inner one for actual hits. When a bullet enters the outer collider, it's tracked in a HashSet until it either hits the player or exits safely. If it exits without colliding with the inner hitbox, it's marked as a graze and rewards the player with score and energy. This setup efficiently handles bullet tracking and perfectly recreates that tense, rewarding feeling of brushing past danger — a small risk that pays off in style and satisfaction.
Bomb Mechanic Breakdown
One of my additional goals with Vampiric Ascension was to recreate the dramatic bomb mechanic seen throughout the Touhou Project series. In classic danmaku fashion, activating a bomb clears the screen of all enemy projectiles, offering players a brief moment of safety while rewarding them with points based on the number of bullets destroyed.
To achieve this, I implemented a system called GigaCrash().
When triggered, it scans the scene for all active EnemyBullet instances, removes them,
and calculates a score bonus proportional to the number of bullets cleared.
The system also consumes a Sigil — a limited resource that prevents overuse and adds a strategic layer to bomb activation.
This mechanic not only mirrors the explosive spectacle and tactical relief of Touhou’s bombs but also reinforces a high-risk, high-reward loop. Players must decide whether to spend their limited Sigils for survival or conserve them to maximize score potential.
private void GigaCrash()
{
EnemyBullet[] enemyBullets = FindObjectsOfType<EnemyBullet>();
int bulletsCleared = 0;
int pointsGained = 500;
if (PlayerScoreManager.Instance.sigils >= 1)
{
PlayerScoreManager.Instance.RemoveSigil();
foreach (EnemyBullet bullet in enemyBullets)
{
if (bullet != null)
{
bullet.ReturnToPool();
bulletsCleared++;
}
}
PlayerScoreManager.Instance.AddScore(bulletsCleared * pointsGained);
Debug.Log($"Cleared {bulletsCleared} bullets and awarded {bulletsCleared * pointsGained} points.");
}
}
Boss AI Breakdown
Every bullet hell needs a memorable boss, and The Sun was designed to push players to their limits. I wanted to build a boss that could dynamically change its attack patterns and movement behavior based on health thresholds — creating escalating tension and rewarding adaptability.
The Sun AI uses a state-driven approach powered by an enumeration,
TheSunBossState, which defines each phase of the battle.
As the boss’s health drops, it transitions through multiple attack phases —
each introducing new spawner configurations, bullet patterns, and movement logic.
Each phase initializes its own set of BulletSpawner instances with distinct parameters:
firing rates, spread angles, rotation speeds, and even homing behavior.
These spawners are created and destroyed on the fly to ensure smooth transitions and
keep the encounter visually engaging without overloading the scene.
During Phase 2 Part 2, the boss gains mobility, moving between random points in the upper half of the play area. This forces players to reposition while dodging fan-like bullet barrages. By Phase 3, the entire screen becomes a chaotic dance of rotating explosion patterns, giving players one final test of reflex and endurance.
Once defeated, the boss triggers score calculation and clears all active spawners — wrapping up the battle with a satisfying conclusion both visually and mechanically.