[分享]贪吃蛇网络对战原型demo

#Snake贪吃蛇网络版原型
##前言
一直看到论坛里人想要网络对战的DEMO,想了一下贪吃蛇的设计应该是比较简单的,美术资源也用太找(这个我不行),于是纯想像着开始开发。我的思路,对于网络对战关键是服务器端的开发,要进行客户端协同,处理操作冲突,简单的有点像聊天室、协同白板,复杂的才像网络游戏。对于数据传输,如果想保持实时就要长连接,websocketIO是比较常用的方式。论坛上大部分朋友应该是卡在服务端开发上,想着比较麻烦,客户端主要是界面逻辑和游戏逻辑,而服务端就全是后台逻辑了。而互联网时代是开源时代、服务时代,其实是可以找一下开放平台来做的,只不过我对游戏领域只是小知一二,DEMO也不想花钱,就想到了wilddog,而CC的好处是可以整合第三方部分资源的逻辑直接到现有代码逻辑中,于是就试了一下wilddog的JS sdk,在CC中插件模式使用(暂时作为web项目使用)。花了一两天时间,主要是wilddog也不是太熟,它的API逻辑有点绕,数据组织也有限制,但它还是为游戏类使用设计是很多方便的API。我想这个DEMO就是基本的原型,为论坛中的朋友提供一点思路。
http://git.oschina.net/shishi11shf/snake
##环境说明

  • 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后面的版本里改了,我这里先注掉了
  • 另外,那个自动图片资源最后怎么用,没有plist呀,我也不太明白,还是texturepacker了

#喜欢的朋友多交流


开始是不动的,上下左右控制开始动,按个其它键停(主要是为了测试),暂时没有任意方向。

5赞

点赞支持,可以放到我收集的资源里吗? http://forum.cocos.com/t/creator/39917

好的,多交流思路和问题

野狗wilddog是一个国内的实时通信引擎,这个DEMO用利用wilddog提供的免费API实现登录认证和实时位置数据同步,这样在简单层面上就不用开发服务端了,对于网络对战DEMO是非学方便的。反过来说,如果自己开发服务端,至少要实现wilddog的这些后台服务API(全数据同步、离线删除等),如果有钱也可以在服务端对接wilddog,这些就不用自己开发了,是一个思路。

学习看看

66666 。不错不错!

Matchvs可以提供一整套的移动游戏联网和服务端解决方案,在立项之初接入Matchvs的SDK,开发者只需考虑的游戏逻辑层面即可。

1赞