Supabase 独立游戏开发完全指南:免费后端从零到上线只要一个周末
日期:2026-05-01 标签:Supabase · PostgreSQL · 后端即服务 · 游戏开发 · 独立开发者 · 0元购 · 教程
为什么独立开发者应该关注 Supabase
Supabase 是一个后端即服务(BaaS)平台,但它的内核是 PostgreSQL——业界最成熟的关系型数据库,微信、Instagram、Reddit 都在用。
你可以把它理解成:你多了一个可以随时连接的 PostgreSQL 数据库,多了一个 S3 兼容的文件存储空间,多了一个开箱即用的用户登录系统——这些加在一起,免费版就够用一个中小型独立项目的整个生命周期。
| 功能 | 免费版限制 | Pro 版($25/月) |
|---|---|---|
| 数据库 | 500MB 存储 | 8GB 存储 |
| 存储 | 1GB 上传/下载 | 100GB |
| 每月活跃用户 | 5万 | 10万(超出 $0.003/个) |
| API 请求 | 无限 | 无限 |
| 用户认证(Auth) | 每月 1万新用户 | 5万新用户/月 |
| Edge Functions | 每天 50万次调用 | 每天 500万次调用 |
对于一个刚上线的独立游戏来说,5万月活是什么概念?Steam 评价超过 1 万条的游戏,在中国独立游戏圈已经算是"爆款"了。绝大多数游戏终其生命周期都在几千到几万月活的区间里。
换句话说:免费版够你用到游戏盈利。
你可以用它做什么
玩家数据存档
Steam 的云存档需要你每次更新游戏版本后兼容旧存档格式,一旦格式变更就面临数据丢失风险。很多独立游戏干脆放弃云存档。
用 Supabase 建一个玩家存档表:
create table player_saves (
id uuid default gen_random_uuid() primary key,
user_id text not null,
slot integer not null default 1,
game_data jsonb not null,
level_reached integer default 1,
playtime_seconds bigint default 0,
updated_at timestamptz default now()
);
alter table player_saves enable row level security;
create policy "Players can only access own saves"
on player_saves for all
using (auth.jwt() ->> 'steam_id' = user_id);
Unity 里保存存档只需要几行:
var save = new { user_id = steamId, slot = 1, game_data = myGameData };
await supabase.From("player_saves").Upsert(save);
这样每个玩家的存档都独立隔离,没有服务器端代码,没有 SSL 证书,没有运维——存档服务就这么上线了。
Steam 排行榜
不想用 Steam 的排行榜 API,自己做一个:
create table leaderboard (
id uuid default gen_random_uuid() primary key,
user_id text not null,
username text not null,
score bigint not null,
level integer default 1,
created_at timestamptz default now()
);
create policy "Anyone can read scores" on leaderboard for select using (true);
create policy "Anyone can submit scores" on leaderboard for insert with check (true);
前端直接调用:
GET /rest/v1/leaderboard?select=username,score,level&order=score.desc&limit=100
玩家评论与工坊
用 Supabase 的 Storage 和 Database 组合,可以做一个"游戏工坊"系统:截图上传 Storage,评论存在 PostgreSQL 表里,通过 RLS 控制只有登录用户可以发言。审核加一个字段:
alter table workshop_posts add column status text default 'pending'
check (status in ('pending', 'approved', 'rejected'));
游戏数据分析
当游戏有几千个活跃玩家时,想分析哪个关卡卡住的人最多、道具组合使用频率、留存率——直接写 SQL:
select
date_trunc('day', first_play) as cohort,
count(distinct user_id) as dau,
count(distinct case when (login_day - first_play) <= 7 then user_id end) as retained_7d
from user_logins
group by 1 order by 1;
不需要额外的 BI 工具,不需要接 Amplitude,SQL 查出来直接进 Excel 或 Notion。
免费版使用技巧(0元购的核心)
技巧一:压缩数据存储——存档不要存整个 JSON,只存差异(delta)。
var delta = CalculateSaveDelta(previousSave, currentSave);
await supabase.From("player_saves").Where(s => s.UserId == steamId).Upsert(delta);
技巧二:利用 Storage 省钱——截图、工坊图片、MOD 文件免费版 1GB 够用,Pro 版 100GB 足够大多数独立游戏。
技巧三:利用 Edge Functions 做轻量逻辑——免费版每天 50 万次调用,大多数独立游戏的量根本用不完。
Deno.serve(async (req) => {
await supabase.sql`
DELETE FROM anonymous_sessions WHERE created_at < now() - interval '30 days'
`;
return new Response('Cleaned up old sessions');
});
什么时候该升级
三个判断标准:
- 月活超过 3 万:免费版的 5 万月活限制是"每月新认证用户数",接近上限了可以升级 Pro
- 存储接近 500MB:玩家存档 + UGC 内容容易逼近上限,Pro 版 8GB 多了 16 倍
- 需要自定义域名:Storage 的 Bucket URL 想用自己的域名(
assets.yourgame.com),需要 Pro
从零开始的搭建路线图(一个周末)
第一天上午:注册 supabase.com → 创建项目获得 API 信息 → 把 SDK 集成到 Unity
第一天下午:设计第一个数据表 → 写 RLS 策略 → 测试保存/读取存档
第二天上午:Storage 上线(截图/工坊)→ 接 Supabase Auth(支持 Steam 开放认证)
第二天下午:Edge Functions 上线(服务端逻辑)→ 生产环境切换测试
两天,你就有了一个完整的后端。足够支撑从 Early Access 到正式发售的全生命周期。
适合与不适合的场景
适合:独立游戏后端、玩家存档、排行榜、工坊、用户评论、数据分析、原型快速验证。
不太适合:需要实时多人对战的 FPS/MOBA(需要 Game Server)、超大规模用户量(千万级以上)、对数据主权要求极高的金融/医疗场景。
快速开始
1. 访问 https://supabase.com
2. 用 GitHub 账号登录(免费,无需信用卡)
3. 点击 "New Project",选择免费计划
4. 获得 Project URL + anon key,填进 Unity
5. 照着官方文档开始写第一行代码
Supabase 文档是同类产品里最好的之一,每个功能都有完整教程和示例。
相关资源
官网:https://supabase.com Unity SDK:https://github.com/supabase/supabase-csharp 免费计划:https://supabase.com/pricing 游戏案例:https://supabase.com/customers/gaming