Dashsurfers

July 16, 2026 ยท View on GitHub

An endless-runner showcase for flutter_scene. Dash sprints down an infinite country road that curves over a false horizon, switching lanes, jumping, and rolling past obstacles, riding shipping-container ramps, and chaining coin streaks.

Everything renders through flutter_scene on Flutter GPU: PBR road and container materials, a procedural sky, GPU-authored grass with wind, custom .fmat materials throughout, and a Rapier-physics crash ragdoll.

Requirements

  • Flutter master channel. flutter_scene uses Flutter GPU features that are only available on master: flutter channel master && flutter upgrade
  • flutter_scene at master, checked out as a sibling (see layout below). The app depends on it by path.
  • macOS is the primary target (the app runs where Flutter GPU/Impeller runs).

Directory layout

The pubspec's path dependencies expect the flutter_scene checkout two levels up:

<workspace>/
  flutter_scene/          # github.com/bdero/flutter_scene, master branch
  content/
    dashsurfers/          # this repo

Set it up with:

mkdir workspace && cd workspace
git clone https://github.com/bdero/flutter_scene.git
mkdir content && git clone https://github.com/bdero/dashsurfers.git content/dashsurfers

Run

cd content/dashsurfers
flutter run -d macos --enable-flutter-gpu --enable-impeller

The first run compiles the .fmat material bundle through the build hook. If materials ever look stale after changing a .fmat or the flutter_scene path, reset the caches:

rm -rf .dart_tool build

Controls

InputAction
A/D or arrow keys, controller stick/dpadSwitch lanes
W/Up/Space, controller up or south buttonJump (jump during a roll cancels it)
S/Down, controller down or east buttonRoll (mid-air slams into the roll)
Enter/Space, controller menuStart / restart
RRestart after a crash
TBack to the title screen
FToggle the FPS counter
BacktickDebug fly-cam (WASD + drag)
Gear iconLive settings panel (persisted; Reset restores defaults)

Tests

flutter test

The road and spawner tests are pure Dart (no GPU) and verify the scroll ring recycling and obstacle density math.