EcoRun – Project Case Study

EcoRun – 🛠️ (under development)

Endless Runner | Unity | Mobile

A mobile endless runner focused on scalable gameplay architecture and performance across a wide range of devices.

Project Overview

EcoRun was built to run smoothly across a wide range of Android devices while supporting continuous feature expansion.
The primary goal was to avoid the common endless-runner pitfalls: tightly coupled player logic, fragile power-up systems and late-stage performance fixes.

My Role

  • Lead Game Developer
  • Gameplay Architecture & Systems Design
  • Performance Optimization (Mobile)
  • Team Collaboration & Technical Direction

The Core Challenge

At its core, EcoRun faced a deceptively simple problem:

How do you keep an endless runner flexible when its mechanics are constantly growing?

Early prototypes worked well, but as features like power-ups, abilities and progression systems increased, the risk of architectural decay became clear. Without strong system boundaries, even small changes could introduce instability.
At the same time, mobile performance constraints meant that optimization couldn’t be an afterthought. It had to be built into the foundation.

Key Technical Decisions

1. Gameplay Architecture

Instead of relying on a monolithic PlayerController, I split responsibilities into focused systems:

  • Input handling
  • Movement & physics
  • Player states (run, jump, slide, stunned)
  • Ability & power-up handling

Each system communicated through events and interfaces, not direct dependencies.
This allowed mechanics to evolve independently without breaking core movement logic.

2. Power-Ups as Modifiers

Power-ups were treated as temporary behavior modifiers, not logic controllers.

This approach ensured:

  • Clean activation and deactivation
  • Predictable stacking behavior
  • No permanent state corruption

New abilities could be added without touching existing systems. Critical for long-term scalability.

3. Mobile Performance Strategy

Because EcoRun targets mobile devices, performance considerations shaped every decision:

  • Object pooling for obstacles and collectibles
  • Minimal Update() usage
  • Event-driven gameplay logic
  • Deterministic physics interactions

Rather than optimizing late, the architecture itself supported performance from day one.

4. Lighting & Visual Optimization

To achieve polished visuals without sacrificing FPS, I avoided heavy real-time lighting and instead used:

  • Baked lighting for static environments
  • Light probes for dynamic objects
  • Fake blob shadows instead of real-time shadows

This combination delivered believable visuals while maintaining stable performance across mid-range devices.

Results

  • Stable 50–60 FPS on mid-range Android devices
  • Reduced bug surface area due to clean system boundaries
  • Faster iteration when adding new mechanics
  • Architecture that supports live updates and future expansion

What I’d Improve Next

If EcoRun were extended further, I would focus on:

  • Deeper data-driven progression tuning
  • Live Ops tooling for faster balancing updates
  • Enhanced analytics-driven design decisions

The current foundation supports these improvements without requiring major refactors.

Key Takeaways

  • “Simple” games demand strong architecture
  • Early separation of responsibilities prevents long-term instability
  • Mobile performance must influence design decisions early
  • Systems that scale reduce both bugs and development stress

Related Work

Interested in collaborating or discussing this project?

Scroll to Top