Original iOS project · SwiftUI

A branching zombie story— and the project that began my iOS journey.

Survive is a text-based RPG for iPhone. Players wake to a collapsed world, make high-stakes choices, and move through illustrated chapters toward safety.

The current build includes 17 chapters, multiple routes, and one shared ending.

Survive opening screen with a lone figure facing a ruined city
Survive Swift · SwiftUI · MVVM
Format
Interactive fiction
Platform
iOS
Built
2024

Project overview

Learning Swift by building a complete experience.

Survive began with a practical goal: turn a choose-your-own-adventure idea into a working iPhone app.

Building the game made abstract lessons about navigation, state, and data flow concrete. Each chapter lives as structured data; every choice points to another chapter; and a focused view model keeps the interface in sync with the player's path.

Why it matters

This was my first Swift project—the point where studying iOS concepts became designing, debugging, and finishing a usable product.

Project purpose
Explore SwiftUI by building a choice-driven story with a clear beginning, branching journey, and ending.
My role
Independent iOS developer, interface designer, and story creator.
Technology
Swift, SwiftUI, MVVM, NavigationStack, ObservableObject, and AppStorage.
Story structure
Seventeen structured chapters connected by player choices and chapter identifiers.
Reader settings
Adjustable text size saved across launches for a more comfortable reading experience.
Current scope
Different routes change the journey and currently converge on one ending, leaving room for future expansion.

The experience

Story, choices, and atmosphere.

Choices move the story

Each decision maps to a new chapter, giving players different routes through the same survival scenario.

Illustration builds atmosphere

AI-generated comic-style scenes support the text and give key moments a consistent visual tone.

Reading adapts to the player

A persistent font-size setting lets players tune the narrative-heavy interface to their preference.

What I learned

The technical foundation behind the story.

The most important outcome was not a single screen. It was learning how models, state, and views work together across an entire app.

  • Swift
  • SwiftUI
  • MVVM
  • NavigationStack
  • AppStorage
  1. 01

    Put story relationships in the data.

    Chapter identifiers and next-chapter links keep branching logic out of the presentation layer.

  2. 02

    Give shared state one clear owner.

    A dedicated view model tracks the current chapter and updates the experience when a player makes a choice.

  3. 03

    Design for reading, not just looking.

    Persistent font controls matter in an app where long-form text is the primary interface.

  4. 04

    Describe the product as it exists.

    Clear scope builds more trust than presenting future ideas as finished features.

Where it led

Survive became a foundation, not a finish line.

The original story later became the flagship narrative inside Step By Step, a SwiftUI project that connects HealthKit activity with story energy, achievements, and replayable progress.

Contact

Want to talk about the build?

I’m always glad to discuss SwiftUI, interactive storytelling, or what I learned while building Survive.