我做了一个「用走路占领城市」的像素地图App,上线后发现最难的不是技术

6 阅读6分钟

这个 App 的核心想法很简单

走到哪,地图亮到哪。

不是步数统计,不是卡路里,就是字面意思——你走过的每一条街道,会在地图上变成你的颜色,一格一格地填满空白区域。我管这叫「像素领地」。

做这个 App 的起因说出来有点傻:去年我在一个新城市出差,拿着地图找咖啡馆,走了很多弯路,结果脑子里冒出一个念头:「要是能把我走过的地方全记下来,做成一张地图,回头看一定很爽。」然后就真的去做了。App 叫像素征途,Apple ID 是 6761253224,目前 1.10 版本,App Store 评分 5 分。


技术实现比我想象的复杂一些

表面上看就是「GPS 轨迹 + 地图渲染」,但真正做起来,有几个地方让我卡了很久。

格子的尺度怎么定?

每个像素格(Tile)代表现实中多大的区域,直接影响游戏感。太小,走几步就能点亮,没有成就感;太大,走半天也就一两格,挫败感很强。我最后把单格面积定在 100 平方米,对应 tileAreaSquareMeters = 100,城市正常街道宽度大概是这个粒度的 2-3 倍,走一条街能稳定点亮 4-8 格,感觉刚好。

区域「征服」判定怎么做?

每个 Zone 是 8×8 的格子矩阵,也就是 64 格。我设了两个阈值:点亮 58 格以上算「已征服」(zoneConqueredTileThreshold = 58),全部 64 格点亮算「完美」。90% 的覆盖率才能征服,逼着人去补那几个死角格子,这个设计是我后来玩自己的 App 时觉得缺少什么才加的。

热力图的衰减逻辑

走过的路不能永远亮着,要有「新鲜感」概念。我在 MapHeatRules 里定了几个衰减节点:走完 4 天后路线光晕开始衰减,7 天后亮度明显下降,格子残影会在 30 天后降到 12% 的透明度(tileResidualOpacity = 0.12)。这样地图上既保留历史足迹,又能让最近走的路明显突出。

连击倍率

连续走 3-4 天,贡献分乘以 1.5;连续 5 天以上,乘以 2.0。每天的有效贡献上限是 50 分(dailyContributionCap = 50),防止有人一天走 30 公里刷榜。这套规则全在 RouteScoreRules 里,改起来很方便。

定位的冷启动问题

第一次打开 App 还没拿到 GPS 的时候,地图中心点落在哪?我根据系统 locale 做了区域判断,中国大陆默认上海陆家嘴,台湾给台北 101,日本给东京车站,美国给旧金山——总比扔到非洲外海的 (0, 0) 强。这个细节很小,但如果不处理,海外用户第一次开屏会看到一片大西洋,体验很差。


有个用户反馈让我有点难受

上线之后评论里有一条 5 星好评,但内容是:

扫描历史足迹时能否不要限制年份呢?目前我看只导入最近 3 年的位置。前些年去旅游的照片的位置现在无法导入了。

这个功能我其实已经做了三档:最近 1 年、最近 3 年、全部历史(PhotoImportRange 枚举里的 allHistorycutoffDate 返回 nil 代表不做截断)。但默认选项是「最近 3 年」,而且我猜界面上入口不够明显,这位用户没发现「全部历史」这个选项。

说白了是我的 UI 没做清楚,不是功能缺失。有点可惜,准备在下个版本把这里改明显一点。

还有一条说「无法参与探索榜」——这个我知道,排行榜功能(LeaderboardScope 里的 global/friends/local 三档)目前服务端还没全开,是我主动关的,等用户量上来再打开。当时上架的时候想着先让少数用户试,没想到这事儿会被当作 bug 反馈。


做这类 App 我觉得最难的部分

不是 GPS 精度,不是地图渲染性能,是怎么让人第二天还想打开

我在这件事上栽过一次。

第一版根本没有格子,只有轨迹线——走过的路在地图上留下一条彩色的线,类似跑步 App 的路线回放。我自己用了三天就不想开了。看着那几条线,我说不清它们意味着什么,也没有任何「还差一点就能怎样」的感觉。第四天我就把这个方案整个删掉,重新想格子的逻辑。

格子解决了一个很具体的问题:它有边界。一个格子要么亮,要么没亮,非常清晰。你走过那条街,那格永远是你的;你没去过的区域,空着就是空着,一眼能看出来「那边我还没去过」。轨迹线没有这种感觉,它只是记录,不是占领。

步数类 App 的通病是:记录了一堆数据,但数据本身没有意义。你今天走了 8000 步,和明天走 9000 步,除了数字大了一点,没什么本质区别。格子不一样,每一格都有坐标,有位置,点亮了就在地图上永远留着,这种感觉更接近「收藏」而不是「统计」。

玩家标记样式我做了 8 种(classic / minimal / pulse / flame / starlight / golden / neon / shadow),其中几个是付费解锁的。这是目前唯一的变现设计,说实话转化数据我还不知道,因为才刚上线,样本太少没法看。

日常任务系统(DailyTaskType)有四种:解锁新格子、步行距离、步行时长、连击维持。每完成一个给碎片奖励,碎片可以干什么我还没全想好,这算是给自己留的一个坑。


现在的状态

7 天下载量是 0。

这个我有预期——没有买量,没有专门做 ASO,也没有任何推广渠道,纯靠自然搜索。App Store 的自然流量对新 App 基本等于没有,这是独立开发绕不开的问题。目前在摸索这类 App 在哪些渠道能找到真实用户。

评分是 5 分,虽然评论数量少,但评价内容都是真实使用后写的。「和世界迷雾一样好玩」这条评论——世界迷雾是我做这个 App 之前研究过的产品之一,被这样类比,说明方向没走偏。

现在手头有几个确定要做的事:

  1. 把照片导入的时间范围选择做得更显眼
  2. 把排行榜逻辑再打磨一下再开放
  3. App 图标被一个用户说「看着像游戏图标」,我觉得这其实是对的,但要看对目标用户来说这是加分还是减分

如果你也做过或者用过这类游戏化步行 App,我挺好奇一件事:让你第二天还想打开的原因是什么?是地图上出现了新变化、有任务提醒推着你,还是别的什么?