多人MIDP 游戏编程.pdf

上传人:asd****56 文档编号:70322821 上传时间:2023-01-19 格式:PDF 页数:28 大小:849.13KB
返回 下载 相关 举报
多人MIDP 游戏编程.pdf_第1页
第1页 / 共28页
多人MIDP 游戏编程.pdf_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《多人MIDP 游戏编程.pdf》由会员分享,可在线阅读,更多相关《多人MIDP 游戏编程.pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 多人 MIDP 游戏编程FORUM NOKIA版本 1.0;2003 年 10 月 29 日Java Forum.N目录目录 1.简介.6 2.MIDP 用户界面.7 3.MIDP 1.0 通讯技术.8 3.1.共享一台电话.8 3.2.HTTP.8 3.3.其他协议.9 4.MIDP 2.0 通讯技术.10 4.1.HTTPS.10 4.2.TCP.10 4.3.UDP.10 4.4.串行电缆.11 4.5.红外(IrDA).11 5.MIDP“可选包”通讯技术.12 5.1.蓝牙.12 5.2.SMS.12 5.3.MMS.13 6.游戏服务器技术.14 6.1.HTTP 和 HTTPS

2、.14 6.2.TCP 和 UDP.14 6.3.SMS 和 MMS.14 7.游戏类型.15 7.1.多玩家单人游戏.15 7.2.回合制游戏.15 7.2.1 循环赛游戏.15 7.2.2 同时行动游戏.15 7.3.“随时玩”游戏.16 7.4.慢速更新游戏.16 8.多人游戏的共通特性.17 8.1.永久性用户帐户.17 8.2.游戏大厅.17 8.3.高分表.17 8.4.玩家之间的交谈.17 8.5.显示延时(“Ping”).17 8.6.显示包的使用情况.18 9.参考文献.19 多人 MIDP 游戏编程 2 Forum.N附录附录 A.MIDP 通信协议汇总通信协议汇总.21

3、附录附录 B.移动网络上的互联网协议移动网络上的互联网协议.22 B.1 HTTP.22 B.2 HTTPS.23 B.3 TCP.24 B.4 UDP.24 附录附录 C:GPRS 上的网络延时度量上的网络延时度量.25 C.1 UDP 延时.25 C.2 TCP 延时.25 C.3 HTTP 延时.26 附录附录 D.网络地址转换和防火墙网络地址转换和防火墙.28 多人 MIDP 游戏编程 3 Forum.N Change History 修订记录 修订记录 October 29,2003 V1.0 Initial document release 2003 年 10 月 29日 版本 1

4、.0 文档首次发布 多人 MIDP 游戏编程 4 Forum.N版权属于诺基亚公司(2003 年),诺基亚公司保留全部权利“诺基亚”及“诺基亚科技以人为本”是诺基亚公司的注册商标。在此提到的其它产品和公司名称可能是其所有者的商标或商业名称。声明 声明 本文档中的信息基于其现有状况,不存在任何保证,包括销售保证、适用某一特殊用途的保证,或从任何建议、规范或范例中衍生出来的保证。此外,本文档中提供的并非最终信息,在其最终发布前会做较大改动。本文档仅用作信息通报。诺基亚公司不承担所有因实施本文档中所表述的信息而产生的相关责任,包括侵犯任何知识产权的责任。诺基亚公司并不保证或认为使用这些信息不会构成对

5、相应知识产权的侵犯。诺基亚公司保留不预先通知而随时对本规范作修改的权力。授权 授权 本授权仅限于因个人应用而下载和打印本说明,除此之外,不存在对其它任何知识产权的授权许可。多人 MIDP 游戏编程 5 Forum.N多人 MIDP 游戏编程 版本 1.0;2003 年 10 月 29 日 1.简介 开发伙伴们已经在创建针对移动信息设备描述(MIDP)的大量单人游戏,这些游戏兴趣盎然、富有创意。但是,使各种 MIDP 电话真正成为特殊的游戏设备的关键就是其独有的连接特性。而且,MIDP电话与游戏玩家们如影随形。当开发伙伴们开始创建多人 MIDP 游戏之日,就是这类方案变得趣味无限之时。本教程讲解

6、了为 MIDP 电话编制多人游戏的方法。它讲述了支持多人游戏的一些技术,并讲述了何种游戏适合这些技术。文档中还包括了一些对这些问题进行深入探讨的附件。本文的读者对象应该熟悉 Java编程,掌握 MIDP 编程的基础知识,如:已经阅读过诺基亚论坛的文档MIDP编程简介MIDPPROG。MIDPPROG。多人 MIDP 游戏编程 6 Forum.N2.MIDP 用户界面 下面几节提供了概述性介绍,诺基亚论坛上也有一些文章详细介绍了各种 MIDP 电话的用户界面功能。MIDP 用户界面有两种类型的屏幕:一类是高级用户界面屏幕,它显示结构化信息及由电话排列出的一些表单:图 1:MIDP 高级用户界面屏

7、幕 图 1:MIDP 高级用户界面屏幕 另一类是低级用户界面屏幕,它类似一块画布,MIDlet 可以在上面自由绘画。图 2:MIDP 低级用户界面屏幕 图 2:MIDP 低级用户界面屏幕 用诺基亚用户界面 API UI-APIUI-API就可以使用整个电话屏幕:图 3:诺基亚用户界面 API FullCanvas 屏幕 图 3:诺基亚用户界面 API FullCanvas 屏幕 即将上世的 MIDP 2.0 电话 MIDP 2.0 MIDP 2.0 为标准的 MIDP 引入了全屏幕能力。多人 MIDP 游戏编程 7 Forum.N3.MIDP 1.0 通讯技术 3.1.共享一台电话 到目前为止

8、,多人游戏最简单的实现方法就是让多个玩家在同一台电话上游戏,而这台电话则在他们手中轮流传递。这种方法很适合那些简单的回合制游戏,而且比较可靠,不会产生任何数据负荷。3.2.HTTP MobileNetworkInternetHTTPServerMobileNetworkMobileNetworkInternetInternetHTTPServer 图 4:MIDP HTTP 网络 图 4:MIDP HTTP 网络 所有的 MIDP 电话都支持 HTTP 协议。附录 A 提供了详细的技术细节,介绍了移动网络是如何支持HTTP 和其他互联网协议的。如欲了解在 MIDP(以及服务器端的 Java s

9、ervlet)中使用 HTTP 的完整说明和代码范例,请阅读诺基亚论坛的文档MIDP网络简介MIDPNETMIDPNET和一个网络MIDlet范例:老虎机(FruitMachine)FRUITMACFRUITMAC。MIDP 中所要求的 HTTP 支持是 HTTP客户端支持。也就是说,MIDlet 就如一个 Web 浏览器一样工作。它向 HTTP 服务器发送 HTTP 请求,并接收一个 HTTP 响应。这些都是由 HTTP 标准保证的,也是MIDlet 所应该遵循的。特别是,MIDlet 开发伙伴们有时候会错误地利用互联网 HTTP 下列实现的一些特性,而这些特性并不适用于移动网络:HTTP流

10、。因为互联网 HTTP 实现构建于流 TCP 协议的顶层,互联网 HTTP 实现就可以利用这一特性,通过 HTTP 写入连续的数据流。然而,移动网络不一定要使用非 TCP 实现(如WAP),而这种实现并不使用流技术。许多移动网络在发送一条请求或响应前需要等待,直到将其全部载入缓冲中,因此当在这些网络中的真实电话上配置 HTTP 流 MIDlet 时,往往会失败。基于同样的理由,也不要尝试一次只发送一小段数据:因为在发完全部数据之前,不会收到什么东西。延迟响应。当开发伙伴们发现,HTTP 流不能正常工作时,其中的奥妙在于:从服务器端发送 HTTP 响应要被延迟到某个事件发生(如其他玩家移动)。移

11、动网络中的开放连接可能很昂贵,通常因超时而中断这种连接,着一情况比在互联网上更容易发生。多重HTTP连接。移动电话通常没有资源去支持多重开放的 HTTP 连接,在数据结构和数据缓存方面的开销非常大。前文所述表明,如果你想确保证 MIDlet 的可靠性和可移植性,最好在发送请求之后马上再发送一个响应。一台 HTTP 服务器是没有办法启动其与一个 HTTP 客户端的连接的,如果 HTTP 服务器必须就某一事件(如轮到其他玩家时)通知 MIDlet,MIDlet 就必须定时向该服务器发送 HTTP 请求。游戏通常只发送少量的数据,对于移动 HTTP 网络这点数据量并不昂贵,特别当其实现在分组交换数据

12、协议(如 GPRS)上时,更是如此。例如在芬兰,GPRS 数据收费通常为0.01/KB(1 大约相当于 1美圆)。多人 MIDP 游戏编程 8 Forum.N3.3.其他协议 MIDP 1.0 并没有规定对 HTTP 之外的其他网络协议的支持。然而,某些 MIDP 1.0 电话也包括了对一些非标准协议的支持,如 TCP 套接字(sockets)协议。如果你能确定自己只针对这些电话进行开发,你就可以牺牲可移植性而利用这些特性。多人 MIDP 游戏编程 9 Forum.N4.MIDP 2.0 通讯技术 4.1.HTTPS HTTPS 是互联网电子商务等服务中使用的一种“安全 HTTP”,各种 MI

13、DP 2.0 实现一定支持 HTTPS。诺基亚论坛会今后的文档会涉及到 HTTPS。4.2.TCP 传输控制协议(Transmission Control Protocol,TCP)是互联网的基本协议之一。这是一种可靠的,面向连接的协议,这意味着:所发送的数据总是能以正确顺序被一次性接收,并无出错(除非连接最终失败)。连接是建立在两台正在通讯的设备上的,并在通讯期间一直保持连接状态。通常我们把 TCP 连接比作两台正在通讯的设备之间的电话呼叫。在互联网上,HTTP 通常以 TCP 实现。“套接字(socket)”是指某个 TCP 连接的一个端点。某台 TCP 服务器上的一个“服务器套接字(so

14、cket)”接受新的连接请求,并为每个请求创建一个新的套接字。由于 TCP 的可靠性,程序设计常常得到大幅度的简化;然而,如果是在一个不太可靠的网络上使用,则它的表现可能会比用户数据报协议(User Datagram Protocol,UDP,见下文)更差。如果丢了一个包,TCP 会尝试重新发送,而且在这个丢失的包被重发成功之前不会发送后续包。如果你不需要这种可靠的重发功能,就会发现:UDP 更为合适。MIDP 1.0 不包括对 TCP 的支持。MIDP 2.0 规定了对 TCP 的支持,但却能让制造商自己来选择是否包含这种支持。4.3.UDP 用户数据报协议(User Datagram Pr

15、otocol,UDP)是互联网的另一个基本协议,这是一种不太可靠的、面向数据包的协议,即:发送的数据包可以被接收一次,也可以被接收多次,或者从来不被接收,甚至以错误的顺序被接收。正在通讯的设备之间没有连接:每个数据包都是独立编址的。这里,我们常把 UDP 比作信件邮递,两台正在通讯的设备间所发送的数据包就好像信件或明信片。数据报(datagram)这一术语就是指数据包(data packet)。UDP 对通讯所增加的系统开销很少,总体上是一种效率最高的网络技术。许多应用并不需要 TCP 的可靠性,例如,如果数据对时效性有较高要求,象视频流技术中,丢一个包要比试图重发当时已经过时的包,从而挂起后

16、续的包,要好得多。UDP 或 TCP,哪个更适合于游戏?这引起了广泛的争论。由于移动网络较长的延迟时间(请参见附录C),我们更倾向于强调这两者之间的差异。关于这一课题的更多内容,请参考事后分析:Multitude的火线追击FIRETEAMFIRETEAM,或 1999 年游戏开发伙伴大会的论文,互联网悍将:或,我从编写帝国生死斗中学到了什么 X-WING。X-WING。多人 MIDP 游戏编程 10 Forum.N两种常用解决方案是:两种都用 UDP 数据报用于那些可靠性要求不高的消息,而 TCP 连接则用于那些可靠性要求较高的消息。只使用 UDP 协议,但在协议顶层部署一个较薄的层,允许可靠

17、地发送一些消息,而不太可靠地发送另一些消息。这部分内容在网络化虚拟环境NVINVI第三章中讲述。当在诸如 GPRS 这样的分组交换协议上实现时,游戏所发送的少量数据对移动 UDP 网络来说开销并不十分大。考虑到移动网络的响应时间(见附录 C),包的发送量一般并不需要超过每秒钟一个。如果你以这样的频率发送包,请注意它们的大小,同时不要发送不必要的包。MIDP 1.0 中并不包括对 UCP 的支持。MIDP 2.0 规定了对 UCP 的支持,但却可以由制造商来选择是否包括这种支持。4.4.串行电缆 图 5:电话之间的串行电缆通讯 图 5:电话之间的串行电缆通讯 如果两个游戏者处于同一个地方,就可以

18、用一根串行电缆一起玩游戏。在 MIDP 2.0 中,可以通过 SerialPortConnection 接口实现对电话之间的串行电缆通讯的支持。在撰写本文之际,诺基亚的 MIDP 电话还不支持这个接口,所以本文不再涉及这个课题。4.5.红外(IrDA)图 6:电话之间的红外通讯 图 6:电话之间的红外通讯 如果两个游戏者处于同一个地方,他们也可以使用红外连接一起游戏。必须保证两部电话能稳定地以串口相对。如果游戏变得越来越紧张,情况就会不太妙。一些电话的红外线端口在电话顶部,另一些则在左边,而还有一些处在右边。这样会令两个游戏者很难找到进行游戏的舒适位置。在 MIDP 2.0 中,对电话之间的红

19、外通讯支持是通过 SerialPortConnection 接口实现的。在撰写本文之际,诺基亚的 MIDP 电话还不支持这个接口,因此本文将不再涉及这个问题。多人 MIDP 游戏编程 11 Forum.N5.MIDP“可选包”通讯技术 MIDP 1.0 和 MIDP 2.0 电话可以包含各种提供了附加功能的“可选包”。本节讨论的是这些可选包中的通讯技术。5.1.蓝牙 图 7:电话之间的蓝牙通讯 图 7:电话之间的蓝牙通讯 蓝牙是一种短程无线电技术,它支持约 10 米范围内最多八台设备一起通讯。蓝牙的响应时间很短,非常适合于多人游戏 它已经被广泛地应用于诺基亚 N-Gage 移动游戏机上的各种多

20、人游戏。因为蓝牙是向各个方向传输的,所以电话不必彼此正对。在 MIDP 电话中,可能会用可选包中的蓝牙 Java API 集JSR-82JSR-82来支持蓝牙。我们将在另一篇诺基亚论坛教程中讨论这些 API 集。5.2.SMS MobileNetworkGameServerSMSCMobileNetworkMobileNetworkGameServerSMSC 图 8:电话和服务器之间的 SMS 通讯 图 8:电话和服务器之间的 SMS 通讯 短消息服务(Short Message Service,SMS)技术允许移动电话与另一台电话或服务器(如游戏服务器)之间交流短消息。大家最熟悉的 SMS

21、 形式是文本消息,但是 SMS 也可用于发送二进制数据,如铃音或游戏数据等。SMS 是一种“存储转发”技术,即,通过一台被称为短消息服务中心(SMSC)的设备发送消息,SMSC 设备将这些短消息保存在队列里,稍后将其转发给接收者。如果接收方是一台正开机的服务器或电话,具有接收功能,而且 SMSC 的负荷并不大,通常就会在发出 SMS 后几秒钟之内接收到,否则,发送的时间可能长达一天,或者最终根本没有被发送。多人 MIDP 游戏编程 12 Forum.N在 MDIP 电话上,可能用可选包中的无线消息(Wireless Messaging)API JSR-120 JSR-120 来支持 SMS。许

22、多电话还不支持这个 API;撰写本文之际,支持该 API 的诺基亚电话仅有诺基亚 3650 和今后版本的诺基亚 3410。所有版本的诺基亚 3410 电话都支持一个非常相似的 API,即诺基亚 SMS API。如果你正在使用针对 MDIP 游戏的 SMS,请记住,每条短消息的花费与普通文本短消息一样。一个50 回合的国际象棋游戏对你的游戏者来说会相当昂贵!5.3.MMS 多媒体消息服务(MMS)是 SMS 的一种升级版,它允许把一段消息分成几部分,其中包括文本、图片、声音,以及视频。与 SMS 一样,MMS 也是一种“存储转发”技术,发送时间上的考虑也是一样的。MMS 实现综合使用了 SMS

23、和 HTTP。除非你的 MIDP 游戏涉及到与非 MDIP MMS 电话的通信,最好你能更好地利用 SMS 和 HTTP 服务,或者,由你自己将两者结合起来。在 MIDP 电话中,可能由可选包中的无线消息 API 2.0 JSR-205 JSR-205 来支持 MMS。在撰写本文之际,该API 仍处于制定过程中,因此本文不再涉及这个问题。多人 MIDP 游戏编程 13 Forum.N6.游戏服务器技术 6.1.HTTP 和 HTTPS 在服务器端,你可以使用任何一种通常用于 HTTP 服务器的技术,如:静态网页、CGI、ASP、Java servlet,以及 JavaServer Page(J

24、SP)。Java 程序员常常觉得 Java servlet 是很自然的选择,而且得到开放源代码的 Apache Tomcat TOMCATTOMCAT servlet container 的良好支持。6.2.TCP 和 UDP 目前还没有针对 TCP 和 UDP 协议的 Java 2 平台企业版(J2EE)servlet 应用模型。如果你计划用 Java编程语言编写使用了 TCP 或 UDP 的游戏服务器,你既可以用例如 Java 2 标准版(J2SE)自己编写,也可以用商业化专用游戏服务器。这方面有一本非常有用书,即Java 网络编程JAVANWJAVANW可供参考。另外,如果你希望能在 J

25、ava 服务器上达到最佳性能,可以尝试使用 Java 的新 I/O 包(java.nio)。6.3.SMS 和 MMS 诺基亚论坛的消息分区 FN-MESSAGING FN-MESSAGING 提供了编写 SMS 和 MMS 服务器应用的有关信息。此外,许多第三方产品也能帮助开发伙伴们创建 SMS 和 MMS 服务器应用。以前的移动游戏互动论坛(Mobile Games Interoperability Forum,MGIF),现在已改名为开放移动联盟(Open Mobile Alliances,OMA)游戏服务工作组(Game Services Working Group),为各种游戏服务器

26、发行了一套标准规范,名为 MGIF平台规范 MGIF-SPECMGIF-SPEC,其中包括对 SMS 和 MMS 的支持。然而,在撰写本文之际,还没有发布过该标准的任何实现。多人 MIDP 游戏编程 14 Forum.N7.游戏类型 下文述及的多人游戏类型摘录自诺基亚论坛文档移动游戏开发简介INTROINTRO。对每个案例我们都会阐述哪种通信技术适用哪种类型的游戏。7.1.多玩家单人游戏 这种游戏的特点是可以轮流玩,每个玩家都在玩一个单人游戏;结束一轮游戏后才互相比较各自的分数。一般,这种游戏没有用到网络,所以游戏速度不会受到网络时延的限制,可以实现快速街机类游戏。在这种游戏中,每一关结束时才

27、会有时延问题,即使如此,这也不会影响到游戏的结果。因此,HTTP 足以发送你的分数。但是,当所有其他玩家结束游戏时,服务器无法通知你,相反,你的客户端必须定时地用 HTTP 请求去“测”服务器,问它“他们都联络你了吗?”MIDP 2.0 中,可以用 TCP 协议来解决这一问题。在 TCP 协议中,只要连接是通的,服务器可以在任何时间向你发送消息。7.2.回合制游戏 回合制游戏以不连贯的“回合”进行,而不是连续进行的。7.2.1 循环赛游戏 在诸如国际象棋、扑克和桥牌等循环赛游戏中,玩家轮流上阵。循环赛游戏中最为简单的 MDIP 实现策略是:共用一台电话。如果玩家处在同一场所,这种玩法非常合适。

28、如果用 MIDP 1.0,你可以选择 HTTP。对循环赛游戏来说,HTTP 有一个重大缺点,即:游戏服务器无法告知 MDIP 客户端:现在轮到你玩了。相反地,客户端必须进行测试,定时询问游戏服务器:“轮到我了吗?”当客户端等待时,某种表示“忙碌”的指示器应该会显示出来,玩家也应该有办法中断游戏。因为玩家们常常会在同一个地方玩游戏,知道前一个玩家已经结束其游戏,所以应该考虑提供一种能中断等待并立即开始下一次查询的方案。MIDP 1.0 回合制多人游戏的范例之一是 Marcospace 的 CannonsME CANNONSMECANNONSME,这是一个二到四人游戏,玩家轮流移动坦克并开火射击。

29、对那些支持无线消息 API 的电话来说,你可以用 SMS 来实现循环赛游戏。但是,如果游戏有许多回合,可能由于昂贵的 SMS 费用而得不到使用。用 MIDP 2.0 时,TCP 可能是最佳选择。轮到一个玩家时,服务器会立即通知他,这一点很重要,因此 UDP 就可能不太适用。另外,在循环赛游戏中,TCP 可能导致的额外延时并不成为问题。7.2.2 同时行动游戏 这是一种回合制游戏,在每一回合中每个人同时出手,然后判断结果,如儿童的“剪子、石头、布”游戏。事实上,这种游戏和循环赛游戏之间并没有多大的编程差异。当将玩家的行动发送给服务器后,仍然需要等待一个异步提示,说明其他玩家也已经完成其行动,所以

30、它们遵循相同的设计策略。多人 MIDP 游戏编程 15 Forum.N7.3.“随时玩”游戏 这种游戏可以在较长时间(几天、几周、几月,也许永远)内运行,玩家可以随时进入,参与游戏。如果游戏中没有实时动作(如股票仿真游戏),HTTP 就是一种合适的网络技术。如果只有很少的简单动作,SMS 也非常合适。即使游戏涉及到很慢的实时动作,HTTP 的延时都会显得过于严重。用 MIDP 2.0 时,你应该考虑UDP、TCP,或两者的结合(请参阅 4.3 节)。但请谨记,移动网络的延时对快速的、实时的多人交互游戏(如驾驶游戏、第一人称射击游戏等)来说影响实在太大了。慢速实时游戏的例子是:拿破仑一世海战,其

31、中每个玩家控制一艘战船:游戏玩家们无法指望战船会迅速响应其命令。7.4.慢速更新游戏 本质上这是“随时玩”游戏的一个特例。玩家可以随时参与游戏,游戏始终都在运行。然而,玩家始终都参与其中,即使他/她并没有连机。当玩家连机时,他/她可以看到游戏的状态,并更新自己在该游戏中的替身的行为规则,这些替身会按这种规则在游戏中连续操作。对于这种类型的游戏来说,通常延时不成为问题,因为用户的替身,而不是用户自己,在实时操作。因此,通常 HTTP 就足够了。多人 MIDP 游戏编程 16 Forum.N8.多人游戏的共通特性 8.1.永久性用户帐户 根据一定的业务模型,你可能希望为每个用户分配一个永久性用户帐

32、户。为了便于新手加入,还应该允许他们在首次游戏时能在游戏界面中创建这个帐户。可以用 MIDP 的记录管理系统(Record Management System,RMS)将他们的用户名和密码保存到电话中,使玩家们下次参与游戏时不必再次输入。但是,有时候玩家也希望能改用一个不同的帐户,所以应该有一种方法能重置其已保存的值。可以保存用户游戏时的偏爱习惯,既可以将其保存在服务器上,也可以用 RMS 将其保存在电话中。如果被保存在电话中,需要记住的是,如果用户启用了一部新电话(或者买了新电话,或者使用朋友的电话)玩游戏时,那部新电话中并不存在该用户的偏爱习惯。8.2.游戏大厅 游戏大厅(Lobby)展示

33、当前各种活动游戏,同时允许用户参与某个正处于活动状态的游戏,或打开一个新游戏。如果当时有许多个活动游戏,而且,你对玩家的能力有一些评判的尺度,你就可以先展示那些能力相当的玩家可以一起玩的游戏。具有私密性的、需要特邀玩家的那类游戏也值得考虑,玩家可以因此而启动一个私人游戏,并仅邀请其朋友来参加。8.3.高分表 在许多游戏中,看看高分表也极其有趣。这些高分表被保存在服务器中。如果你建立了有名有姓的用户帐户,高分表将更为引人入胜。请记住,众多玩家中只有一位能居于榜首。所以,大多数玩家可能永远都上不了榜。为了让更多的人能有机会榜上有名,可以考虑增加一些另类的排行榜,如:“今日最高分”,或其他令人感兴趣

34、的排名方式。8.4.玩家之间的交谈 玩家们玩游戏时希望能彼此交流信息,所以需要为他们提供一个方法,让他们能在同一个游戏中或同一个游戏场合中输入消息,显示给对手或所有玩家们看。使用 MIDP 的高级用户界面屏幕(如表单Form中的文本框TextField,或文本区域TextArea)来输入文本。不要试图在 MDIP 的低级用户界面画布(Canvas)上实现自己的文本输入,因为你并不可能访问诸如提示文本输入等许多高级特性。而且,你也不能将这些努力移植到新电话上(例如,如果你在数字键盘上实现了“三键”输入法,这对某些拥有完整键盘电话,如诺基亚 6800 的用户来说,会非常不自在)。另一种方案是,提供

35、一份菜单,其中含有常用短语(如对抗游戏中的“辱骂”)。8.5.显示延时(“Ping”)在某些游戏中,如果延时影响到了游戏的闲适度,此时玩家会希望有一种特性,能显示该游戏当前的延时情况。PC 游戏通常把延时称为“Ping”。多人 MIDP 游戏编程 17 Forum.N8.6.显示包的使用情况 移动电话都能显示包数据的使用情况,但是玩家必须退出游戏后才能查看该数据。可以考虑一种方法,让玩家们不必离开游戏就能检查其所使用的包数据的量。多人 MIDP 游戏编程 18 Forum.N9.参考文献 CANNONSME CANNONSME Cannons ME Macrospace 有限公司,2002 年

36、 http:/ Postmortem:Multitude 的火线追击 Gamasutra 2000 年 1 月 5 日 http:/ FN-MESSAGINGFN-MESSAGING 诺基亚论坛:消息分区 http:/ FRUITMAC FRUITMAC 网络化MIDlet范例:老虎机(FruitMachine)诺基亚论坛,2001 年 http:/ INTROINTRO 移动游戏开发简介 诺基亚论坛,2003 年 http:/ JAVANW JAVANW Java 网络编程,第二版 Elliote Rusty Harold OReilly,2000 年 ISBN:1-56592-870-9

37、JSR-82 JSR-82 蓝牙 Java API 集 Java Community Process,2002 年 http:/jcp.org/aboutJava/communityprocess/final/jsr082/index.html JSR-120 JSR-120 无线消息 API Java Community Process,2002 年 http:/www.jcp.org/en/jsr/detail?id=120 JSR-205 JSR-205 无线消息 API 2.0 Java Community Process,开发中 http:/www.jcp.org/en/jsr/de

38、tail?id=205 LTN LTN 扁长网络 RFC 2757 http:/www.ietf.org/rfc/rfc2757.txt MGIF-SPECMGIF-SPEC MGIF 平台规范,版本1.0 Mobile Games Interoperability Forum,2002 移动游戏协作论坛,2002 年 http:/www.openmobilealliance.org/mgif/MIDPNET MIDPNET MIDP网络简介 诺基亚论坛,2001 年 http:/ MIDPPROGMIDPPROG MIDP编程简介 诺基亚论坛,2001 年 http:/ MIDP 1.0MI

39、DP 1.0 移动信息设备描述(MIDP)Java Community Process,2000 年 http:/jcp.org/aboutJava/communityprocess/final/jsr037/index.html 多人 MIDP 游戏编程 19 Forum.NM MIDP 2.0DP 2.0 移动信息设备描述 2.0 Java Community Process,2002 年 http:/jcp.org/aboutJava/communityprocess/final/jsr118/index.html NVI NVI 网络化虚拟环境 Sandeep Singhal and

40、Michael Zyda Addison-Wesley,1999 年 ISBN:0-201-32557-8 TCPTCP 传输控制协议 RFC 761 http:/www.ietf.org/rfc/rfc0761.txt TOMCATTOMCAT Apache Tomcat servlet container http:/jakarta.apache.org/tomcat/index.html UDP UDP 用户数据报协议 RFC 768 http:/www.ietf.org/rfc/rfc0768.txt WAP-ARCHWAP-ARCH WAP 架构 2001 年 7 月 12 日版 W

41、AP 论坛:WAP-210-WAPArch-20010712 http:/www.wapforum.org X-WINGX-WING 互联网悍将:或,我从编写帝国生死斗中学到了什么 Garnasutra,1999 年 9 月 3 日 http:/ 多人 MIDP 游戏编程 20 Forum.N附录附录 A.MIDP 通信协议汇总通信协议汇总 类型 类型 MIDP 1.0 MIDP 1.0 MIDP 2.0 MIDP 2.0 HTTP HTTP 客户端/服务器*必选 必选 HTTPS HTTPS 客户端/服务器*-必选 TLS(SSL)TLS(SSL)客户端/服务器*-可选 TCP TCP 客户

42、端/服务器*-可选 UDP UDP 客户端/服务器*-可选 Serial Cable Serial Cable 串行电缆 点对点 两人游戏-可选 Infrared Infrared 红外 点对点 两人游戏-可选 Bluetooth Bluetooth 蓝牙 点对点 两到八人游戏-可选 SMS SMS 点对点或客户端/服务器 可选:JSR-120 可选:JSR-120 MMS MMS 点对点或客户端/服务器 可选:JSR-205 可选:JSR-205 (*)如果运营商没有使用 NAT/防火墙,也可用于点对点。多人 MIDP 游戏编程 21 Forum.N附录附录 B.移动网络上的互联网协议 移动

43、网络上的互联网协议 移动网络与承载大部分互联网流量的固定网络有非常不同的属性:移动网络带宽相对较窄,延时较长。这些不同属性所导致的后果在扁长网络(IETF RFC 2757,Long Thin Networks LTNLTN)一文中有详细论述。B.1 HTTP HTTPIPWirelessWirelessWireless IP RouterTCPWiredHTTPTCPIPWiredServerMIDletHTTPIPWirelessWirelessWireless IP RouterTCPWiredHTTPTCPIPWiredServerMIDlet 图 9:“普通”TCP 上的 HTTP

44、图 9:“普通”TCP 上的 HTTP 当要求电话在其数据连接上表现出普通的互联网 IP 网络特性时,我们使用无线 IP 路由器连接到互联网。该设备将 IP 数据包从无线承载层路由到有线承载层 这种方案很简单,但并没有针对无线网络作过优化。这种方案的例子就是把手机用作手提电脑的调制解调器。然而,有些电话也将这种方法用于自己的网络连接。诺基亚 9210 和诺基亚 9290 通信器电话中就以这种方法实现了 MIDP HTTP。该方法也是诺基亚 3650 成像电话和诺基亚 7650 成像电话(它们还可以使用 HTTP over WAP 1.x WSP,如图 11 所示)的两种可选入网方式之一。HTT

45、PWIPWirelessHTTPWIPWirelessHTTPTCPIPWAP ProxyTCPWTCPWWiredHTTPTCPIPWiredServerMIDletHTTPW:WirelessProfiled HTTPTCPW:WirelessProfiled TCPHTTPWIPWirelessHTTPWIPWirelessHTTPTCPIPWAP ProxyTCPWTCPWWiredHTTPTCPIPWiredServerMIDletHTTPW:WirelessProfiled HTTPTCPW:WirelessProfiled TCP 图 10:10:无线描述的 HTTP HTTP

46、和无线描述的 TCP(WAP 2.x)TCP(WAP 2.x)WAP 2.x 引入了无线描述的 HTTP 和无线描述的 TCP 概念,其中包含了对这些协议在无线方面所作的优化,但需要有一台 WAP 代理服务器,它在各个协议的无线形式和互联网形式之间进行转换。详细信息请参阅 WAP 论坛规范WAP架构一文WAP-ARCHWAP-ARCH。WSPWDPWirelessWSPWDPWirelessHTTPTCPIPWAP GatewayWTPWTPWiredHTTPTCPIPWiredServerMIDletWAP 1.xWSPWDPWirelessWSPWDPWirelessHTTPTCPIPWA

47、P GatewayWTPWTPWiredHTTPTCPIPWiredServerMIDletWAP 1.x 图 11:WAP 1.x WSP 上的 HTTP 图 11:WAP 1.x WSP 上的 HTTP 在撰写本文之际,这是在各种诺基亚移动电话上实现 MDIP HTTP 的最通常做法。例如,这是下列各种电话实现 HTTP 的唯一方法:诺基亚 3410、3510i、5100、6100、6310i、6610、7210、7250、和8910i。这也是诺基亚 3650 和诺基亚 7650 电话的两种可选方法之一(它们还可以使用普通 TCP 上的 HTTP,如图 9 所示)。多人 MIDP 游戏编程

48、 22 Forum.NB.2 HTTPS HTTPIPWirelessWirelessWireless IP RouterTCPWiredHTTPTCPIPWiredServerMIDletTLSTLSHTTPIPWirelessWirelessWireless IP RouterTCPWiredHTTPTCPIPWiredServerMIDletTLSTLS 图 12:HTTPS over TLS over normal TCP 图 12:HTTPS over TLS over normal TCP HTTPS,即“安全的 HTTP”,是在安全层上实现的 HTTP,也就是 TLS(SSL 的

49、标准形式)。还是这句话,最简单的方法就是使用各种标准互联网协议和一个无线 IP 路由器,但你没有得到针对无线网络的任何优化。TLSIPWirelessIPWirelessTCPIPWAP ProxyTCPWTCPWWiredTLSTCPIPWiredServerMIDletHTTPHTTPTCPW:WirelessProfiled TCPTLSIPWirelessIPWirelessTCPIPWAP ProxyTCPWTCPWWiredTLSTCPIPWiredServerMIDletHTTPHTTPTCPW:WirelessProfiled TCP 图 13:无线描述的 TCP(WAP 2.

50、x)上的 HTTPS 图 13:无线描述的 TCP(WAP 2.x)上的 HTTPS WAP 2.0 引入了无线描述的 TCP 概念,TLS 也可以在此之上实现。使用这种方法,可以针对无线网络对连接进行优化,但是必须通过一台 WAP 代理服务器进行路由。WSPWDPWirelessWSPWDPWirelessHTTPTLSIPWAP GatewayWTPWTPWiredHTTPTLSIPWiredServerMIDletWAP 1.xWTLSWTLSTCPTCPWSPWDPWirelessWSPWDPWirelessHTTPTLSIPWAP GatewayWTPWTPWiredHTTPTLSI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁