
The Veiled Ones
Game Designer (Enemy AI)
Project Overview
On this stealth-horror game, I was the Enemy AI Designer, where I:
-
Designed, iterated on, and polished 3 enemies and 5+ behaviors
-
Led the development of AI testing tools; coordinated tasks between engineering, audio, and art teams to implement my AI features
The Veiled Ones is a narrative stealth-horror game where you play as Ali, a Muslim exorcist. Figure out who possessed your son and why they did it with an ancient artifact: the Looking Glass!
Features:
-
Discover a new world using a magical artifact (the Looking Glass)
-
Avoid invisible enemies known as the Jinn
-
Reveal clues about your son's possession
This project had 50+ team members and 3 total designers (including me). The game had over 2K downloads within 1 week of the Steam release.

Gameplay footage
My Contributions: Enemy AI

Vertical slice version of Normal Jinn

Normal Jinn Alerting Behavior
I designed and implemented 3 enemies and their behaviors using behavior trees, including universal and unique behaviors to each enemy type.
Process I used for my design work:
-
Established design goals and constraints for enemy AI
-
Wrote documentation and tested implementation
-
Iterated and polished based on playtest feedback
My design goals and constraints for enemy AI:
-
Motivate players to engage in stealth gameplay
-
Discourage Looking Glass usage around enemies
-
Enemies should be mostly invisible and only the Father Jinn can be hostile
MY IMPLEMENTED FEATURES BREAKDOWN
Universal AI Behaviors
-
Perception: Sight and sound detection, Looking Glass debuff
-
Looking Glass function + debuff: Players can see invisible enemies, but they react negatively when looked at
-
-
Patrol: Walk around the house while making noise
-
Audio Feedback: Noise that enemies make will get louder and more distorted if player is detected
Enemy Types and Unique Behaviors
-
Normal Jinn: Alerts Father Jinn to player's location if player is detected
-
Top, Image: vertical slice version of Normal Jinn
-
Bottom, Video: Normal Jinn alerting behavior
-
-
Passive Jinn: Same as Normal Jinn, but does not patrol
-
Father Jinn: Can kill the player if they are caught
-
Searches for the player (when detected) and checks hiding spots
-
Chases after player if they are detected for too long
-
Design Case Study: Enemy Perception
The most significant challenge I faced on The Veiled Ones was on enemy perception. I iterated on this player detection system throughout the whole year. Here's a breakdown of the problems and the actions I took to solve them:
PROBLEM 1: VISION CONES
-
My Task: Promote stealth gameplay while preserving enemy invisibility
-
Initial Idea: Because enemies are invisible, vision cones should be circles
-
Top, Image: pre-alpha vision cone diagram
-
-
Situation: Players did not understand why their actions put them in danger
Actions I took:
-
Implemented 2 vision cones for enemies: a 360 degree vision cone for close ranges (< 3m), and 15 to 40 degree vision cones for all other ranges
-
Increased sound detection when the player sprinted to encourage stealth
PROBLEM 2: LOOKING GLASS DEBUFF
-
My Task: Discourage Looking Glass usage near enemies
-
Initial Idea: Enemies' "detection level" should directly increase when a player looks at them through the Looking Glass
-
Situation: Players did not understand why enemies were so angry, especially when they were NOT seen or heard by them
Actions I took:
-
Buffed sight and sound detection ranges for enemies when using the Looking Glass, and removed the direct "detection level" increase
-
This is what players thought was already happening!
-
Bottom, Video: getting detected when looking at enemy through Glass
-
RESULTS FROM THESE ACTIONS
-
Players felt anxious, clever, and satisfied while sneaking past enemies
-
Players used the Looking Glass more sparingly

Pre-alpha vision cone (purple) and sound cone (red)

Getting detected while using Looking Glass

1) Initial Looking Glass behavior mockup in Miro

2) Perception checks initial implementation in engine

3) Final Looking Glass subtree implemented in engine
Project Takeaways

Hiding spot check behavior I implemented
By wrestling with design challenges like the one described above during my time on The Veiled Ones, I made a few key learnings that further inform my process:
LEARNING 1: Player expectations are worth considering and designing around for non-intuitive mechanics instead of forcing a feature to work.
LEARNING 2: Sometimes, the correct solutions to a problem are the obvious ones -- always start small and simple, then add complexity if needed.
-
Video: A "hiding spot check" behavior I implemented for balance
LEARNING 3: In some cases, balancing a feature's difficulty means adjusting EVERY variable, not just the most relevant ones.
As a result of this project's work, I got a better grasp on game balance and feature iteration than before.
Additionally, by the end of the project, I gained several skills that proved useful for future projects:
SKILL 1: How to read, design, and program Behavior Trees (all engines)
-
Image: The implementation of the hiding spot check in Unity
SKILL 2: How to design features with proper intentions, and how to iterate on them while preserving those intentions to ensure cohesive design
SKILL 3: How to write design documentation for other designers, engineers, and multidisciplinary collaborators for implementation
Through gaining these new skills, I improved my technical ability (especially with game AI scripting) and enhanced my communication strategies.

Hiding spot check subtree