J2ME多人游戏注意事项(笔记类)

笔记

一 MIDP通讯技术

1. HTTP:

当网络中的真实电话配置HTTP流MIDlet的时候,不要尝试一次只发送一小段数据:在发完全部数据之前,不会收到什么东西。

当从服务器发送HTTP响应要被延迟到某个事件发生,移动网络中开发连接可能很昂贵,通常会因超时而被中端,这一情况比在互联网上更容易发生。

移动电话通常没有资源去支持多重开放的HTTP连接。在数据结构和数据缓存方面的开销非常大。

HTTP 方法

GET:用于向服务器请求一个静态资源,重复一个GET请求将得到相同的资源响应。GET请求仅提供资源的URL,不包括任何消息体。

POST:用于向服务器请求一个动态资源(如游戏中的一个回合),重复一个POST请求将得到不同的资源响应。POST响应也包括一个带服务响应数据的消息体,是MIDlet的常用方法。

来自某个服务器的HTTP响应可能包含成功(2xx)、重定向(3xx)或错误(4xx, 5xx)之类的状态码。这些代码需要由HTTP客户端处理。

HTTP消息体

发送的信息只是一串字节流,可以对这些字节信息进行编码,包括:

文本;图像文件(至少支持对PNG解码);XML;其它用户定制数据结构。

HTTP会话

服务器把MIDlet发起的一系列连续请求作为一个HTTP会话来跟踪,由于HTTP本身是无状态的,所以必须在HTTP协议层之上实施会话管理。

方法一:各种会话cookie。

方法二:URL重写。

由于cookie还有其它用途,所以处理会话cookie的完整MIDlet实现起来比较复杂,重新URL则简单许多。

HTTP服务器

有包括java servlet, jsp, asp, asp.net, cgi script在内的多种选择。

2. TCP:

互联网上的http通常以TCP实现,TCP连接的端点是一个套接字socket。MIDP 1.0 不包括对TCP的支持,MIDP 2.0 规定了对TCP的支持,制造商可以自己选择是否包含这种支持。

3. UDP:

使用UDP时,两台正在通讯的设备间所发送的数据报(datagram)往往也被称为数据包(data packet), MIDP 1.0 不包括对UDP的支持,MIDP 2.0 规定了对UDP的支持,制造商可以自己选择是否包含这种支持。在诸如GPRS这样的分组交换协议上实现时,考虑到移动网络的响应时间,包的发送量一般并不需要超过每秒一个,并注意包的大小。

4. 串行电缆

MIDP 2.0中通过接口SerialPortConnection实现支持。

5. 红外

MIDP 2.0中通过接口SerialPortConnection实现支持。

6. 蓝牙(MIDP可选包通讯技术)

一种短程无线技术,支持约10米范围最多8台设备一起通讯,响应时间短,非常适合于多人游戏(由于蓝牙超各个方向传输,彼此之间不必正对)。

7. SMS短消息服务

SMS(Short Message Service)可以发送文本消息或者是二进制数据,是一种“存储转发”技术。通过一台短消息服务中心(SMSC)保存消息在队列中,并稍后转发。

8. MMS多媒体消息服务

是SMS的一种升级版本,允许把一段消息分成几部分,包括文本,图片,声音以及视频,也是一种“存储转发”技术。MMS实现综合使用了SMS和HTTP。

二游戏服务器技术

HTTP和HTTPS

在服务器端,你可以使用任何一种通常用于HTTP服务器的技术,如:静态网页、CGI、ASP、Java servlet,以及JavaServer Page(JSP)。Java程序员通常的选择是Java servlet。

三游戏类型及相关注意事项

多玩家单人游戏 & 回合制游戏:

这种游戏的特点是玩家轮流上阵,没有用到网络,也不会受网络延世的限制。

循环赛游戏 & 同时行动游戏:

当使用MIDP 1.0,可以选择HTTP,但HTTP有一个重大缺点,游戏服务器无法告知MIDP客户端:现在轮到你了,所以客户端必须测试,定时询问游戏服务器:轮到我了么,所以应该考虑提供一种能中断等待并立即开始下一次查询的方案。

MIDP 2.0,TCP可能是最佳选择,轮到一个玩家时,服务器会立即通知他,这很重要,因此UDP就可能不太适合。另外,在循环赛中,TCP可能导致的额外延时并不成为问题。

“随时玩”类型游戏:

如果游戏中涉及实时动作,HTTP的延时就会显得过于严重。用MIDP 2.0时应该考虑UDP, TCP,或两者结合。移动网络的延时对快速的,实时的多人交互游戏来说影响太大了。

四多人游戏共通特性

永久性用户帐户

游戏大厅(Lobby)

高分表

玩家之间交谈

显示延时 ...

时间: 2024-09-20 06:13:54

J2ME多人游戏注意事项(笔记类)的相关文章

C++学习笔记-类定义的注意事项和C#的区别

1:类当中的一批函数可以被一个public关键字引导来标明这些函数是公开的 2:成员函数可以放在类的外部定义但必须在类的内部做声明在类外部做定义的时候必须形如这样:bool YorClassName::YorMethordName(int param){//....return true;}就如同C#中的完全限定名YorClassName::YorMethordName如果在类中定义成员函数的话,就不用这样了 3:创建一个对象完全可以不用new形如:YorClassName target;tar

php学习笔记 类的声明与对象实例化

复制代码 代码如下: <?php /* 类的声明 * 1.你要开发的是什么,确定写什么类 * 2.类中的成员一定要属于这个类 * [修饰类的关键字] class 类名{ * 成员属性: * 成员方法: * } * 3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public * 一个文件只保存一个类,文件名中包含类名,文件:类名.class.php * 类名的写法: * 变量:aaaBbbCcc * 函数:aaaBbbCcc * 常量:AAABBBCCC * 类名:

J2ME中的GIF处理类

发一个GIF处理的类,可以减少图片资源,不需要太多的png了 用法如下: private GIFDecode gifd; private int ind; private int gifCount; private Image frame; void initGIF() { gifd = new GIFDecode(); gifd.read(this.getClass().getResourceAsStream("/ar.gif"));//载入gif图片 ind = 0; gifCou

作为商务人士,没个好用的笔记类App怎么行?

当你在路途中的时候,你需要能够快速记下笔记以防忘记.否则,你很有可能会忘记曾经想起的每个绝妙主意.值得庆幸的是,现在笔记应用可能比你想象的还多.但是哪个应用是你应该使用的?你从来没听过说的应用怎么样? 是的,在Google Play商店里有那么多笔记应用,你可能只听说过其中很小一部分.一些你从未听说过的应用实际上很好用.那么下面就让我们来看看一些可以为你提供服务的笔记应用吧--不管你听说或者没有听说过. 1.Note Everything Note Everything(如图A)是一款简单的应用

php学习笔记 类的声明与对象实例化_php基础

复制代码 代码如下: <?php /* 类的声明 * 1.你要开发的是什么,确定写什么类 * 2.类中的成员一定要属于这个类 * [修饰类的关键字] class 类名{ * 成员属性: * 成员方法: * } * 3.在类中声明成员属性时,前面必须有修饰词,当不确定使用哪个词时,使用var或public * 一个文件只保存一个类,文件名中包含类名,文件:类名.class.php * 类名的写法: * 变量:aaaBbbCcc * 函数:aaaBbbCcc * 常量:AAABBBCCC * 类名:

笔记类app之Leanote同步机制 韩俊强的博客

背景 最近在移动开发App时遇到一个问题:在服务端与客户端之间需要进行修改,删除,更新,添加等操作同步,为此研究了一番,其中Leanote参考了印象笔记App的同步原理. Leanote同步机制参考Evernote的机制, 关于Evernote的同步机制参考: http://dev.evernote.com/media/pdf/edam-sync.pdf 前言 Leanote主要由Notebook, Note, Tag, File(图片/附件)组成. File依附于Note存在. 当Note删除

开发NOKIA J2ME时这两个类哪里可以下载到?

问题描述 开发NOKIAJ2ME时这两个类哪里可以下载到?到NOKIA网站都没找到importcom.nokia.mid.ui.lcdui.DisplayStateListener;importcom.nokia.mid.ui.lcdui.LCDUIUtils; 解决方案 解决方案二:不知道,NokiaUIAPI没这2个啊

Java编程思想学习笔记——类的访问权限

类的访问权限 Java中,访问权限修饰词用于确定库中哪些类对于该库的使用者是可用的. public class Foo{ } 注意点: 每个文件(编译单元)只能有一个public类. public类的名称必须完全和含有该编译单元的文件名相匹配,包括大小写. 编译单元内没有public类也是可行的(不常这么用),在这种情况下,可以随意对文件命名. 类既不可以是private的(除该类以外,任何类都不能访问它),也不可以是protected.(事实上,内部类可以是private或protected的

初学j2me必读 网友学习笔记

这是我去年给朋友们写的文章,希望对你能够有所帮助 开发手机游戏的一点心得 应用开发环境的选择和配置 2003年三月份,我刚开始接触了手机游戏的开发.开发手机上的游戏程序,最初仅仅只是出于兴趣爱好,利用业余时间自己陆陆续续的也写了一些Code,得到了一些经验,本来是想敝帚自珍的,但是朋友的鼓励,使我决定把自己的一点点心得体会写出来,藉以告慰我在学习中所阵亡的千千万万脑细胞,也为和我一样在黑暗的艰难摸索人们中提供一些微不足道的帮助吧. 由于我本人对于手机应用程序的开发也是初学,如果在文章中出现什么问