论坛首页 Java企业应用论坛

Java游戏现状

浏览 74464 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-03-04  
java刚开始开发这样网络3D游戏,能达到这样水平,很不错了.就如小孩子,跟大人打架,打输了,并说明,小孩子长大以后,也会输啊.
0 请登录后投票
   发表时间: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++这些编译型语言吗?笔者认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言。未来,它们之间一定会保持长久的和谐互补关系,相辅相成。

五.结语

综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。
0 请登录后投票
   发表时间: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#就能轻松实现。
0 请登录后投票
   发表时间:2008-03-05  
ssuupv 写道

综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。


崩溃了,网游开发公司里什么人员写LUA?策划人员。

去面试游戏开发工程师,你说你精通LUA......
0 请登录后投票
   发表时间: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游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.
0 请登录后投票
   发表时间: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游戏状况,现在开发游戏已是分工比较明细的.有专门做引擎的专业公司,游戏公司开发游戏只是调用他们引擎,有几个游戏公司自己专门开发游戏引擎.基本上都是游戏策划,然后程序通过脚本调用引擎.实现功能.



请麻烦看看我和C3Po从哪里开始质疑lz的发言,就是从3D游戏的引擎开始,请问Java哪一款3D引擎能胜任游戏开发了?
0 请登录后投票
   发表时间:2008-03-06  
又发现一款好的java 3D射击游戏;叫着
合金战士:特种部队(Chrome Specforce)
感觉蛮不错的.喜欢3D射击英雄的朋友.可以玩玩
0 请登录后投票
   发表时间:2008-04-06  
我看JAVA开发3D游戏还是有前途的,开发资源可以慢慢积累.有那么多的JAVA程序员还在这一行混,总会在3D游戏这一块混出名堂来的.人家老史一开始也没有跟WOW正面交战呀,先搞个2D游戏赚些钱,再积累技术开发3D游戏,上市搞来几十亿来继续开发,即使名声臭了,再换个名字,还是照样过日子.

现在CPU双核时代,内存都开始慢慢流行2G以上的了,再要求在C666上运行游戏有啥意义. 若说3D性能高就OK,那怎么解释WII把PS3搞下来的事实呀. 只要有适当的游戏内容及好玩的地方,游戏总会成功的.你C能做华丽的3D,我用JAVA做休闲的3D游戏,难道不行吗?等电脑性能更上一台阶了,再做更好的华丽的3D游戏,行不?

0 请登录后投票
   发表时间:2008-04-10  
呵呵,各位大人都是大师.
支持大家讨论问题,ray_linn\Nighthaven\C3PO  三位的的回帖和跟贴让我学到了更多的东西.
其实大家完全没有必要去生气.
大家看事情的角度不同,得出的结论也不同.
我感到高兴的是,大家把各自的角度看到的问题都说出来了,让我们这些看客更全面看待这些东西.
0 请登录后投票
   发表时间:2008-07-27  
楼主是在讨论用java做游戏!
怪不得中国没好的游戏,看看某些回贴人的水平就明白了
都拿java3d引擎的表现力和性能开始喷楼主了?
非得是孤岛那样画面的FPS游戏才叫游戏? 才叫3D引擎?
10年暴雪,暗黑,魔兽,星际,2D游戏居多,即便是3D的War3,wow,暗黑3也不是某些人所谓的像CryEngine那样的画面牛逼型,细腻的引擎里更多的细节并不是去靠显卡体现的!bioware从博德1 2,无冬1,2做到现在的龙腾世纪,无冬1是很牛逼的3d引擎吗?我看无冬的效果java完全可以做出来,无冬2?很牛逼的画面换来的是什么?Halo1代成名,PC版也没看出来画面多了几个多边形。神作永远不屑去抱nvidia,ati的大腿。
敢问回帖喷楼主的有几个是懂做游戏的?有几个做出过好游戏?玩几个次世代主机的游戏,被画面震撼一下就变成懂游戏的人了?~ 嘴里夹着点专业名词就摇身变成3d引擎开发员了?又让我想起了jdk1.0的时代,面对新鲜事物第一个反应就是主观臆断的极端批判,可见触动了某些人那脆弱的神经。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics