使用什么工具或者IDEie 开发工具 使用Cocos2d-js游戏

独立开发者:新手做2D手游该用哪些工具?
发表于 17:33|
来源Gamasutra|
作者Chad Ata
摘要:初入游戏开发领域的新手很难知道该选择什么工具、什么编程语言以及哪些框架,或许还会面临许多的选择和建议。本文作者分享了他们从一开始进行手游研发到如今四年多以来积累的经验,希望可以给新入行者提供一些帮助。
全球手游行业规模将突破250亿美元,越来越多的开发者开始进入手游研发领域,而作为一名菜鸟,很多时候,如果没有其他开发者的建议,会走很多弯路,最近,独立工作室Sheado.net公司的Chad Ata在博客中分享了他们从一开始进入手游研发到如今四年多以来积累的经验,希望可以给新入行者提供一些帮助。以下为译文:一开始进入游戏研发领域的时候,你很难知道该选择什么工具、什么程序语言以及哪些框架,你会面临许许多多的选择和建议,我和我的团队总能发现其他游戏公司的经验是有用的,所以这里提供一些我们的经验,希望给做手游的新手们一些帮助。初入手游行业虽然在其他行业有过10多年的编程和策划经验,但当我开始做手游研发的时候,依然觉得自己是一只菜鸟。我们的第一个游戏Furdiburb(宠物冒险游戏)最初是在2009年开始研发的,当时是专门为Android而做的。对于毫无游戏研发经验的我们来说,Java是唯一可用到编程语言。作为一个2D游戏,我们(非常不明智)没有使用OpenGL就开始非硬件加速图形开发。随着Furdi受到了更多人的欢迎,我们的游戏项目也得到更多的注意,最终我们遇到了性能和移植问题。如果我们此前学习了其他开发者的经验,很多问题都是可以完全避免的。找到更好的方法在完成了Furdiburb的研发,并且使用缓慢的把游戏移植到了iOS平台之后,我们决定开始第二款游戏(Eras of Alchemy)的研发。我们当时希望摆脱Java语言,找到可以广泛使用的跨平台研发工具,最好是未来还可以支持主机游戏平台。随后我们开始了搜索,我用了将近一个月的时间对框架、工具以及引擎进行对比,最后,我和我的团队非常满意新的研发方式,直到现在也非常不错。这里我不会说为什么要选择这些,框架是经常变化的,一年前选择它的理由可能到现在就已经不再是考虑的主要因素了。所以,这篇文章的其余部分只会对我们选择某个工具的原因进行简单的描述。以下就是我们当初选择并对比了一个月之后的结果:编程我们所列举的都是在研发我们游戏的时候用到的,而且只是我们做游戏的方式而已,很多工具和框架的结合也是非常完美的,需要开发者们自行发现。框架我们选择的所有架构,要么是开源的,要么就是有开放的代码。这是非常好的,因为我们在必要的时候可以进行紧急修改和优化。:我们所有的跨平台研发都是使用开源Cocos2d-x框架完成,在Eras Of Alchemy的研发过程中,我们使用了版本2,我们的下一个游戏正在使用的是版本3,进行了大幅度的API以及性能提升。整体来说,Cocos2d-x的2D表现非常好,而且文件管理非常方便。:我们使用Spine做了动画,所以我们加入了C语言为基础的Cocos2d-x插件。:我们还没有发布一款使用该引擎的游戏,但我们的下一款游戏A Quiver Of Crows将会使用,我们目前研发就使用了这个工具。:Cocos2d-x本身也提供数据存储方案,但我们更喜欢使用SQLite,因为它的读写速度和表现更好。编程语言C++:Cocos2d-x支持多种语言编程,但我们选择了C++,因为我们觉得目前该语言是最合适做跨平台研发的。C:你经常会想要加入一些开源的API,其中有一些就是C语言编程的。Java:我们依然需要用到Java,但也只是在Android平台做游戏内IAP、广告以及特殊系统功能的时候。语言之间的切换可以通过JNI来完成。Objective-C:选择它的理由和Java一样,我们使用Objective-C是为了使用iOS系统的特定功能。Scripting:这包括程序化脚本和其他脚本语言,所有的开发者们都要时不时的写脚本,但我们却很少会谈论这个问题。这个问题是非常容易的,但如果你和我一样而且由于不常使用而不记得一些语法的话,这个工作有是非常耗时间的,我们要给维护代码、自动音频转换以及纹理打包写脚本。开发环境Xcode:所有人都告诉我们说Xcode非常好,所以我进行了尝试,而且我不得不说的是,这是目前我最喜欢的开发环境。这里我并不想说太多具体的原因,因为我不想引发集成开发环境(IDE)争论,我们使用Xcode做跨平台研发,也为苹果平台做专门的编程。Eclipse:对于IDE来说慢的可怕,但我看来却非常好用。我们用Eclipse做了所有的Java和Android研发,包括适配和修复bug。Android目前在推Android Studio而不是Eclipse,但我们没有那么多的时间,也没有什么特别的理由去转换到新的工具。Visual Studio:也是个非常优秀的IDE,我们用它来做左右和微软相关的编程、Bug修复以及适配。版本控制即便你的团队只有一个人,你也应该使用版本控制。所有人都会犯错,而且任何一次大改都可能导致游戏神秘的死亡。我们的团队只有3个人,因此从第一天做手游开始,版本控制就是非常必要的。目前有非常多的方案可以选择,但我们使用的有以下几个:SVN:我个人喜欢SVN,因为可以做到所有我需要的功能,比如合并、同步、恢复等等,但学习起来比较困难。Git:我们使用的很多开源框架都使用Git。我们使用Git就是为了保持与框架同步,当需要的时候可以进行快速修复。电脑很明显,你做游戏是需要使用电脑的。最初所有的研发都是在Linux机器上完成的。但我们开始了iOS平台的研发之后,用两三台电脑变得效率非常低,所以我们买了一些iMac,而且我们都非常喜欢用它来做游戏研发。幸运的是,OSX的很多指令与Linux相同,所以我们的很多脚本都没有做改变。图形工具Adobe CS:相信这个没有人觉得奇怪,我们的美术师最常使用的是Illustrator和Photoshop。Spine:非常推荐这个工具制作骨骼动画,和传统的帧到帧动画相比,骨骼动画可以节约硬盘空间,还可以节约大量的研发时间,提供强大的功能,比如动画混合、蒙皮技术以及网格变形。:你或许会想要把图片进行打包获得更大的图像以获得更好的游戏表现。我们选择Texture Packer来完成这项工作,而且我们还使用它的指令功能进行自动化打包处理。关卡编辑器我们使用的关卡编辑工具包括:没有编辑器:如果可以不用的话,我们绝不会使用编辑器。我们可以用代码解决,这听起来非常疯狂,而且有点浪费时间,但如果你的团队非常小的话,有时候为了节约时间可以不必为了一次性的任务专门用代码写一个编辑器。定制化编辑器:有时候我们写了一个非常不好用的游戏内编辑器来做图形或者关卡,我的意思是未经优化的,恐怕也只有我们会这么做。:对于我们的下一个游戏,我们在使用R.U.B.E(Really Useful Box2D Editor)之前,几乎自己研发了一个游戏内编辑器,这个非常强悍的工具节约了我们大量的时间,但如果我们决定要做关卡编辑器的话,我们必须自己研发。音乐和视频:我个人非常喜欢ffmpeg,这个工具非常好用,我们通常使用脚本用它把我们的视频变成各个平台需要的格式。:这是个非常强悍的音乐制作软件,一开始的学习会比较困难。:如果你想给自己的游戏加入管弦乐,Garritan可以带来非常高质量的音乐,我们通常和Sonar混合使用。:一个非常不错的视频编辑和录制工具。以下2个是我们已经不再使用的工具,但可能对于新手来说依然具有推荐意义::如果你熟悉乐器而且乐意学一些音乐知识,并且想要做MIDI格式的音乐,这是个非常不错的软件。:这是个非常不错而且简单的软件,可以制作非常不错的音乐,而且不需要你阅读很多的音乐知识。结论目前做游戏的工具非常多,以上的这些工具只是我们在做2D游戏的时候选择的工具,目前为止,我们对这些工具非常满意,我们最新的游戏发布到了iOS、Android和Windows Phone平台。我们还打算在下一款游戏发布的时候,用同样的工具把游戏扩展到PC、Mac以及Linux平台。英文文章来源:,译文出自:(责编/唐小引)
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章在本文中,我将展示如何在 Mac os 10.9(Maverics) 上搭建 Cocos2d-JS 开发环境。
下载必备的软件包
下载并安装WebStorm7。目前的稳定版本是7.0.3。为什么我们选择WebStorm?因为它提供了许多功能,如JavaScript代码的语法完成,调试,语法高亮,版本系统集成等,你可以去WebStorm的更多信息的官方网站。
从Cocos2d-x的官方网站下载Cocos2D-JS 3.0alpha版本。。当你下载了的Cocos2D-JS
3.0alpha版本。你应该把它解压缩到一个合适的位置。在我们的例子中,我把它解压在~/work/cocos2d-js-v3.0-alpha2.&~代表你的主目录路径,这在我们的例子中是&/Users/linshun。
你也可以通过GitHub上得到的Cocos2D-JS的前沿版本。这里是的,最新的开发工作在develop分支。
下载并安装Chrome34和扩展。
好吧,让我们来看看如何配置WebStorm7开发和调试我们的Cocos2D-JS应用。
如何创建新工程
Cocos2d-JS 提供了一个控制台工具,使CH5和JSB应用程序的开发更加简单和方便得多。你可以使用它来创建一个新的项目,其发布到Android,iOS,Mac
OS或web,它是非常容易使用。
安装Console工具
第一步,在你使用该工具前需要先安装。 请克隆 Cocos2d-JS仓库并跟新所有子模块。在Cocos2d-JS文件夹下打开控制台工具(console),然后在控制台上运行./setup.py。在安装期间你可能需要提供你的 NDK, Android SDK 和 ANT的路径。 注意该工具是使用python开发的,所以你需要在你的机子上安装python 2.7.5或以后的版本(但是不支持 python3)。
**注意: ** 请执行&source ~/.bash_profile,使环境设置立即生效。
创建新工程
// 创建一个包含 Cocos2d-x JSB 和 Cocos2d-html5 工程:
cocos new -l js
// 创建一个仅包含 Cocos2d-html5 的工程:
cocos new -l js --no-native
// 在指定的目录创建一个指定名字的工程:
cocos new projectName -l js -d ./Projects
在这个教程中,我们使用&cocos new -l js&在当前目录创建一个MyJSGame工程。
运行该工程
使用Websever 运行 Cocos2d-JS 工程
cd ~/work/MyJSGame
cocos run -p web
使用Cocos2d-x JSB 编译并运行项目
cd ~/work/MyJSGame
cocos compile -p ios|android|mac
cocos run -p ios|android|mac
有用的参数
-p platform : 平台可以是 ios|mac|android|web.
-s source : 你的工程目录, 如果不指定当前目录会被使用.
-q : 静默模式, 移除日志消息.
-m mode : debug 或 release 模式, 默认是debug
--source-map: 普通的 source-map 文件. (仅针对Web 平台)
配置WebStorm
进行Cocos2d-JS开发
首先,你应该启动WebStorm7。如果这是你第一次启动WebStorm,它会要求你选择你的个人偏好,比如选择键盘映射。
这是我的WebStorm启动截图:
如果你是第一次启动WebStorm,最近打开工程部分应该为空。
现在,让我尝试用WebStorm进行Cocos2d-JS开发。
打开已经创建好的项目 MyJSGame
正如我们可以从上面的图片中看到,你应该选择Create New Project from Exisiting Files(从已存在的文件创建新项目)
然后,它会提示你以下选项:
选择Source files are in a local directory, no Web server is yet configured(源文件在本地目录,没有配置web
server) 并点击Next(下一步)继续
在这一步,你应该展开目录树来指定你的MyJSGame源代码放的位置。当你指定了正确的目录,注意Finish按钮仍然是灰色的。
现在,我们应该设置该目录为项目的Project Root(根目录)。单击项目根目录按钮,Finish(完成)按钮将激活。
恭喜你,你已经成功配置了webstorm 开发 Cocos2d-JS 项目。
Cocos2d-JS
当你已经添加了整个的Cocos2D-JS项目目录到WebStorm7。WebStorm将解析所有的Cocos2D-JS源代码。如果你打开MyJSGame/src/myApp.js,你可以得到的准确的语法自动补全的能力。
如果你有一个第三方JavaScript库在你的Cocos2d-JS游戏应用程序,你也可以把它添加到WebStorm库来解析并启用实时语法自动补全。
下面是说明:
添加第三方库进行解析
点击Settings(设置)按钮启动你工程的设置对话框:
在点击Settings(设置)菜单后,它将弹出如下的对话框:
现在你可以点击&Add...&按钮,然后会提示你指定你的javascript库的路径。
在WebStorm中调试Cocos2d-JS
javascript
是时候学习调试Cocos2d-JS代码了。
chrome 扩展连接WebStorm 到 Chrome
右键点击&~/work/MyJSGame下的index.html文件,并选择&Debug
'index.html'
现在,它会自动打开你的Chrome浏览器。如果你把你的鼠标chrome上面的JB插件, 它会告诉你,它已经连接上WebStrom7.0.3:
这一步很简单,一旦你已经安装了插件 -&“JetBrains IDE support”。当你单击WebStorm调试菜单,它会自动连接到浏览器。它是相当的方便啊!你也可以点击右侧Chrome浏览器的侧边栏的JB图标,它会立即把你带到WebStorm的IDE界面。
在WebStorm中调试javascript代码
返回到WebStorm界面,并双击&MyJSGame/src/myApp.js&在代码区展示。
设置断点。用鼠标右键单击myApp.js源代码视窗左边的侧栏。
开始调试。 WebStorm会自动启动你的chrome浏览器,并运行示例项目。然后通过点击JB图标回到你的WebStorm。程序将停止在我们刚才设置的断点处。且编辑器将切换到Debug视图:
现在你可以做调试之类的事情,单步跳出,单步进入入,单步跳过,继续执行等。
在本教程中,向你展示了基本的步骤来配置WebStorm7进行Cocos2d-HTML5的开发工作,包括配置语法感知自动补全和调试。过程是相当简单明了。如果你对这个教程有任何疑问或建议,请告诉我们。我们将非常感谢你的贡献。
在接下来的教程中,我们将通过内置的Cocos2d-JS测试和示例游戏,告诉你如何设置一个新的Cocos2d-JS项目。
本文已收录于以下专栏:
相关文章推荐
在游戏开发的过程中,经常会遇到作为UI或者不怎么修改的背景的层(Layer), 这些层内容并不怎么变动。 而在游戏的渲染过程中,这些层往往又会消耗大量的渲染时间,特别是比较复杂的UI界面,...
为何将单例模式移除
在Cocos2d-JS v3.0之前,所有API几乎都是从Cocos2d-x中移植过来的,这是Cocos2d生态圈统一性的重要一环。可惜的是,这种统一性也在很大程度上限制了Coc...
该配置文件相当于v2版本中的jsloader.js。改造的目的是为了使得配置纯粹化,同时也能比较好的支持cocos-console、cocos-utils甚至是用户自定义脚本工具。
字段说明...
在Cocos2d-JS中,对象的构造方式和Cocos2d-x一样,使用各个类的create函数来构造。在Cocos2d-JS v3.0我们还将为你带来一种传统的方式,即使用new操作符。另外,在v3....
新增action中的方法
以前,当我们需要重复一个action的时候,我们需要:
sprite.runAction(cc.Repeat.create(action, 2));
上面代码中创建了一...
api改动情况,左边为新增,右边为原来的。
cc.warn 新增
cc.error 新增
cc.assert &-- cc.Assert
此次改造有以下几点原因:
原创作品,转载请注明作者:    已经不能再离开了firefox了,一打开电脑,首先都要打开firefox。至于安全性和速度我就不说,只有自己才能体会。现在介绍一些必安的add-ons...
这篇文档将介绍Cocos2d-JS 3.0的一个重量级新特性:资源管理器(仅支持JSB)。资源管理器是为游戏运行时的资源热更新而设计的,这里的资源可以是图片,音频甚至游戏脚本本身。使用资源管理器,你将...
这篇指引主要介绍如何使用从在线下载工具下载下来的Cocos2d-JS的单文件引擎。
你有可能下载了下面三个版本中的一个:
Cocos2d-JS Full Version: 完整版引擎包含Coco...
CCFileUtils.js在Web引擎中已经被删除了,原因是FileUtils在原生平台中的文件检索功能在Web端是无法实现的。
二进制文件获取的方法被转移到了cc.loader....
他的最新文章
讲师:姜飞俊
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)自学 cocos2d 游戏开发应该按什么步骤进行? - 知乎3736被浏览187933分享邀请回答
/v_show/id_XMTI2NjcxOTQ0OA==.html
1.6K181 条评论分享收藏感谢收起45231 条评论分享收藏感谢收起查看更多回答8 个回答被折叠()pomelo 与 cocos2d-js 开发环境搭建 - Pomelo Club
pomelo 与 cocos2d-js 开发环境搭建
cocos2d-js 是整合了 cocos2d-html5 和 cocos2d-jsb,可以方便的开发部署到各种设备环境中 pomelo-cocos2d-js 则是对 pomelo-client-websocket 和 pomelo-cocos2d-jsb 的整合
本文以cocos code ide为开发环境说明如何搭建 pomelo 与 cocos2d-js 的开发环境
1:下载 cocos code ide
2:下载 cocos2d-js 配置cocos code ide
3:新建 cocos javascript project
这个时候,可以点击 build runtime 按钮,看是否能够成功编译 可以选择 win32 runtime(本文演示的是win32) 或者 android runtime
4:下载 pomelo-cocos2d-js 在项目根路径下面执行
--recursive
5:cocos2d-html5 环境搭建 修改index.html
&script src=&frameworks/cocos2d-html5/CCBoot.js&&&/script&
&script src=&pomelo-cocos2d-js/html5/build/build.js&&&/script&
&script type=&text/javascript&&
require(&boot&);
&script src=&main.js&&&/script&
6:cocos2d-jsb 环境搭建 修改main.js
cc.game.onStart = function() {
if (cc.sys.isNative === true) {
require(&pomelo-cocos2d-js/index.js&);
cc.view.setDesignResolutionSize(800, 450, cc.ResolutionPolicy.EXACT_FIT);
cc.view.resizeWithBrowserSize(true);
// load resources
cc.LoaderScene.preload(g_resources, function() {
cc.director.runScene(new HelloWorldScene());
cc.game.run();
7:测试chat修改app.js,添加
var pomeloChat = function() {
var pomelo = window.
var route = &gate.gateHandler.queryEntry&;
var uid = &uid&;
var rid = &rid&;
var username = &username&;
pomelo.init({
host: &127.0.0.1&,
port: 3014,
}, function() {
pomelo.request(route, {
}, function(data) {
pomelo.disconnect();
pomelo.init({
host: data.host,
port: data.port,
}, function() {
var route = &connector.entryHandler.enter&;
pomelo.request(route, {
username: username,
}, function(data) {
cc.log(JSON.stringify(data));
chatSend();
function chatSend() {
var route = &chat.chatHandler.send&;
var target = &*&;
var msg = &msg&
pomelo.request(route, {
content: msg,
from: username,
target: target
}, function(data) {
cc.log(JSON.stringify(data));
然后在 HelloWorldLayer 的 ctor 里面添加
pomeloChat();
8:本地把chatofpomelo-websocket跑起来
9:分别在jsb环境和html5环境测试
测试demo完整地址在
此demo只提供代码部分展示,cocos2d-js 库相关并没有上传
14:50重新编辑
您好,你的文章很棒,已经推荐到Cocos引擎中文官网。感谢您的分享。
socket error: Event build.js:1532socket close: CloseEvent
这是什么问题?socket关闭了?
@正常的哦,连接gate获取connector地址,chat里面是这样子的逻辑
楼主,我这边调试发现在pomelo.init的回调处死了。 并没有去连接connector服务器。 这是怎么回事啊?
connector 地址拿到了吗?
@ 没有拿到。init函数的执行完了,但是回调没执行,估计socket连接死掉了。。。
但是socket的接受里面也没见到去主动调用回调函数。init的回调在哪执行的呢。。。
@ 没有拿到。init函数的执行完了,但是回调没执行,估计socket连接死掉了。。。
但是socket的接受里面也没见到去主动调用回调函数。init的回调在哪执行的呢。。。
socket = new WebSocket(url); WebSocket没有初始化。。。这个WebSocket怎么没看到定义啊。。。。
socket = new WebSocket(url); WebSocket没有初始化。。。这个WebSocket怎么没看到定义啊。。。。
@ 服务端看到连接connector的日志了吗
我跟了一下跟到了libJSBindingForNetwork中的jsb_websocket.它的socket构造函数是跑了的,内部怎么会出现Socket连接不上呢?。。。
@ js客户端连接gate服务器,服务器一点反应都没有。。。。
@ 你是最新cocos2d-js吗?啥系统?
是最新的3.0R3. 系统?
按照Api的话,连接gate的步骤就这个pomelo.init.这里面用到的的WebSocket的连接怎么会出问题呢?为什么init的回调不执行啊?
楼主,在吗?
按照教程,无论mac还是web都可以调试成功,但我用cocos compile -p web -m release命令发布web的release版本时,发现pomelo-cocos2d-js 文件夹不会被复制到发布版里面,又或者pomelo的任何库都没有包含进发布版里面。我还尝试了发布成apk,可里面依然没有pomelo的东西。也尝试发布成mac版,但编译时发生错误(用ide调试时正常的)。
请问怎么正确地发布成release版本?
找到原因了,web发布版的,把pomelo-cocos2d-js 文件夹考到和index.html同级目录后,要确保&script src=&game.min.js&&&/script&&script src=&pomelo-cocos2d-js/html5/build/build.js&&&/script&的顺序不能颠倒,颠倒则运行失败。
但还有个问题,在mac上的sofari访问成功,可在iphone4上访问失败,不知道是不是iphone4sofari版本较低的原因,有谁有这方面经验吗?
sofari-&safari
@ iphone4 ios 几的?
@ 5.1.1,safari是默认的版本,不知道是几版本。我怀疑是safari的版本不支持某些socket。以前我用mac10.68的safari也是连接不上某个socket版本(具体不记得是哪种socket了)的pomelo,换成chrome就可以。而现在系统升到mac10.9,safari跟着升级后,就连上了。
@ 恩恩,应该是safari地版本的问题
objc[1164]: Class AVAudioPlayer is implemented in both /System/Library/Frameworks/AVFoundation.framework/Versions/A/Resources/libAVFAudio.dylib and /Users/chris/work/workspace/cocos/js/TestPomelo/runtime/mac/TestPomelo Mac.app/Contents/MacOS/TestPomelo Mac. One of the two will be used. Which one is undefined. 20:22:33.308 TestPomelo Mac[] Unable to load nib file: MainMenu, exiting
浏览器就可以正常访问,但是cocos为啥报错呢?cocos2d-js的版本是v3.1
TestPomelo Mac.app/../../../pomelo-cocos2d-js/index.js:25:Error: can&t open pomelo-cocos2d-jsb/lib/emitter/index.js: No such file or directory用xcode生成testPomelo.app后还会报这些文件找不到
用GIT下载pomelo-cocos2d-js 的时候,--recursive标志很重要,不然对应的几个库就下不来,提示找不到文件。下完之后,cocos code IDE的工程最好刷新一下,不然也可能产生奇怪的问题。
这就是我调了好一会儿才通过的经验。
pomelo-cocos2d-js中index.js第一句:var Util = require(&util&);就报错:Error: can&t open : No such file or directory是模块没有下载完整吗?
@ 现在是新版本了。你倒官方看看文档
@ 我用最新的(0.1.4)pomelo-cocos2d-js 在android的微信和qq浏览器会连不上服务器,服务器报could not find handle invalid data package,其他浏览器和cocos运行正常,大概是因为pomelo-cocos2d-js的pomelo版本过低导致socket的数据包类型或格式不对,我服务器用的是pomelo1.1.9,我把模板的build.js放到客户端,这时候微信和qq浏览器访问就正常了,但我不知道怎么整合代码,也报pomelo-cocos2d-js中index.js第一句:var Util = require(&util&);就报错:Error: can&t open : No such file or directory
pomelo-cocos2d-js/html5/build/build.js现在已经没有这个文件了啊!而且我也遇到了@ 的错误!文档要跟上啊,不然怎么用!哎
教程已过期“现在直接用 dist 下的文件,放入 cocos2d-js 的 jsList 里面即可,还是全局的 pomelo 对象”
app.configure(&production|development&, &connector&, function() {
app.set(&connectorConfig&, {
connector: pomelo.connectors.hybridconnector,
heartbeat: 10,
useDict: true,
useProtobuf: true,
type: &wss&,
key: fs.readFileSync(&./keys/server.key&),
cert: fs.readFileSync(&./keys/server.crt&),
});请问一下,服务器这样启用wss之后,cocos2d-js客户端要做些什么才能连得上啊?
@ 客户端下有 chat test 的例子的,你用 chatofpomelo-websocket 试试
throw new Error(
&secure random number generation not supported by this browser\n&+
&use chrome, FireFox or Internet Explorer 11&
就先不说wss了,我使用useCrypto的时候,在Chrome上调试是正常的,可是在cocos code ide 的Mac模拟器运行就会提示以上的错误,说是oldBrowser,没有crypto.getRandomValues这个方法。
我的客户端是在bearcat-cocos2d-js-example的基础上加了pomelo-cocos2d-js。
我硬把oldBrowser改写成Math.random生成随机数就可以了,不知道是否合适。
function oldBrowser(size, cb) {
var bytes = new Buffer(size);
for (var i = bytes.length - 1; i &= 0; i--) {
bytes[i] = Math.round(Math.random() * 256);
if (typeof cb === &function&) {
return process.nextTick(function () {
cb(null, bytes);
// throw new Error(
&secure random number generation not supported by this browser\n&+
&use chrome, FireFox or Internet Explorer 11&
pomelo.on(&onChat&, function(data) {
cc.log(&onChat:& + data);
cc.log(&onChat1:& + JSON.stringify(data));});
然后打印:JS: onChat:[object Object]JS: onChat1:{&msg&:&[object Uint8Array]&,&from&:&[object Uint8Array]&,&target&:&[object Uint8Array]&}
为什么是Uint8Array?
求help,在线等
我的是cocos2d-js
ios native环境运行的这个是不是不支持?
@ 支持的吧~ spiderMonkey 应该没问题的
我把3283行//
var b = buffer.readUInt8(pos);
改为var b = buffer[pos];虽然不报错了,但是我和你一样的问题onChat1:{&msg&:&[object Uint8Array]&,&from&:&[object Uint8Array]&,&target&:&[object Uint8Array]&}
@ 坛主在么?接收消息时报错../src/pomelo-cocos2d-js/dist/pomelo-cocos2d-js.js:3283:TypeError: buffer.readUInt8 is not a function我把3283行// var b = buffer.readUInt8(pos);改为var b = buffer[pos];虽然不报错了,但是我楼上一样的的问题onChat1:{&msg&:&[object Uint8Array]&,&from&:&[object Uint8Array]&,&target&:&[object Uint8Array]&},怎么才能显示文字呢
@ 晕倒,你 cc.log(obj.target) 即可
@ 坛主你好,我知道里面的对象有msg、from、target属性,但是obj.target不是文字 是[object Uint8Array],而且源码3283行报错,我改为var b = buffer[pos];这样对吗
mac环境 跑native环境 接收消息时报错../src/pomelo-cocos2d-js/dist/pomelo-cocos2d-js.js:3283:TypeError: buffer.readUInt8 is not a function
cocos2d-js加载js文件超级简单。 std::string jsFileContent = futil-&getStringFromFile(fullPath); if (!jsFileContent.empty()){
ok = JS::Compile(cx, obj, op, jsFileContent.c_str(), jsFileContent.size(), &script);}
这个地方可以做很多工作,比如从加密的zip包取出脚本文件,然后,把文件内容注入进去,等等。操作完毕,记得缓存。filename_script[fullPath] =这点,越来越像lua了。
pomelo 与 cocos2d-js 搭配目前来说还是幻想。折腾了一段时间,cocos2d-js 3.8版本,单单os文件就达到42MB,然后又要在js执行序列化的运算。我不知道有多少手机支撑得住,即使支撑的住,估计发热也厉害。以前用lua开发,序列化在C++实现,定制化的那种序列化,使用socket连接。在游戏场景中,洪水般的消息喷出来,勉强还可以支持。手机玩半个小时就烫手。}

我要回帖

更多关于 小程序开发者工具使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信