- 浏览: 105840 次
- 性别:
- 来自: GreatArcan
文章分类
最新评论
-
yysct2005:
java webgame开发,游戏服务器,游戏设计q群:334 ...
网络游戏服务端解决方案Project Darkstar的线路图,1.0版本2008年5月15日发布。 -
Nighthaven:
Tomzheng 写道刚才想去玩<倾城>>明 ...
中国造Java网络(网页)游戏引擎JGnet -
Tomzheng:
刚才想去玩<倾城>>明明机器里有javaVM ...
中国造Java网络(网页)游戏引擎JGnet -
Nighthaven:
sql 写道Nighthaven 写道sql 写道真巧,今天看 ...
新项目《三国封神》截图 -
sql:
Nighthaven 写道sql 写道真巧,今天看到了你们这个 ...
新项目《三国封神》截图
本文写于2008年2月,因为这样的介绍性文章一旦时间长了就毫无价值了,所以请转贴的时候记得注明时间,省得几年后还有人在这上面浪费时间。
这篇文章是基本上是基于我的论文开题报告,所以难免要打点官腔。因为我对手机游戏并不了解,所以本文关于java手机游戏的讨论会很少,而即使对于手机游戏以外的内容,我个人所能接触到的资源也是很有限的,讨论起来不免会有所偏颇,大家批判着看吧。
这些年由于Java技术的不断发展,Java程序的运行速度有了显著提升,同时硬件技术也在不断进步,从而使得java处理比较复杂的3d图形成为可能。Lwjgl,Jogl,Java3D等技术的出现,使Java语言可以方便的利用现在的显卡日益强大的硬件加速能力。实际上目前已经有许多基于java的2d和3d游戏,其中不乏大型多人在线游戏。
Wurm online一个多人在线网络游戏(06年的时候进入了收费运行阶段,不过你还是可以申请一个免费帐号进去看看):
http://www.wurmonline.com/
2007年javaone上jmokeyengine演示视频:
http://www.youtube.com/watch?v=ho_b18HRmGA&eurl=http%3A%2F%2Fwww%2Ejmonkeyengine%2Ecom%2F
一个比较老的视频2005GDC上java游戏演示视频:
http://www.youtube.com/watch?v=Pc3LxBIVaBs&feature=related
上面这些只是Java游戏的一小部分。然而,即使还有其它很多基于Java的游戏,相对于整个游戏产业来说,Java游戏社区仍然非常小,以至于其力量在手机游戏之外的领域几乎可以被忽略不计。但是实际上Java作为一种游戏编程语言和平台,这些年还是取得了长足的发展,在后applet时代走着复兴之路。
当然,Java可以做游戏,并不意味着Java就适合做游戏,那么:
基于java对于一个游戏来说到底意味着什么?
1,Java是一门经过充分发展,已经十分成熟的语言。
Java语言称霸企业级应用这么多年,事实证明了它非常适合于开发大型软件。当Java的运行效率不再是问题的时候,Jjava语言严谨、高抽象、可读性强的优势就体现出来了。这对于规模越来越庞大的游戏软件来说,有着不小的诱惑。
2,Java作为平台,极大的方便了游戏脚本的使用
对于游戏开发来说,由于涉及到比较复杂的情况(有时候甚至是美学问题),开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。对于很多游戏引擎来说,都有自己编写的脚本解释器,用来解释一些自定义的游戏脚本语言(一般为命令式脚本,比如moveplayer(int x,int y),playersmile()之类的东西),另一些则提供了例如lua和rubby等的脚本语言来访问游戏引擎。由于其虚拟机特性,java本身就可以用来编写游戏脚本,目前也有例如beanshell、groovy等脚本语言可以方便的无缝的和java语言进行交互,这些都极大的方便了java游戏编程。
3,跨平台?
跨平台,每当比较java与其他语言的时候,总是要谈到跨平台。但是在java游戏领域,write once ,run everywhere,听起来更像是一个冷笑话。这个笑话有多冷呢?(手机游戏我不熟悉,但是确实有人用“痛苦”来形容开发运行在不同手机上的javame游戏)对于其他大多数java游戏来说,或者通过applet或者通过java web start来部署,这两种方式无一例外的都要用到浏览器。对于java web start来说,问题相对较小,程序员必须处理的问题主要是如何让非专业用户成功安装指定的jre版本的问题,虽然很麻烦,但是是可以解决的。对于applet来说,问题就变得复杂的多,很多问题只会在特定的操作系统配上特定的浏览器时才会出现,即使是同一品牌的浏览器,不同的浏览器版本也会出现不同的问题,同时这里还涉及到客户机默认是使用opengl pipeline还是directdraw pipeline的问题。而我们现在甚至还没有开始讨论当3d游戏需要使用底层图形api时的情况,无论是applet还是web start一旦在程序中使用了任何一种opengl的java绑定,客户机各不相同的显卡以及同一款显卡的不同驱动都会带来不同的问题,而这些问题是随着操作系统和浏览器的不同而不同的,操作系统数×浏览器数(web start不需要考虑浏览器)×显卡数×每款显卡平均的驱动版本数=噩梦。最后你不得不妥协于这样一个现实-----即使电脑在硬件上满足程序的要求,你也无法让你的程序运行在这些电脑中的每一台上,除非你的用户都是专业人士。
当然,其实现状并没有听起来那么糟糕,对于不使用java的大多数游戏来说,根本就只能运行在一个平台上,许多游戏对directx或者opengl的版本有要求,更不要提那些运行在家用游戏机上的游戏了,跨平台是整个游戏业的大问题,java只是像其他人一样没有把这个问题彻底解决掉而已,但仍然比其它技术做得要好。不过,值得一提的是,在那些不直接使用硬件加速的网页小游戏上,java确实在稳定性和方便安装上输给了flash;在家用机方面,java是0,而微软的xna(c#)可以跨xbox360和vista。
4,网络
Java一向强于解决网络方面的问题,在这方面,java主要有两个优势,第一是基于applet和java web start的游戏非常容易更新,不会像其他游戏那样需要用户手动下载全新版本;第二是java在网络交互的api相对比较友好,而对于大型网络游戏来说,分布式系统非常重要,这正是jcp的巨头们喜欢的东西,可能由于这是一个卖硬件的好机会,sun下了不少功夫开发了project dark star来做网络游戏服务端,由于这个工程还没有到1.0,所以现在也很难说具体好用不好用。
5,速度
这个没什么可讨论的,基于java的游戏肯定会比写得很好的c++程序慢,当然写一个好的c++程序所花费的庞大的薪水也是java不能比的。
总体说完,就具体说说:
当前在java游戏方面主要有哪些可以使用的技术
1,Java3D
作为sun公司较早推出的一项3d技术,是一种高度封装的api,构建在opengl和direct3d之上,可以说是最有名的java的3d技术。由于种种原因(api设计,面向的用户不明确),java3d一直没有办法流行,不久前java3d的团队宣布暂停对java3d新功能的开发,转而为JavaFX开发3d 渲染引擎。同时sun的另一个项目 project wonderland宣布将其渲染引擎由Java3d转为JMonkeyEngine。令人唏嘘的是sun的java3d再次进入尘封状态,大量基于java3d的程序和教程都面临一个非常尴尬的境地;令人高兴的是在这一领域终于有比sun做得更好的团队出现了。引用别人对此事的评价:Java3D is dead! Long live Java "3D"!
2, Lwjgl(http://new.lwjgl.org/index.php)
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一。
3,Jogl(https://jogl.dev.java.net/)
Jogl是java对opengl的一个绑定,或者说是opengl接口的java实现,它是由sun支持的。其语法与opengl完全相同,api也紧跟随着opengl的版本进行更新,而Nehe的opengl范例程序大多数都有jogl版本。去年jogl正式通过jcp审核成为jsr231,是lwjgl的主要竞争者。值得一提的是,jogl项目的领导者Ken Russell曾经声明并不希望jogl成为jre的一部分,因为他认为这样会使jogl的更新周期与jre相同,从而变得过于缓慢。Ken Russell目前全力工作在新的java plug-in的开发上,而opengl的api也没有进行更改,所以现在的jogl版本将持续较长的一段时间。
4,Joal(https://joal.dev.java.net/)
java对openal的一个绑定,是java音效的一个解决方案。
5,Jinput(https://jinput.dev.java.net/)
java对非标准输入设备(游戏手柄,操纵杆)的解决方案。
6,JMonkeyEngine(http://www.jmonkeyengine.com/)
JMonkeyEngine是一个开源java游戏引擎,对底层高度封装,经过4年的开发,在去年的10月终于发布了1.0版本。在2007的javaone会议上发布了相当震撼的演示视频,从而广受关注,据说会场的许多屏幕特效也是由它完成的。在底层,JMonkeyEngine采用了lwjgl,而jogl可能会在2.0版本中得到支持。去年著名的网络游戏公司ncsoft(天堂系列,激战,英雄城市,Tabula Rasa等游戏的开发商)将JMonkeyEngine的三位主要开发人员招入麾下,也许不久的将来我们就可以看到这一引擎的商业版本。值得一提的是,在任职ncsoft之后,引擎的主要开发者声称现在有了更多的时间进行游戏引擎开源版本的开发,而目前JMonkeyEngine的开发速度也确实大幅提升,2.0本版可能在08年稍晚一些时候就会发布。此外,由sun开发的project wonderland不久前宣布将把其渲染引擎由Java3d转为JMonkeyEngine,使得JMonkeyEngine进一步受到广泛关注。
7,Project Darkstar(http://www.projectdarkstar.com/)
目前project darkstar为0.95版,是sun专门针对网络游戏的方面的应用所开发的。这个项目主要致力于解决大型游戏服务器的分布式应用问题,个人感觉类似于网络游戏应用中的j2ee。对于普通游戏的网络传输,project darkstar也给出了自己的解决方案。但是不少人认为darkstar并不致力于简化普通游戏的网络应用,因为这个项目主要是对大型网络游戏服务器的分布式应用进行解决,从而促进sun自己生产的服务器的销售。当然我并没有真正使用或研究过它,只是道听途说,很有可能有错误。
8,Project Wonderland(https://lg3d-wonderland.dev.java.net/index.html)
Sun开发的一个3d虚拟世界构建工具,sun使用这个工程制造了一个虚拟工作环境MPK20,物理上处于不同大陆的人们在这个虚拟世界中可以在一间屋子里协同工作,这个项目的演示视频非常不错,建议去它的主页看一下。
值得一提的Java游戏
国内有一个叫《海天英雄传》的2d网络游戏号称是用java实现的,地址:http://herogame.njoys.com/,这款游戏几年前最鼎盛的时期也没什么名气,目前这个游戏基本已经处于生命周期的最后阶段了,可能不久后就会停运。
Wurm online一个多人在线网络游戏,大多数商业版本的java游戏实际上都是将java代码预先编译成字节码,因而不需要客户安装java虚拟机,这个游戏是少有的几个确实要求客户安装java虚拟机,而同时又运营的相当不错的游戏。地址:http://www.wurmonline.com/
未来
目前来看java游戏并没有出现显著的上升趋势,除手机游戏外,java游戏基本处于蛰伏状态。未来java游戏可能迎来几个契机:
1,Java SE 6 Update N (之前被叫做 "Consumer JRE")的发行。
在这个新的版本中,sun号称其将让java升级更方便,部署更简单(方便的探测客户端的java版本,并安装程序需要的版本),用户将能够只安装jre中他们需要的部分,对于暂时用不到的部分可以等到用的时候再安装,同时加速java虚拟机的启动速度(实际上就是在电脑刚开机的时候就启动java虚拟机,而不是在第一次运行java程序的时候),增加对swing的硬件加速支持。而新的java plug-in将大幅增强applet的稳定性,可靠性,将允许applet更改自己可以使用的内存大小,选择使用哪个特定版本的jre执行。
实际上一旦applet变得稳定,java面对flash将体现出巨大的性能优势,因此Java SE 6 Update N的发布将是java游戏界未来一段时间内最大的契机。
2,JavaFX的发布
JavaFX的目标是让JavaFX像flash一样易于开发,如果这个项目真的能成功的话,对于java游戏的影响将非常巨大(不过由于缺乏flash所拥有的方便的开发工具,我对JavaFX成功的可能性深表怀疑)
3,Sony或是任天堂决定在家用游戏机上支持Java
这个的希望非常渺茫的,但是考虑到微软的XNA做到了跨windows和xbox360平台,也许sony在ps3屡遭败仗的情况下会考虑一下支持Java。实际上现在的家用游戏机就是电脑,很多发烧友已经可以在ps3和wii上运行java程序了,只是目前java无法使用这些机器的硬件加速功能。
4,手机进一步发展
目前看来移动设备的功能已经越来越强大,手机的性能也许在不久的将来可以达到电脑的水准,手机游戏也将占据游戏市场越来越大的份额,那么由于手机的操作系统种类繁多,跨平台的Java自然也会越来越受青睐。
请麻烦看看我和C3Po从哪里开始质疑lz的发言,就是从3D游戏的引擎开始,请问Java哪一款3D引擎能胜任游戏开发了?
综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
崩溃了,网游开发公司里什么人员写LUA?策划人员。
去面试游戏开发工程师,你说你精通LUA......
如果不是小孩,是侏儒呢??? 它到底是小孩子还是侏儒,这不是我们在争论的东西么? Java也不是小朋友了,它应该算是个半老徐娘了, 该出来的东西早就该出来了.
WURM,图形只能到了差强人意的地步,稳定性更是糟糕...
请看TOM的报导:
"上周奇幻MMORPG游戏《Wurm Online》的服务器全线崩溃,数据全部损失。游戏开发方预计玩家损失的游戏时间共计超过50万小时。
经过一段时间的调整,官方宣布将于5月5日重开《Wurm》游戏的服务器,至于损失的时间,玩家将会得到赔偿。老玩家可以重新获得之前购买的所有金币。另外得到额外两周的游戏时间。为了安全起见,同时官方也额外安排了离线自动数据备份等防范措施,预防此次事件再次发生"
我们从来没有争辩Java能不能写出游戏,而是Java能成为主流3D开发语言吗? WURM的画面是能和任何一款当前的3D游戏媲美么? 你能把WURM跟"华丽"二个字挂上钩么? WOW也才区区300M内存, WURM难道不算内存大户了么?
I have a 2D engine written in both Java and C++. If I draw using the OpenGL immediate mode (glVertex) i get about 1/3 of the vertex output i'd get with C++, however if i use Vertex Buffer Objects the amount is perhaps 3/4 of the amount in C++ engine.
For simple games I don't see the problem in this, however for example as you can see that concentration camp simulator (Wyrm Online, Wurm Online?) doesn't run very well, although it is very pretty. I think it's a great example of when one should / shouldn't use Java. It's impossible to get reasonable framerates when compared to other commercial products of that scale.
你自己乱放什么屁啊.
我和lz的不同观点是从jmoneky的opengl performance,你倒好,拉一堆什么乱七八糟的gaming来扯....麻烦看清楚我们在争什么东西,不然来这里被人笑死,你那些gaming,几个支持DX9,几个支持opengl?
你是无限放大吧??? 从java 3d推广到无限了... 小朋友回去读读书.
看你的文章,一直都是.net ,作者也说了这只是他的综述,这里作者也是花了心思在研究的,拿到这里来也是希望大家多提点探讨,帮他提点意见,看到现在看见你有点心态不正确了,你喜欢c++,不代表java先游戏界就没有前途,没有谁是预言家的。一开始也有很多人预言c++不适合开发游戏?为什么,因为跟汇编比起来,速度慢了。
我看你的稀里糊涂了吧? 你以为好人就不会害死人了么? 一篇误导初学者的帖子也是会害死人的,jogl和汇编有可比性么?还是你根本不懂Jogl是怎么工作的,jogl只是wrapper C开发的东西,并增加一堆消耗资源的东西。
论证Java为什么不适合3D游戏开发(3d!),就好比在论证一个母鸡为什么不会飞一样,你可以把母鸡从楼上丢下来让她扑通几下,但是并不意味着母鸡就会飞。
PS:
你和LZ一样根本就是在瞎编论据--“一开始也有很多人预言c++不适合开发游戏”,你能找到哪个白痴说过这种话么??又是你在杜撰吧?
为什么自己没有看到的东西你就在武断的认为别人在杜撰呢?在 Killer Game Programming in Java 这本书里,有这么一段话,An interesting historical observation is that the gaming community used to think that C and C++ were too high-level for fast, efficient games programming when compared to assembly language. Opinions started to change only after the obvious success of games written in C, such as Doom and Dungeon Master, in the mid-1980s. Also important was the appearance of cross-platform development tools that supported C, such as RenderWare. (从历史观察,一个有趣的现象就是游戏社区过去常认为编写快速有效的游戏,同汇编相比,c和c++因为太高级语言而不适合,只有19世纪80年代中期用c写的doom 和Dungeon Master的成功才改变了这种观点),而且跨平台的透明性支持了c作为开发工具,比如RenderWare.
为什么说要用发展的眼光看问题,其实作者开篇就提到了用java编写游戏,得到的都是c++社区的嘲笑,可是事物总是在发展的,为什么那么武断的判一个东西的死刑呢?
作者提到人们认为java不适合游戏开发的理由有:
Java is too slow for games programming.
Java has memory leaks.
Java is too high-level.
Java application installation is a nightmare.
Java isn't supported on games consoles.
No one uses Java to write real games.
Sun Microsystems isn't interested in supporting Java gaming.
对于速度 这是作者原文
This is better rephrased as "Java is slow compared to C and C++, the dominant languages for games programming." This argument was valid when Java first appeared (around 1996) but has become increasingly ridiculous with each new release. Some figures put JDK 1.0, that first version of the language, at 20 to 40 times slower than C++. However, J2SE 5.0, the current release, is typically only 1.1 times slower.
It's worth saying that I think almost all of these objections are substantially wrong. Java is roughly the same speed as C++. Memory leaks can be avoided with good programming and techniques like profiling. Yes, Java is high-level, but it offers more direct access to graphics hardware and external devices. Installation isn't a nightmare if you use decent installation software. There's a growing number of excellent, fun Java games, and an enormous amount of support available from Sun and Sun-sponsored sites.
下面是作者列举的一些java游戏社区,希望对作者有用:
Puzzle Pirates by Three Rings (http://www.puzzlepirates.com/)
This is a multiplayer pirate game that includes Tetris-like or Columns-like puzzles at various points. The client and server are written in Java. It won several awards during 2004, including the Technical Excellence and Audience Choice prizes at the Game Developers Conference.
Chrome by Techland (http://www.chromethegame.com/en/show.php)
Chrome is a futuristic multiplayer FPS (first person shooter) made up of 14 different missions, in an amazing variety of landscapes. It received a Duke's Choice Award from Sun Microsystems in 2004 for the most innovative product using Java technology.
Law and Order II by Legacy Interactive. (http://www.lawandordergame.com/index2.htm)
This is a detective game written in Java, Java 3D, and QuickTime for Java. The first Law and Order sold over 100,000 units.
Kingdom of Wars by Abandoned Castle Studios (http://www.abandonedcastle.com/)
This is a fantasy game set in the world of Jairon.
Alien Flux by Puppy Games (http://www.puppygames.net/info.php?game=Alien_Flux)
Alien Flux is an exciting arcade shoot-em-up.
War! Age of Imperialism by Eagle Games (http://www.eaglegames.net/products/WAR_AOI/wai.shtml)
War! is a computer version of the award-winning board game from Eagle Games.
Runescape by Jagex (http://www.runescape.com)
Runescape is a massive 3D multiplayer fantasy adventure game. Clients can use a Java applet to play or download a Windows-based client application.
Star Wars Galaxies by LucasArts (http://www.lucasarts.com/products/galaxies/)
This one has its game logic coded in Java.
IL-2 Sturmovik by Ubi-Soft (http://www.il2sturmovik.com/)
Award winning WW II aerial combat using Java and C++, this and the new version (IL2-Forgotten Battles) are great examples of Java in games.
Pernica by Starfire Research (http://www.starfireresearch.com/pernica/pernica.html)
Pernica is an online fantasy role-playing game first implemented in Java 3D.
Cosm by Navtools, Inc. (http://www.cosm-game.com/)
Cosm is another fun online fantasy-based role-playing game.
C&C Attack Copter by Electronic Arts (http://www.eagames.com/free/home.jsp)
This is a free online action game based on the Command & Conquer series.
Roboforge by Liquid Edge Games (http://www.roboforge.com)
Train a 3D robot to fight in online tournaments. It was given an "Excellent 87%" by PC Gamer Magazine.
Galactic Village by Galactic Village Games (http://www.galactic-village.com)
Galactic Village is a massively multiplayer strategy game, written entirely in Java. Not yet finished though alpha versions have been appearing.
Wurm Online by Mojang Specifications (http://www.wurmonline.com/)
This is another massively multiplayer fantasy game, written in Java. It's still in the alpha stages of development, but the screenshots look great.
Jellyvision (http://www.jellyvision.com/)
Jellyvision used a mix of Java and C++ in their popular Who Wants to Be a Millionaire (2000) and You Don't Know Jack (1995) games. They employed Java for the game logic, an approach used in Majestic (2001) by Electronic Arts.
Vampire the Masquerade: Redemption (2000) by Nihilistic software (http://www.nihil-istic.com/).
Java was utilized as a scripting language in this highly acclaimed game.
Tom Clancy's Politika (1997) by Red Storm Entertainment (http://www.redstorm.com/)
This game was written in almost pure Java. Shadow Watch (2000) and Tom Clancy's ruthless.com (1998) mixed Java and C/C++.
A good source for nontechnical lists of Java games, both commercial and freeware/shareware, can be found on the Java games pages at java.com (http://www.java.com/en/games/). The pages divide games into several categories: action, adventure, strategy, puzzle, cards, sports, and so on.
Freeware/Shareware Games
Many Java games are out on the Web, but finding a game that's written well requires a careful search. Many applets date from the late 1990s and were designed using the outdated JDK 1.0 and 1.1 with their feeble media APIs (e.g., graphics, sounds). The initial Java euphoria produced some less than exciting games, more concerned with technical trickery than quality. This large pool of useless applets got Java labeled as a toy language.
Recent versions of Java are different. The speed has improved and APIs crucial to gamingsuch as graphics and audioare of a high quality. There's been a move away from applets towards the downloading of client-side applications using JWS.
Java's backward compatibility allows the applets from 1996 to 1998 to be executed, and they'll often run quicker than the original applets. However, it's probably best to steer clear of these Java dinosaurs and look for more modern code.
Numerous web sites use Java games. The emphasis of the following list is on applications/applets for playing:
Java Games Factory (JGF) (http://grexengine.com/sections/externalgames/)
There aren't many games at this site (about 50), but they're all high quality. The aim is to show off various modern Java game technologies.
ArcadePod.com (http://www.arcadepod.com/java/)
Over 750 Java games, nicely categorized.
Java 4 Fun (http://www.java4fun.com/java.html)
Similar in style to ArcadePod, with a good set of links to other sites.
jars.com (http://www.jars.com)
A general Java site with a ratings scheme. There are many games, but a lot of them are old applets.
Java Shareware (http://www.javashareware.com/)
Another general site: look under the categories applications/games and applets/games.
Java Games Central (http://www.mnsi.net/tild rkerr/)
A personal web site that lists games with ratings and links. It was last updated in 2001.
Some of my favorite freeware/shareware games are:
Super Elvis; also known as Hallucinogenesis (http://www.puppygames.net/downloads/hallucinogenesis/hallucinogenesis.jnlp)
This game won the Sun Microsystems 2004 Technology Game Development Contest. Super Elvis can be downloaded from the puppygames web site using JWS.
FlyingGuns (http://www.flyingguns.com/)
A 3D multiplayer WWI fighter plane game/simulator. This came second in the contest but is my favorite.
Cosmic Trip (http://www.mycgiserver.com/tild movegaga/cosmictrip.html)
An arcade-style 3D game with striking graphics.
Squareheads (http://home.halden.net/tombr/squareheads/squareheads.html)
A multiplayer FPS (it came third in the developer contest).
Escape (http://javaisdoomed.sourceforge.net/)
A Doom-like FPS.
CazaPool3D (http://membres.lycos.fr/franckcalzada/Billard3D/Pool.html)
A pool game that allows online (single/multiplayer) play in an applet or as a standalone application.
Programmers looking for source code should start at one of the following sites:
SourceForge (http://sourceforge.net/search/)
SourceForge acts as a repository and management tool for software projects, many with source code. A recent search for (java + game) returned over 70 projects that had 40 percent or greater activity. One of the drawbacks of SourceForge is that deciding if a project is vaporware is difficult. Good projects that have been completed will show low activity after a time, dropping down the list of search results.
FreshMeat.com (http://freshmeat.net/)
FreshMeat maintains thousands of applications, most released under open source licenses. The search facilities are excellent and can be guided by game category terms. The results include rating, vitality, and popularity figures for each piece of software. A recent search for Java in the Games/Entertainment category returned nearly 70 hits. Many applications turn up at SourceForge and FreshMeat.
The "Your Games Here" Java Games Forum (http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=Announcements)
Implementers can post links to their games, and (perhaps more importantly) users can post their opinions as follow-ups.
Code Beach (http://www.codebeach.com)
CodeBeach has a searchable subsection for Java games that contains nearly 90 examples.
Programmers Heaven (http://www.programmersheaven.com/zone13/)
It has a "Java zone" containing some games.
This is better rephrased as "Java is slow compared to C and C++, the dominant languages for games programming." This argument was valid when Java first appeared (around 1996) but has become increasingly ridiculous with each new release. Some figures put JDK 1.0, that first version of the language, at 20 to 40 times slower than C++. However, J2SE 5.0, the current release, is typically only 1.1 times slower.
本书写于2005年。
你是无限放大吧??? 从java 3d推广到无限了... 小朋友回去读读书.
我的显卡很不幸,正好是NV 8800,不知道显卡太菜,还是这个引擎太菜? 我看是后者菜的可能性高一些.
有些话我真的不想再说。去玩点游戏见见世面,鼠目寸光的不要出来发帖子好不好?
就那个海浪效果吧,82FPS,每帧是34686个三角形,这种效率放在现在的游戏里面也就勉强够渲染一个角色而已。《战争机器》在Xbox360上是每帧300万个多边形,保持在30FPS/s就是9000万,效率相差32倍,而且还不算人家GOW的大量特效,包括法相贴图、实时阴影、全屏抗锯齿、各向异性过滤和后期处理。所以别show那Jmonkey engine了,效率跟人家相差32倍还缺乏特效,这种玩意有实用价值?
我觉得我的脾气就已经够好了,还真能遇上让我发火的人。
翻翻你自己前面的回帖,错误理论一大堆,我心平气和一条一条给你说明,你倒是跑来一会一句“见见世面”,一会一句“鼠目寸光”。xbox360我的确没买,虚幻、crysis之类的我还是玩过的,目前顶级的游戏引擎是什么表现,网上视频满天飞,我不比你了解的少。
jMonkey Engine是一个开源的免费引擎,我从来没有指望它可以超过次世代主机上的大作用的引擎。即使如此,你做的比较也毫无道理,在硬件条件完全不同的情况下,你是如何得出渲染效率32倍的结论的?还有刚才那个ray_linn,居然拿出盟军敢死队这样和刚才那个海浪demo毫无共同点的东西来比较。你们的逻辑思维真是强大到让我惊讶。
至于jMonkey Engine有没有实用价值,我想已经有人使用它做商业游戏,并且以此为生,就已经证明了它具有实用价值了。
和你俩在这吵终究还是说明我自己的高度也不高,受不了挑衅,其实早就应该不跟你们一般见识。这是我最后一次回复你和ray_linn 的帖子,从现在开始随便你们怎么说,我不再和你俩理论了。
这篇文章是基本上是基于我的论文开题报告,所以难免要打点官腔。因为我对手机游戏并不了解,所以本文关于java手机游戏的讨论会很少,而即使对于手机游戏以外的内容,我个人所能接触到的资源也是很有限的,讨论起来不免会有所偏颇,大家批判着看吧。
这些年由于Java技术的不断发展,Java程序的运行速度有了显著提升,同时硬件技术也在不断进步,从而使得java处理比较复杂的3d图形成为可能。Lwjgl,Jogl,Java3D等技术的出现,使Java语言可以方便的利用现在的显卡日益强大的硬件加速能力。实际上目前已经有许多基于java的2d和3d游戏,其中不乏大型多人在线游戏。
Wurm online一个多人在线网络游戏(06年的时候进入了收费运行阶段,不过你还是可以申请一个免费帐号进去看看):
http://www.wurmonline.com/
2007年javaone上jmokeyengine演示视频:
http://www.youtube.com/watch?v=ho_b18HRmGA&eurl=http%3A%2F%2Fwww%2Ejmonkeyengine%2Ecom%2F
一个比较老的视频2005GDC上java游戏演示视频:
http://www.youtube.com/watch?v=Pc3LxBIVaBs&feature=related
上面这些只是Java游戏的一小部分。然而,即使还有其它很多基于Java的游戏,相对于整个游戏产业来说,Java游戏社区仍然非常小,以至于其力量在手机游戏之外的领域几乎可以被忽略不计。但是实际上Java作为一种游戏编程语言和平台,这些年还是取得了长足的发展,在后applet时代走着复兴之路。
当然,Java可以做游戏,并不意味着Java就适合做游戏,那么:
基于java对于一个游戏来说到底意味着什么?
1,Java是一门经过充分发展,已经十分成熟的语言。
Java语言称霸企业级应用这么多年,事实证明了它非常适合于开发大型软件。当Java的运行效率不再是问题的时候,Jjava语言严谨、高抽象、可读性强的优势就体现出来了。这对于规模越来越庞大的游戏软件来说,有着不小的诱惑。
2,Java作为平台,极大的方便了游戏脚本的使用
对于游戏开发来说,由于涉及到比较复杂的情况(有时候甚至是美学问题),开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。对于很多游戏引擎来说,都有自己编写的脚本解释器,用来解释一些自定义的游戏脚本语言(一般为命令式脚本,比如moveplayer(int x,int y),playersmile()之类的东西),另一些则提供了例如lua和rubby等的脚本语言来访问游戏引擎。由于其虚拟机特性,java本身就可以用来编写游戏脚本,目前也有例如beanshell、groovy等脚本语言可以方便的无缝的和java语言进行交互,这些都极大的方便了java游戏编程。
3,跨平台?
跨平台,每当比较java与其他语言的时候,总是要谈到跨平台。但是在java游戏领域,write once ,run everywhere,听起来更像是一个冷笑话。这个笑话有多冷呢?(手机游戏我不熟悉,但是确实有人用“痛苦”来形容开发运行在不同手机上的javame游戏)对于其他大多数java游戏来说,或者通过applet或者通过java web start来部署,这两种方式无一例外的都要用到浏览器。对于java web start来说,问题相对较小,程序员必须处理的问题主要是如何让非专业用户成功安装指定的jre版本的问题,虽然很麻烦,但是是可以解决的。对于applet来说,问题就变得复杂的多,很多问题只会在特定的操作系统配上特定的浏览器时才会出现,即使是同一品牌的浏览器,不同的浏览器版本也会出现不同的问题,同时这里还涉及到客户机默认是使用opengl pipeline还是directdraw pipeline的问题。而我们现在甚至还没有开始讨论当3d游戏需要使用底层图形api时的情况,无论是applet还是web start一旦在程序中使用了任何一种opengl的java绑定,客户机各不相同的显卡以及同一款显卡的不同驱动都会带来不同的问题,而这些问题是随着操作系统和浏览器的不同而不同的,操作系统数×浏览器数(web start不需要考虑浏览器)×显卡数×每款显卡平均的驱动版本数=噩梦。最后你不得不妥协于这样一个现实-----即使电脑在硬件上满足程序的要求,你也无法让你的程序运行在这些电脑中的每一台上,除非你的用户都是专业人士。
当然,其实现状并没有听起来那么糟糕,对于不使用java的大多数游戏来说,根本就只能运行在一个平台上,许多游戏对directx或者opengl的版本有要求,更不要提那些运行在家用游戏机上的游戏了,跨平台是整个游戏业的大问题,java只是像其他人一样没有把这个问题彻底解决掉而已,但仍然比其它技术做得要好。不过,值得一提的是,在那些不直接使用硬件加速的网页小游戏上,java确实在稳定性和方便安装上输给了flash;在家用机方面,java是0,而微软的xna(c#)可以跨xbox360和vista。
4,网络
Java一向强于解决网络方面的问题,在这方面,java主要有两个优势,第一是基于applet和java web start的游戏非常容易更新,不会像其他游戏那样需要用户手动下载全新版本;第二是java在网络交互的api相对比较友好,而对于大型网络游戏来说,分布式系统非常重要,这正是jcp的巨头们喜欢的东西,可能由于这是一个卖硬件的好机会,sun下了不少功夫开发了project dark star来做网络游戏服务端,由于这个工程还没有到1.0,所以现在也很难说具体好用不好用。
5,速度
这个没什么可讨论的,基于java的游戏肯定会比写得很好的c++程序慢,当然写一个好的c++程序所花费的庞大的薪水也是java不能比的。
总体说完,就具体说说:
当前在java游戏方面主要有哪些可以使用的技术
1,Java3D
作为sun公司较早推出的一项3d技术,是一种高度封装的api,构建在opengl和direct3d之上,可以说是最有名的java的3d技术。由于种种原因(api设计,面向的用户不明确),java3d一直没有办法流行,不久前java3d的团队宣布暂停对java3d新功能的开发,转而为JavaFX开发3d 渲染引擎。同时sun的另一个项目 project wonderland宣布将其渲染引擎由Java3d转为JMonkeyEngine。令人唏嘘的是sun的java3d再次进入尘封状态,大量基于java3d的程序和教程都面临一个非常尴尬的境地;令人高兴的是在这一领域终于有比sun做得更好的团队出现了。引用别人对此事的评价:Java3D is dead! Long live Java "3D"!
2, Lwjgl(http://new.lwjgl.org/index.php)
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一。
3,Jogl(https://jogl.dev.java.net/)
Jogl是java对opengl的一个绑定,或者说是opengl接口的java实现,它是由sun支持的。其语法与opengl完全相同,api也紧跟随着opengl的版本进行更新,而Nehe的opengl范例程序大多数都有jogl版本。去年jogl正式通过jcp审核成为jsr231,是lwjgl的主要竞争者。值得一提的是,jogl项目的领导者Ken Russell曾经声明并不希望jogl成为jre的一部分,因为他认为这样会使jogl的更新周期与jre相同,从而变得过于缓慢。Ken Russell目前全力工作在新的java plug-in的开发上,而opengl的api也没有进行更改,所以现在的jogl版本将持续较长的一段时间。
4,Joal(https://joal.dev.java.net/)
java对openal的一个绑定,是java音效的一个解决方案。
5,Jinput(https://jinput.dev.java.net/)
java对非标准输入设备(游戏手柄,操纵杆)的解决方案。
6,JMonkeyEngine(http://www.jmonkeyengine.com/)
JMonkeyEngine是一个开源java游戏引擎,对底层高度封装,经过4年的开发,在去年的10月终于发布了1.0版本。在2007的javaone会议上发布了相当震撼的演示视频,从而广受关注,据说会场的许多屏幕特效也是由它完成的。在底层,JMonkeyEngine采用了lwjgl,而jogl可能会在2.0版本中得到支持。去年著名的网络游戏公司ncsoft(天堂系列,激战,英雄城市,Tabula Rasa等游戏的开发商)将JMonkeyEngine的三位主要开发人员招入麾下,也许不久的将来我们就可以看到这一引擎的商业版本。值得一提的是,在任职ncsoft之后,引擎的主要开发者声称现在有了更多的时间进行游戏引擎开源版本的开发,而目前JMonkeyEngine的开发速度也确实大幅提升,2.0本版可能在08年稍晚一些时候就会发布。此外,由sun开发的project wonderland不久前宣布将把其渲染引擎由Java3d转为JMonkeyEngine,使得JMonkeyEngine进一步受到广泛关注。
7,Project Darkstar(http://www.projectdarkstar.com/)
目前project darkstar为0.95版,是sun专门针对网络游戏的方面的应用所开发的。这个项目主要致力于解决大型游戏服务器的分布式应用问题,个人感觉类似于网络游戏应用中的j2ee。对于普通游戏的网络传输,project darkstar也给出了自己的解决方案。但是不少人认为darkstar并不致力于简化普通游戏的网络应用,因为这个项目主要是对大型网络游戏服务器的分布式应用进行解决,从而促进sun自己生产的服务器的销售。当然我并没有真正使用或研究过它,只是道听途说,很有可能有错误。
8,Project Wonderland(https://lg3d-wonderland.dev.java.net/index.html)
Sun开发的一个3d虚拟世界构建工具,sun使用这个工程制造了一个虚拟工作环境MPK20,物理上处于不同大陆的人们在这个虚拟世界中可以在一间屋子里协同工作,这个项目的演示视频非常不错,建议去它的主页看一下。
值得一提的Java游戏
国内有一个叫《海天英雄传》的2d网络游戏号称是用java实现的,地址:http://herogame.njoys.com/,这款游戏几年前最鼎盛的时期也没什么名气,目前这个游戏基本已经处于生命周期的最后阶段了,可能不久后就会停运。
Wurm online一个多人在线网络游戏,大多数商业版本的java游戏实际上都是将java代码预先编译成字节码,因而不需要客户安装java虚拟机,这个游戏是少有的几个确实要求客户安装java虚拟机,而同时又运营的相当不错的游戏。地址:http://www.wurmonline.com/
未来
目前来看java游戏并没有出现显著的上升趋势,除手机游戏外,java游戏基本处于蛰伏状态。未来java游戏可能迎来几个契机:
1,Java SE 6 Update N (之前被叫做 "Consumer JRE")的发行。
在这个新的版本中,sun号称其将让java升级更方便,部署更简单(方便的探测客户端的java版本,并安装程序需要的版本),用户将能够只安装jre中他们需要的部分,对于暂时用不到的部分可以等到用的时候再安装,同时加速java虚拟机的启动速度(实际上就是在电脑刚开机的时候就启动java虚拟机,而不是在第一次运行java程序的时候),增加对swing的硬件加速支持。而新的java plug-in将大幅增强applet的稳定性,可靠性,将允许applet更改自己可以使用的内存大小,选择使用哪个特定版本的jre执行。
实际上一旦applet变得稳定,java面对flash将体现出巨大的性能优势,因此Java SE 6 Update N的发布将是java游戏界未来一段时间内最大的契机。
2,JavaFX的发布
JavaFX的目标是让JavaFX像flash一样易于开发,如果这个项目真的能成功的话,对于java游戏的影响将非常巨大(不过由于缺乏flash所拥有的方便的开发工具,我对JavaFX成功的可能性深表怀疑)
3,Sony或是任天堂决定在家用游戏机上支持Java
这个的希望非常渺茫的,但是考虑到微软的XNA做到了跨windows和xbox360平台,也许sony在ps3屡遭败仗的情况下会考虑一下支持Java。实际上现在的家用游戏机就是电脑,很多发烧友已经可以在ps3和wii上运行java程序了,只是目前java无法使用这些机器的硬件加速功能。
4,手机进一步发展
目前看来移动设备的功能已经越来越强大,手机的性能也许在不久的将来可以达到电脑的水准,手机游戏也将占据游戏市场越来越大的份额,那么由于手机的操作系统种类繁多,跨平台的Java自然也会越来越受青睐。
评论
87 楼
wangzi6hao
2008-04-10
呵呵,各位大人都是大师.
支持大家讨论问题,ray_linn\Nighthaven\C3PO 三位的的回帖和跟贴让我学到了更多的东西.
其实大家完全没有必要去生气.
大家看事情的角度不同,得出的结论也不同.
我感到高兴的是,大家把各自的角度看到的问题都说出来了,让我们这些看客更全面看待这些东西.
支持大家讨论问题,ray_linn\Nighthaven\C3PO 三位的的回帖和跟贴让我学到了更多的东西.
其实大家完全没有必要去生气.
大家看事情的角度不同,得出的结论也不同.
我感到高兴的是,大家把各自的角度看到的问题都说出来了,让我们这些看客更全面看待这些东西.
86 楼
wing5jface
2008-04-06
我看JAVA开发3D游戏还是有前途的,开发资源可以慢慢积累.有那么多的JAVA程序员还在这一行混,总会在3D游戏这一块混出名堂来的.人家老史一开始也没有跟WOW正面交战呀,先搞个2D游戏赚些钱,再积累技术开发3D游戏,上市搞来几十亿来继续开发,即使名声臭了,再换个名字,还是照样过日子.
现在CPU双核时代,内存都开始慢慢流行2G以上的了,再要求在C666上运行游戏有啥意义. 若说3D性能高就OK,那怎么解释WII把PS3搞下来的事实呀. 只要有适当的游戏内容及好玩的地方,游戏总会成功的.你C能做华丽的3D,我用JAVA做休闲的3D游戏,难道不行吗?等电脑性能更上一台阶了,再做更好的华丽的3D游戏,行不?
现在CPU双核时代,内存都开始慢慢流行2G以上的了,再要求在C666上运行游戏有啥意义. 若说3D性能高就OK,那怎么解释WII把PS3搞下来的事实呀. 只要有适当的游戏内容及好玩的地方,游戏总会成功的.你C能做华丽的3D,我用JAVA做休闲的3D游戏,难道不行吗?等电脑性能更上一台阶了,再做更好的华丽的3D游戏,行不?
85 楼
ssuupv
2008-03-06
又发现一款好的java 3D射击游戏;叫着
合金战士:特种部队(Chrome Specforce)
感觉蛮不错的.喜欢3D射击英雄的朋友.可以玩玩
合金战士:特种部队(Chrome Specforce)
感觉蛮不错的.喜欢3D射击英雄的朋友.可以玩玩
84 楼
lbfhappy
2008-03-05
为什么我的删子总被删?
83 楼
ray_linn
2008-03-05
ssuupv 写道
Lwjgl(http://new.lwjgl.org/index.php)
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一
wurm其实不是调用java3D.wurm其实脚本用java写的.他的引擎是Lwjgl.
本主题讲是java游戏,不是讲java3D,而讲java游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一
wurm其实不是调用java3D.wurm其实脚本用java写的.他的引擎是Lwjgl.
本主题讲是java游戏,不是讲java3D,而讲java游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.
请麻烦看看我和C3Po从哪里开始质疑lz的发言,就是从3D游戏的引擎开始,请问Java哪一款3D引擎能胜任游戏开发了?
82 楼
ssuupv
2008-03-05
Lwjgl(http://new.lwjgl.org/index.php)
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一
wurm其实不是调用java3D.wurm其实脚本用java写的.他的引擎是Lwjgl.
本主题讲是java游戏,不是讲java3D,而讲java游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.
全名为light weight java game library。作为一个非官方的对java游戏的全面解决方案,lwjgl将游戏图形(opengl)、音效(openal)、控制输入集合为一,以成为java界的directx(不是direct3d)而努力。其在图形方面采用了opengl的java绑定,其函数与c语言版的完全相同,所以对于习惯opengl编程的程序员来说比较友好。目前有大量的java游戏和游戏引擎是基于lwjgl的,它可以说是java游戏社区最广为被使用的函数库之一
wurm其实不是调用java3D.wurm其实脚本用java写的.他的引擎是Lwjgl.
本主题讲是java游戏,不是讲java3D,而讲java游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.
81 楼
bluemeteor
2008-03-05
ssuupv 写道
综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
崩溃了,网游开发公司里什么人员写LUA?策划人员。
去面试游戏开发工程师,你说你精通LUA......
80 楼
ray_linn
2008-03-05
你自己也说了“由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。”Lua内嵌语言,用于实现WOW里的宏和工具条(比如bigfoot或者wowshell)而已,而不是游戏本身。不知道你想表达什么?? 而且玩过WOW的人都知道,wow的lua插件对内存消耗是巨大的--bigfoot需要83M内存!!。你想表达什么?lua对3D有贡献??这样的发言也太无里头了吧?? 离开Lua,WOW照样可以运行,只是少了些用户能控制WOW的方法,少了C++,WOW就不复存在!谁是主谁是辅不是一目了然么。
请不要再跑题了,我们谈的是3D 3D 3D! 你要是对3d一无所知,那就趁早别来跑题了。正如GameDev的老外说的WURM online正好是Java 3D效率不佳的反面例子。
如果你要表达的是lua在游戏里有一席之地,那请另开一个帖子吧。在语言里调用lua虚拟机也不是什么太困难的事情,在C#就能轻松实现。
请不要再跑题了,我们谈的是3D 3D 3D! 你要是对3d一无所知,那就趁早别来跑题了。正如GameDev的老外说的WURM online正好是Java 3D效率不佳的反面例子。
如果你要表达的是lua在游戏里有一席之地,那请另开一个帖子吧。在语言里调用lua虚拟机也不是什么太困难的事情,在C#就能轻松实现。
79 楼
ssuupv
2008-03-04
引自网上.希望对游戏开发只"C不可"观点,认清事实.
一.游戏业中的脚本
随着《魔兽世界》(以下简称wow)在世界范围内流行,脚本渐渐被人们所熟知。由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。
其实早在Lua脚本语言被大众所熟知以前,游戏业内人士就已经开始使用脚本来开发游戏了。我们熟悉的很多国内的网络游戏大都运用了脚本开发,比如网游的长青树“梦幻西游和《大话西游2就大量应用了脚本技术。特别是《大话西游2》,其实现基于Lua脚本游戏开发的时间要远早于《魔兽世界》。在脚本技术上,国内与国外其实是站在同一起跑线上的,并不存在什么差距,这也为国内游戏产业赶超国外游戏产业提供了强有力的技术保证。
在单机游戏时代,脚本这个词几乎很少出现,那么,为什么在网络游戏时代它却成了业界的宠儿呢?原因是多方面的。
单机游戏时代,无论游戏主机还是PC机,它们的性能都非常低下,从而需要具有较高执行效率的编译型语言对机器的性能进行“压榨”。随着科技发展和硬件性能的不断提升,脚本逐渐被开发者所接受并利用,但这并不是脚本流行起来的决定性因素,真正的原因还在于游戏市场有这方面的需求。
网络游戏时代的市场竞争激烈、变化莫测,如果延用单机时代一年半载才出一个新版本的开发方式,必然会被游戏行业激烈的市场竞争所淘汰。正是这种游戏市场需求旺盛和开发工具效率底下之间的矛盾,促使脚本语言迅速地发展起来。脚本的兴起使得传统编译型语言(asngC/C++)的性能优势在硬件功效大幅攀升的今天已经不复存在。
除了市场和硬件这两个因素之外,还有一点我们不能忽略。那就是用C/C++进行游戏开发的高成本和高项目风险。随着java/.net逐渐流行,学习C/C++编程语言的人越来越少,而网络游戏市场的需求却越来越庞大,在程序人才大量匮乏的情况下,造成了c,C++人才的高成本。即便是有能力雇佣大量C/C++程序员的公司,在开发游戏的过程中,也不能无视C/C++的高级特性和高度灵活性带来的高项目风险。C/C++是易学难精的编程语言,在开发大型项目的时候由于程序员的水平参差不齐,所以极易造成沟通不畅。不仅如此,c,C++滥用的高级特性也容易引入大量bug。正是由于这些原因,游戏公司开始在游戏中使用脚本,希望通过脚本来解决这些高成本、高风险的问题。
二.脚本的现状
脚本不仅解决了c/C++无法解决的开发效率难题,还降低了开发的成本和风险。因此脚本技术在游戏业内蓬勃发展起来,并且已经成为游戏业中不可或缺的一环。纵观当前脚本技术现状,形势一片大好,不仅语言百家争鸣,而且书籍种类也越来越多;不仅在游戏业界开花结果,在web等其它应用领域也大放异彩。
首先,我们来看看目前比较流行的脚本:Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借rubyonrails的web开发框架的强劲力量,其在游戏业的发展前途亦不可小视;Erlang在高并发性上的原生优势吸引了无数追求高性能网游服务器的开发人员的目光。
其次,我们来看看书籍方面。大家都知道,文字对语言的普及起到了催化剂的作用,甚至可以看作是语言的有机组成部分。Python经过基金会的多年经营而得到NASA、Google重用的原因,就是由于其相关书籍种类比较丰富;Ruby随着RoR的流行,这两年行情看好,书籍也出版得越来越多了;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,Erlang有着光明的发展前景,现在<<ProgrammingErlang>>等书也已经在策划出版了;反观Lua,虽然目前越来越流行,但由于它晦涩的接口设计和缺乏大型应用的支持,使得相关书籍寥寥无几。
最后,我们把焦点重新聚集到游戏开发行业中,其实不难发现,除了前文提到的《魔兽世界》和网易经典“西游系列”使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的OGRE,无一例外。
三.脚本的优势
脚本之所以能够在游戏业中找到自己的一席之地,是因为网络游戏市场需要一个快速开发方案来避免C/C++开发带来的项目高成本和高风险。那么,脚本相对于C/C++这类编译型语言到底有什么优势呢?
I易于学习,代码可维护性强
脚本的语法通常都非常简单,也没有太多高阶的特性,学习的门槛较C/C++低得多,比如Python可能只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本、编程经验的新手,通过低成本的培训,他们便能迅速地走上工作岗位。除易于学习外,脚本代码也有较强的可维护陛(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本没有很多高阶特性(如c++里的模板元编程就是高阶特性),所以脚本程序员就有更多的精力去关注架构、模式、重用和测试等工作,从而提高了代码的可维护性。相应地,正因为没有那么多让人困惑的高阶特性,也使得脚本代码“简洁”不少。
2.降低开发成本
如上所言,由于脚本易于学习,游戏开发公司可以大量起用新手,这正是降低成本的有效手段。那么如何来确保新手所写代码的质量呢?众所周知,新手无论用什么语言写程序肯定会出现bug,但用C/C++和Python做比较,可以看出,一个新手用C/c++编写出的程序所出现的bug肯定会比用Python编写出现的bug要多。由于c程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也占有一定的优势,这也使脚本在降低成本的同时能够更好地保证代码质量。
3.形成人才壁垒
软件开发行业是一个颇为动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中生活,使用脚本开发形成人才壁垒是游戏业减少人才流动的有效手段。因为现在脚本除了在游戏业中非常流行外,并没有在其它行业形成广泛应用(虽然在web开发方面也有燎原之势,但终究不如在游戏业中的地位高)。这就使得游戏程序员很少会考虑非游戏行业的职位,但其它行业的程序员却可能会因为脚本的易学习性而转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。由于现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言,所以程序员从公司A跳槽到公司B可能要学习使用另一种脚本,这就提高了跳槽的成本,从而减少了人才的流动。
四.脚本的发展趋势
依照目前趋势来看,脚本语言一定会更加的普及,而且会逐渐渗透到其它行业中。随着网络游戏从业人员数量的增长,脚本程序员也一直增加,而且Web2、0热潮引起的网络需求,也促成了一批批新脚本程序员的诞生。网络游戏市场就像一个正在滚动的雪球,推动着脚本的普及。
随着脚本在游戏业中越来越流行,市场对生产效率的需要也会相应提高。脚本虽然在一定程度上缓解了生产效率与生产工具之间的矛盾,但仍然不够完善。由于市场竞争日趋激烈,而网络游戏在很多功能上的实现又都相差无几,如网络、数据库、图形甚至部分逻辑,这必然会引起网络游戏生产的组装化一一大量中间件相互组合形成新的网络游戏。从目前来看,Bigwofld、PhysX和Unreal等都是比较流行的网络游戏中间件。脚本语言则是粘合各个中间件的良好胶水语言,所以随着网络游戏的生产组装化,脚本将有更大的发展空间。
那么,当脚本发展到如日中天的时候,可能取代C/C++这些编译型语言吗?笔者认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言。未来,它们之间一定会保持长久的和谐互补关系,相辅相成。
五.结语
综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
一.游戏业中的脚本
随着《魔兽世界》(以下简称wow)在世界范围内流行,脚本渐渐被人们所熟知。由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。
其实早在Lua脚本语言被大众所熟知以前,游戏业内人士就已经开始使用脚本来开发游戏了。我们熟悉的很多国内的网络游戏大都运用了脚本开发,比如网游的长青树“梦幻西游和《大话西游2就大量应用了脚本技术。特别是《大话西游2》,其实现基于Lua脚本游戏开发的时间要远早于《魔兽世界》。在脚本技术上,国内与国外其实是站在同一起跑线上的,并不存在什么差距,这也为国内游戏产业赶超国外游戏产业提供了强有力的技术保证。
在单机游戏时代,脚本这个词几乎很少出现,那么,为什么在网络游戏时代它却成了业界的宠儿呢?原因是多方面的。
单机游戏时代,无论游戏主机还是PC机,它们的性能都非常低下,从而需要具有较高执行效率的编译型语言对机器的性能进行“压榨”。随着科技发展和硬件性能的不断提升,脚本逐渐被开发者所接受并利用,但这并不是脚本流行起来的决定性因素,真正的原因还在于游戏市场有这方面的需求。
网络游戏时代的市场竞争激烈、变化莫测,如果延用单机时代一年半载才出一个新版本的开发方式,必然会被游戏行业激烈的市场竞争所淘汰。正是这种游戏市场需求旺盛和开发工具效率底下之间的矛盾,促使脚本语言迅速地发展起来。脚本的兴起使得传统编译型语言(asngC/C++)的性能优势在硬件功效大幅攀升的今天已经不复存在。
除了市场和硬件这两个因素之外,还有一点我们不能忽略。那就是用C/C++进行游戏开发的高成本和高项目风险。随着java/.net逐渐流行,学习C/C++编程语言的人越来越少,而网络游戏市场的需求却越来越庞大,在程序人才大量匮乏的情况下,造成了c,C++人才的高成本。即便是有能力雇佣大量C/C++程序员的公司,在开发游戏的过程中,也不能无视C/C++的高级特性和高度灵活性带来的高项目风险。C/C++是易学难精的编程语言,在开发大型项目的时候由于程序员的水平参差不齐,所以极易造成沟通不畅。不仅如此,c,C++滥用的高级特性也容易引入大量bug。正是由于这些原因,游戏公司开始在游戏中使用脚本,希望通过脚本来解决这些高成本、高风险的问题。
二.脚本的现状
脚本不仅解决了c/C++无法解决的开发效率难题,还降低了开发的成本和风险。因此脚本技术在游戏业内蓬勃发展起来,并且已经成为游戏业中不可或缺的一环。纵观当前脚本技术现状,形势一片大好,不仅语言百家争鸣,而且书籍种类也越来越多;不仅在游戏业界开花结果,在web等其它应用领域也大放异彩。
首先,我们来看看目前比较流行的脚本:Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借rubyonrails的web开发框架的强劲力量,其在游戏业的发展前途亦不可小视;Erlang在高并发性上的原生优势吸引了无数追求高性能网游服务器的开发人员的目光。
其次,我们来看看书籍方面。大家都知道,文字对语言的普及起到了催化剂的作用,甚至可以看作是语言的有机组成部分。Python经过基金会的多年经营而得到NASA、Google重用的原因,就是由于其相关书籍种类比较丰富;Ruby随着RoR的流行,这两年行情看好,书籍也出版得越来越多了;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,Erlang有着光明的发展前景,现在<<ProgrammingErlang>>等书也已经在策划出版了;反观Lua,虽然目前越来越流行,但由于它晦涩的接口设计和缺乏大型应用的支持,使得相关书籍寥寥无几。
最后,我们把焦点重新聚集到游戏开发行业中,其实不难发现,除了前文提到的《魔兽世界》和网易经典“西游系列”使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的OGRE,无一例外。
三.脚本的优势
脚本之所以能够在游戏业中找到自己的一席之地,是因为网络游戏市场需要一个快速开发方案来避免C/C++开发带来的项目高成本和高风险。那么,脚本相对于C/C++这类编译型语言到底有什么优势呢?
I易于学习,代码可维护性强
脚本的语法通常都非常简单,也没有太多高阶的特性,学习的门槛较C/C++低得多,比如Python可能只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本、编程经验的新手,通过低成本的培训,他们便能迅速地走上工作岗位。除易于学习外,脚本代码也有较强的可维护陛(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本没有很多高阶特性(如c++里的模板元编程就是高阶特性),所以脚本程序员就有更多的精力去关注架构、模式、重用和测试等工作,从而提高了代码的可维护性。相应地,正因为没有那么多让人困惑的高阶特性,也使得脚本代码“简洁”不少。
2.降低开发成本
如上所言,由于脚本易于学习,游戏开发公司可以大量起用新手,这正是降低成本的有效手段。那么如何来确保新手所写代码的质量呢?众所周知,新手无论用什么语言写程序肯定会出现bug,但用C/C++和Python做比较,可以看出,一个新手用C/c++编写出的程序所出现的bug肯定会比用Python编写出现的bug要多。由于c程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也占有一定的优势,这也使脚本在降低成本的同时能够更好地保证代码质量。
3.形成人才壁垒
软件开发行业是一个颇为动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中生活,使用脚本开发形成人才壁垒是游戏业减少人才流动的有效手段。因为现在脚本除了在游戏业中非常流行外,并没有在其它行业形成广泛应用(虽然在web开发方面也有燎原之势,但终究不如在游戏业中的地位高)。这就使得游戏程序员很少会考虑非游戏行业的职位,但其它行业的程序员却可能会因为脚本的易学习性而转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。由于现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言,所以程序员从公司A跳槽到公司B可能要学习使用另一种脚本,这就提高了跳槽的成本,从而减少了人才的流动。
四.脚本的发展趋势
依照目前趋势来看,脚本语言一定会更加的普及,而且会逐渐渗透到其它行业中。随着网络游戏从业人员数量的增长,脚本程序员也一直增加,而且Web2、0热潮引起的网络需求,也促成了一批批新脚本程序员的诞生。网络游戏市场就像一个正在滚动的雪球,推动着脚本的普及。
随着脚本在游戏业中越来越流行,市场对生产效率的需要也会相应提高。脚本虽然在一定程度上缓解了生产效率与生产工具之间的矛盾,但仍然不够完善。由于市场竞争日趋激烈,而网络游戏在很多功能上的实现又都相差无几,如网络、数据库、图形甚至部分逻辑,这必然会引起网络游戏生产的组装化一一大量中间件相互组合形成新的网络游戏。从目前来看,Bigwofld、PhysX和Unreal等都是比较流行的网络游戏中间件。脚本语言则是粘合各个中间件的良好胶水语言,所以随着网络游戏的生产组装化,脚本将有更大的发展空间。
那么,当脚本发展到如日中天的时候,可能取代C/C++这些编译型语言吗?笔者认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言。未来,它们之间一定会保持长久的和谐互补关系,相辅相成。
五.结语
综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
78 楼
ray_linn
2008-03-04
ssuupv 写道
java刚开始开发这样网络3D游戏,能达到这样水平,很不错了.就如小孩子,跟大人打架,打输了,并说明,小孩子长大以后,也会输啊.
如果不是小孩,是侏儒呢??? 它到底是小孩子还是侏儒,这不是我们在争论的东西么? Java也不是小朋友了,它应该算是个半老徐娘了, 该出来的东西早就该出来了.
77 楼
ssuupv
2008-03-04
java刚开始开发这样网络3D游戏,能达到这样水平,很不错了.就如小孩子,跟大人打架,打输了,并说明,小孩子长大以后,也会输啊.
76 楼
ssuupv
2008-03-04
现在应用内存用个1G有什么压力吗?何况没达到1G,wow也有崩溃的,wow你知道,脚本是什么写的吗,你是不是觉得是C++啊, ,LUA!!!
75 楼
ray_linn
2008-03-04
ssuupv 写道
看了java开发游戏wurm,我感觉java开发大型3D(i td= fhw 不知道你们有没有玩过WURM)技术真的没什么问题了,说消耗内存吧,我看wurm也只是300-500M之间,现在硬件配置没什么问题吧.现在java开发游戏性能还没有最优化(不想C已优化那么多年,提升的空间应当相对java来说是少的了).java性能提升空间还是很大的.目前环境java已有做出.wurm这样水平的游戏,我对他未有信心,在不久将来.将会出现更多,更优秀java大型游戏.
WURM,图形只能到了差强人意的地步,稳定性更是糟糕...
请看TOM的报导:
"上周奇幻MMORPG游戏《Wurm Online》的服务器全线崩溃,数据全部损失。游戏开发方预计玩家损失的游戏时间共计超过50万小时。
经过一段时间的调整,官方宣布将于5月5日重开《Wurm》游戏的服务器,至于损失的时间,玩家将会得到赔偿。老玩家可以重新获得之前购买的所有金币。另外得到额外两周的游戏时间。为了安全起见,同时官方也额外安排了离线自动数据备份等防范措施,预防此次事件再次发生"
我们从来没有争辩Java能不能写出游戏,而是Java能成为主流3D开发语言吗? WURM的画面是能和任何一款当前的3D游戏媲美么? 你能把WURM跟"华丽"二个字挂上钩么? WOW也才区区300M内存, WURM难道不算内存大户了么?
I have a 2D engine written in both Java and C++. If I draw using the OpenGL immediate mode (glVertex) i get about 1/3 of the vertex output i'd get with C++, however if i use Vertex Buffer Objects the amount is perhaps 3/4 of the amount in C++ engine.
For simple games I don't see the problem in this, however for example as you can see that concentration camp simulator (Wyrm Online, Wurm Online?) doesn't run very well, although it is very pretty. I think it's a great example of when one should / shouldn't use Java. It's impossible to get reasonable framerates when compared to other commercial products of that scale.
74 楼
ssuupv
2008-03-04
看了java开发游戏wurm,我感觉java开发大型3D(i td= fhw 不知道你们有没有玩过WURM)技术真的没什么问题了,说消耗内存吧,我看wurm也只是300-500M之间,现在硬件配置没什么问题吧.现在java开发游戏性能还没有最优化(不想C已优化那么多年,提升的空间应当相对java来说是少的了).java性能提升空间还是很大的.目前环境java已有做出.wurm这样水平的游戏,我对他未有信心,在不久将来.将会出现更多,更优秀java大型游戏.
73 楼
ray_linn
2008-03-03
lbfhappy 写道
现在你的意思就是不要说3D gaming,就是gaming都不行了
看任何一种语言都不能以主观的态度去看,做人客观一点,不会死的
C++是大部份情况下都比JAVA快,但是快是这个世界唯一的追求吗?
看任何一种语言都不能以主观的态度去看,做人客观一点,不会死的
C++是大部份情况下都比JAVA快,但是快是这个世界唯一的追求吗?
你自己乱放什么屁啊.
我和lz的不同观点是从jmoneky的opengl performance,你倒好,拉一堆什么乱七八糟的gaming来扯....麻烦看清楚我们在争什么东西,不然来这里被人笑死,你那些gaming,几个支持DX9,几个支持opengl?
72 楼
qzzlw
2008-03-03
ray_linn 写道
qzzlw 写道
ray_linn 写道
lbfhappy 写道
难道非要把JAVA贬成一坨屎的样子,你们才开心?
你是无限放大吧??? 从java 3d推广到无限了... 小朋友回去读读书.
看你的文章,一直都是.net ,作者也说了这只是他的综述,这里作者也是花了心思在研究的,拿到这里来也是希望大家多提点探讨,帮他提点意见,看到现在看见你有点心态不正确了,你喜欢c++,不代表java先游戏界就没有前途,没有谁是预言家的。一开始也有很多人预言c++不适合开发游戏?为什么,因为跟汇编比起来,速度慢了。
我看你的稀里糊涂了吧? 你以为好人就不会害死人了么? 一篇误导初学者的帖子也是会害死人的,jogl和汇编有可比性么?还是你根本不懂Jogl是怎么工作的,jogl只是wrapper C开发的东西,并增加一堆消耗资源的东西。
论证Java为什么不适合3D游戏开发(3d!),就好比在论证一个母鸡为什么不会飞一样,你可以把母鸡从楼上丢下来让她扑通几下,但是并不意味着母鸡就会飞。
PS:
你和LZ一样根本就是在瞎编论据--“一开始也有很多人预言c++不适合开发游戏”,你能找到哪个白痴说过这种话么??又是你在杜撰吧?
为什么自己没有看到的东西你就在武断的认为别人在杜撰呢?在 Killer Game Programming in Java 这本书里,有这么一段话,An interesting historical observation is that the gaming community used to think that C and C++ were too high-level for fast, efficient games programming when compared to assembly language. Opinions started to change only after the obvious success of games written in C, such as Doom and Dungeon Master, in the mid-1980s. Also important was the appearance of cross-platform development tools that supported C, such as RenderWare. (从历史观察,一个有趣的现象就是游戏社区过去常认为编写快速有效的游戏,同汇编相比,c和c++因为太高级语言而不适合,只有19世纪80年代中期用c写的doom 和Dungeon Master的成功才改变了这种观点),而且跨平台的透明性支持了c作为开发工具,比如RenderWare.
为什么说要用发展的眼光看问题,其实作者开篇就提到了用java编写游戏,得到的都是c++社区的嘲笑,可是事物总是在发展的,为什么那么武断的判一个东西的死刑呢?
作者提到人们认为java不适合游戏开发的理由有:
Java is too slow for games programming.
Java has memory leaks.
Java is too high-level.
Java application installation is a nightmare.
Java isn't supported on games consoles.
No one uses Java to write real games.
Sun Microsystems isn't interested in supporting Java gaming.
对于速度 这是作者原文
This is better rephrased as "Java is slow compared to C and C++, the dominant languages for games programming." This argument was valid when Java first appeared (around 1996) but has become increasingly ridiculous with each new release. Some figures put JDK 1.0, that first version of the language, at 20 to 40 times slower than C++. However, J2SE 5.0, the current release, is typically only 1.1 times slower.
It's worth saying that I think almost all of these objections are substantially wrong. Java is roughly the same speed as C++. Memory leaks can be avoided with good programming and techniques like profiling. Yes, Java is high-level, but it offers more direct access to graphics hardware and external devices. Installation isn't a nightmare if you use decent installation software. There's a growing number of excellent, fun Java games, and an enormous amount of support available from Sun and Sun-sponsored sites.
下面是作者列举的一些java游戏社区,希望对作者有用:
Puzzle Pirates by Three Rings (http://www.puzzlepirates.com/)
This is a multiplayer pirate game that includes Tetris-like or Columns-like puzzles at various points. The client and server are written in Java. It won several awards during 2004, including the Technical Excellence and Audience Choice prizes at the Game Developers Conference.
Chrome by Techland (http://www.chromethegame.com/en/show.php)
Chrome is a futuristic multiplayer FPS (first person shooter) made up of 14 different missions, in an amazing variety of landscapes. It received a Duke's Choice Award from Sun Microsystems in 2004 for the most innovative product using Java technology.
Law and Order II by Legacy Interactive. (http://www.lawandordergame.com/index2.htm)
This is a detective game written in Java, Java 3D, and QuickTime for Java. The first Law and Order sold over 100,000 units.
Kingdom of Wars by Abandoned Castle Studios (http://www.abandonedcastle.com/)
This is a fantasy game set in the world of Jairon.
Alien Flux by Puppy Games (http://www.puppygames.net/info.php?game=Alien_Flux)
Alien Flux is an exciting arcade shoot-em-up.
War! Age of Imperialism by Eagle Games (http://www.eaglegames.net/products/WAR_AOI/wai.shtml)
War! is a computer version of the award-winning board game from Eagle Games.
Runescape by Jagex (http://www.runescape.com)
Runescape is a massive 3D multiplayer fantasy adventure game. Clients can use a Java applet to play or download a Windows-based client application.
Star Wars Galaxies by LucasArts (http://www.lucasarts.com/products/galaxies/)
This one has its game logic coded in Java.
IL-2 Sturmovik by Ubi-Soft (http://www.il2sturmovik.com/)
Award winning WW II aerial combat using Java and C++, this and the new version (IL2-Forgotten Battles) are great examples of Java in games.
Pernica by Starfire Research (http://www.starfireresearch.com/pernica/pernica.html)
Pernica is an online fantasy role-playing game first implemented in Java 3D.
Cosm by Navtools, Inc. (http://www.cosm-game.com/)
Cosm is another fun online fantasy-based role-playing game.
C&C Attack Copter by Electronic Arts (http://www.eagames.com/free/home.jsp)
This is a free online action game based on the Command & Conquer series.
Roboforge by Liquid Edge Games (http://www.roboforge.com)
Train a 3D robot to fight in online tournaments. It was given an "Excellent 87%" by PC Gamer Magazine.
Galactic Village by Galactic Village Games (http://www.galactic-village.com)
Galactic Village is a massively multiplayer strategy game, written entirely in Java. Not yet finished though alpha versions have been appearing.
Wurm Online by Mojang Specifications (http://www.wurmonline.com/)
This is another massively multiplayer fantasy game, written in Java. It's still in the alpha stages of development, but the screenshots look great.
Jellyvision (http://www.jellyvision.com/)
Jellyvision used a mix of Java and C++ in their popular Who Wants to Be a Millionaire (2000) and You Don't Know Jack (1995) games. They employed Java for the game logic, an approach used in Majestic (2001) by Electronic Arts.
Vampire the Masquerade: Redemption (2000) by Nihilistic software (http://www.nihil-istic.com/).
Java was utilized as a scripting language in this highly acclaimed game.
Tom Clancy's Politika (1997) by Red Storm Entertainment (http://www.redstorm.com/)
This game was written in almost pure Java. Shadow Watch (2000) and Tom Clancy's ruthless.com (1998) mixed Java and C/C++.
A good source for nontechnical lists of Java games, both commercial and freeware/shareware, can be found on the Java games pages at java.com (http://www.java.com/en/games/). The pages divide games into several categories: action, adventure, strategy, puzzle, cards, sports, and so on.
Freeware/Shareware Games
Many Java games are out on the Web, but finding a game that's written well requires a careful search. Many applets date from the late 1990s and were designed using the outdated JDK 1.0 and 1.1 with their feeble media APIs (e.g., graphics, sounds). The initial Java euphoria produced some less than exciting games, more concerned with technical trickery than quality. This large pool of useless applets got Java labeled as a toy language.
Recent versions of Java are different. The speed has improved and APIs crucial to gamingsuch as graphics and audioare of a high quality. There's been a move away from applets towards the downloading of client-side applications using JWS.
Java's backward compatibility allows the applets from 1996 to 1998 to be executed, and they'll often run quicker than the original applets. However, it's probably best to steer clear of these Java dinosaurs and look for more modern code.
Numerous web sites use Java games. The emphasis of the following list is on applications/applets for playing:
Java Games Factory (JGF) (http://grexengine.com/sections/externalgames/)
There aren't many games at this site (about 50), but they're all high quality. The aim is to show off various modern Java game technologies.
ArcadePod.com (http://www.arcadepod.com/java/)
Over 750 Java games, nicely categorized.
Java 4 Fun (http://www.java4fun.com/java.html)
Similar in style to ArcadePod, with a good set of links to other sites.
jars.com (http://www.jars.com)
A general Java site with a ratings scheme. There are many games, but a lot of them are old applets.
Java Shareware (http://www.javashareware.com/)
Another general site: look under the categories applications/games and applets/games.
Java Games Central (http://www.mnsi.net/tild rkerr/)
A personal web site that lists games with ratings and links. It was last updated in 2001.
Some of my favorite freeware/shareware games are:
Super Elvis; also known as Hallucinogenesis (http://www.puppygames.net/downloads/hallucinogenesis/hallucinogenesis.jnlp)
This game won the Sun Microsystems 2004 Technology Game Development Contest. Super Elvis can be downloaded from the puppygames web site using JWS.
FlyingGuns (http://www.flyingguns.com/)
A 3D multiplayer WWI fighter plane game/simulator. This came second in the contest but is my favorite.
Cosmic Trip (http://www.mycgiserver.com/tild movegaga/cosmictrip.html)
An arcade-style 3D game with striking graphics.
Squareheads (http://home.halden.net/tombr/squareheads/squareheads.html)
A multiplayer FPS (it came third in the developer contest).
Escape (http://javaisdoomed.sourceforge.net/)
A Doom-like FPS.
CazaPool3D (http://membres.lycos.fr/franckcalzada/Billard3D/Pool.html)
A pool game that allows online (single/multiplayer) play in an applet or as a standalone application.
Programmers looking for source code should start at one of the following sites:
SourceForge (http://sourceforge.net/search/)
SourceForge acts as a repository and management tool for software projects, many with source code. A recent search for (java + game) returned over 70 projects that had 40 percent or greater activity. One of the drawbacks of SourceForge is that deciding if a project is vaporware is difficult. Good projects that have been completed will show low activity after a time, dropping down the list of search results.
FreshMeat.com (http://freshmeat.net/)
FreshMeat maintains thousands of applications, most released under open source licenses. The search facilities are excellent and can be guided by game category terms. The results include rating, vitality, and popularity figures for each piece of software. A recent search for Java in the Games/Entertainment category returned nearly 70 hits. Many applications turn up at SourceForge and FreshMeat.
The "Your Games Here" Java Games Forum (http://www.javagaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=Announcements)
Implementers can post links to their games, and (perhaps more importantly) users can post their opinions as follow-ups.
Code Beach (http://www.codebeach.com)
CodeBeach has a searchable subsection for Java games that contains nearly 90 examples.
Programmers Heaven (http://www.programmersheaven.com/zone13/)
It has a "Java zone" containing some games.
This is better rephrased as "Java is slow compared to C and C++, the dominant languages for games programming." This argument was valid when Java first appeared (around 1996) but has become increasingly ridiculous with each new release. Some figures put JDK 1.0, that first version of the language, at 20 to 40 times slower than C++. However, J2SE 5.0, the current release, is typically only 1.1 times slower.
本书写于2005年。
71 楼
ray_linn
2008-03-02
lbfhappy 写道
难道非要把JAVA贬成一坨屎的样子,你们才开心?
你是无限放大吧??? 从java 3d推广到无限了... 小朋友回去读读书.
70 楼
ray_linn
2008-03-01
Nighthaven 写道
这是几种特效的地址,(当然和crysis之类的比,自然要弱一些)如果你的显卡比较郁闷跑不起来,就去翻我主贴的视频吧。
我的显卡很不幸,正好是NV 8800,不知道显卡太菜,还是这个引擎太菜? 我看是后者菜的可能性高一些.
69 楼
ray_linn
2008-03-01
嘿,理屈词穷了吧. 一个游戏引擎无法开发出象样的东西,那有什么意义.
一个demo连内容都没有,所消费的资源已经比一个合格的游戏还大,还有什么好说.....
"我想已经有人使用它做商业游戏,并且以此为生,就已经证明了它具有实用价值了" 这种毫无意义的话你已经重复了许多遍,请问那些游戏是不是因为效果太差被淘汰了,或者压根就没卖出几个拷贝?
一个demo连内容都没有,所消费的资源已经比一个合格的游戏还大,还有什么好说.....
"我想已经有人使用它做商业游戏,并且以此为生,就已经证明了它具有实用价值了" 这种毫无意义的话你已经重复了许多遍,请问那些游戏是不是因为效果太差被淘汰了,或者压根就没卖出几个拷贝?
68 楼
Nighthaven
2008-03-01
C3PO 写道
引用
你对计算机是怎么绘图的理解真是……
想看海浪也有啊,Cloth Effect,Environmental Mapping,Projected Water……What ever you want,you name it.
http://jmonkeyengine.com/index.php?option=com_content&task=view&id=27&Itemid=51
这是几种特效的地址,(当然和crysis之类的比,自然要弱一些)如果你的显卡比较郁闷跑不起来,就去翻我主贴的视频吧。
想看海浪也有啊,Cloth Effect,Environmental Mapping,Projected Water……What ever you want,you name it.
http://jmonkeyengine.com/index.php?option=com_content&task=view&id=27&Itemid=51
这是几种特效的地址,(当然和crysis之类的比,自然要弱一些)如果你的显卡比较郁闷跑不起来,就去翻我主贴的视频吧。
有些话我真的不想再说。去玩点游戏见见世面,鼠目寸光的不要出来发帖子好不好?
就那个海浪效果吧,82FPS,每帧是34686个三角形,这种效率放在现在的游戏里面也就勉强够渲染一个角色而已。《战争机器》在Xbox360上是每帧300万个多边形,保持在30FPS/s就是9000万,效率相差32倍,而且还不算人家GOW的大量特效,包括法相贴图、实时阴影、全屏抗锯齿、各向异性过滤和后期处理。所以别show那Jmonkey engine了,效率跟人家相差32倍还缺乏特效,这种玩意有实用价值?
我觉得我的脾气就已经够好了,还真能遇上让我发火的人。
翻翻你自己前面的回帖,错误理论一大堆,我心平气和一条一条给你说明,你倒是跑来一会一句“见见世面”,一会一句“鼠目寸光”。xbox360我的确没买,虚幻、crysis之类的我还是玩过的,目前顶级的游戏引擎是什么表现,网上视频满天飞,我不比你了解的少。
jMonkey Engine是一个开源的免费引擎,我从来没有指望它可以超过次世代主机上的大作用的引擎。即使如此,你做的比较也毫无道理,在硬件条件完全不同的情况下,你是如何得出渲染效率32倍的结论的?还有刚才那个ray_linn,居然拿出盟军敢死队这样和刚才那个海浪demo毫无共同点的东西来比较。你们的逻辑思维真是强大到让我惊讶。
至于jMonkey Engine有没有实用价值,我想已经有人使用它做商业游戏,并且以此为生,就已经证明了它具有实用价值了。
和你俩在这吵终究还是说明我自己的高度也不高,受不了挑衅,其实早就应该不跟你们一般见识。这是我最后一次回复你和ray_linn 的帖子,从现在开始随便你们怎么说,我不再和你俩理论了。
相关推荐
- **Java游戏现状**:虽然目前主流游戏开发更多依赖于C或C++等语言,但在Java平台上同样可以开发出高质量的游戏作品。 #### 二、Java游戏编程环境搭建 - **Java JDK安装**:确保计算机上已安装Java JDK,这是进行...
一、选题目的与Java游戏现状 选择开发基于Java的打砖块游戏,主要是因为打砖块游戏具有简单易懂的规则,适合初学者进行游戏编程实践。同时,Java语言以其跨平台性、面向对象特性和丰富的库支持,成为开发游戏的理想...
通过JAVA设计一个教育类网页游戏 此游戏的主要功能有: 1、主菜单页面要有进入游戏,退出游戏,游戏说明等主要功能。 2、玩家可以选择进入游戏,然后选择初级,中级,高级三种模式进行挑战, 每种模式对应不同的难...
#### 三、JAVA小游戏的发展现状及发展前景 ##### (一)发展现状 目前,虽然原生开发框架(如Unity、Unreal Engine)已成为主流,但Java仍然保持着一定的市场份额,特别是在一些新兴市场中。许多基于Java的移动...
它的逻辑性强,应用广泛,兼容性高,能够为各种计算机软件提供编程支持,如游戏、办公软件以及网页制作。Java的移植性和复制性使其在设计网页时成为必要条件,同时Java也是许多程序员在开发软件时的首选编程语言。 ...
Java游戏开发现状分析和走向 Java作为一门广泛应用于企业级应用的编程语言,近年来在游戏开发领域也逐渐崭露头角。随着Java技术的进步,尤其是运行效率的显著提升,使得Java能够处理复杂的3D图形,如Lwjgl、Jogl和...
简述Java游戏开发现状和选题背景; 2.了解Java在游戏开发方面的相关技术与环境; 3.设计实现游戏计分功能:每消去成对图片时加10分; 4.设计实现游戏重置功能:玩家遇到困难难以消除下一对图片时,可按下”重置...
本文从游戏的背景研究和发展现状开始,详细描述了整个游戏的制作过程。对实现 功能以及操作过程进行了重点讨论,开发用到了 Java类库中的许多包以及其中的类, 例如 java.util包,java.lang包,java.awt包等等,稳重...
JAVA目前在手机上应用最多的就是JAVA游戏。 Java也号称是能跨平台使用的语言,这主要是因为Java本身被编译之后,并不是直接产生可执行的码,而是产生一种中间码叫作 ByteCode,这种码必需在透过 Java 的直译器来解读...
通过本项目能帮助你掌握Java小程序的工作原理和使用方法、熟练掌握Java的事件处理机制、简述Java游戏开发现状和走向、了解AWT的基本体系结构,掌握窗口的基本原理、了解Swing的基本体系结构,掌握Swing组件的使用...
游戏通过分析JAVA游戏开发和代码设计,用Eclipse软件开发了坦克大战游戏,运用接口技术,使一个类能够实现多个接口,使用套接字Socket来完成client端和server端的连接。玩家通过连接访问进入游戏,通过操纵坦克来...
【文献综述】基于JAVA的俄罗斯方块游戏设计与实现 在计算机科学与技术领域,设计和实现基于JAVA的俄罗斯方块游戏是一个受欢迎的实践项目,因为它不仅深受玩家喜爱,而且具有教学价值。俄罗斯方块游戏以其简洁的游戏...
Java游戏设计打飞机程序(源代码+WORD论文) 1.1 手机软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机...
1.1.1 手机游戏现状 手机游戏的普及率极高,尤其是在公共交通工具上。根据2008年的数据,中国手机用户已超过6亿,市场潜力巨大。开发技术如K-JAVA和BREW游戏支持付费下载,其中K-JAVA由于中国移动的市场主导地位而...
1.1 手机软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。但是传统手机存在以下弊端: 1. 传统手机出厂时均由硬件...
1.1 手机游戏现状 手机游戏因其便携性和普及性,已经成为人们日常生活的一部分。根据2008年的数据,中国手机用户数量超过6亿,并持续增长。手机游戏开发门槛较低,开发者可以通过开源平台如J2ME获取技术资料。销售...
2.4 **研究现状** - 贪吃蛇游戏作为经典的休闲游戏,已有多种实现版本,但使用Java实现可以提供独特的学习和创新机会。 2.5 **研究目的** - 目的可能是为了提高开发者的游戏编程技能,理解Java语言在实时交互应用中...
Java游戏开发的现状 提到游戏开发,更多地会提到C和C++,这两个语言在游戏开发中有稳定和高效的表现。作为主流开发语言的Java是否也能在游戏开发方面展现良好的一面呢?从理论上讲,Java语言当然能被用来开发游戏...
基于Java的飞机大战游戏的设计与实现设计软件源码+word毕业论文文档。基于Java的飞机大战游戏主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐。我方飞机可以随意移动,敌方飞机无...
### 毕业论文java俄罗斯方块游戏 #### 摘要 在当前电子信息高速发展背景下,电子游戏已融入日常生活中,成为广泛受欢迎的娱乐形式。然而,游戏设计融合了先进的技术,涉及复杂的设计、艺术、声音和软件开发,因此...