DOCUMENTATION

玩法与操作说明

下面全部内容在游戏里按 H 也能看到。想直接开飞的话,点右上角的 飞行模拟器 就行。

一、飞行操作

按键作用
W / ↑ S / ↓抬头 / 压机头(拉杆、推杆)
A / ← D / →左倾 / 右倾(压坡度转弯)
Q E方向舵左 / 右(修正侧滑)
Shift / Z Ctrl / X加油门 / 收油门
空格开火。机炮会过热,过热后需要冷却才能继续射击
Tab(按住)瞄准辅助:机头自动拉向最近的敌机,松开即恢复手动
V切换视角:驾驶舱(第一人称)→ 第三人称 → 环绕
`(反引号)切换纯字符视图 / 真 3D 视图
怎么转弯:飞机靠倾侧产生侧向升力来转向,不是靠方向舵。想转向右边就压右坡度, 同时轻微拉杆让机头保持水平,飞机会自己把机头带过去。坡度越陡转弯越快,但升力的垂直分量越少、 掉高度越快;速度越低转弯半径越小,可是低速又容易失速。这就是本作的核心乐趣。
可以 360 度翻:俯仰和滚转都没有角度锁,机头能连续指向上下前后任意方向, 所以筋斗、横滚、剪式机动都做得出来。俯仰拉到底大约 1.3 秒转一整圈, 滚转按死约 0.23 秒就能压到 90° 坡度。

二、三种视角

按 V 循环切换,右上角按钮也能点:

视角说明
驾驶舱第一人称,相机贴在机头,最沉浸
第三人称默认。相机在飞机后上方,能看见自己的机身与姿态
环绕相机绕着飞机慢慢转,用来欣赏自己的飞行姿态

三、鼠标飞行(可选)

按 C 切换到鼠标模式,点击画面锁定指针:移动鼠标等于推杆,左键开火。 再按 Esc 解除锁定。默认是键盘模式,右上角的状态条会显示当前处于 KEY 还是 MOUSE。

四、其他按键与界面

F全屏 / 退出全屏
H打开 / 关闭说明面板
R阵亡后复活
C切换键鼠模式
V切换视角(驾驶舱 / 第三人称 / 环绕)
1~5直接切画质档位

右上角控制条里可以随时切换画质档位。画质就是屏幕上字符的个数: 一共五档:约 96 / 148 / 210 / 300 / 420 列,最高一档屏幕上超过十万个字符。选「自动」会按帧率 在档位之间实时升降,卡了自动降、流畅了自动升。

五、手机 / 平板

触屏设备会自动切到触屏布局:左下角是虚拟摇杆(推杆 = 俯仰,左右 = 压坡度), 右下角四个按钮是 FIRE 开火、AIM 瞄准辅助、THR+ / THR- 油门。 顶部按钮默认收成一个 M,点一下才展开画质、视图这些选项,免得小屏被按钮塞满。 想在电脑上预览手机布局,加 ?mobile=1 即可。

六、界面怎么读

七、玩法目标

八、联机

飞行模拟器默认自动接入联机。房间号决定战场:同一房间号的所有玩家共享同一片地形、同一批建筑破坏状态, 并且各自带一组 AI 机器人。网址后面加 ?room=房间名 就能换房间,例如 /fly.html?room=nightwatch。房间号只能用小写字母、数字、下划线和短横线。

连不上服务器时会自动降级为单机模式,玩法完全一样,只是场上只有你和 AI 机器人。 顶栏会从 ONLINE 变成 SOLO。

九、这套字符管线是怎么做的

整个画面是一次 WebGL2 实例化绘制:每个字符是一个实例,顶点着色器把实例序号换算成屏幕格子, 再输出背景四边形与字形四边形;字形图集只有 alpha 通道参与计算,颜色来自每个实例的前景 / 背景属性。 因此六万多个字符和一百个字符一样,都只是一次 drawArraysInstanced。

地形求交用的是「逐列轮廓推进」:同一列的每一行共享同一条水平射线,所以整个世界沿该方向 只需要推进一次地面高度轮廓,每一行取它第一次落到地形之下的位置。复杂度从 O(格数×步数) 降到 O(列数×步数 + 格数),这是能在几万字符下跑满帧的关键。

建筑、飞机、子弹、爆炸都是盒体 / 精灵,走同一套 z-buffer 深度测试,谁近谁盖住谁。

世界由种子确定性生成:房间名哈希成 seed,地形、城市选址、每栋楼的位置与高度全部由这个 seed 推出, 两端逐字节一致 —— 所以联机时服务器只需要广播实体位置、子弹和破坏状态,带宽极小。

十、部署方式

整站跑在 Cloudflare 边缘的一个 Worker 里:静态页面与脚本以内联资源的形式由同一个 Worker 返回, 联机房间是 Durable Object(SQLite 后端,免费版可用),20Hz 权威模拟并向房间内广播状态。 没有使用任何对象存储。

开始飞行 → 返回游戏库
TDSI 游戏库 飞行模拟器 贪吃蛇