老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

一个完全不会写代码的人,怎么用 GDevelop 做出联机小游戏

项目内容
软件GDevelop
版本1.0.257
平台Android APK
体积94.57M
分类系统工具
开发商GDEVELOP FRANCE
包名io.gdevelop.ide
官网GDevelop 官网
下载一GDevelop 下载,GDevelop 下载
下载二GDevelop 下载,GDevelop 下载
文档GDevelop 文档
介绍期末大作业要求做一款能联机的小游戏,我从零开始用 GDevelop 一步步搭出了完整的作品——对象、场景、大厅、调试,全流程走下来才发现,无代码可视化引擎真的能让创意落地。

先交代一下:GDevelop 是什么

GDevelop 是一款免费开源的无代码可视化游戏开发工具,界面支持中文,不需要写一行代码就能做出 2D 或者低多边形 3D 游戏。它的底层是 WebGL 和 WebAssembly,轻量、启动快,同一个项目可以一键导出到安卓、iOS、Steam、网页等多个平台。官方还提供联机服务和社区功能,遇到问题可以在里面找到同好交流。

一键导出多平台

我遇到的那个事

去年期末,数字媒体课的大作业要求四人小组做一款「能联机」的小游戏。组里三个人都是纯文科生,连 HTML 标签都没写过,唯一对游戏有点概念的是我——平时玩的都是 Steam 上的独立游戏,对引擎的了解仅限于 Unity 这个名字。

老师给的参考清单里列了好几个引擎,Unity、Godot、Construct,我挨个搜了一圈,要么下载体积吓到人,要么官网教程全是写代码的片段。 deadline 在那里摆着,再犹豫就要交白卷了。

转折点:一个朋友随口提了 GDevelop

在群里吐槽进度时,一个朋友甩过来一个链接,说「你试试 GDevelop,我堂弟用它做了个平台跳跃游戏,没写过一行代码」。

我半信半疑地下了安卓版的 APK——94 兆,五分钟就装好了。打开界面的那一刻我才松了口气:全中文,左侧是对象列表,中间是场景画布,右边是属性面板,顶部还有一个「预览」按钮。这不就是我平时用 PPT 排版的那种界面吗?

第一天:把对象摆进场景

按照素材包里「对象总览」那篇文档的思路,我先搞懂了一个核心概念:对象是图纸,实例是造出来的东西。

精灵、文本、按钮这些都叫对象,在列表里建好之后,拖进场景画布就生成了一个实例。比如我建了一个叫 Player 的精灵对象,拖进场景就是一个实例;再拖一次,就是第二个实例——两张一模一样的角色,各自有独立的位置和状态。

这个区分看起来简单,但写事件的时候太重要了:条件筛选永远是在选「实例」,不是对象本身。我就是因为一开始没搞清楚这个,写了个「让所有金币消失」的事件,结果地图上本来要留的装饰金币也跟着没了——调试器一打开才发现,我漏了条件,把所有 GoldCoin 实例都选进去了。

最头疼的事:联机大厅

单人模式跑通之后,真正的难关来了——联机。

素材包里那篇「大厅机制」文档帮了大忙。GDevelop 的联机大厅是官方托管的,不用自己租服务器。流程是这样的:

玩家进入大厅之后,系统自动给每个人分配一个编号,进大厅的第一个人自动成为房主。界面上能看到谁准备了,房主点开局,大家的客户端就自动连上,游戏开始。

玩家编号这个设计太好用了。我需要两个角色——Player1 和 Player2,分别由两个玩家控制。事件里写两行条件就搞定:如果我的编号是 1,就把 Player1 的归属设给我;如果编号是 2,就把 Player2 的归属设给我。所有按人区分的逻辑——出生点、队伍颜色、记分——全挂在编号上,不用写复杂的玩家识别代码。

联机对象归属权事件示例

调试器救了好几次场

做联机的过程中出了好多次莫名其妙的 bug,有时候是对象跑得比预期快三倍,有时候是另一个玩家那边角色不动了。这时候调试器就是救命的。

预览运行时打开调试器,左侧能看到全局变量、场景变量和每个对象实例的实时状态。变量还能直接改——双击值,立刻生效,不用回编辑器改初始值再重启。有一次我怀疑某个记分变量没加上,直接在调试器里把它改成 999,游戏里分数立刻跳到 999,证明逻辑没问题,是触发条件写漏了。

性能分析也好用。有一次游戏玩到后面越来越卡,切到性能标签一看,事件执行占比高得离谱。排查下来是某个循环事件里无条件生成粒子,屏幕里堆了快一万个没回收的特效。加了个「超出范围自动销毁」的行为,立刻就不卡了。

调试器结构变量检视

2D 还是 3D?选了 2D

GDevelop 以 2D 起家,近年也补了 3D 能力。我本来纠结过要不要做个 3D 的,显得更高级,但看了 3D 那边的能力清单——动态光照、阴影、第一人称相机——想想我们四个人连对象摆放都刚搞明白,还是老老实实做 2D 平台跳跃吧。

2D 这边的能力完全够用:多帧动画、瓦片地图、粒子发射器、着色器特效(模糊、辉光不用写代码,点选就行)、骨骼动画、专用的平台跳跃行为(斜坡、单向平台、抓边缘都内置了)。我用 Tiled 编辑器做的地图文件直接导入,没走一点弯路。

那个学期的结尾

最终我们用 GDevelop 做了一款两玩家的躲猫猫平台游戏,素材用的是开源素材库里的免费资源,事件逻辑全靠点条件和动作拼出来。从下载引擎到提交作业,前后大概花了两周——其中一半时间在联机调试上。

交作业那天老师说,我们的作品是他见过完成度最高的无代码项目之一。组里的文科生同学现在还偶尔用 GDevelop 做一些小动画和互动课件,完全把它当成了一个视觉化的编程工具。

如果一开始我就去装 Unity 或者 Godot,大概率还在啃教程。GDevelop 最打动我的地方不是它功能有多全,而是它把「游戏开发」这件事的门槛降得足够低——低到完全没编程经验的人也能在两周内拿出一个能联机跑起来的作品。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章

NetAssist 把重複的調試操作交給機器

網路調試助手的自動化能力盤點——從自動應答規則到數據轉換工具,哪些值得設一次就放著不管,哪些動手反而更快。