用Netty和Raphael来写塔防online游戏(二) - JS中使用protobuf协议

一. 简单介绍一下protobuf:

Protocol Buffers are a language-neutral, platform-neutral, extensible way of serializing structured data for use in communications protocols, data storage, and more, originally designed at Google .

如今,已经有人用JS实现了protobuf协议,就是ProtoBuf.js,由此可见谷哥的号召力非同一般啊。

ProtoBuf.js同时支持NodeJS和Browser,也就是说,现在我们可以在JS client端使用protobuf!当然,前提是我们使用的是高级浏览器,因为ProtoBuf.js依赖于ByteBuffer.js(一个对ArrayBuffer进行了封装的类库),所以,只能say byebye to IE < 10。

二. 为什么要使用protobuf

举个很简单的例子:

client向server发送这样一个消息,

使用json格式:

{
    "model": "Rusty",
    "vendor": {
        "name": "occume",
        "address": {
            "country": "china"
        }
    },
    "speed": "SUPERFAST"
}
服务端会收到95个字节,
同样的消息,使用protobuf格式:

[10 5 82 117 115 116 121 18 17 10 9 73 114 111 110 32 73 110 99 46 18 4 10 2 85 83 24 2]

服务端收到28个字节

二者的区别显而易见,尤其是在移动端等需要节省流量的地方,protobuf的优势就更不用说了。

三. protobuf的简单用法

依赖以下JS

Long.min.js 可选
ByteBufferAB.min.js

ProtoBuf.min.js

然后需要定义一个proto文件,以官网的为例(complex.proto)。

关键代码:

encode:

var	ProtoBuf = dcodeIO.ProtoBuf,
	Message = ProtoBuf.loadProtoFile("./example.proto").build("Message"),
	Game = ProtoBuf.loadProtoFile("./complex.proto").build("Game"),
	Car = Game.Cars.Car;

var car = new Car({
    "model": "Rusty",
    "vendor": {
        "name": "Iron Inc.",
        "address": {
            "country": "US"
        }
    },
    "speed": "SUPERFAST" // also equivalent to "speed": 2
});

socket.send(car.toArrayBuffer());
decode:
var car = Car.decode(evt.data);
console.log(car.model);

以上是对一个简单的类的encode和decode,在具体的应用中,只需要根据不同的业务需要,编写相对应的proto文件就Ok了。

项目地址:https://github.com/occume/D3000

用Netty和Raphael来写塔防online游戏(二) - JS中使用protobuf协议

时间: 2024-12-04 10:17:34

用Netty和Raphael来写塔防online游戏(二) - JS中使用protobuf协议的相关文章

基于Netty和Raphael的塔防online游戏Demo(一)

这是一个出于兴趣而在业余时间写的项目,初版的目的在于了解游戏服务端的一些设计思路,所以基本是想到什么写下什么,并没有做过于细节的设计,和过早的优化. 在这个版本里面,主要要完成以下功能: 定制简单的通信协议 处理简单的游戏逻辑 可运行的Server和Client 一. 服务端设计 整个服务端暂且分成以下几个部分: 基础通信模块 逻辑处理模块 GM模块 服务器状态监控模块 对服务端的几个高级抽象: 1)Context Context代表了整个服务端的生命周期, 负责启动和停止所有的游戏 2)Gam

ios版塔防类游戏源码

一款ios塔防类游戏源码 ,一款像素风格的防御类游戏源码.老鼠向目标进攻,点击老鼠就可以直接把老鼠拍死.或者像<水果忍着>那样滑动屏幕将目标弄死,大家可以看看吧. 项目源码下载:http://code.662p.com/view/6308.html <ignore_js_op> <ignore_js_op> <ignore_js_op> <ignore_js_op> 详细说明:http://ios.662p.com/thread-1449-1-2

unity3D游戏开发实战原创视频讲座系列9之塔防类游戏开发第一季

解说文件夹 塔防游戏0基础篇... 第一讲  游戏演示和资源介绍... 第二讲  游戏场景的完毕... 第三讲  预制体的制作... 第四讲  敌人的随机产生和按路径行走... 第五讲  塔防工具的产生和设计... 第六讲  敌人血条的改变和分数使用... 第七讲  鼠标控制摄像头... 第八讲  玩家生命值的使用... 视持续更新中.... 视频存放地址例如以下:http://ipd.pps.tv/user/1058663622 或者:http://www.iqiyi.com/u/105866

Cocos2D iOS之旅:如何写一个敲地鼠游戏(二):Cocos2D中的高清支持

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 高清显示和Cocos2D 好吧,有一个好消息 - 在最新版本的Cocos2D中包括了高清屏的完整支持,你可以用下面1-2-3步就可简单搞定! 在调用CCDirector的en

如何制作塔防游戏 代码,操作,说明——Unity 5.3.5f1

我以前使用过unity但是第一次写这么全面的塔防小游戏.我以后会陆续的将我跟过的一些项目的心得经验与体会发表出来希望各位能人能够给出评价,我在此感激各位的批评与赞扬.另外我只是一个学生学艺不精,粗制滥造还请看不过去的大神放过................0.0................................ 首先是路径的管理设置 using UnityEngine; using System.Collections; namespace RayGame{ public clas

[Unity3D]Unity3D游戏开发之塔防游戏项目讲解(上)

喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei 转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/42394949 ?? 大家好,我是秦元培.我参加了CSDN2014博客之星的评选,欢迎大家为我投票,同时希望在新的一年里大家能继续支持我的博客! 作为2015年的第一篇博客,博主首先想要感谢各位朋友的鼓励和支持,在新的一年里,博主将努力为大家分享更多.更好

cocos2d-x 3.0游戏实例学习笔记 《卡牌塔防》第0步---知识点总结&amp;效果预览

/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写,第一别完全照搬代码:第二可以说明是学习笔记 **3.这里用cocos2d-x 3.0版本重写,很多地方不同,但是从重写过程中也很好的学习了cocos2d-x */ 环境:Win7 .cocos2d-x 3.0final .C++ .VS2012 笔记思路:后面就按这种思路写笔记啦 1.首先给出每次实现的效果截图 2.然后给出设计思路 3.

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第0步---知识点总结&amp;amp;效果预览&amp;amp;设计思路

/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏.这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写.第一别全然照搬代码:第二能够说明是学习笔记 **3.这里用cocos2d-x 3.0版本号重写,非常多地方不同,可是从重写过程中也非常好的学习了cocos2d-x */ 环境:Win7 .cocos2d-x 3.0final .C++ .VS2012 笔记思路:后面就按这样的思路写笔记啦 1.首先给出每次实现的效果截图 2.然后给出设计思

[Kingdom Rush]团队分享:如何做塔防手游

转自:http://www.gamelook.com.cn/2015/03/207324 GameLook报道/2014年11月,乌拉圭开发商Ironhide Studios发布的<Kingdom Rush Origins>迅速成为了美国iPhone付费榜第四名,美国iOS单日收入达到了2.4万美元.此前,GameLook也介绍过这家独立开发商,除了<Kingdom Rush>连续成功之外,Ironhide团队还曾拒绝过Rovio的收购要约. 最近,小编在海外网站看到了该公司此前进