JAVA 开发网络化对战俄罗斯方块游戏的可行性
文/于翀
摘要:游戏开发是编程技术与图形技术相结合的一种流行的技术。电子游戏已经深入人们的日常生活中,俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成七种不同的形状,通过计算机随机生成。用户使用用键盘控制四个方向,让方块翻转,堆叠消除。本文论术了使用JAVA语言, 在WINDOWSXP 系统下, 以JCreater 为开发环境,进行网络化、多平台,B/S 结构的可人人对战的俄罗斯方块游戏的开发可行性,编程方向及实现方法。
【关键词】JAVA 网络化对战 俄罗斯方块 B/S
1 前言
随着人们计算机应用水平的迅速提高,社会生活中依赖于计算机解决的问题越来越多,当然,也越来越复杂。游戏程序的开发也随着计算机的发展在不断的进步。早期的8 位游戏,到现在的32 位甚至64 位游戏,游戏的发展与计算机的硬件发展密切相关。
2 游戏网络化
现在的游戏越来越多的倾向于网络化,单机游戏的越来越少,而且很多单机游戏都提供了相对应的联机对战或都联机合作功能,这也是未来游戏的一个发展方向。
我们都知道现在流行的游戏几乎都是使用C++、Visual Basic 等语言开发而成的,并且为了创造出极佳的2D/3D 视觉与听觉效果,还必须搭配具有特殊支持的硬件(3D 加速显卡)和函数库(Microsoft DirectX、OpengGL)。那么Java 语言呢?似乎它在游戏设计这方面并没有如此强有力的支持。
话虽如此,但并不表示Java 就无法被用来开发游戏,也许没有了特殊的软件硬件支持将使得Java 在声光效果上不尽理想,但也正因为如此而使Java 语言在游戏设计的其他方面更具特色,如跨平台和可以能通过网络下载执行,而这也是我为何选择Java 来编写游戏的原因。
网络化,这是相当重要的一个特征,Java在被设计时就是希望能跨越各种不同设备的平台,而当Java 和因特网相结合后这个理想就被完美地实现了。使用Java 编写的程序可以轻易的通过因特网以及与Java 兼容的浏览器来执行,这意味着无论你使用的系统平台是Windows、Linux 是Mac OS,都可以通过因特网来执行Java 程序,当然也包括Java 开发的游戏。
这就是Java 语言“跨平台”特点所带的好处,并且更值得高兴的是您无须了解各平台的细节,只要使用正确的Java 语法设计程序,就可以保证在所有支持Java 的平台上都可以正常的运行,而使用C++、Visual Basicrn 所开发出的游戏就没有这些优点。
使用基于B/S 结构开发的网络游戏还有一项重要的特征,那就是不需要安装程序。你只要确定你的网络联机正常就可以玩Java 网络游戏了。
当然Java 在运行效率和声光效果的呈现上的确只能做到可以接受的程度。然而只要是创意非常独特,就可以用创意来加强游戏的娱乐性,那么即使在目前有限的运行效率与声光效果下使用Java 所开发的游戏仍然可以借助因特网的威力风靡全球。
网络化人人对战俄罗斯方块游戏主要的设计目标是使用B/S 结构实现一个即时在线的多人对战的网络化游戏。程序开发中只是使用了简单的网络构架并没有使用到多服务器分担处理技术。
3 Java程序开发设计
Java 不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java 开发工具集(Java Developers kits, 简称JDK)。编程人员和最终用户可以利用这些开发Java 程序或调用Java 内容。而且还有丰富的第三方JAVA 开发工具可用,例如JCREATER。现今的游戏发展非常快,游戏的网络化也是游戏发展的历史必然。开发网络化的人人对战俄罗斯方块游戏也是大有人在的。我们的开发目标为:1. 系统基于B/S 结构;2. 实现基于Internet 的联机功能;3. 能够完成联机后的用户显示;4. 可以进行人人对战俄罗斯方块游戏;5. 提供足够的冲突检测及错误提示;6. 提供足够功能的用户操作介面。程序实现以上功能,一定要选择一种可靠的,对于网络支持全面的语言开发环境。见于以上分析,选用Java 作为网络化人人对战俄罗斯方块游戏的开发环境是可行的。
使用Java 来开发,可以达到真正的网络化,完全不受系统平台的限制。这也是选用Java 的主要原因,如图1。就现在的情况来看,系统平台很难统一。在这样的环境下,Java 这种平台无关性的程序,也正是现在所需要的。网络化、跨平台的人人对战游戏,正是设计的主要目的。要使用Java 作为网络化人人对战俄罗斯方块游戏的开发环境,主要是考虑到跨平台的实现,这是本身Java 的特点,所以是完全可以实现的。
首先确定系统使用B/S 结构,客户端用Javaapplet 实现,服务器端为Java 应用程序。系统结构分析如图2。服务器端的实现,设计服务器为支持多人对战游戏。服务器应该可以提供多人的登录、多人的消息发送。当两人游戏时建立唯一的消息通信。
游戏服务器的实现,使用Swing 包来提供标决的应用程序介面。设定一个固定的端口用来提供用户端程序访问。使用Vector 向量数组存储已经连接的客户变量。使用多线程技术为每个连接到服务的用户分配一个线程,用来侦听已经连接成功的客户端所发来的消息,收到消息后进行消息转发。
网络传输协议使用了TCP/IP,TCP/IP 连接使用Socket 技术实现。俄罗斯方块游戏本身没有多少数据发送量,所以使用TCP 这种有确认连接的网络协议,数据发送的可靠性高。对于网络错误的信息交互以及网络相关的消息确认相对于UDP 都比较容易实现。服务器接收到的用户消息中包括(1)用户的相关消息:主要包括用户的登录成功消息、Socket 套接字连接发来的用户消息、退出消息。
(2)用户游戏时的数据:包括每个用户游戏时的自己的图形状态、每个用户发给胜利方的失败消息。
(3)用户确认消息:用户之间申请游戏的消息、用户之间的放弃对战消息,用户之间同意开战的消息,用户退出游戏自己断开服务器的消息。
(4)用户的错误消息:用户使用重名的错误消息,用户非法断开服务器的消息。客户端的实现使用applet。使用applet 程序可以使用浏览器来下载和运行,合乎B/S 结构的要求。
客户端应该有全面的人机交互的提示,可以用使用Java Swing 中提供的图形用户界面类中的方法来实现。但是没有必要创建Frame。因为这样的话就失去applet 的特点了。多使用按钮、输入栏,这些常见的交互方法来提供给用户输入确认消息。
进行游戏时,客户端能显示自己的游戏状态和对方的游戏状态,当满足相应条件时给对方增加难度,并能给出胜负的提示。能够把所有的消息发送给服务器,能够接收处理所有服务器发来的消息。
使用了B/S 结构的优点。其一,基于B/S结构的应用程序,客户端不需要安装,没有了固定某个机器才能使用的现象。其二,B/S 结构的系统更集中,对于用户的管理更加方便。Applet 是Java 的小应用程序,它是动态、安全、跨平台的网络应用程序。Java Applet 嵌入HTML 语言,通过主页发布到Internet,在支持Java 的浏览器中运行。由于Java 语言的安全机制, Applet 生成多媒体的用户介面和计算不必担心病毒的入侵。虽然Applet 可以和图像、声音、动画等一样从网络上下载,它可以接收用户的输入,动态地进行改变。
Java 还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。,Java 对于这种硬件要求不高的网络游戏开发是非常的合适的。象Java 这种语言,开发的跨平台游戏也是,游戏发展的一个方向。
参考文献
[1] 荣钦科技.Java2 游戏程序设计[M]. 北京科海电子出版社,2005.
[2] 艾力江.Java2 范例入门与提高[M]. 清华大学出版社,2009.
[3] 殷兆麟.Java 语言程序设计[M]. 高等教育出版社,2010.
作者单位
抚顺市技师学院计算机应用科 辽宁省抚顺市113123