Back to Projects

Damned Veil

Damned Veil

Damned Veil is a horror themed pixel game set in a dark magical world. Combined with carrom-inspired mechanic with limited ammo, players must carefully plan bounce shots to beat the level.


Executive Summary & Role

My role is Environment Artist in a 4-person team called Divine Table (and later continuing solo for my thesis as Game Programmer).

I was responsible for creating the environments 2D tilesets, researching an experimental 2D normal-mapped lighting pipeline, and implementing Procedural Content Generation (PCG) algorithms for enemy .

We didn’t just want another generic pixel shooter. We wanted a game where light feels alive and every bounce shot requires thinking and plan carefully.


Key Features

  • Carrom-Inspired Mechanics: Every shot counts. Players must calculate bounce angles against map walls to clear enemies using limited ammunition.
  • Dynamic 2D Normal-Mapped Lighting: Integrated custom normal maps onto 2D pixel art so surfaces react to moving point lights and cast shadows dynamically.
  • Procedural Enemy Spawner: Using Procedural Content Generation (PCG) algorithmsthat automatically generates balanced, deterministic, and solvable enemy placements.
  • Dynamic Puzzle and Boss Encounters: Each level is a puzzle in itself, with unique enemy placements and boss encounters that require players to think strategically about their shots.

The Problem & The Solution

The Problem:

  • Flat Pixel Art: Standard 2D pixel sprites often look flat and generic without shadow and illumination.
  • The Manual Enemy Placement: Because the core mechanic relies on ricocheting bullets, manually placing enemies was an agonizing trial-and-error loop. Miss an angle placement lead to unbeatable level.
  • Spaghetti Code: Hardcoding delegates between UI, audio, and gameplay logic made systems fragile and painful to iterate on.

The Solution:

  • 2D Normal Mapping Pipeline: Authored custom normal maps for 2D tilesets, allowing Unity’s Universal Render Pipeline (URP) light sources to create authentic 3D-like depth across pixel surfaces.
  • Algorithmic PCG Spawner: Combined Specular Path (to trace projectile bounce trajectories) and Constraint Satisfaction Problem (CSP) to validate enemy distances and safe zones automatically.
  • Event Driven Architecture: Built a broadcast-style event architecture so UI triggers, particle bursts, and audio cues fire independently without tightly coupling gameplay scripts.

Challenges & Learnings

Building Damned Veil pushed both my artistic and mathematical limits:

  • Balancing Pixel Art: Normal maps are inherently smooth gradients, while pixel art is sharp and clustered. Finding the sweet spot where normal lighting enhances the pixel art without making it look like muddy 3D took weeks of trial and error.
  • Level Solvability: Replacing manual enemy placement with a PCG algorithm (my thesis research) taught me that math can solve game design bottlenecks you could never brute-force by hand.
  • Team Communication & Collaboration: Coordinating art direction, level design, and code across a 4-person team taught me the value of building modular, designer-friendly tools in Unity.

Key Takeaways & Results

  • Proven PCG Reliability: Tested the PCG spawner across 15 map layouts (149 trials), achieving 7.6 ms average generation speed, 92% reliability, and 99% layout uniqueness.
  • High Player Satisfaction: Beta testing evaluated via the Player Experience Inventory (PXI) yielded high scores across both Functional (5.77/7) and Psychosocial (5.76/7) consequences.
  • Atmospheric Visual Polish: Successfully merged dynamic retro lighting with challenging arcade-puzzle combat.

There is a lot more to tell about making this game, including the normal mapping experiments and the PCG algorithm. Check out the devlogs below!

Read the full Devlog ➔