浅谈即时战略游戏在 J2ME 上的实现

《星际》、《魔兽》、《文明》......这些都是PC游戏玩家们耳熟能详的名字,可以说以这些游戏为代表的战略游戏是PC游戏的典型代表,战略游戏的玩家也是众多PC游戏类型里忠诚度最高的玩家。战略游戏分为回合制和即时战略两类,两种战略游戏都有数量众多玩家,而后者更因为紧张激烈的游戏性逐渐压倒了回合制战略游戏,近几年来,一直在战略游戏中占统治地位。

在"J2ME平台上开发网络即时战略游戏",这个话题在现今大多数J2ME 开发者听来无异于天方夜谭。即时战略游戏名字的"即时"两个字决定了复杂的运算和数据交互、稳定快速的网络连接要求、庞大的资源和绘制任务,我们都知道J2ME设备的资源和性能都极为有限,现有GPRS网络业不尽如人意......这些似乎都成为了在J2ME上开发网络即时战略游戏不可逾越困难。

困难实实在在的挡在我们面前,但中国三亿手机用户中蕴藏的庞大的潜在即时战略玩家促使我们去克服这些困难,只要还有一点可能,我们也要去寻找一条跨过这些障碍的道路。怎么样才能在手机上实现网络即时战略游戏呢?

从性能和用户量考虑,我们选择诺基亚的60系列作为初期的开发平台。
我们不考虑采用HTTP协议,虽然它是J2ME设备中普遍采用的协议,但其相对SOCKET的低效性和本身是无连接协议决定了它不适合即时战略这种游戏形式。从上表可以看出建立连接的时间要高出连接后的数据传送时间许多,HTTP协议需要花费许多额外开销在建立连接上;HTTP平均的数据传送时间也要比SOCKET高许多。我们测试了大部分的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网络应用的特殊性吧:)

再简单说一下整个系统的架构:


服务器按功能分为连接服务器、大厅服务器、游戏逻辑服务器、用户管理服务器和日志服务器五种。视用户的数量,如果数量很小,所有的服务器都可以置于一台主机中;随着用户量增多,各服务器可以移动到不同的主机中,通过调整各服务器主机的数量达到均衡负载。

以上是我的一家之言,很多地方可能不尽合理,欢迎大家指正。另外,敬请关注招商迪辰天空数码即将推出的国内首款手机网络即时战略游戏:《英雄――决战天下》。欢迎到天空数码论坛进行关于此类游戏的讨论!

浅谈即时战略游戏在 J2ME 上的实现相关推荐

  1. 浅谈即时战略游戏J2ME中应用

    出处 新浪 -------------------------------------------------------------------------------- <星际>.&l ...

  2. Unity实战 RTS3D即时战略游戏开发(三)

    大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发.上一章我们为场景添加了Manager,以及玩家初始化信息. 下面我们来完成以下功能:导航网格的设置.摄像机的操控.以及制作单位预设. ...

  3. Unity实战 RTS3D即时战略游戏开发(四)

    大家好,我是Zander,我们接着来开发Rts3D即时战略游戏开发.上一章我们添加了突出显示玩家的状态显示,这节课我们来处理一下单位被选中或取消时的效果,通用的办法是使脚本处理每个可交互的对象,但是我 ...

  4. 在Unity中为即时战略游戏实现战争迷雾(上)

    本文将由游戏开发工程师Ariel Coppes分享在Unity中为即时战略游戏实现战争迷雾效果. 过去三年中,我一直在Ironhide Game Studio开发移动即时战略游戏<钢铁战队> ...

  5. D3D游戏编程系列(二):自己动手编写即时战略游戏之地图编辑器的制作

    说起即时战略游戏,我第一时间想起魔兽争霸,这个不知道陪伴我多少个日日夜夜,让我哭让我笑的游戏,让我想起了sky,moon,grubby等人牵动心弦的战斗历程,让我想起了当年日日守在电脑前专注的欣赏着w ...

  6. 要塞十字军东征HD for Mac(即时战略游戏)

    要塞十字军东征HD for Mac以中世界十字军东征为背景,十字军东征是人类历史上规模最大的宗教战争,游戏整体非常有趣,要塞十字军东征 Mac版是一个由欧洲历史中最著名的十字军东征为历史事件所设计的游 ...

  7. 【转】网络即时战略游戏软件开发 结构体系分析

    文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056   网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...

  8. 网络即时战略游戏结构体系分析

    前言 本人对网络游戏的技术问题一直比较感兴趣,我认为网络游戏的开发在不远的将来是一个非常庞大的产业.这段时间有空,特地玩了几天网络游戏"破碎银行系",并分析了一下其中体系结构,有些 ...

  9. 网络即时战略游戏软件开发 结构体系分析

    文档下载地址:http://download.csdn.net/detail/wanggan768q/4388056   网络即时战略游戏软件开发 结构体系分析 前言 本人对网络游戏的技术问题一直比较 ...

最新文章

  1. python文件关键行数_Python计算大文件行数方法及性能比较
  2. Unity 好消息,中文版Unity来啦!!!
  3. OpenCASCADE绘制测试线束:OCAF 命令之基本命令
  4. 实例23:python
  5. Web前端基础---认识HTML及其组成---标签、框架
  6. Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用
  7. 解除ASP.net上传文件大小的限制
  8. Mysql:语法:虚拟表DUAL
  9. 朱广权李佳琦直播掉线,1.2 亿人在线等
  10. linux安装jdk笔记
  11. Spring数据库事务典型错误用法剖析
  12. Redis 中的事件驱动模型
  13. 利用图片指纹检测高相似度图片--相似图片搜索的原理
  14. TP-Link 886nV6 刷第三方系统回忆
  15. Viusal 各个版本离线镜像
  16. 【每日新闻】倪光南:“中国芯”切勿重硬轻软;美国研发出可直接在皮肤上打印的3D打印技术...
  17. 微信小程序连接第三方接口
  18. 有人@70后,只差一位【嘚啵嘚】特约评论员啦!
  19. 在智能手机上跟踪ADS-B系统的飞机航线信息
  20. 从任正非的内部信,看系统开发公司如何度过寒冬

热门文章

  1. 思科领跑关键技术基础设施市场,潜力股HPE可与其一搏
  2. 高德 linux python,Python高德地图API实用篇
  3. 图灵计算机与网络论文,图灵:计算机器与智能 经典AI论文系列
  4. Centos中开机执行.sh文件
  5. c语言doi求偶数求和,Riemann zeta函数s为正偶数的求和公式.pdf
  6. 前端性能优化——概述(概括前端性能优化入手点)
  7. python ifelse语句的用法_Python - if-else 的多种简洁写法
  8. CiteSpace入门建议及在知网医学论文的使用现状-1
  9. vue使用甘特图插件dhtmlx-gantt( 简单版)
  10. Linux安全之安装安全狗(推荐)