下载 App

有关《因果》的技术详解

2025/11/0765 浏览技术交流
在《因果》中我使用了一系列不常用的思路来制作游戏,希望我现在的思路在以后还是有帮助
首先想分享的是碰撞检测
一般来说,进行碰撞检测常用的方案是碰撞体,即检测玩家是否与障碍物进行碰撞
在我上一个游戏《T.B.I》中使用的就是这种技术
另外说明一下,我使用的是h5技术(html+css+javascript)来制作游戏,目的是为了实现跨平台打包和分发,在pc端使用nw.js打包成exe,在移动端使用cordova打包成安装包
在js(javascript)中,对于div元素可以使用offset关键字来获取元素的各种属性,例如宽高,相较于父元素的绝对坐标,等等
在《T.B.I》中,对每一个障碍物增加一个“block”的类名,在加载场景的时候就获取包含“block”这个类名的所有元素,获得每一个元素的宽高和坐标并与与玩家的坐标进行判断
如果玩家的坐标位于任意一个障碍物的判定区域内,就判断为“被障碍挡住”,进而执行一系列的逻辑处理
方法是好方法,就是太麻烦了
使用这种碰撞体检测不仅需要手动创建元素,还要将其放进游戏场景进行微调
而且这种“摆放”不能预览,如果位置不合适只能在代码里进行微调后重新进入游戏场景查看
就,不太优雅
于是我将目光放在了canvas画布上
canvas画布算是万金油,如果有特效或其他效果一时间没法用常规的html结构实现,将重心放在canvas画布上准没错
canvas画布允许开发者直接在上面绘制像素,和渲染是一个思路,同时也允许直接在上面绘制图片
在《因果》中,我将游戏场景的布局在ps里直接绘制出来,然后将障碍物的部分标记为纯黑,然后将canvas画布平铺整个游戏场景,将场景图片绘制到canvas画布上
这时仅需要判断玩家的位置是否有黑色像素,如果玩家站在黑色像素上就判断为“被障碍物挡住”,进而执行其他逻辑
这样做的好处是可以预览整个游戏场景,且修改起来十分方便,基本上半个小时左右就可以完成一个小场景的制作和调试
在后期开发中还将这个障碍判定画布作为障碍物的阴影或底部来体现3d空间,算是开发《因果》时最用心的工作了
TapTap
注意观察障碍底部的阴影,不仅是3D效果的呈现,也是重要的碰撞判断条件
另外还发现喷溅的毒液会覆盖障碍物的黑色像素,达到了“场景破坏”的效果,但由于时间比较赶没有深入开发
接下来想分享的是敌人脚本加载
如果是在引擎上加载敌人脚本压根不是难事,但我使用的是js
在《T.B.I》中,我使用的是“中心管理”的方式,即在进入场景时就加载一个敌人脚本,这个脚本相当于“总指挥”,指挥每一个敌人应该干什么
但这种方式不能实现“动态添加敌人”的效果,只能在进入房间时就确定好每个敌人的序号,如果这时再加入一个敌人就会打乱获取敌人元素的顺序,整个场景就会变得不可控
但在《因果》中这个难题被解决了
在《因果》中,每一个敌人都有自己的脚本,即使用的是同一套动作模板
使用js的url参数可以区分不同敌人的脚本,在创建敌人的时候就将敌人的id作为url参数传进脚本文件的url中,这样就可以动态加载脚本文件了,基于此还制作了不停刷新敌人的无尽模式
TapTap
创建敌人的函数,六个参数分别为id名,类名,初始化图片路径,x坐标,y坐标,脚本路径
《因果》是我首次实现动态添加敌人的游戏,当我得知url参数居然能用在js文件的请求路径时,整个代码思路瞬间打开了
但问题仍然存在,在某些低端移动设备(oppo A5)上加载过多的敌人脚本就会发生卡顿,之前提到过的“总指挥”的方案只需要加载一个脚本
目前有一个折中的办法:每次加载一批敌人,清除一批后删除当前批的敌人脚本,然后加载新一批敌人和与之对应的脚本
但这就不能达到“动态添加”,只是分批加载而已
另外还有全向移动,子弹判定等技术细节,碍于篇幅就不在此一一列举了,日后可能会出额外篇幅详细说明
下面是《因果》的链接
猜你想搜
聚光灯游戏创作挑战 因果 js游戏开发技巧
00:34
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!截图
《荒原复苏指南》开发日志④:关卡演示堂堂袭来!!
- 人类曾因掌握元素合成技术而一度辉煌,又因滥用元素能量而逐渐从内里衰败。 - 30世纪80年代。社会文化充斥着激进乐观主义与庞大机械美学,在这里,污染和能源共生,幸福与痛苦并存。官方广播和宣传画里依旧在宣扬“科学将战胜一切”、“元素能量将再造新农田”的口号,而世界主城却已经因为污染过度而濒临崩溃、空间挤压严重。为了寻找新的生存空间与无污染能源,官方启动了“重构拓荒计划”。 - 玩家将作为前线拓展
18 赞
5 回复
00:30
《失心》游戏开发者日志01|游戏UI迭代及实机演示截图
《失心》游戏开发者日志01|游戏UI迭代及实机演示
进入《失心》之前,玩家首先看到的是我们工作室 UNLOOK 的标识。我们将原来的标识转成 SVG,并让其中的红色瞳点转动、观察,再逐步显露完整字形,希望这个短暂的开场能带出一点好奇和不安。 这次《失心》的开局 UI,我们围绕小灵通(因为游戏的主要交互道具就是小灵通)做了几轮调整,希望玩家从打开游戏开始,就能感受到故事里的年代和气氛(故事年代背景为2000s)。 早期版本先确定了一个方向:把菜单放进
15 赞
10 回复
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合截图
《气味之城》开发日志#1|为什么"涌现"和猫是天作之合
大家好,我是一个人报名了 2026 聚光灯 21 天游戏创作挑战 的独立开发者。今年主题公布那一刻我就笑出了声——涌现。因为我已经想做这个游戏很久了: 《气味之城》:你不是猫神,你只是一只猫。 先说一个所有养猫人都懂的事实:你永远无法"教会"一只猫任何它自己不想学会的事。但你家猫可能自己学会了——听见冰箱开门就瞬移到厨房;你心情不好时过来踩奶;凌晨三点准时在你身上练马拉松。没人教过它,这些行为是它
3 赞
4 回复
开发者日志#01:涌现!! 披着科幻外衣的涌现式增量游戏!!!!截图
开发者日志#01:涌现!! 披着科幻外衣的涌现式增量游戏!!!!
随着Game Jam 主题公示,我们团队立马着手维持了三天的激烈讨论!决定做一个披着科幻外衣的蚂蚁农场以boids算法为灵感的涌现式增量游戏!!! 至此,方案敲定,我们团队将开发一个可升级的自主群体模拟,并且初步规划了玩家游戏时的体验流程: (1)阶段1(开局30s,触发痛点,会有一次提升,但是游戏仍然艰难):一张地图分布着资源点和仓库,玩家此时只能徒手采集资源点的矿石拖入仓库,矿石可以造机器人;
14 赞
7 回复
【童谣镇】聚光灯第二次开发日志截图
【童谣镇】聚光灯第二次开发日志
开发进度: 美术 1、主角人物立绘已细化完成 2、所有NPC的QQ人形象与呼吸动画已设计完成 3、大部分UI界面已设计完成 4、面包房建模与树屋建模以及基础房屋、路灯、树木模型已完成。 5、制作过场动效,制作通用动效材质ing 6、广场资产替换、永续桥和植被的资产替换、房屋资产替换,河流制作 7、学校模型的材质完成 8、石墩子、小道具模型制作ing 9、NPC正比胸像绘制ing 策划 1、任务系统
11 赞
6 回复
00:10
群迹·上取其下,下取其上截图
群迹·上取其下,下取其上
#聚光灯gamejam开发者日志 向大家汇报一下今日进度,目前在和蚁群的默认移动算法进行斗智斗勇。或许是我的AI对蚂蚁有别样的理解,其实最初写出的方案更接近于围绕着恒星公转的行星。 哦我还以为文章里可以插入多支视频视频,想要展示一些其它的运动方式,可惜了。那么就简单在上方传一个比较典型的,有点类似于蟑螂的运行方式。 目前仍在解决蚁群的随机运动,和玩家可操纵性之间的平衡问题。以及如各位所见,目前的
3 赞
1 回复
游戏开发中的项目资源管理截图
游戏开发中的项目资源管理
我是狂猎世界的开发者,大家感兴趣的可以看看我们本次聚光灯开发的项目。 在游戏开发的过程中,不管是个人项目还是集体项目,长期项目还是短期项目,往往都会遇到资源管理问题。这是创作者不得不面对的一个问题。 很多人可能觉得对于个人项目来说资源并不需要得到有效的管理,但事实是个人项目随着开发时间的增长也会出现爆炸式的资源数量膨胀,尤其是UI等琐碎物品的增加会大大的增加资源管理的难度。在这里我将会抛砖引玉,与
13 赞
3 回复
00:07
雨天決行 开发者日志02-人工智能的自我修养截图
雨天決行 开发者日志02-人工智能的自我修养
又和大家见面啦!第二篇日志,说实话一开始不知道该怎么编排,但团队里惊喜的成果越来越多,我们已经迫不及待把更新的内容端上来给大家啦!那么事不宜迟,快来看看都有什么新情报吧ദ്ദി˶ー̀֊ー́ )✧ 一.美术(重磅升级) 以主美小为的生命力作为燃料(bushi)本次美术组取得了大进程!首先是各个ui界面的优化和细化,上次大家看到时还只是初具雏形的草稿,现在大多都完整起来了哦! 同时,随着配色的补全,手
43 赞
36 回复
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?截图
【2026聚光灯日志01】什么叫你把手牌,骰子和战棋融合了?
大家好啊,我是官方小编,一位还在学校的独自开发的苦逼带学生 这次算是第二次正式参加GameJam,而这回的比赛主题是【涌现】 嗯…老实说,一开始我还真只是从中文语义上来看,理解成“大量的出现”,直到询问ai哦哦哦我这就才想起来还有英文的“整体大于部分之和”意思来着 说起这个主题的意思,立马想起的类 吸血鬼幸存者 ,或者是 文明 系列的各种爆怪,爆兵的设计,即大量的出现敌人或者单位 而从第二个
4 赞
4 回复
开发日志 TapTap 聚光灯 21 天 GameJam 主题涌现截图
开发日志 TapTap 聚光灯 21 天 GameJam 主题涌现
《粒子生命》开发日志 #01 一、世界观核心设定定稿 游戏世界的基础单元为微元粒子,所有粒子本身无思维、无目标、无善恶,不具备任何高级智能,仅保留最基础的物理运动与生存本能。沙盘内不存在预设剧情、固定事件、人工编写的灾害或派系冲突。 玩家在游戏中定位为规则观测者与制定者,而非传统神明或操控者。玩家无法直接移动、创造、删除任何粒子,不直接干预世界的具体演化过程,唯一的操作权限是定义、调整微元的基础行
5 赞