# Protobuf-Laya **Repository Path**: joeshro/Protobuf-Laya ## Basic Information - **Project Name**: Protobuf-Laya - **Description**: 拷贝的 github上 bjfumac的,2018年10月20的revision - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2018-10-20 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Protobuf-Laya A Docker image for creation protobuf files compatible with LayaAir(Layabox). # 说明   随着Html5游戏行业的发展,H5游戏的类型慢慢地从单机小游戏、轻交互休闲游戏到重交互竞技类游戏过渡,开发者对网络实时数据交互的需求开始上升,而数据交互的核心:交互协议的选择成了关键一环。 那么我们该选什么样的数据交互协议呢?
  如果你的项目只需要个排行榜这样的功能,那么xml、json足够满足你的需求,开发流程简单,游戏包体小巧。
  如果你的项目前后端交互较多,甚至是实时交互,那么我推荐选择Protobuf,它是google创造的一种数据交换的格式,广泛地应用在各种互联网场景中。在网络游戏中,Protobuf亦大放光彩。大多数实时网游的数据交互协议都是采用Protobuf或是它的变体实现的。我相信你一定听说过它。
  由于JavaScript有多种模块化机制,彼此兼容性较差,导致官方的Protobuf在LayaAir中使用困难。在社区中也经常有人会问到相关问题。因此为了完善LayaAir对Protobuf的支持,本人制作了一个基于Docker的Protobuf生成器以解决上述问题。   # 特点 * **采用超小型Protobuf包(21k),远小于旧集成包(238k)。** * **将PB协议生成静态代码,而非通过反射proto文件实现,因此拥有更高的序列化/反序列化性能。** * **协议结构体在LayaIDE中具有完整的代码提示和类型检测,无需hard code,避免拼写造成的潜在错误,提高开发效率。** * **不调用eval和其它动态指令,支持微信小程序。** * 同时支持ActionScript、JavaScript和TypeScript项目。 * 生成器环境搭建由Docker自动完成,支持Win、Mac、Linux操作系统,运行在隔离环境中,不污染本地开发机。也可以请运维同学协助部署到服务器上共享使用。 * 支持最新版Protobuf。 # Docker镜像安装(以Linux系统为例) * 首先安装Docker,Linux只需要一行命令,Win10有安装包。官方[下载地址](https://www.docker.com/community-edition)和[安装手册](https://docs.docker.com/engine/installation/linux/)。搞不定英文的同学请找度娘或者运维同事秒解,也可以直接买个公网docker容器。 * 在你的系统中随意创建一个目录(如/MyProto),建议选择FTP中的文件夹,把所有的proto文件拷贝进去,然后在命令行中按照下面步骤进行操作(复制时不要遗漏命令行最后面的点): ``` git clone https://github.com/bjfumac/protobuf-laya.git;cd protobuf-laya;sudo docker build -t "bjfumac/protobuf-laya" .; ``` * 将下面这行命令中的/your/proto/path替换成本地存放proto文件的路径(如/MyProto)。冒号后面的/proto不要改: ``` sudo docker run --name protobuf-laya -v /your/proto/path:/proto -idt bjfumac/protobuf-laya ```   以/MyProto为例的参考:sudo docker run --name protobuf-laya -v /MyProto:/proto -idt bjfumac/protobuf-laya * 以上Docker镜像安装完成,今后不再需要操作上面的步骤。
* 每次需要生成协议时请执行下面这行命令: ``` sudo docker start protobuf-laya;sudo docker exec protobuf-laya sh build.sh ``` * 在存放proto的文件夹(如/MyProto)中可以找到生成的as、js和ts文件了。 # Javascript项目用户 * 将生成的js文件和protobuf.js拷贝至项目bin/libs/文件夹中 * 将protobuf.min.js拷贝至项目bin/libs/min/文件夹中 * 在index.html中其它script标签之前添加如下代码: ```html ``` * 然后就可以开始用啦。具体参考Example。 # Typescript项目用户 * **请务必保证proto文件头部具有package定义,否则可能会有问题。** * 将生成的js文件和protobuf.js拷贝至项目bin/libs/文件夹中 * 将protobuf.min.js拷贝至项目bin/libs/min/文件夹中 * 将生成的d.ts文件和protobuf.d.ts拷贝至项目/libs文件夹中 * 在index.html中其它script标签之前添加如下代码: ```html ``` * 然后就可以开始用啦。具体参考Example。 # Actioncript项目用户 * 将生成的js文件和protobuf.js拷贝至项目bin/h5/文件夹中 * 将生成的as/messages文件夹拷贝至项目src文件夹中 * 在index.html中其它script标签之前添加如下代码: ```html ``` * 然后就可以开始用啦。具体参考Example。 * **感谢宫晨同学提供的AS项目支持** #### 欢迎在LAYA官方QQ群:135887157 交流使用心得 #### 本人QQ:68552233 (反馈问题可联系) #### 如果觉得对你的项目有帮助,欢迎微信打赏请我喝一杯咖啡,谢谢^^ ![avatar](https://github.com/bjfumac/Asset/raw/master/images/wx_ma.jpg)