# 记录我的开源游戏 \<\<Palamedes Online\>\> 的开发经历

**URL:** <https://forum.defold.com/t/palamedes-online/71266>\
**Category:** 中文 (Chinese)\
**Created:** [July 15, 2022, 11:17am UTC](https://forum.defold.com/t/palamedes-online/71266 "2022-07-15T11:17:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![COCO](https://forum-defold.b-cdn.net/user_avatar/forum.defold.com/coco/32/38692_2.png) [@COCO](https://forum.defold.com/u/COCO)\
**Post date:** [July 15, 2022, 11:17am UTC](https://forum.defold.com/t/palamedes-online/71266/1 "2022-07-15T11:17:33Z")

</div>

[![](https://img.youtube.com/vi/QwrIExVUwdI/maxresdefault.jpg "Palamedes#4") ](https://www.youtube.com/watch?v=QwrIExVUwdI)

大家好, 我是 COCO.  
现任 Colyseus 社区管理.  
我非常喜欢 [Defold](https://defold.com) 和 [Colyseus](https://colyseus.io), 很想用这两种技术制作游戏.  
以前做的都是 DEMO, 这次终于下决心从头到尾做一款真正的游戏了.  
我小时候很喜欢玩 Palamedes 这款 Puzzle 类游戏. 可以和 AI 对战, 也可以双人对战.  
使用 Defold 和 Colyseus, 我决心把它做成互联网对战游戏.

首先, 游戏的主要玩法是骰子射击. 从网上找到了一些免费的骰子图片:

 ![image](https://forum-defold.b-cdn.net/uploads/default/original/3X/8/8/88674afdca9dea715627d010c30fd7766de95666.png)  
稍加修改做成游戏需要的样子:  
 ![image](https://forum-defold.b-cdn.net/uploads/default/original/3X/d/2/d2480fd47ec8b4e0129e433c55d305eb29ced324.png)  
六帧的爆炸动画, 逐帧动画 once forward:  
 ![image](https://forum-defold.b-cdn.net/uploads/default/original/3X/a/9/a996ee781a7dca439f172079cba7b5fa89583bb8.png)  
话说 Defold 如果能支持 TexturePacker 的格式就好了.

- Github 与 lfs 存储  
使用 Git 与 Github 来进行版本控制与数据备份大家都知道, 这里就不多说了.  
有一点值得注意的是对于二进制大文件, 比如 psd 文件, 我的习惯是把他们放在一个特殊目录里, 然后使用 Git LFS 进行追踪, 这样不但减少了存储空间的消耗, 还能在线查看 psd 等文件的内容, 甚至对比更新前后的不同, 一举两得, 非常方便.

 ![image](https://forum-defold.b-cdn.net/uploads/default/original/3X/1/7/173ca728e1b7cb1f25f1f9fbd39dfc36df43b185.png)

- 服务器权威与客户端无效操作  
该游戏设计成为一对一在线对战游戏, 那么就要考虑服务器的权威性. 即游戏重要的状态数据和操作都要由服务器造成并进行数据下发. 比如玩家位置，玩家骰子变换点数，等等. 但是有一些操作，比如下图中用二点骰子射击三点目标:  

- 花样  
游戏中保留最近消掉的6个骰子点数, 这些点数可以构成各种花样, 每种花样根据构成的难易程度给与玩家奖励. 比如点数序列 “1,2,3,4,5,6” 可与让游戏帮你消掉四行骰子.  

- 操作  
游戏的输入操作非常简单: 上下左右加一个切换骰子的功能. 为了同时满足键盘输入与手机上的手势输入, 游戏中使用了 [Defold Input](https://defold.com/assets/defoldinput) 这一扩展程序. 注意程序中要避免 on\_input 函数和 on\_message 函数的冲突.

- UI  
Defold 引擎核心很小, 所以就连GUI中按钮点击监测这样的功能都没有提供. 好在官方和社区为 Defold 提供了许许多多的原生扩展和插件, 以满足各种需求. 逛一逛 Defold 免费的 [资源大厅](https://defold.com/assets) 吧, 为自己游戏添加想要的功能, 就像逛超市一样.  
本游戏里使用了基本的两个插件: [gooey](https://defold.com/assets/gooey) 和 [monarch](https://defold.com/assets/monarch).  
gooey 负责监听GUI中按钮的点击操作, monarch 负责场景的切换.  
建议经常逛逛Defold社区和资源大厅以及Github, 你会发现大家给Defold创造了许许多多让人眼前一亮的扩展功能.

在线试玩:  
[https://cocosgames.itch.io/palamedes](https://cocosgames.itch.io/palamedes)

开源地址:  
[https://github.com/CocosGames/Palamedes](https://github.com/CocosGames/Palamedes)
