cocos2d-html5+JSBinding+cocos2d-x+GameKit实现蓝牙对战

简介: 我想给自己最近发布的游戏加入蓝牙对战功能,我的游戏使用了cocos2d-html5、JSBinding、cocos2d-x。我在网上搜了下,没找到相关的文章。如果你想实现类似的功能,我希望这个demo能对你有所启发。

为什么做这个:

我想给自己最近发布的游戏加入蓝牙对战功能,我的游戏使用了cocos2d-html5、JSBinding、cocos2d-x。我在网上搜了下,没找到相关的文章。如果你想实现类似的功能,我希望这个demo能对你有所启发。

image.png


注意事项:

  • 这篇文章不会讨论如何使用GameKit的蓝牙功能
  • GameKit部分的代码基本上基于raywenderlich网站上这个精彩的系列教程
  • 我不擅长Objective-C,而且好几年没用过C++了,所以代码中难免有一些不妥的语法,内存管理方面也许也有问题
  • 我是在业余时间研究这些和编写代码的,所以功能方面并不完善(例如异常处理方面)
  • 这个例子主要演示了如何在不同语言之间通讯(Javascript、Objective-C、C++),以及使用GameKit实现蓝牙对战功能


Demo包括:

- Javascript如何调用C++函数 (spidermonkey)

- 如何混用C++和Objective-C (.mm)

- C++调用Javascript函数 (spidermonkey)

- 建立游戏 (作为服务器)

- 加入游戏 (作为客户端)


- 在服务器和多个客户端之间通讯 (发送接收数据包)

主要流程:

  • 所有的操作如“建立游戏服务器”, “查找服务器”, “客户端加入游戏”等功能都是从Javascript发起的 (MyLayer)
  • 以“客户端加入游戏”为例
  • Javascript代码中调用C++ (AppDelegate.h/mm)定义的“joinServer”函数,并将服务器的peerID和MyLayer类的实例作为参数传过去,例如 joinServer(peerID, this);
  • C++的“joinServer”被触发后(感谢spidermonkey)调用Gamekit中的Objective-C蓝牙代码,例如[clientObject connectToServerWithPeerID:peerID];
  • Action完结之后,Objective-C通知C++端,例如self.delegate->clientDidConnect();
  • 收到Objective-C的通知后C++调用Javascript定义的“clientDidConnect”
  • C++触发函数之后,JavaScript可以进行下一步动作
  • 单个操作的流程至此结束

简单总结一下整个调用过程就是: Javascript -> C++ -> Objective-C -> C++ -> Javascript

代码结构:

  • MyApp.js — Javascript — 所有操作的起点
  • GlobalJsFunc — C++ — spidermonkey使用的全局函数和变量(函数会被JavaScript调用)
  • AppDelegate — C++ — Objective-C和Javascript之间的桥梁,Javascript触发后,调用相应的函数,并返回结果给Javascript
  • MatchmakingClient/MatchmakingClient — Objective-C — 处理GameKit部分的蓝牙功能
  • MatchmakingProtocol — C++ — 连接事件的协议,AppDelegate实现了这一协议
  • Packet — Objective-C — 设备间接受和发送数据的打包和解包
相关文章
|
人工智能 移动开发 HTML5
HTML5实现人机对战的国际象棋AI版
这是一个基于HTML5的国际象棋小游戏,它也提供人机对战,不过智商相对较低,我们称它为“Cheap AI”,像一个国际象棋初级入门的人都可以轻轻松松赢得比赛。如果你对人工智能感兴趣,你也可以改造这款国际象棋的机器智商,让它变得更为强大。
570 2
|
10月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
756 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
583 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
556 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
284 34
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
600 33
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
262 24
|
前端开发
“弘五四,耀青春”程序创意获奖作品【html+css】
本作品以“青春筑梦,共创未来”为主题,采用动态龙元素展现青春活力与创新精神。页面设计简洁明快,色彩协调,突显年轻人积极向上的风貌。作品内容包括获奖截图、名字《时代扬新帆》及源代码分享。特别说明:禁止用于商业活动,可用于比赛和作业等开源场景。最后,作者表达了对五四精神的致敬与传承,强调了青春活力和创造力的重要性,并感谢评委和支持者。 **获奖感言摘录:** “获得这个奖项,对我们团队来说,既是认可也是激励。我们将继续努力,不断优化产品,为用户带来更好的体验,为社会贡献更多价值。”
293 2
|
前端开发 测试技术 定位技术
如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤
本文深入介绍了如何利用HTML和CSS构建企业级网站的全过程。从项目概述到页面结构设计,再到HTML结构搭建与CSS样式设计,最后实现具体页面并进行优化提升,全面覆盖了网站开发的关键步骤。通过实例展示了主页、关于我们、产品展示、新闻动态及联系我们等页面的设计与实现,强调了合理布局、美观设计及用户体验的重要性。旨在为企业打造一个既专业又具吸引力的线上平台。
675 7