|
前言
一直看到论坛里人想要网络对战的DEMO,想了一下贪吃蛇的设计应该是比较简单的,美术资源也用太找(这个我不行),
于是纯想像着开始开发。我的思路,对于网络对战关键是服务器端的开发,要进行客户端协同,处理操作冲突,
简单的有点像聊天室、协同白板,复杂的才像网络游戏。对于数据传输,如果想保持实时就要长连接,
websocketIO是比较常用的方式。论坛上大部分朋友应该是卡在服务端开发上,想着比较麻烦,客户端主要是界面逻辑和游戏逻辑,
而服务端就全是后台逻辑了。而互联网时代是开源时代、服务时代,其实是可以找一下开放平台来做的,只不过我对游戏领域只是小知一二,
DEMO也不想花钱,就想到了wilddog,而CC的好处是可以整合第三方部分资源的逻辑直接到现有代码逻辑中,于是就试了一下wilddog的JS sdk,
在CC中插件模式使用(暂时作为web项目使用)。花了一两天时间,主要是wilddog也不是太熟,它的API逻辑有点绕,数据组织也有限制,但它还是为游戏类使用设计是很多方便的API。
我想这个DEMO就是基本的原型,为论坛中的朋友提供一点思路。
环境说明
cococs creator 1.3.2
wilddog web javascrip sdk 2.4.1
DEMO运行前准备
实在是小私心,大家自己注册一个wilddog账号好了(免费的),每个账号有流量限制,多了就要花钱了。我在项目中设计了config.json,但就不上传我的账号文件了。(格式看代码)- {
- authDomain: "XXX.wilddog.com",
- syncURL: "https://XXX.wilddogio.com"
- }
复制代码
在wilddog中开启邮件认证。再建几个账号。(当然有条件也可以设置微信什么的,没有也可以anymous,我是为了记录排行榜)
在wilddog的规则列表式中写入规则(看代码),这是为了排行榜排序(其实这部分研究花了很多时间)
- {
- "rules": {
- ".read": true,
- ".write": true,
- "snake": {
- "score": {
- ".indexOn": ".value"
- }
- }
- }
- }
复制代码
问题和建议
因为lure的生成不是客户端平等的,但为了简化就写成只在第一个启动的客户端有定时逻辑,而如果第一个客户端离线了,就不再生成lure了。
这也是为什么真实的网络游戏还是要开发服务端的原因,wilddog之类只能提供一些API服务以简化开发,还不能完全替代。
建议CC给 cc.Node增加一个userData属性,类似event的,这样代码时就不用每次先getComponent再取一些属性,
并且各个component之间可以用这个传数据。在开发中实在是常有一些用户数据在还在sprite之类上,event也是这个道理呀。
建议CC与wilddog可以谈合作,他们与白鹭有合作,这样可以以完全插件形式使用wilddog(我DEMO中是web的sdk,
要android还要再整合另一个SDK,当然wilddog也想到了REST方式,这边还要再改代码,懒了),而ANYSDK我了解得不多,
大概多是渠道平台方面的,不太懂(我只是DEMO,不是生产,前面试过一个登录而已)。
后面我会看一些CC插件商店方面的概念,争取做一个。
全局事件注销后不能再注册问题在cc后面的版本里改了,我这里先注掉了
喜欢的朋友多交流
下載地址:
|
|