top of page
scarecrow_thumbnail_alternate.jpg

Scare Crow

Game Designer (Enemy AI)

Project Overview

On this stealth-tower-defense game, I was the Enemy AI Designer, where I:

  • Designed 3 enemies and 7+ behaviors using Unity, C#, and Behavior Trees

  • Implemented 5+ enemy waves across 2 levels, pathing them through obstacles, determining what enemies spawn, and when they spawn

Scare Crow is a stealth-driven tower defense game where you play as Casey, a crow trying to stop squirrels from stealing her birdseed.  Ambush enemies and set traps to scare squirrels away!

Features:

  • Fly across your backyard as Casey the crow to defend your birdseed

  • Throw acorns to lure squirrels into various traps

  • Scare squirrels away by sneaking behind them and popping out of bushes

This project had 35+ team members and 3 total designers (including me). The game released on Steam with a Positive reception and 94% rating.

Gameplay footage

My Contributions: Enemy AI

Big Fella squirrel takes 2 scares to eliminate

Picky Eater squirrel is harder to catch

I designed and implemented 3 enemies and their 7+ behaviors using behavior trees, including universal and unique behaviors to each enemy. I also taught 4 teammates how to author behavior trees to create their features. Finally, I implemented 5+ enemy waves across 2 levels.

 

Process I established for my design work:

  1. Determine design goals and constraints for enemy AI

  2. Wrote documentation and tested implementation

  3. Iterated and polished based on playtest feedback

My design goals and constraints for enemy AI:

  • Enemy reactions should be outlandish to emphasize a cartoonish world

  • Enemies should have a single goal: steal as much birdseed as possible

  • Players should feel smart when scaring enemies and setting traps

MY IMPLEMENTED FEATURES BREAKDOWN

Universal AI Behaviors

  • Perception: Sight and sound detection, scent sense for acorn lures

    • Scent: Attracts squirrels to acorns, luring them away from the feeders

  • Invasion: Move on preset paths towards bird feeders

  • Confused: Pause slightly when the player is detected

  • Taunting: If the player is detected for too long, a squirrel will laugh at them

  • Scared: Scares the squirrel away for some time, or makes them run off the map entirely with the use of a trap

Enemy Types and Unique Behaviors

  • Basic Squirrel: Runs along path towards bird feeder

  • Big Fella: Requires 2 scares to eliminate completely

    • Top, Video: Big Fella squirrel not getting scared easily

  • Picky Eater: Speedily zig zags along the path

    • Bottom, Video: Picky Eater's erratic pathfinding

Design Case Study: Enemy Pathfinding

The most significant challenge I faced on Scare Crow involved enemy pathfinding behavior. I worked with the level designer to iterate on this system. Here's a breakdown of the problems and the actions I took to solve them:

PROBLEM 1: PATH READABILITY

  • My Task: Create a pathfinding system that gives players enough time to scare enemies away from a bird feeder

  • Initial Idea: Enemies select waypoints on their way to the target feeder

    • Top, Video: waypoint-based pathfinding​​

  • Situation: Players did not understand where enemies were going

Actions I took:

  • Designed a path-based system where enemies would follow preset splines placed in the level, snaking around level obstacles

  • Placed 4+ paths for enemies in 2 levels

PROBLEM 2: FEEDER SWARMING

  • My Task: Give preset paths enough locations for players to scare enemies

  • Initial Idea: Place extremely long paths alongside traps

  • Situation: Player's birdseed sometimes dropped quickly due to enemies swarming bird feeders intermittently, creating a sentiment of unfairness

Actions I took:

  • Shortened paths and created more of them -- placed 10+ paths in 2 levels

  • Iterated on the pathfinding system to split squirrels across bird feeders

  • Iterated on the wave system that allowed the player to set up traps before enemies spawned in; staggered enemy spawns in 5 waves

RESULTS FROM THESE ACTIONS

  • Players understood how enemies moved and where to set traps accordingly

    • Bottom, Video: path-based pathfinding with intersections

  • Enemies traveled to bird feeders more gradually, reducing difficulty​

Pre-alpha pathfinding system (waypoints)

Final pathfinding system (preset paths)

Step 1 pathfinding process

1) Preliminary pathfinding sketch I made on the level geometry

Step 2 pathfinding process

2) Initial implementation of preset path in engine

Step 3 pathfinding process

3) Slightly shorter paths for a wave in Level 1

Step 4 pathfinding process

4) Final game version of pathing in a wave for Level 2

Project Takeaways

Pre-Alpha Basic Squirrel behavior tree

Pre-alpha behavior tree for Basic Squirrel

Because of my previous experience in AI Design, I left Scare Crow with a few improvements in my technical and design skills:

IMPROVEMENT 1: Behavior Tree readability -- they should have enough nodes, fields, and variables to change conditions and actions for fast iteration.

  • Image: Pre-alpha Basic Squirrel behavior tree I implemented

IMPROVEMENT 2: Orthogonal Design added to my process -- different enemies should have functional changes to feel different. (Orthogonal Design, Steve Lee)

IMPROVEMENT 3: Context-dependent design -- ideas that worked on previous games cannot be brought into new ones without understanding why they work.

Due to these improvements, I better understood my design process and how to iterate under time constraints.

bottom of page