Send a message
Overview
Classic snake, rebuilt for head-to-head play
The Snake n Friends pixel logo beside three phone screens: the sector map, a game grid with the snake and a core, and a head-to-head arena with game history

Snake n Friends

Classic snake, rebuilt for a phone and played head to head.

See how it works

Snake n Friends, designed and built end to end: a mobile snake game with a 60-sector campaign and a 1v1 arena where friends and strangers play best-of series for skill rating. Firewalls, glitches and decoy cores make every grid a puzzle, and every run is replayed on the server from its seed and inputs before the score counts.

  • Expo
  • React Native
  • TypeScript
  • React Native Skia
  • Reanimated
  • Expo Router
  • Firebase Auth & Firestore
  • Cloud Functions
  • RevenueCat
  • App Store Connect API
  • react-i18next
  • Sentry
  • EAS Build

The problem this approach addresses

Competitive mobile games have to trust a score that was produced on a player’s phone. Snake n Friends demonstrates a deterministic engine the server replays before a result counts, alongside matchmaking, seasons and a store.

The examples provide discussion points for a consumer mobile product: what runs on the device and what the server verifies, how purchases are granted once even when the store calls back twice, and how a release reaches nine languages.

What it does

The grid

A game you can check.

The engine is a seeded, tick-based simulation: a run is its seed plus the turns you made. Firewalls flash a warning before they go live. Play a round and watch it get replayed. Try it.

  • The same seed always produces the same grid
  • The server re-runs every run before the score counts
  • Drawn on a Skia canvas, glows and all
The sector map for season 1: Grid Engine cleared with three stars, Byte Lane highlighted as the current sector, and Circuit Path, Node Zero and Pulse Gate locked
Campaign

Sixty sectors, one at a time.

The campaign climbs through easy, medium, hard and expert tiers. Each sector has its own firewall layout, earns up to three stars, and unlocks the next.

  • Firewalls, glitches and decoy cores raise the stakes
  • Stars and best scores saved to your account
  • Seasons with a live countdown
An arena between two players: 2 wins to 3, scores 7 to 11, a 32-point rating gain, a Start game button for game 6, and the history of games 1 to 5
Arena

Head to head, a game at a time.

Challenge a friend with an invite code or get matched by rank, then play a series of games in the same arena. Ranked games move your skill rating from Bronze up to Iridescent and the Top 250.

  • Wins, score and rating change for both players
  • Ranked and casual games in one series
  • Matchmaking within your rank band
The home screen: player name and sector, a 6 of 180 star count, the pixel logo, Rewards and Challenges buttons, and a large Play button above the Home, Sectors, Arena and Store tabs
Friends & rewards

Reasons to come back tomorrow.

Daily rewards and challenges sit one tap from Play. Playing a friend every day builds a streak with milestone rewards, and calling cards, themes and power-ups fill out your loadout.

  • Friend streaks with milestone rewards
  • Calling cards on weekly, monthly and seasonal rotation
  • In-app purchases granted on the server, once
FAQ

Why it’s built this way.

How do you keep scores honest?

The game engine is deterministic. The app sends a run’s seed and inputs, and a Cloud Function replays them on the same engine. The score that counts is the one the server gets.

How do arena games work?

Two players share an arena and play a series of games in it. Each game is settled on the server, and ranked games adjust both players’ skill rating with an Elo-style formula.

Why Skia instead of plain React Native views?

The grid redraws every tick with glows, particles and shaders. Skia draws it on a GPU-backed canvas, and Reanimated runs the animation off the JavaScript thread, so effects don’t wait on game logic.

How are purchases handled?

RevenueCat handles the store. The app asks a Cloud Function to grant the item, and the store’s webhook is a backstop; both write to one ledger, so a purchase is never granted twice.

Which languages does it support?

Nine: English, Spanish, French, German, Portuguese, Japanese, Korean, Chinese and Arabic.

Who built it?

Full Stack Technologies, LLC, designed and built end to end. It’s how we’d build your product, too.

Have an app that needs finishing?

Next productParadox

Building something with similar challenges?

Bring the problem and the outcome you need, and we can discuss a focused next step.

Discuss your project →