在“J2ME平台上开发收集立即战略游戏”,那个话题在现今大大都J2ME 开发者听来无异于天方夜谭。立即战略游戏名字的“立即”两个字决定了复杂的运算和数据交互、不变快速的收集毗连要求、庞大的资本和绘造使命,我们都晓得J2ME设备的资本和性能都极为有限,现有GPRS收集业不尽如人意……那些似乎都成为了在J2ME上开发收集立即战略游戏不成超越困难。
困难实其实在的挡在我们面前,但中国三亿手机用户中储藏的庞大的潜期近时战略玩家促使我们去克制那些困难,只要还有一点可能,我们也要去寻找一条跨过那些障碍的道路。怎么样才气在手机上实现收集立即战略游戏呢?
从性能和用户量考虑,我们选择诺基亚的60系列做为初期的开发平台。
我们不考虑接纳高许多。
我们测试了大部门的60机型(7650, 3650, 3660, 6600, N-GAGE, N-GAGE QD),所有测试的机型均撑持socket。从上表能够看出,socket毗连数据往返一次的均匀时间在1 ~ 2秒间,那对回合造的战略游戏或许足够,但对立即战略游戏来说仍是太长了。
有什么法子能大幅压缩数据传送的时间呢?我们能够从server和数据包协议考虑。以上测试的办事器是用Serverlet写的,而serverlet是构建在Web server上的,那么那个数据里包罗的办事器反响和处置的时间就不容忽略了,为了获得更快的响应和处置速度,我们必需从头设想和构建游戏的公用Server。
传送的数据包大小也是影响速度的一个关键。日常平凡各人开发J2ME的收集应用,习惯于用文本流来传送数据,因为大大都应用Server端都是基于Web Server,并且接纳文本暗示信息十分曲不雅,也便于Server处置,但关于J2ME平台和gprs收集来说,没有颠末压缩的文本仍是浪费了一些。
简单考虑一下流戏办事器:一台主机应该能支持一百到两百名玩家同时在线;为了便于设置装备摆设,Server应用应该是跨平台的,而客户端也是J2ME的,因而Server的开发情况java当是首选;接纳Java 1。4后新增的Java 异步通信功用,性能上也能到达我们的要求。
因为Server必需我们本身写,所以没有需要利用文本编码协议,代之以字节流编码。简单预算一下,暗示不异的信息,接纳文本和字节编码体例数据大小的比例大于4:1,并且数据原来以数字为主,省去了文本转换的一大笔开销。更小的数据响应的也带来了更快的速度,别的,也为用户节省了大笔高贵的GPRS流量开收。
采纳以上的办法后,我们再次测试了数据传送的响应时间,均匀小于1秒!也许在良多人看来,那个时间仍是太长,达不到实时的要求,但应该晓得,绝对的实时是不成能实现的,只要在筹谋和开发中接纳一些合理的战略,那小于1秒的延迟完全能够很好的掩盖。典型的PC立即战略游戏如《星际》,在局域网对战时现实上其实不需要办事器的,对战中的一台或多台客户机充任了办事器的角色,即便是上战网,战网办事器完成的也只是社区办理的工做。
在手机上实现不克不及采纳那种构造:起首,通过GPRS收集,两部手机无法间接毗连(不排除蓝牙或红外的互连,那不在我们的讨论范畴内),只能通过办事器直达;别的,手机的运算才能有限,为了游戏能优良的运行,必需把良多的运算转移到资本相对更丰硕的Server端,那和一般的CS构造中,尽量让Client分管Server的工做以使得Server能支持更多的Client的做法各走各路,也表现了J2ME收集应用的特殊性吧:)。