Rescue Plan

Play as a rescue team and save people from the floods.

1 min read

Rescue Plan Mockup

Play as a rescue team and save people from the floods. Rescue Plan is a game set in a world that is frequently flooded. The player must switch between a large “Mothership” boat (for transport and stability) and a smaller, agile dinghy (for navigating tight, flooded alleyways). I programmed and fine-tuned distinct buoyancy physics for each vessel, creating a tactile difference in gameplay that allows players to adapt their approach seamlessly based on the environment.


My role on the project: Programmer, Game Designer


Chapter I: A New Feel

New Feel and Water Physics

This title is a complete from-scratch rework of the original Rescue Plan: Go Go prototype, built for our final project at the Apple Developer Academy.

My primary contribution was providing a distinct new perspective by fully redesigning the core mechanics. I led the experimentation with various input systems, camera views, and water physics to completely transform the player experience from a simple arcade game into a more tactical simulation.


Chapter II: The Mechanics

Dual Boat Mechanics

Rescue Plan centers around a dual-vessel system. The large boat is used for covering long distances quickly and acting as a mobile base, while the small dinghy is necessary for navigating narrow flooded alleys and is the only vessel capable of physically picking up victims.

Once victims are secured, the game introduces a resource management challenge: victims must be quickly transported back to a tent area to receive shelter and food. Providing this aid before time runs out is essential to prevent the victims from dying, bridging the gap between immediate action-rescue mechanics and a broader survival management system.


Chapter III: Mechanics & Optimization

To ensure smooth gameplay, I had to tackle two major technical challenges: memory management and physics-based animations.

  • Object Reuse (Memory Optimization) In Unity, repeatedly instantiating and destroying GameObjects causes severe garbage collection spikes. Rather than creating and destroying the small boat every time the player deployed it, I utilized an object-pooling method. The small dinghy is nested inside the larger vessel’s hierarchy and toggled off when not in use. It is only activated and detached during deployment, minimizing memory overhead and keeping the frame rate stable.

  • Smooth Kinematic Docking When the large boat docks at the tent, I needed the transition to look cinematic without breaking Unity’s physics system. I wrote a custom Coroutine to handle this:

DockBoat.cs
private IEnumerator DockBoat(Transform target)
{
isDocking = true;
bigBoatController.enableControl = false;
// Take control away from the physics engine to prevent collisions from interrupting the animation
rb.isKinematic = true;
float duration = 5.0f;
float elapsedTime = 0f;
Vector3 startPosition = transform.position;
Quaternion startRotation = transform.rotation;
// Ignore the target's Y position to keep the boat level on the water
Vector3 targetPosition = new Vector3(target.position.x, gameObject.transform.position.y, target.position.z);
while (elapsedTime < duration)
{
elapsedTime += Time.fixedDeltaTime;
float progress = Mathf.SmoothStep(0, 1, elapsedTime / duration);
Vector3 newPosition = Vector3.Lerp(startPosition, targetPosition, progress);
Quaternion newRotation = Quaternion.Slerp(startRotation, target.rotation, progress);
// MovePosition is used to move rigidbodies safely during FixedUpdate
rb.MovePosition(newPosition);
rb.MoveRotation(newRotation);
yield return new WaitForFixedUpdate();
}
// Snap to exact final position to prevent floating point inaccuracies
rb.MovePosition(targetPosition);
rb.MoveRotation(target.rotation);
rb.isKinematic = false;
isDocking = false;
}

Retrospective: Things I’m Proud Of

The game was showcased at an open exhibition at the Apple Developer Academy, where it was played by over 50+ people. Gathering live feedback from such a large and diverse audience was incredible. The game was exceptionally well-received, and players specifically noted that the dual-boat mechanics and resource management systems were both challenging and highly engaging.


Watch The Demo


Review Core Gameplay Scripts (GitHub)