Supabase 独立游戏开发者的免费后端:从零到上线只要一个周末
日期:2026-05-01 标签:Supabase · 后端即服务 · PostgreSQL · 游戏开发 · 独立开发者 · 0元购
独立游戏开发者最怕什么?
不是没有灵感,不是没有时间,是有了想法却发现后端太贵。
一个 Steam 游戏需要玩家数据存档、需要排行榜、需要工坊评论——这些东西听起来需要服务器、需要数据库、需要运维人员。托管服务一个月几百块是起步价,更别说日活跃用户多了之后的按量账单。
有没有一种方案,可以从零开始不花一分钱,然后随着用户变多再慢慢付费?
这就是 Supabase。
为什么独立开发者应该关注 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, -- Steam User ID
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 里保存存档只需要几行:
// 保存到 Supabase
var save = new { user_id = steamId, slot = 1, game_data = myGameData };
await supabase.From("player_saves").Upsert(save);
这样每个玩家的存档都独立隔离,没有服务器端代码,没有 SSL 证书,没有运维——存档服务就这么上线了。
Steam 排行榜
不想用 Steam 的排行榜 API(因为它有时候慢、还依赖 Steam 服务器),自己做一个:
create table leaderboard (
id uuid default gen_random_uuid() primary key,
user_id text not null,
username text not null, -- Steam 显示名
score bigint not null,
level integer default 1,
created_at timestamptz default now()
);
-- 获取前 100 名:一次 SQL 完成,不需要代码处理
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
这个接口返回 JSON,可以直接在游戏里解析显示。排行榜查询,不需要服务器代码,不需要后端。
玩家评论与工坊
游戏发售后的社区运营很重要,但建论坛太重,建 Discord 需要维护。
用 Supabase 的 Storage 和 Database 组合,可以做一个"游戏工坊"系统:
- 截图上传到 Storage,生成公开 URL
- 评论数据存在 PostgreSQL 表里
- 通过 RLS 控制只有登录用户可以发言
评论审核也简单,加一个审核状态字段:
alter table workshop_posts add column status text default 'pending'
check (status in ('pending', 'approved', 'rejected'));
游戏数据分析
当游戏有几千个活跃玩家时,你想分析:
- 哪个关卡卡住的人最多(关卡死亡率)
- 哪个道具组合玩家用得最多(道具关联分析)
- 每日留存、周留存
Supabase 的 PostgreSQL 可以直接写 SQL 查这些:
-- 7日留存率
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元购的核心)
Supabase 免费版有 500MB PostgreSQL 存储,看着不大,但如果用对了方式,对独立游戏来说绑绑够。
技巧一:压缩数据存储
游戏存档不要存整个 JSON——只存差异(delta)。每次存档上传增量数据,而不是把完整存档全量覆盖。
// Unity C#:只上传变更的部分
var delta = CalculateSaveDelta(previousSave, currentSave);
await supabase.From("player_saves").Where(s => s.UserId == steamId).Upsert(delta);
技巧二:利用 Storage 省钱
截图、工坊图片、MOD 文件可以统一存 Supabase Storage。免费版有 1GB 上传/下载流量,一个月对于中小型独立游戏来说够了。如果超了,$25/月的 Pro 版有 100GB,完全不需要 OSS 或者七牛云的付费套餐。
技巧三:利用 Edge Functions 做轻量逻辑
有一些逻辑不想放在客户端做(比如验证码、第三方 API 调用、数据聚合),可以用 Edge Functions 写。它免费版每天 50 万次调用,大多数独立游戏的量根本用不完。
// Edge Function:定时清理30天前的匿名测试数据
Deno.serve(async (req) => {
const { date } = await req.json();
await supabase.sql`
DELETE FROM anonymous_sessions WHERE created_at < now() - interval '30 days'
`;
return new Response('Cleaned up old sessions');
});
什么时候该升级
免费版用到什么时候需要升级?三个判断标准:
信号一:每月活跃用户超过 3 万
免费版的 5 万月活限制是"每月新认证用户数",不是同时在线。如果你的游戏活跃用户在持续增长,接近 3 万了,可以考虑 Pro 版本。$25/月换一个稳定的后端,不算贵。
信号二:存储接近 500MB
500MB 的数据库存储,对于存玩家数据存档来说可以存几百万条记录,但如果你的游戏有UGC内容(玩家生成的地图、角色皮肤),很容易逼近上限。Pro 版 8GB 多了16倍。
信号三:需要自定义域名和 SSL
免费版所有 Supabase 子域名都有 SSL,但 Storage 的 Bucket URL 是 Supabase 的域名。如果你想用自己游戏的域名(assets.yourgame.com),需要 Pro 版。
从零开始的搭建路线图(一个周末)
第一天上午:
- 注册 supabase.com(用 GitHub 账号登录)
- 创建项目,获得数据库连接信息和 API 地址
- 把 Supabase 客户端 SDK 集成到 Unity 项目里(NuGet 包或者 Unity Package Manager)
第一天下午:
- 设计你的第一个数据表(玩家存档 or 排行榜)
- 写 RLS 策略(让你的代码只访问自己玩家的数据)
- 测试 CRUD:保存存档、读取存档
第二天上午:
- 把 Storage 搭起来(如果需要上传截图或工坊内容)
- 把用户认证接进来(Supabase Auth 支持 Steam 开放认证,天然适合独立游戏)
第二天下午:
- 部署 Edge Functions(如果需要服务端逻辑)
- 上线测试,从本地开发环境切换到生产环境
两天,你就有了一个完整的后端。对于大多数独立游戏来说,这个后端足够支撑从 Early Access 到正式发售的全生命周期。
迁移的代价:万一以后不用了怎么办
这是所有 BaaS 服务的共同问题:供应商锁定。
Supabase 的锁定程度在主流 BaaS 里是最低的:
- 你的数据是 PostgreSQL,不是专有格式。随时可以
pg_dump导出。 - 所有 SDK 都是开源的,代码在 GitHub 上。
- Supabase 本身是开源的,你可以自己搭一套用——不依赖 Supabase 官方服务器也能跑。
即使有一天 Supabase 涨价离谱或者服务不稳定,迁移的成本也就是:把 PostgreSQL 数据库导出,用 Docker 部署一套自己的 Supabase 开源版,把环境变量切换一下。前端代码几乎不用改。
适合不适合的场景
适合:独立游戏后端、玩家存档、排行榜、工坊、用户评论、数据分析、原型快速验证、团队协作工具。
不太适合:需要实时多人对战的 FPS/MOBA(需要专门的 Game Server)、超大规模用户量(千万级以上)、对数据主权要求极高(金融/医疗)——这些场景需要专门的游戏后端架构,不是一个 BaaS 能搞定的。
快速开始
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