原文:http://www.cnblogs.com/hanframe/p/3582832.html
为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。
socket使用的是cocos2dx集成的websocket。
先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua + Python 2.7.5
1.在protobuf目录下依次执行如下命令
python setup.py build python setup.py install
2.在protoc-gen-lua目录下的plugin目录中新建protoc-gen-lua.bat文件,并将如下内容粘贴到里面
@python <你的目录>\protoc-gen-lua\plugin\protoc-gen-lua
3.生成protobuf对应的lua文件,执行如下命令:
<你的路径>/protoc.exe --lua_out=./ --plugin=protoc-gen-lua="<你的路径>\protoc-gen-lua\plugin\protoc-gen-lua.bat" test.proto
执行完后就会生成test_pb.lua文件。
4.使用cocos2dx的create_project.py创建lua工程;
5.将protoc-gen-lua/protobuf目录下的pb.c文件复制到lua工程的Classes目录下,并加入到C++工程中;
6.将protoc-gen-lua/protobuf目录下的所有lua文件复制到lua工程的Resources目录下;
7.编辑AppDelegate.cpp文件,添加如下代码:
extern "C"{ #include <lua.h> #include <lualib.h> #include <lauxlib.h> int luaopen_pb (lua_State *L); }
8.在AppDelegate::applicationDidFinishLaunching()方法中加入初始化方法:
luaopen_pb(tolua_s);
9.此时对lua工程进行编译,如果出错,请检查并修正;编译通过,并且可以正常运行后继续下面的步骤;
10.cocos2dx默认产生的lua工程包含2个文件hello.lua与hello2.lua,打开hello2.lua,将如下内容添加到文件末尾(因为我使用的是websocket,各位可根据自己的实际情况进行修改):
local wsProtobuf=nil function testProtobuf() wsProtobuf = WebSocket:create("ws://localhost:8080/web") local function onOpen(strData) print("socket open ...") require "test_pb" local msg=test_pb.Message() msg.id=101 local person =test_pb.Person() person.id=111 person.name="user1" person.email="a1@a.a" msg.data=person:SerializeToString() local pb_data = msg:SerializeToString() local t={string.byte(pb_data,1,-1)} wsProtobuf:sendBinaryMsg(t,table.getn(t)) end local function onMessage(strData) print("socket message ...") end local function onClose(strData) print("socket close ...") end local function onError(strData) print("socket error") end if nil ~= wsProtobuf then wsProtobuf:registerScriptHandler(onOpen,kWebSocketScriptHandlerOpen) wsProtobuf:registerScriptHandler(onMessage,kWebSocketScriptHandlerMessage) wsProtobuf:registerScriptHandler(onClose,kWebSocketScriptHandlerClose) wsProtobuf:registerScriptHandler(onError,kWebSocketScriptHandlerError) end end
11.然后在hello.lua中调用testProtobuf()函数即可。
测试运行,你可以在服务器端查看收到的消息。
相关推荐
由于项目使用了protobuf,运行该Demo的前提是把protobuf集成到你的开发软件里。 该例子封装好了在quick cocos-2d lua 中基于luaSocket和protobuf的网络通信。
cocos2dx lua 解密工具xxtea_decrypt,非常好用,直接就可以反编译出来
总结起来,这篇笔记提供了cocos2dx_lua开发中的一些基础和进阶操作,对于使用这个引擎进行游戏开发的人员来说,尤其是一些解决隐蔽bug的方法,具有很高的参考价值。通过学习和理解这些笔记,开发者能够更好地理解和...
通过集成 Lua 脚本语言,Quick Cocos2d-x Lua v3.3 能够显著减少开发过程中繁琐的编译步骤,让开发者更加专注于游戏的核心逻辑和创意实现。 ##### 3.4 丰富的功能库支持 该版本内置了一系列功能强大的库和工具,如...
Cocos2dx是一个开源的游戏开发框架,主要支持C++,同时提供了Lua和JavaScript的绑定,使得开发者可以选择不同的脚本语言进行游戏逻辑的编写。在这个"**cocos2dx lua 热更demo**"中,重点是实现了lua脚本的热更新功能...
4. **导入生成的Java代码**:将生成的Java类导入到你的Cocos2dx项目中,这样就可以在游戏的业务逻辑中使用这些类进行数据操作了。 5. **避免使用message嵌套和group**:虽然protobuf支持消息嵌套和group,但在游戏...
在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码解析和Android工程的创建与迁移。 首先,cocos2dx是基于C++的,...
总结来说,"cocos2dx lua绑定"是一个将C++游戏引擎Cocos2d-x与脚本语言Lua相结合的技术,通过tolua++等工具自动或手动创建绑定,使开发者能用Lua编写游戏逻辑,享受其简易性和高效性,同时利用C++进行性能关键部分的...
Cocos2d-x是一款流行的开源游戏开发框架,广泛用于创建2D游戏、应用程序和互动媒体。在Cocos2d-x的Lua版本中,富文本框(TextArea)是开发者用来显示和编辑多格式文本的重要组件。它支持自动换行、手动换行、字体...
- 在需要使用Cocos2d-x的源代码文件中,引入必要的头文件,如`#import "cocos2d.h"`,并添加`#define COCOS2DX_H`来启用Cocos2d-x的Lua接口。 4. **初始化Cocos2d-x**: - 在你的AppDelegate.m文件中,导入Cocos...
在游戏开发领域,Cocos2d-x 是一个广泛使用的开源跨平台2D游戏引擎,而 Lua 是一种轻量级的脚本语言,常被用作 Cocos2d-x 的脚本接口,即 Cocos2d-lua。在这个场景下,“cocos2d-lua 实现富文本”意味着我们要探讨...
在移动游戏开发领域,cocos2d_lua是一个广泛使用的框架,它将强大的2D和3D图形渲染能力与灵活的Lua脚本语言相结合,为开发者提供了高效的游戏开发环境。本文将深入探讨如何利用cocos2d_lua实现3D搓牌效果,以及如何...
四、Cocos2dx-Lua 游戏开发流程 1. 创建项目:使用 Cocos Console 或者 Xcode、Android Studio 等工具创建新的 Cocos2d-x Lua 项目。 2. 编写 Lua 脚本:在项目的 scripts 目录下,编写游戏的各个模块,如主菜单、...
cocos2dx-lua Dragonbones龙骨C++方法lua-binding文件,lua_cocos2dx_dragonbones_auto.hpp,lua_cocos2dx_dragonbones_auto.cpp
Cocos2dx能够跨平台运行,通过Cocos2dx的iOS绑定,开发者可以使用相同的代码库在iPhone和iPad上部署游戏。 【文件结构】 虽然"Server"是唯一列出的子文件夹,但我们可以假设它包含了服务端的全部代码和资源。通常,...
在IT行业中,Cocos2d-x是一个非常流行的开源游戏开发框架,它允许开发者使用C++、Lua或JavaScript来创建跨平台的游戏。Cocos2d-x 2.2.3是该框架的一个较早版本,虽然现在已经有了更新的版本,但这个版本依然在许多...
在iOS开发中,Cocos2dx是一个广泛使用的游戏开发框架,它允许开发者创建跨平台的2D和3D游戏。然而,随着Apple对App Store审核政策的调整,使用UIWebView的App将不再被接受,因为Apple已经将其列为弃用API。在2020年...
cocos2dx +lua 斜45度A星寻路算法 lua实现 使用 Astar:getInstance():InitAstar(阻挡数组,地图宽,地图高) Astar:getInstance():GetPath(起点,终点,true) 返回路径点
在lua中,我们可以使用`ccs.SceneReader`或`ccui.WidgetReader`来加载这些资源,构建游戏场景和UI元素。 - **src**目录:这里是源代码的主体部分,包括lua脚本文件,用于实现游戏逻辑、界面交互以及各种事件处理。 ...