游戏模板
Roofrail Endless Runner Game App
An Expo / React Native endless runner: swipe across three lanes of a rail yard at dusk, jump barriers, slide under signals, collect coins for outfits, finish missions and climb a weekly board. Plays on sample data out of the box.
- 10 个界面
- iOS 和 Android
- 示例数据
- 更新于 2026年10月29日
- 已验证版本
免费复制 · 完整源码 · 无需信用卡
界面
来自实际运行应用的 6 个界面。
包含内容
- Playable in the first second: the game is the home screen, and the first swipe starts the run
- A pure, tested engine: a seeded track with a free lane in every row, jumps, slides, side bumps, a 3-minute speed ramp
- The yard at dusk, freight cars, signals and eight runners, all drawn in code with react-native-svg
- Game feel: hit-stop, screen shake, a crash flash, particles, score pops and haptics, all calm under reduce motion
- Missions counted from real runs, a 7-day daily reward, and an outfit shop paid in coins
- A weekly board of rivals drawn in their outfits, and the phone's 10 longest runs; on Supabase the server times each run
关于此模板
Overview
Roofrail is an endless runner built on Expo SDK 57 and React Native with the FluxNative kernel. The first screen is the game: a rail yard at dusk seen from behind the runner, three tracks running to the horizon, and the first swipe starts the run. Swipe left or right to change lane, up to jump a barrier, down to slide under a signal gantry; freight cars take a lane change. The yard speeds up from 9 to 18 m/s over three minutes.
With .env blank the game runs in sample mode: a sample player with a best of 1,842 m, 3,120 coins, two outfits, ten recent runs, missions half done and day 3 of the daily reward waiting. Everything the player does is kept on the device. Setting the Supabase values turns on the weekly board; setting the RevenueCat keys sells Plus.
Key features
The game: ready, running, paused and over on one full-bleed screen, with the distance, coins and best in the HUD and a medal for each distance band at the end
Rules in a pure engine (engine.ts), unit-tested: every row of obstacles leaves a passable lane, the first hazard is more than 1.5 s away, walls of three only after 400 m
Shop: eight outfits, each with its own headwear (a cap, a beanie, headphones, the hood up, a bucket hat, a headlamp, a visor, goggles), some with a backpack, a scarf or a light trail, bought with coins; the runner shown big on the yard
Missions: three at a time from real runs (jump 12 barriers in one run, collect 300 coins, run 500 m without jumping…), each a step harder the next time
Daily reward: a 7-day ladder claimed once per device date; a skipped day waits instead of starting over
Leaderboard: this week's board, rivals drawn as runners in their outfits and your place among them (a sample crew until Supabase is connected), and the phone's ten longest runs
How to play: the three swipes drawn with the game's own sprites
Settings: sound effects, vibration, reduce motion, Plus, How to play, About, Terms, Privacy and Delete my data
Screens
10 screens: the game (ready, running, paused, over), Shop, Missions, Leaderboard, How to play, Roofrail Plus, Settings, About, Terms of Use and Privacy Policy. One stack with no tab bar; the pushed screens follow the iOS 26 look in light and dark, the game keeps its dusk palette in both.
Game and backend
One requestAnimationFrame loop while running, a pure step(run, dt) with dt clamped to 0.05 s, seeded randomness, swipes through PanResponder (touch, mouse and the preview's taps)
The game folder reads app data through one hook (useGameProgress), so it lifts into another app
Weekly board on Supabase: each player reads only their own rows, one anonymous sign-in per device, names made of the game's words (no free text to moderate)
The server times every run: start_run records the start, and submit_score takes each run once and refuses a distance its time cannot reach
The board's distance rule is the game's own speed curve, held to the engine by tests; nine sample runners fill the first week
Delete my data clears the device and removes the player's anonymous sign-in, name and runs from the board
Monetisation
Roofrail Plus is one non-consumable in-app purchase sold through the App Store and Google Play with RevenueCat (react-native-purchases): every outfit, including one only Plus has, and double coins on every run. Access comes from the plus entitlement only, with Restore purchase on the Plus screen. Without RevenueCat keys the Plus screen shows the intended price marked as a sample, says purchases open in the App Store version, and never grants access. No ads, no loot boxes, nothing that pays out.
Setup
Connect Supabase, apply the three migrations and allow anonymous sign-ins for the weekly board
Connect RevenueCat with a roofrail_plus product and a plus entitlement to sell Plus
Reskin the yard, the runner and the outfits in palette.ts, outfits.ts and art.tsx
Replace the sample Terms of Use and Privacy Policy with your own
你将获得
- 完整源码 — 使用 TypeScript 的 Expo 和 React Native,作为你工作区中的一个应用。
- 实时预览 — 在浏览器或手机上试用每项更改。
- 已验证版本 — 可编译,每个界面都能无错误打开。
- AI 助手 — 用聊天修改任何内容;每次修改会消耗积分。
- 构建与上架 — iOS 和 Android 构建,从发布页发送到 App Store 和 Google Play。
- 复制不耗积分 — 复制本身不收费。
使用较早版本的 FluxNative 制作。你的副本可以照常使用;需要应用语言、货币和关于链接时,请让智能体更新。
你需要什么
- FluxNative 账号 — 免费套餐最多可有 2 个应用。
- 无需先接后端 — 在你连接自己的后端之前,它使用示例数据运行。
- Creator 或更高套餐 — 用于原生构建和上架。
- 商店账号 — Apple Developer Program(每年 99 美元)和 Google Play(一次性 25 美元),用于发布。
源码里有什么
- 个界面
- 10
- 个文件(副本中)
- 339
- 行为此应用编写的代码
- 8,012
- 个现成 UI 组件
- 139
应用文本语言:英语和越南语
技术栈
- Expo SDK
- 57.0.22
- React Native
- 0.86.3
- React
- 19.2.8
- TypeScript
- 6.0.3
- Expo Router
- 57.0.21
- Supabase JS
- 2.112.3
- RevenueCat
- 10.9.1
来自此版本的 package.json。
设计系统
- 标题
- 系统字体
- 正文
- 系统字体
- 仅深色模式
- Liquid Glass
- 胶囊按钮
- 悬浮卡片
复刻后的设置
你的副本会和构建它的 AI 助手一起打开。按顺序完成步骤:某一步需要连接的内容,请在 Server 中连接,然后发送每条提示词。
Connect Supabase for the weekly board
Server › Backend › Supabase. Apply the three migrations in supabase/migrations in name order, allow anonymous sign-ins in the Supabase dashboard, and write the project URL and anon key to .env.
给 AI 的提示词Connect this game to my Supabase project from Server › Backend › Supabase. Write EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY to .env. Apply the three migrations in supabase/migrations in name order: 20261027090000_weekly_board.sql, 20261027090100_weekly_board_crew.sql, then 20261027120000_weekly_board_server_timed.sql. Remind me to turn on Authentication › Sign In / Providers › Allow anonymous sign-ins in the Supabase dashboard, because each device signs in anonymously the first time it starts a run. Then check that the Leaderboard opens on This week with the nine sample runners, and that a finished run appears there under the device's board name.
Sell Roofrail Plus
Server › Monetization: a non-consumable roofrail_plus in App Store Connect and Google Play, the RevenueCat entitlement plus and the offering default with a Lifetime package, then the public SDK keys in .env.
给 AI 的提示词Set up Roofrail Plus through RevenueCat from Server › Monetization. Create a non-consumable in-app purchase with the product ID roofrail_plus in App Store Connect and a one-time product roofrail_plus in Google Play, an entitlement named plus that holds them, and the current offering default with a Lifetime package of it. Write EXPO_PUBLIC_REVENUECAT_IOS_KEY and EXPO_PUBLIC_REVENUECAT_ANDROID_KEY to .env, and set PLAN_PREVIEW in src/services/iap/index.ts to the price I choose. Tell me how to test a sandbox purchase and Restore purchase on a device build.
Reskin the yard and the runner
The world's colours are in src/features/game/palette.ts, the outfits and their coin prices in outfits.ts, every drawing in art.tsx and runner.tsx, the logotype in assets/logo.svg. Keep outfit ids stable once players own them.
给 AI 的提示词Reskin Roofrail for my game. Change the world's colours in src/features/game/palette.ts to my palette, rename and recolour the eight outfits in src/features/game/outfits.ts (keep their ids), and redraw the logotype in assets/logo.svg with my game's name, then render assets/logo.png from it at 1080 px wide (src/features/game/Logo.tsx shows it). Keep the lime coin colour for coins only. Show me the ready screen and the shop after the change.
Use your own Terms and Privacy Policy
Set EXPO_PUBLIC_TERMS_URL and EXPO_PUBLIC_PRIVACY_POLICY_URL in .env, or replace the sample text of the in-app pages in src/features/legal/copy.ts with your studio's own.
给 AI 的提示词Replace Roofrail's sample legal text. Ask me for my studio's name and contact email, then rewrite src/features/legal/copy.ts (Terms of Use and Privacy Policy) for my studio, keeping what the game really does: progress on the device, the weekly board's anonymous sign-in and run data when Supabase is connected, Plus through the App Store and Google Play, and Delete my data. If I already host the pages, write their addresses to EXPO_PUBLIC_TERMS_URL and EXPO_PUBLIC_PRIVACY_POLICY_URL in .env instead.
如何使用此模板
许可与支持
许可
为你生成的应用归你所有;模板代码仍归 InspireUI 所有,并授权你在自己的应用中使用(条款 › 我们的知识产权)。
由 FluxNative 制作
支持政策常见问题
免费吗?
复制免费模板不收费,也不耗积分;Premium 模板按网站一次性购买。聊天修改和构建会消耗积分。
我拥有什么?
为你生成的应用归你所有。模板代码仍归 InspireUI 所有,并授权你在自己的应用中使用(条款 › 我们的知识产权)。
需要懂代码吗?
不需要。用日常语言让助手修改;需要时随时可看完整源码。
自带后端吗?
不带。完整应用会写明所需后端,你在 Server 中连接自己的;设计模板使用示例数据运行。
可以改设计吗?
可以。设计标签页可设置品牌色、颜色、字体和圆角,不耗积分;其余由助手修改。
发布需要哪个套餐?
Creator 或更高套餐,用你自己的 Apple 和 Google 账号构建并上传到商店。Premium 模板的应用在连接其网站后,任何套餐都能构建。
能下载源码吗?
可以,使用“下载源码”或“推送到 GitHub”,前提是你的工作区已购买套餐、积分或付费模板。Premium 模板的应用还需连接其网站。
如果是用较早版本的 FluxNative 做的呢?
你的副本照常可用。让助手把它更新到较新的功能,如应用语言和货币;这是最后一个设置步骤。
准备好打造你的应用了吗?
从 Roofrail Endless Runner Game App 开始,通过聊天修改任何内容。你的副本包含完整源代码。
免费复刻,无需信用卡。