嘿 r/IndieGaming,

来着工作和生活的时候,Tetris 是我压力最小化的极好-helper。只需玩玩 10-30 分钟,就会觉得我大脑清醒了,远远超出了简单的滑动或逐一观看内容。这不是我放松时间,所以我只是能够轻松、专注地将压力释放给 Tetris。

但是问题在于,没有一个版本是我想要玩的。但是移动应用充斥着商业广告和微交易,许多web版本在移动设备上会卡顿或玩起来不太舒服,而最好的经典玩法如 NES Tetris 都需要模拟器或额外硬件。即使我买了一个 Miyoo Mini,实际上我只是端着另一个设备来玩Tetris。

所以我决定自己构建我想要的Tetris。快速,极简,完全开源,并在桌面和移动设备浏览器上都能有效地运行。我在一个周末上色第一版,并不断地进行优化和调整。

在浏览器中玩(无需安装):
https://mehmetmhy.github.io/tetris/

代码和 GitHub(星星值得膜拜):
https://github.com/MehmetMHY/tetris

该版本的玩法
- 经典 10x20 的Tetris,7 袋随机器,暂存,下一件物品,Ghost
- 桌面上:完成所有键盘控制
- 通过移动端Touch控件进行控制:滑动来移动,轻触下方来软下落,快速一根线向下来硬下落,轻触来旋转,快速一根线向上来暂存
- 应运自 NES 和 TGM 的基于等级的速度曲线,具有适当的锁定延迟和 DAS 调整
- 分数、行数、等级和最高分保存在localStorage中
- 背景音乐,包括静音键,暂停菜单,分数闪烁
- 可安装PWA,通过service worker来离线支持,并且在iOS上对安全区域进行处理,这样以 notch 和主屏幕不会遮挡板卡,
移动端输入系统非常出意,所有的按键和控制系统都有特定的阶段和速度基准,所以它们可以正确识别滑动或垂直落物,软下落、硬下落和轻触的运动控制,以及在暂存上方轻触。目标是避免许多移动端Tetris复制品中出现的,错误的下落等同于移动错误,这很困扰用户。

其内部是一个单一 HTML/ CSS/ JS 应用程序,利用canvas绘制游戏。方块,Ghost块,预览,和行中的方格都是预先绘制到一个屏幕之外来提高游戏的效率。循环的时间用requestAnimationFrame来进行标记,跟踪重力加速度,锁定延迟和DAS时间,只有当发生改变时才重新绘制。最高分和静音状态都存储在localStorage中,服务程序来处理离线应用和PWA的安装。

我喜欢意见:
-你的设备和浏览器中操作的控制如何,特别是移动端
-是否速度曲线和等级模式感到合理或者有任意异常
-在不同分辨率和平台中的布局安排以及视觉问题