大家好, 我是 COCO.
现任 Colyseus 社区管理.
我非常喜欢 Defold 和 Colyseus, 很想用这两种技术制作游戏.
以前做的都是 DEMO, 这次终于下决心从头到尾做一款真正的游戏了.
我小时候很喜欢玩 Palamedes 这款 Puzzle 类游戏. 可以和 AI 对战, 也可以双人对战.
使用 Defold 和 Colyseus, 我决心把它做成互联网对战游戏.
首先, 游戏的主要玩法是骰子射击. 从网上找到了一些免费的骰子图片:
稍加修改做成游戏需要的样子:
六帧的爆炸动画, 逐帧动画 once forward:
话说 Defold 如果能支持 TexturePacker 的格式就好了.
- Github 与 lfs 存储
使用 Git 与 Github 来进行版本控制与数据备份大家都知道, 这里就不多说了.
有一点值得注意的是对于二进制大文件, 比如 psd 文件, 我的习惯是把他们放在一个特殊目录里, 然后使用 Git LFS 进行追踪, 这样不但减少了存储空间的消耗, 还能在线查看 psd 等文件的内容, 甚至对比更新前后的不同, 一举两得, 非常方便.
-
服务器权威与客户端无效操作
该游戏设计成为一对一在线对战游戏, 那么就要考虑服务器的权威性. 即游戏重要的状态数据和操作都要由服务器造成并进行数据下发. 比如玩家位置,玩家骰子变换点数,等等. 但是有一些操作,比如下图中用二点骰子射击三点目标:
这类操作在游戏中是无效的,那么就不应该把这种无效射击操作发送到服务器,服务器只要进行有效的射击的验证工作就好了. 这样做不但能减少服务器的计算压力,同时也能节省下宝贵的带宽.
-
花样
游戏中保留最近消掉的6个骰子点数, 这些点数可以构成各种花样, 每种花样根据构成的难易程度给与玩家奖励. 比如点数序列 "1,2,3,4,5,6" 可与让游戏帮你消掉四行骰子.
-
操作
游戏的输入操作非常简单: 上下左右加一个切换骰子的功能. 为了同时满足键盘输入与手机上的手势输入, 游戏中使用了 Defold Input 这一扩展程序. 注意程序中要避免 on_input 函数和 on_message 函数的冲突. -
UI
Defold 引擎核心很小, 所以就连GUI中按钮点击监测这样的功能都没有提供. 好在官方和社区为 Defold 提供了许许多多的原生扩展和插件, 以满足各种需求. 逛一逛 Defold 免费的 资源大厅 吧, 为自己游戏添加想要的功能, 就像逛超市一样.
本游戏里使用了基本的两个插件: gooey 和 monarch.
gooey 负责监听GUI中按钮的点击操作, monarch 负责场景的切换.
建议经常逛逛Defold社区和资源大厅以及Github, 你会发现大家给Defold创造了许许多多让人眼前一亮的扩展功能.