`
izuoyan
  • 浏览: 9264367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

浅谈即时战略游戏在 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小游戏J2ME小游戏J2ME小游戏J2ME小游戏下,上为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    J2ME小游戏J2ME小游戏J2ME小游戏上,下为另一部分

    J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏

    J2ME_Map.rar_J2ME 地图_J2ME游戏_j2me 游戏_j2me_m_绘制地图

    在J2ME(Java 2 Micro Edition)平台上开发游戏时,地图的设计与绘制是至关重要的一个环节。J2ME作为一种轻量级的Java平台,广泛应用于移动设备,如早期的智能手机和平板电脑,用于实现各种应用程序,特别是游戏。本...

    J2ME小游戏合集很实用

    7. **J2me游戏1945第二版源代码**:1945是一款流行的垂直滚动射击游戏,这个J2ME版本展示了如何在小屏幕设备上实现高帧率的飞行射击游戏。源码提供了处理大量游戏对象、子弹轨迹和敌机AI的实例。 8. **J2me手机...

    浅谈J2me游戏如何快速移植到Android

    ### 浅谈J2me游戏如何快速移植到Android 对于许多从事J2ME开发工作的人员而言,可能会突然间面临一个紧迫的需求:那就是将原本在J2ME平台上的游戏移植到Android平台上。乍一看,这似乎是一项庞大且复杂的工程,但...

    J2ME的RPG游戏Demo

    《J2ME的RPG游戏Demo》是一款基于Java 2 Micro Edition (J2ME) 技术开发的角色扮演游戏Demo,它展示了如何在移动设备上构建一个功能丰富的游戏体验。J2ME是Java平台的一个子集,专为资源有限的设备如手机和平板电脑...

    j2me游戏引擎详解

    在J2ME的环境中,游戏引擎扮演着至关重要的角色,它们简化了开发过程,使得开发者能够创建出丰富的、交互性强的游戏,尤其在资源有限的移动设备上。 **J2ME游戏引擎的核心组件** 1. **图形渲染**:J2ME游戏引擎...

    j2me游戏开发 经典教程

    j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发j2me游戏开发

    在J2ME上实现对数据的DES加密

    在J2ME平台上实现DES加密是一项重要的技术,尤其是在保护移动设备上的敏感数据方面。通过使用CryptoLib这样的开源库,开发者可以轻松地在资源受限的环境中实现高效的数据加密功能。然而,随着技术的进步和安全威胁的...

    赛车游戏 J2ME源码程序

    《赛车游戏 J2ME源码程序》是一款基于Java 2 Micro Edition (J2ME)平台开发的移动设备上的赛车游戏。J2ME是Java的一种轻量级应用框架,主要用于开发移动设备、嵌入式系统等资源有限的环境中的应用程序。这款赛车游戏...

    接鸡蛋游戏 j2me实现

    下面我们将详细探讨J2ME在实现接鸡蛋游戏中的关键知识点。 1. **Java ME架构**: J2ME由配置(Configurations)、配置文件(Configuration Descriptors)和配置框架(Profile)组成。在接鸡蛋游戏中,通常会使用...

    经典j2me游戏实例

    Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门用于开发在移动设备和嵌入式系统上运行的应用程序,其中包括许多经典的游戏。本篇将通过分析提供的文件名来探讨J2ME游戏开发的基础知识。 1. **NewGame....

    J2me 游戏原代码

    Java 2 Micro Edition (J2ME) 是一种用于开发小型设备和嵌入式系统的 Java 平台,尤其在早期智能手机和功能手机上广泛应用于游戏开发。"J2ME 游戏原代码" 提供的资源可能是一个包含 J2ME 游戏完整源代码的压缩包,名...

    J2ME 经典小游戏

    J2ME为开发者提供了在小型设备上创建应用程序和游戏的框架。这个压缩包中的"J2ME经典小游戏"集合,让我们回顾一下J2ME在移动游戏开发中的辉煌历史。 **1. J2ME架构** J2ME由两部分组成:KVM(K Virtual Machine)...

    J2ME游戏源代码

    J2ME在游戏开发领域有着广泛的应用,尤其是对于那些对内存和处理能力有限的设备。本资源包含多款J2ME游戏的源代码,对于学习和理解移动游戏开发具有很高的价值。 1. **J2ME基础** J2ME由配置(Configurations)和 ...

    J2ME手机经典游戏

    **正文** J2ME,全称Java 2 Micro ...通过分析这个项目,开发者可以学习到如何在J2ME平台上构建类似的游戏,包括图形渲染、游戏逻辑、用户交互以及可能的网络功能。同时,这也是一个了解和研究J2ME平台的好机会。

    J2ME 游戏开发资源

    J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于移动设备、嵌入式设备上的应用程序开发,尤其是手机游戏。这个压缩包包含的“J2ME游戏开发资源”是一份宝贵的资料库,对于想要学习或从事J2ME游戏...

    j2ME游戏开发详解

    Java 2 Micro Edition(j2ME)是Oracle公司推出的用于开发和部署在小型设备、移动设备以及嵌入式系统上的应用程序的平台。它以其轻量级、跨平台的特性,成为了早期手机游戏开发的重要工具。本教程将深入探讨j2ME游戏...

    j2me游戏开发及其源码.rar_J2ME游戏_j2me_j2me game source_j2me 游戏_j2me游戏开发

    在J2ME游戏开发中,你需要了解以下几个核心知识点: 1. **基础环境配置**:首先,开发者需要安装Java SDK和J2ME Wireless Toolkit (J2ME WTK)。J2ME WTK提供了模拟器和开发工具,帮助开发者编写、测试和调试J2ME...

    j2me游戏开发实例

    J2ME(Java 2 Micro Edition)是Java平台的一个子集,专门用于开发在移动设备和嵌入式设备上的应用程序,包括游戏。本资源包含多个J2ME游戏的源代码,对于学习J2ME游戏开发的初学者来说,是一个极其宝贵的实践参考。...

Global site tag (gtag.js) - Google Analytics