自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析Java游戲開(kāi)發(fā)現(xiàn)狀和走向

開(kāi)發(fā) 后端 游戲開(kāi)發(fā)
由于Java技術(shù)及硬件技術(shù)的不斷發(fā)展,許多基于Java的2D和3D游戲不斷產(chǎn)生,其中不乏大型多人在線(xiàn)游戲。現(xiàn)在讓我們來(lái)看看Java游戲的開(kāi)發(fā)現(xiàn)狀和走向是什么樣的。

這些年由于Java技術(shù)的不斷發(fā)展,Java程序的運(yùn)行速度有了顯著提升,同時(shí)硬件技術(shù)也在不斷進(jìn)步,從而使得Java處理比較復(fù)雜的3D圖形成為可能。Lwjgl,Jogl,Java3D等技術(shù)的出現(xiàn),使Java語(yǔ)言可以方便的利用現(xiàn)在的顯卡日益強(qiáng)大的硬件加速能力。實(shí)際上目前已經(jīng)有許多基于Java的2D和3D游戲,其中不乏大型多人在線(xiàn)游戲。

Wurm online一個(gè)多人在線(xiàn)網(wǎng)絡(luò)游戲(06年的時(shí)候進(jìn)入了收費(fèi)運(yùn)行階段,不過(guò)你還是可以申請(qǐng)一個(gè)免費(fèi)帳號(hào)進(jìn)去看看):

http://www.wurmonline.com/

2007年Javaone上jmokeyengine演示視頻:

http://www.youtube.com/watch?v=ho_b18HRmGA&eurl=http%3A%2F%2Fwww%2Ejmonkeyengine%2Ecom%2F

一個(gè)比較老的視頻2005GDC上Java游戲演示視頻:

http://www.youtube.com/watch?v=Pc3LxBIVaBs&feature=related

上面這些只是Java游戲的一小部分。然而,即使還有其它很多基于Java的游戲,相對(duì)于整個(gè)游戲產(chǎn)業(yè)來(lái)說(shuō),Java游戲社區(qū)仍然非常小,以至于其力量在手機(jī)游戲之外的領(lǐng)域幾乎可以被忽略不計(jì)。但是實(shí)際上Java作為一種游戲編程語(yǔ)言和平臺(tái),這些年還是取得了長(zhǎng)足的發(fā)展,在后applet時(shí)代走著復(fù)興之路。

當(dāng)然,Java可以做游戲,并不意味著Java就適合做游戲,那么:

Java對(duì)于一個(gè)游戲的意義

1. Java是一門(mén)經(jīng)過(guò)充分發(fā)展,已經(jīng)十分成熟的語(yǔ)言

Java語(yǔ)言稱(chēng)霸企業(yè)級(jí)應(yīng)用這么多年,事實(shí)證明了它非常適合于開(kāi)發(fā)大型軟件。當(dāng)Java的運(yùn)行效率不再是問(wèn)題的時(shí)候,JJava語(yǔ)言嚴(yán)謹(jǐn)、高抽象、可讀性強(qiáng)的優(yōu)勢(shì)就體現(xiàn)出來(lái)了。這對(duì)于規(guī)模越來(lái)越龐大的游戲軟件來(lái)說(shuō),有著不小的誘惑。

2. Java作為平臺(tái),極大的方便了游戲腳本的使用

對(duì)于游戲開(kāi)發(fā)來(lái)說(shuō),由于涉及到比較復(fù)雜的情況(有時(shí)候甚至是美學(xué)問(wèn)題),開(kāi)發(fā)過(guò)程很多時(shí)候是一個(gè)不斷修改的過(guò)程,可以方便的修改游戲內(nèi)容是十分關(guān)鍵的。對(duì)于很多游戲引擎來(lái)說(shuō),都有自己編寫(xiě)的腳本解釋器,用來(lái)解釋一些自定義的游戲腳本語(yǔ)言(一般為命令式腳本,比如moveplayer(int x,int y),playersmile()之類(lèi)的東西),另一些則提供了例如lua和rubby等的腳本語(yǔ)言來(lái)訪(fǎng)問(wèn)游戲引擎。由于其虛擬機(jī)特性,Java本身就可以用來(lái)編寫(xiě)游戲腳本,目前也有例如beanshell、groovy等腳本語(yǔ)言可以方便的無(wú)縫的和Java語(yǔ)言進(jìn)行交互,這些都極大的方便了Java游戲編程。

3. 跨平臺(tái)

跨平臺(tái),每當(dāng)比較Java與其他語(yǔ)言的時(shí)候,總是要談到跨平臺(tái)。但是在Java游戲領(lǐng)域,write once ,run everywhere,聽(tīng)起來(lái)更像是一個(gè)冷笑話(huà)。這個(gè)笑話(huà)有多冷呢?(手機(jī)游戲我不熟悉,但是確實(shí)有人用“痛苦”來(lái)形容開(kāi)發(fā)運(yùn)行在不同手機(jī)上的Javame游戲)對(duì)于其他大多數(shù)Java游戲來(lái)說(shuō),或者通過(guò)applet或者通過(guò)Java web start來(lái)部署,這兩種方式無(wú)一例外的都要用到瀏覽器。對(duì)于Java web start來(lái)說(shuō),問(wèn)題相對(duì)較小,程序員必須處理的問(wèn)題主要是如何讓非專(zhuān)業(yè)用戶(hù)成功安裝指定的JRE版本的問(wèn)題,雖然很麻煩,但是是可以解決的。對(duì)于applet來(lái)說(shuō),問(wèn)題就變得復(fù)雜的多,很多問(wèn)題只會(huì)在特定的操作系統(tǒng)配上特定的瀏覽器時(shí)才會(huì)出現(xiàn),即使是同一品牌的瀏覽器,不同的瀏覽器版本也會(huì)出現(xiàn)不同的問(wèn)題,同時(shí)這里還涉及到客戶(hù)機(jī)默認(rèn)是使用opengl pipeline還是directdraw pipeline的問(wèn)題。而我們現(xiàn)在甚至還沒(méi)有開(kāi)始討論當(dāng)3d游戲需要使用底層圖形api時(shí)的情況,無(wú)論是applet還是web start一旦在程序中使用了任何一種opengl的Java綁定,客戶(hù)機(jī)各不相同的顯卡以及同一款顯卡的不同驅(qū)動(dòng)都會(huì)帶來(lái)不同的問(wèn)題,而這些問(wèn)題是隨著操作系統(tǒng)和瀏覽器的不同而不同的,操作系統(tǒng)數(shù)×瀏覽器數(shù)(web start不需要考慮瀏覽器)×顯卡數(shù)×每款顯卡平均的驅(qū)動(dòng)版本數(shù)=噩夢(mèng)。最后你不得不妥協(xié)于這樣一個(gè)現(xiàn)實(shí)-----即使電腦在硬件上滿(mǎn)足程序的要求,你也無(wú)法讓你的程序運(yùn)行在這些電腦中的每一臺(tái)上,除非你的用戶(hù)都是專(zhuān)業(yè)人士。

當(dāng)然,其實(shí)現(xiàn)狀并沒(méi)有聽(tīng)起來(lái)那么糟糕,對(duì)于不使用Java的大多數(shù)游戲來(lái)說(shuō),根本就只能運(yùn)行在一個(gè)平臺(tái)上,許多游戲?qū)irectx或者opengl的版本有要求,更不要提那些運(yùn)行在家用游戲機(jī)上的游戲了,跨平臺(tái)是整個(gè)游戲業(yè)的大問(wèn)題,Java只是像其他人一樣沒(méi)有把這個(gè)問(wèn)題徹底解決掉而已,但仍然比其它技術(shù)做得要好。不過(guò),值得一提的是,在那些不直接使用硬件加速的網(wǎng)頁(yè)小游戲上,Java確實(shí)在穩(wěn)定性和方便安裝上輸給了flash;在家用機(jī)方面,Java是0,而微軟的xna(c#)可以跨xbox360和vista。

4. 網(wǎng)絡(luò)

Java一向強(qiáng)于解決網(wǎng)絡(luò)方面的問(wèn)題,在這方面,Java主要有兩個(gè)優(yōu)勢(shì),第一是基于applet和Java web start的游戲非常容易更新,不會(huì)像其他游戲那樣需要用戶(hù)手動(dòng)下載全新版本;第二是Java在網(wǎng)絡(luò)交互的api相對(duì)比較友好,而對(duì)于大型網(wǎng)絡(luò)游戲來(lái)說(shuō),分布式系統(tǒng)非常重要,這正是JCP的巨頭們喜歡的東西,可能由于這是一個(gè)賣(mài)硬件的好機(jī)會(huì),sun下了不少功夫開(kāi)發(fā)了project dark star來(lái)做網(wǎng)絡(luò)游戲服務(wù)端,由于這個(gè)工程還沒(méi)有到1.0,所以現(xiàn)在也很難說(shuō)具體好用不好用。

5. 速度

這個(gè)沒(méi)什么可討論的,基于Java的游戲肯定會(huì)比寫(xiě)得很好的c++程序慢,當(dāng)然寫(xiě)一個(gè)好的c++程序所花費(fèi)的龐大的薪水也是Java不能比的。

#p#

Java游戲方面主要的技術(shù)

1. Java3D

作為sun公司較早推出的一項(xiàng)3d技術(shù),是一種高度封裝的api,構(gòu)建在opengl和direct3d之上,可以說(shuō)是最有名的Java的3d技術(shù)。由于種種原因(api設(shè)計(jì),面向的用戶(hù)不明確),Java3d一直沒(méi)有辦法流行,不久前Java3d的團(tuán)隊(duì)宣布暫停對(duì)Java3d新功能的開(kāi)發(fā),轉(zhuǎn)而為JavaFX開(kāi)發(fā)3d 渲染引擎。同時(shí)sun的另一個(gè)項(xiàng)目 project wonderland宣布將其渲染引擎由Java3d轉(zhuǎn)為JMonkeyEngine。令人唏噓的是sun的Java3d再次進(jìn)入塵封狀態(tài),大量基于Java3d的程序和教程都面臨一個(gè)非常尷尬的境地;令人高興的是在這一領(lǐng)域終于有比sun做得更好的團(tuán)隊(duì)出現(xiàn)了。引用別人對(duì)此事的評(píng)價(jià):Java3D is dead! Long live Java "3D"!

2. Lwjglhttp://new.lwjgl.org/index.php

全名為light weight Java game library。作為一個(gè)非官方的對(duì)Java游戲的全面解決方案,lwjgl將游戲圖形(opengl)、音效(openal)、控制輸入集合為一,以成為Java界的directx(不是direct3d)而努力。其在圖形方面采用了opengl的Java綁定,其函數(shù)與c語(yǔ)言版的完全相同,所以對(duì)于習(xí)慣opengl編程的程序員來(lái)說(shuō)比較友好。目前有大量的Java游戲和游戲引擎是基于lwjgl的,它可以說(shuō)是Java游戲社區(qū)最廣為被使用的函數(shù)庫(kù)之一。

3. Joglhttps://jogl.dev.Java.net/

Jogl是Java對(duì)opengl的一個(gè)綁定,或者說(shuō)是opengl接口的Java實(shí)現(xiàn),它是由sun支持的。其語(yǔ)法與opengl完全相同,api也緊跟隨著opengl的版本進(jìn)行更新,而Nehe的opengl范例程序大多數(shù)都有jogl版本。去年jogl正式通過(guò)jcp審核成為jsr231,是lwjgl的主要競(jìng)爭(zhēng)者。值得一提的是,jogl項(xiàng)目的領(lǐng)導(dǎo)者Ken Russell曾經(jīng)聲明并不希望jogl成為jre的一部分,因?yàn)樗J(rèn)為這樣會(huì)使jogl的更新周期與jre相同,從而變得過(guò)于緩慢。Ken Russell目前全力工作在新的Java plug-in的開(kāi)發(fā)上,而opengl的api也沒(méi)有進(jìn)行更改,所以現(xiàn)在的jogl版本將持續(xù)較長(zhǎng)的一段時(shí)間。

4. Joal (https://joal.dev.Java.net/)

Java對(duì)openal的一個(gè)綁定,是Java音效的一個(gè)解決方案。

5. Jinput (https://jinput.dev.Java.net/)

Java對(duì)非標(biāo)準(zhǔn)輸入設(shè)備(游戲手柄,操縱桿)的解決方案。

6. JMonkeyEnginehttp://www.jmonkeyengine.com/

JMonkeyEngine是一個(gè)開(kāi)源Java游戲引擎,對(duì)底層高度封裝,經(jīng)過(guò)4年的開(kāi)發(fā),在去年的10月終于發(fā)布了1.0版本。在2007的Javaone會(huì)議上發(fā)布了相當(dāng)震撼的演示視頻,從而廣受關(guān)注,據(jù)說(shuō)會(huì)場(chǎng)的許多屏幕特效也是由它完成的。在底層,JMonkeyEngine采用了lwjgl,而jogl可能會(huì)在2.0版本中得到支持。去年著名的網(wǎng)絡(luò)游戲公司ncsoft(天堂系列,激戰(zhàn),英雄城市,Tabula Rasa等游戲的開(kāi)發(fā)商)將JMonkeyEngine的三位主要開(kāi)發(fā)人員招入麾下,也許不久的將來(lái)我們就可以看到這一引擎的商業(yè)版本。值得一提的是,在任職ncsoft之后,引擎的主要開(kāi)發(fā)者聲稱(chēng)現(xiàn)在有了更多的時(shí)間進(jìn)行游戲引擎開(kāi)源版本的開(kāi)發(fā),而目前JMonkeyEngine的開(kāi)發(fā)速度也確實(shí)大幅提升,2.0本版可能在08年稍晚一些時(shí)候就會(huì)發(fā)布。此外,由sun開(kāi)發(fā)的project wonderland不久前宣布將把其渲染引擎由Java3d轉(zhuǎn)為JMonkeyEngine,使得JMonkeyEngine進(jìn)一步受到廣泛關(guān)注。

7. Project Darkstarhttp://www.projectdarkstar.com/

目前project darkstar為0.95版,是sun專(zhuān)門(mén)針對(duì)網(wǎng)絡(luò)游戲的方面的應(yīng)用所開(kāi)發(fā)的。這個(gè)項(xiàng)目主要致力于解決大型游戲服務(wù)器的分布式應(yīng)用問(wèn)題,個(gè)人感覺(jué)類(lèi)似于網(wǎng)絡(luò)游戲應(yīng)用中的j2ee。對(duì)于普通游戲的網(wǎng)絡(luò)傳輸,project darkstar也給出了自己的解決方案。但是不少人認(rèn)為darkstar并不致力于簡(jiǎn)化普通游戲的網(wǎng)絡(luò)應(yīng)用,因?yàn)檫@個(gè)項(xiàng)目主要是對(duì)大型網(wǎng)絡(luò)游戲服務(wù)器的分布式應(yīng)用進(jìn)行解決,從而促進(jìn)sun自己生產(chǎn)的服務(wù)器的銷(xiāo)售。當(dāng)然我并沒(méi)有真正使用或研究過(guò)它,只是道聽(tīng)途說(shuō),很有可能有錯(cuò)誤。

8. Project Wonderlandhttps://lg3d-wonderland.dev.Java.net/index.html

Sun開(kāi)發(fā)的一個(gè)3d虛擬世界構(gòu)建工具,sun使用這個(gè)工程制造了一個(gè)虛擬工作環(huán)境MPK20,物理上處于不同大陸的人們?cè)谶@個(gè)虛擬世界中可以在一間屋子里協(xié)同工作,這個(gè)項(xiàng)目的演示視頻非常不錯(cuò),建議去它的主頁(yè)看一下。

值得一提的Java游戲

國(guó)內(nèi)有一個(gè)叫《海天英雄傳》的2d網(wǎng)絡(luò)游戲號(hào)稱(chēng)是用Java實(shí)現(xiàn)的,地址:http://herogame.njoys.com/,這款游戲幾年前最鼎盛的時(shí)期也沒(méi)什么名氣,目前這個(gè)游戲基本已經(jīng)處于生命周期的最后階段了,可能不久后就會(huì)停運(yùn)。

Wurm online一個(gè)多人在線(xiàn)網(wǎng)絡(luò)游戲,大多數(shù)商業(yè)版本的Java游戲?qū)嶋H上都是將Java代碼預(yù)先編譯成字節(jié)碼,因而不需要客戶(hù)安裝Java虛擬機(jī),這個(gè)游戲是少有的幾個(gè)確實(shí)要求客戶(hù)安裝Java虛擬機(jī),而同時(shí)又運(yùn)營(yíng)的相當(dāng)不錯(cuò)的游戲。地址:http://www.wurmonline.com/

未來(lái)

目前來(lái)看Java游戲并沒(méi)有出現(xiàn)顯著的上升趨勢(shì),除手機(jī)游戲外,Java游戲基本處于蟄伏狀態(tài)。未來(lái)Java游戲可能迎來(lái)幾個(gè)契機(jī):

1. Java SE 6 Update N (之前被叫做 "Consumer JRE")的發(fā)行

在這個(gè)新的版本中,sun號(hào)稱(chēng)其將讓Java升級(jí)更方便,部署更簡(jiǎn)單(方便的探測(cè)客戶(hù)端的Java版本,并安裝程序需要的版本),用戶(hù)將能夠只安裝jre中他們需要的部分,對(duì)于暫時(shí)用不到的部分可以等到用的時(shí)候再安裝,同時(shí)加速Java虛擬機(jī)的啟動(dòng)速度(實(shí)際上就是在電腦剛開(kāi)機(jī)的時(shí)候就啟動(dòng)Java虛擬機(jī),而不是在第一次運(yùn)行Java程序的時(shí)候),增加對(duì)swing的硬件加速支持。而新的Java plug-in將大幅增強(qiáng)applet的穩(wěn)定性,可靠性,將允許applet更改自己可以使用的內(nèi)存大小,選擇使用哪個(gè)特定版本的jre執(zhí)行。

實(shí)際上一旦applet變得穩(wěn)定,Java面對(duì)flash將體現(xiàn)出巨大的性能優(yōu)勢(shì),因此Java SE 6 Update N的發(fā)布將是Java游戲界未來(lái)一段時(shí)間內(nèi)最大的契機(jī)。

2. JavaFX的發(fā)布

JavaFX的目標(biāo)是讓JavaFX像flash一樣易于開(kāi)發(fā),如果這個(gè)項(xiàng)目真的能成功的話(huà),對(duì)于Java游戲的影響將非常巨大(不過(guò)由于缺乏flash所擁有的方便的開(kāi)發(fā)工具,我對(duì)JavaFX成功的可能性深表懷疑)

3. Sony或是任天堂決定在家用游戲機(jī)上支持Java

這個(gè)的希望非常渺茫的,但是考慮到微軟的XNA做到了跨windows和xbox360平臺(tái),也許sony在ps3屢遭敗仗的情況下會(huì)考慮一下支持Java。實(shí)際上現(xiàn)在的家用游戲機(jī)就是電腦,很多發(fā)燒友已經(jīng)可以在ps3和wii上運(yùn)行Java程序了,只是目前Java無(wú)法使用這些機(jī)器的硬件加速功能。

4. 手機(jī)進(jìn)一步發(fā)展

目前看來(lái)移動(dòng)設(shè)備的功能已經(jīng)越來(lái)越強(qiáng)大,手機(jī)的性能也許在不久的將來(lái)可以達(dá)到電腦的水準(zhǔn),手機(jī)游戲也將占據(jù)游戲市場(chǎng)越來(lái)越大的份額,那么由于手機(jī)的操作系統(tǒng)種類(lèi)繁多,跨平臺(tái)的Java自然也會(huì)越來(lái)越受青睞。

【編輯推薦】

  1. Java正則表達(dá)式入門(mén)
  2. 成為Java高手的25個(gè)學(xué)習(xí)要點(diǎn)
  3. Java遠(yuǎn)程通訊可選技術(shù)及原理
責(zé)任編輯:楊鵬飛 來(lái)源: 編程之家(冉)的博客
相關(guān)推薦

2009-09-16 14:56:23

C++

2009-07-07 09:25:08

Linux開(kāi)發(fā)FOSS開(kāi)發(fā)項(xiàng)目

2013-10-30 12:31:38

2016-10-26 13:45:45

云計(jì)算IaaS趨勢(shì)

2022-11-24 14:46:14

網(wǎng)絡(luò)社區(qū)發(fā)現(xiàn)

2011-01-28 15:20:53

開(kāi)發(fā)者MGF

2009-02-12 09:12:27

JPAEJBJSF

2013-10-29 13:25:03

開(kāi)源社區(qū)

2020-01-21 09:10:04

AndroidGoogle 移動(dòng)系統(tǒng)

2023-06-09 14:07:42

量子計(jì)算

2022-06-22 13:20:21

物聯(lián)網(wǎng)傳感器機(jī)器

2014-09-18 09:06:06

SDN

2019-10-25 15:55:33

工業(yè)互聯(lián)網(wǎng)制造業(yè)生產(chǎn)

2011-05-23 15:10:16

接入網(wǎng)

2011-07-04 13:36:15

2009-02-03 09:15:20

C#VB.NETLinq

2012-09-26 10:39:02

2016-09-29 22:54:55

2012-07-18 10:12:41

移動(dòng)應(yīng)用軟件

2011-11-08 11:29:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)