下载 App

开发日志06:双端

修改于昨天 08:45综合
上一篇结尾说,这一篇讲双端。
先说结论:这不是同一套界面缩两下,是两份东西。
同一套规则、同一批零件、同一批数值。但操作面完全不一样——电脑端有一整块屏幕和一只鼠标,信息可以全摊在边上;手机端只有两个拇指,大部分信息必须收起来,只在需要的时候出现。
horizontal linehorizontal line

一、为什么不做「响应式」

最省事的想法是把电脑端那张设计画布整体缩到手机上。我们确实在电脑端用了这个办法:所有元素画在一块固定大小的画布上,再整体缩放,像缩放一张图。1920 的屏幕上下留一点黑边,1280 的屏幕小一点,但版式永远不变。
这个办法在电脑上很好用。拿到手机上就不行。
一是字。窄屏档位缩到 0.75 倍,11px 的正文只剩 8px,在手机上是看不清的。
二是手指。按钮按设计尺寸缩过去,命中区比指尖还小。画得看得见,和点得中,是两件事。
所以手游版是另外一份:把缩放框整个拆掉,画面直接铺满,所有控件按视口重新排。
代价是两份代码。改一个数值要改两处,改一层界面要同步两处。这次真的翻过车——有一次把电脑版的页面文件直接覆盖到手游版,手游的布局层引用被整个冲掉,进游戏后 HUD 一个都没有,画面干干净净。这类错误不会报任何错,只能靠人眼发现。
进游戏前是一段三秒多的开场:扫描线、四枚刻度依次点亮、裸核点火,标题擦出来。零件是真的一片片吸上去的,落位时有火花和焊缝——和局内吸残骸用的是同一套曲线和同一套判定,不是另做一段动画。
TapTap
开场之后落在机库。左边是标题和主动作,右边是机体示意——这里放的是示意,不是存档里的机体,因为新开一局永远是从一枚裸核开始。下面三个小按钮管读档、机库编装和设置,重量级压在主按钮之下。
TapTap
horizontal linehorizontal line

二、电脑端:三列信息,各回答一个问题

电脑端的战斗界面分成四块,每一块只回答一个问题:
位置回答什么具体内容
顶部细条我在哪区域名、当前舱位名
左侧一列我现在什么状态核心血量、电池组、电量/供能、推进器与当前移速、炮台可用数、最高组件等级、操作指南
右侧一列外面是什么情况本区舱位小图(含全舰航图入口)、安装/卫星计数、战场雷达
底部一排我现在能按什么五张技能卡,每张实时写状态
我们没做「血条 + 蓝条 + 冷却圈」那一套。这台机体不是一个人,是一堆零件拼起来的,所以左边的信息更像一块仪表盘:电池组几块、电量多少、供能容量几点、推进器几个、当前移速多少、炮台几门可用。
TapTap
底部五张卡,每张都会把「为什么按不出来」写出来:核心脉冲是就绪还是冷却、磁力回收附近有几块能吸、炮台齐射有几门受阻、推进冲刺是没接推进器还是冷却中、分支抛射是这个方向有没有合法分支。
玩家按了没反应,最需要的不是提示音,是一句「两台炮都不可用」。
TapTap
开火的手感来自三件事:脉冲本身要有一条能看清的亮线,命中要有反馈,而且不能把屏幕糊住。屏幕中央是一台机甲,周围还有三四个敌人,任何一层全屏光效都会让玩家看不清自己有没有被打中。我们宁可把亮度收一点,也不让玩家看不清战局。
TapTap
按「组件」会打开这个:左边是按真实网格位置排的机体,右边是选中组件的全部参数。它不是为了好看——你装歪了、把某个件伸得太远、某个炮被挡了射界,都在这里看得出来。
TapTap
暂停页可以直接存档、读档,不用退回主菜单。
horizontal linehorizontal line

三、手游端:先把框拆掉

手游版第一件事是拆框。
电脑端有四层框:外框、内唇、画面框、面板框。这套东西在宽屏上很有机械感,在手机上就是四条黑边加一圈装饰。我们把它们全去掉,画面铺满整个屏幕,控件直接浮在画面上。
拆完框立刻出现一个新问题:左边那五块面板没地方放了。
在电脑上它们可以常驻,因为屏幕够宽;在手机上,五块面板会吃掉三分之一画面,而且它们回答的问题——我还剩多少电、我还有几门炮——在战斗中往往只需要看一眼,不需要一直看。
所以:
核心状态收进右上角一块小面板:等级图标、核心血量、经验进度,再加一行组件数、卫星数、经验。放在右上,是因为横屏握持时右手拇指在右下角操作,右上是最不容易被手挡住的位置。
顶栏压成一颗圆形菜单键。它可以拖,松手会自动吸到最近的左右边缘;闲置几秒自己缩小变淡;位置记在本机,下次打开还在你放的地方。
左上角只留本区小图,下面是「地图 / 跟随」两个按钮。小图和战场雷达二选一、同位置切换——手机屏幕放不下两张图,硬塞的结果是两张都看不清。
左下角是摇杆和核心血条。血条的位置不是写死的像素,是读完摇杆的实际矩形再贴上去的,所以换任何屏幕比例都不会压住摇杆,也不会跑出屏幕。
TapTap
首页也跟着重排了。电脑端的主按钮是通栏的「开始星舰战役」,下面三个小按钮管读档、机库和设置;手机上版面更窄,主按钮仍然保持整行,其余入口按重要性依次降级。我们不想让「开始游戏」和「设置」长得一样大。
horizontal linehorizontal line

四、右下角这只手

这一段是双端适配里最花时间的。
最开始做的就是弧形:技能沿右下角一圈排开,弧心放普攻。
然后在极扁的屏幕(800×360,20:9)上撞墙了。弧有边界,按钮又不能重叠——这两个约束在这么扁的空间里互相打架。我们反复缩尺寸、调角度,还是留下五处重叠。
那就退一步,上网格:主键在右下角,其余六个技能排成两列三行。网格的间距是写死的,几何上不可能重叠。我们先认输。
网格能用,但手感像遥控器。拇指在右下角的活动范围是一个扇形,不是方格。所以后来还是改回了真弧形:四个技能沿 180° 到 120° 排开,弧心是普攻键。普攻是唯一一个需要按住不放的键,放弧心最省力。
然后是超负荷和投掷炸药——两个不常用、但不能没有的键。
第一版做成「按住普攻往上滑,右侧列出 B 和 T」。问题是一根手指在同时干两件事:按住代表开火,滑动代表换键;只要开始滑,就得先停火。
第二版改成左轮:六个技能排在一个轮子上,四个槽位固定,按住转盘区域画圈就能转,转到第五、第六项时,超负荷和投掷炸药进槽。
TapTap
这个改动之后我们才觉得「手机上能玩」了。不是因为它更华丽,是因为拇指画圈是自然的,上下滑不是。
horizontal linehorizontal line

五、手机上最有意义的三个 bug

这一节记录三个不报错、但会让人以为「这游戏坏了」的问题。
第一,技能卡只是显示卡。
电脑上的五张卡不接任何逻辑。左键在画布上开火,E 是磁力,Q 是齐射,全是键盘鼠标直接绑定的。手游把键鼠藏起来之后,五张卡还漂漂亮亮地待在那儿——点了没反应。
修法不是重写一套判定,而是把卡片接到既有入口:普攻按住连发、磁力按下松开、齐射和冲刺直接调用、抛射按下预览、拖动瞄准、松开提交。**规则只有一份,界面只是调用方。**这一点如果搞反,两端的手感会慢慢分叉。
第二,透明的命中层把点击吃掉了。
左轮需要一个透明区域来识别画圈。它盖在整个弧上,于是底下五个技能按钮全都收不到点击——实测取五个技能的中心点,五个全部落在命中层上。
修法:没转动、且按下不到 400 毫秒就抬起,判定为「点击」,临时关掉命中层的点击命中,重新取这一点的元素栈,找到白名单里的按钮,把按下和抬起补发过去。白名单只放技能键,避免误派发到画布。
第三,弹窗被 HUD 盖住。
手游控件的层级是 36 到 43,弹窗只有 20。一开弹窗,摇杆、技能、菜单全浮在上面,转盘的命中层还会把弹窗里的点击吃掉。
修法没用脚本记状态,纯 CSS:只要有弹窗打开,就把所有手游控件隐藏。弹窗一关自动恢复,不会留下「关完弹窗某个按钮不见了」的残留。
还有一些小的:按钮里的图片会触发浏览器原生拖拽,拖到一半指针事件被掐断;用背景简写写图标会把图片一起重置掉;旧规则是两个 ID 的选择器,新规则只写一个 ID,带最高优先级也压不住。
这些都不难。难的是它们全都不报错。
horizontal linehorizontal line

六、瞄准:手机上其实没有鼠标

电脑上,准星跟着鼠标走,这是理所当然的。
手机上,我们第一版让摇杆直接写准星坐标——结果就是你往哪走,炮口就往哪指。想让炮口对着敌人,得先把自己转过去。这显然不对。
第二版加了自动索敌:只要你没有手动瞄准,准星自动指向射程内最近的敌人。如果中间隔着掩体,这个目标的权重会被压下去 600 点,也就是优先选能打到的那个。没有目标时准星不动,不会乱飘。
还有一个很隐蔽的时序问题:自动索敌必须在一帧逻辑之前先跑一次。因为开火判定在逻辑内部执行,如果只在逻辑之后瞄准,那么这一发子弹用的是上一帧的准星——也就是摇杆方向。表现是「明明对着敌人,子弹却往旁边飞」。现在前后各跑一次:前一次决定这一帧往哪打,后一次保证画面和界面一致。
摇杆还兼了一个功能:猛拉到底会触发推进冲刺。阈值是摇杆半径的 0.92 倍,回中到 0.6 倍以下才重新武装。这样按住不放不会连续冲刺,但要跑的时候不用再去找按钮。
horizontal linehorizontal line

七、三档视角

手机屏幕小,只有「跟随 / 全景」两档不够用。现在是三档循环:
档位倍率用在哪
近景2.15看清自己的构筑和弹道,打 Boss 时用
跟随1.65默认,走路和清小怪
全景1.00看清整间舱室的门在哪、敌人从哪来
切换按钮就在地图按钮旁边,按钮上写的是当前档位的名字,点一下切到下一档。之前只有两档时它写「跟随 / 全景」,读起来像两个动作,其实是一个状态。
horizontal linehorizontal line

八、打包:三个只有装进 APK 才会暴露的坑

第一,前端是被编进库里的。
手机壳用的方案会把整个前端在编译时嵌进原生库。也就是说,如果你只重跑了打包那一步、没有重新编译原生库,装到手机上的还是上一次编译时的界面。
这一条坑了我们一整轮:改了按钮尺寸,网页上是对的,手机上纹丝不动。后来在构建脚本里加了一条硬校验——原生库的修改时间必须晚于前端最新文件,否则直接报错退出。
第二,全屏在安卓上是空实现。
桌面壳提供的全屏调用,在安卓端什么也不做。系统状态栏和导航栏还在,压住了最上面一行按钮,点菜单点不动。最后是在原生层隐藏系统栏,并且让导航栏只能从边缘划出。
第三,内存页对齐。
Android 15 之后,部分设备的内存页从 4KB 变成 16KB。旧的编译产物按 4KB 对齐,在这些设备上会直接加载失败。我们在链接参数里显式指定 16KB,重建后四个加载段全部对齐。
还有包名。原来包名里带着渠道标识,这是审核明确禁止的,属于首次上架之后就改不了的东西,已经改成独立的包名。游戏标题的三处写法也统一了。
horizontal linehorizontal line

九、两端现在验到什么程度

手游端在七种视口下逐一量过:超宽 20:9、19.5:9、iPhone 比例、4:3、小屏、平板、2K。
视口按钮重叠越界报错
936×432000
800×360000
1024×768000
844×390000
667×375000
1280×720000
2560×1080000
另外在安卓模拟器上跑过 x86_64 的安装包:全屏、菜单、普攻、摇杆、四个按钮、暂停页都通了。
horizontal linehorizontal line

十、游戏现在到哪一步了

把当前这一版完整摊开,进度如下:
项现状
地图175 个舱室(主区 140 + 支线 35),20 个主区,7 条支线
Boss20 个(19 个区 Boss + 终局)
零件6 类,每类 5 级
道具7 种一次性增益
卫星最多 3 只
安装上限默认 12,奖励可抬到 25
玩家核心520 → 978 耐久,脉冲 14 → 22,冷却 12 → 8 tick
敌人核心140 → 252 耐久(成长低于玩家)
Boss 核心五级 1512,终局三核合计 4536
装甲325 耐久
炮台齐射2.4 秒一轮
舱门判定49.4 像素
PC 包上架 zip 41.9 MiB / 桌面安装包 40.2 MiB
安卓包85.5 MiB(arm64)
装配台这一版也重做了:面板换成和战斗 HUD 同一套材质,组件图标换成写实贴图,空槽常驻显示,中间有按真实位置绘制的机体预览,下面一条「连接 / 方向 / 供电 / 归属」四规则条——就是这游戏的四条拼装规则。
TapTap
机库里选的东西,这一版终于是真的带进战斗了。之前有个很尴尬的 bug:选好的携带件在开局时被初始化流程整个清空,界面上写着「已保存到本机」,实际上对局内完全没有作用。现在选中的三件会以未焊接状态散落在出生点,需要自己吸上来。
后续双端也会继续对齐:手机上把装配台压进一屏、补返回键和安全区,电脑端把长局性能查清楚。
开发日志会持续更新,游戏还在做,预计明天就可以上线,欢迎到时候来试玩。
00:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
18 赞
6 回复
【童谣镇】聚光灯第二次开发日志截图
【童谣镇】聚光灯第二次开发日志
开发进度: 美术 1、主角人物立绘已细化完成 2、所有NPC的QQ人形象与呼吸动画已设计完成 3、大部分UI界面已设计完成 4、面包房建模与树屋建模以及基础房屋、路灯、树木模型已完成。 5、制作过场动效,制作通用动效材质ing 6、广场资产替换、永续桥和植被的资产替换、房屋资产替换,河流制作 7、学校模型的材质完成 8、石墩子、小道具模型制作ing 9、NPC正比胸像绘制ing 策划 1、任务系统
11 赞
10 回复
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?截图
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?
大家好啊,我是官方小编,一位还在学校的独自开发的苦逼带学生 这次算是第二次正式参加GameJam,而这回的比赛主题是【涌现】 嗯…老实说,一开始我还真只是从中文语义上来看,理解成“大量的出现”,直到询问ai哦哦哦我这就才想起来还有英文的“整体大于部分之和”意思来着 说起这个主题的意思,立马想起的类 吸血鬼幸存者 ,或者是 文明 系列的各种爆怪,爆兵的设计,即大量的出现敌人或者单位 而从第二个
4 赞
4 回复
《卡牌工业》开发日志 01|从“涌现”到产线对打截图
《卡牌工业》开发日志 01|从“涌现”到产线对打
大家好,我们正在用 Godot 做一个暂名《卡牌工业》的游戏。目前已经跑通了最小的生产与战斗循环,也做了两轮迭代。这篇先记录一下:面对“涌现”这个题目,我们讨论过什么,又为什么最后收敛到卡牌和工厂。 第一步:头脑风暴,涌现可以是什么? 刚看到“涌现”这个题目时,我们的想法几乎朝每个方向散开了。塔防、物理搭建、探索、解谜、经济系统、叙事,甚至增量游戏,都能让简单规则在玩家的操作中长出新的结果。再想下
1 回复
开发日志01:关于「涌现」的考量截图
开发日志01:关于「涌现」的考量
我们是两个人,参加这次聚光灯。游戏叫《碎屑机神:夺骸》。 说实话第一眼看到「涌现」有点懵。这个词太大,什么都能往里装。 讨论了很久,我们决定把它收窄成一句能验证的话:玩家的每个局部操作,会产生他预料不到、但事后能追出原因的整体结果。 这里有两样东西容易混进来,我们也确实花了些时间把它们摘出去。 一个是随机。掷骰子结果也很多样,但那不能叫做涌现,因为玩家复不了盘,只能归结成运气。我们要的结果是可以追
3 赞
00:07
雨天決行 开发者日志02-人工智能的自我修养截图
雨天決行 开发者日志02-人工智能的自我修养
又和大家见面啦!第二篇日志,说实话一开始不知道该怎么编排,但团队里惊喜的成果越来越多,我们已经迫不及待把更新的内容端上来给大家啦!那么事不宜迟,快来看看都有什么新情报吧ദ്ദി˶ー̀֊ー́ )✧ 一.美术(重磅升级) 以主美小为的生命力作为燃料(bushi)本次美术组取得了大进程!首先是各个ui界面的优化和细化,上次大家看到时还只是初具雏形的草稿,现在大多都完整起来了哦! 同时,随着配色的补全,手
43 赞
36 回复
开发日志07:收工截图
开发日志07:收工
上一篇结尾说,下一步优先级最高的是完整通关一次。 所以这一篇记录的是另一件事:把游戏做成一个能交到玩家手里的东西。 一、从「能玩」到「能交」 自己跑起来能玩,和平台愿意收,是两件完全不同的事。 第一轮梳理下来,挡在门口的是两件事: 一是包体。 我们原来是 Tauri 打包的裸 exe,四十MB。但 Tauri 在 Windows 上完全依赖系统的 WebView2 运行时——玩家机器上没装,双击#taptap聚光灯独立游戏
7 赞
2 回复
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
15 赞
10 回复
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合截图
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合
大家好,我是一个人报名了 2026 聚光灯 21 天游戏创作挑战 的独立开发者。今年主题公布那一刻我就笑出了声——涌现。因为我已经想做这个游戏很久了: 《气味之城》:你不是猫神,你只是一只猫。 先说一个所有养猫人都懂的事实:你永远无法"教会"一只猫任何它自己不想学会的事。但你家猫可能自己学会了——听见冰箱开门就瞬移到厨房;你心情不好时过来踩奶;凌晨三点准时在你身上练马拉松。没人教过它,这些行为是它
3 赞
6 回复
开发日志05:拼出来的东西,得让人玩得下去截图
开发日志05:拼出来的东西,得让人玩得下去
上一篇讲界面怎么排。这篇讲讲排完之后,界面上到底在发生什么。 先说一个我们自己的判断:这游戏的乐趣不在"打赢",在"你怎么打赢"。 同一个舱室、同一批敌人,规则允许你装成一台顶着四块装甲往前撞的铁疙瘩,也可以装成一台几乎没有甲、靠四个推进器绕圈子的刺客,还可以装成一门只带电池和炮、从头到尾不让人靠近的炮台。 我们的测试里跑过其中两种——能打,但真人盲测数据还在进行,所以这三种到底哪种更舒服,我们不
2 赞