关于 Rail Typing
Rail Typing 是一个人做的小项目:一款打字游戏,你按顺序打出站名来驱动列车沿真实线路前进。目前收录东京与大阪的 52 条线路、1078 座车站。
为什么要做这个
我练日语打字的起点和大多数人一样:单词表。有效果,但很无聊。真正让练习坚持下来的,是打那些我脑子里本来就有地图的东西——而对在东京待过的人来说,铁道网络恰恰就是这样的东西。你不需要把「新宿」当生词背,你在那个站台上站过。
所以这个游戏把一条线路变成一次「行车」。你选线路、选起点站、选方向,只有正确打出下一站站名,列车才会前进。第一条课程之所以是山手线的 30 站,是因为它是环状线——没有终点可抵达,一次行车的长度天然一致、可以互相比较,而且不用重新设置就能再跑一圈。
结果是练习有了「形状」。一次行车不是「打两分钟」,而是从东京到东京;你要么比上次快,要么没有。
输入引擎怎么工作
花时间最多的是罗马字匹配,也是我最愿意为之辩护的部分。日语罗马字并非一一对应:「し」写作 shi 或 si 都对,「つ」是 tsu 或 tu,「しゃ」是 sha 或 sya。只接受一种拼法的打字游戏,测的不是你的日语,而是你有没有学过和作者同一张罗马字表。
所以每个假名单元都带着它能接受的全部拼法,规范写法排在最前。匹配是逐击键的前缀匹配:只要当前单元还有任一候选拼法以你已输入的前缀开头,这次击键就被接受。打下 s 时,shi、si、sha、sya 都还活着;再打一个 y,就落定为 sya。不到必须决定的时候,绝不提前决定。
有两个假名不肯守规矩,两者都在分词阶段处理,而不是留到匹配时。促音「っ」会让后一个辅音双写,「ん」后面跟着的 n 属于下一个音拍。二者都在开始输入之前就折进后面的单元,所以匹配器永远不需要跨边界向前看。这是那种运转正常时没人察觉、一旦出错就让人抓狂的设计取舍。
打错的按键会被拒绝,而不是被吞下。你不需要退格来修正手误——那个字符根本不会落下,错误被计入统计,你继续往下打就行。退格仍然存在,用来退回已完成的音拍;它的实现方式是从头重放输入,而不是就地回滚状态。
数据从哪来
站名、假名读音、车站编号、线路符号和线路配色都是公开事实。我依据各运营商自家的导视标识与公布的车站编号逐条誊录,再把每条线的站序从头到尾核对一遍。每个站的假名读音都有自动测试:只要有任何一个站名无法用其规范罗马字完整打完,构建就会失败——这已经抓出了比我愿意承认的更多的手误。
每条线在屏幕上的形状,视线路而定,或是照官方示意图手工描摹,或是由真实坐标投影而来。地铁图是示意图,不是地图;重点在于,一条线看起来要像你在车站墙上认得出的那个样子。
线路数据带版本号。当某条线的车站或输入规则发生变化时版本号会提升,成绩只在同一版本之间比较,个人最佳不会悄无声息地变得无从对比。
这个项目不是什么
本站是非官方的粉丝项目,与 JR东日本、JR西日本、东京地铁、都营地下铁、Osaka Metro 或任何其他运营商均无关联,未获其认可,也未使用任何运营商的美术素材。
站内所有插画、路线图、音效与文字均为原创。音效不是采样,而是用 Web Audio API 在浏览器里合成的——一半出于听感偏好,一半出于版权考虑。列车插画也是为这个项目专门绘制的。
站内刻意没有时刻表、票价与运行信息。这是一款以铁道为题材的打字游戏,不是出行规划工具;真要出门,请使用各运营商自己的服务。
联系方式
尤其欢迎指出车站数据的错误——读音有误请一定告诉我。所有邮件都会发到: support@railtyping.com
非官方同人作品。站名与线路为公开事实数据;视觉与音效均为独立设计,与 JR 东日本 / 东京 Metro / 都营地铁 等运营商均无关。