Java游戲開發(fā)要學(xué)什么?所謂的游戲開發(fā)編程語言其實有很多,基本上任何一種語言都可以作為游戲服務(wù)器的編程語言。這需要根據(jù)自己游戲的類型和要求加以選擇。比如C++,Java,Erlang,go等等。目前我用過的只有C++和Java.但是以Java為主。所以接下來就以自己的經(jīng)驗,談?wù)勔訨ava為核心的游戲服務(wù)器開發(fā)技術(shù)體系。
Java目前作為游戲服務(wù)器開發(fā)語言已經(jīng)很是普遍。但是大多數(shù)是作為頁游或手游的服務(wù)器,而端游戲一般選擇C++,因為端游對服務(wù)器的性能要求相對比較高一些。兩種語言各有利弊。C++效率高,但是掌握度難些。沒有Java易于掌握。而目前對于追求快速上線率的頁游和手游來說,Java成了一個不錯的選擇。
一、Java的技術(shù)系統(tǒng)
需要學(xué)習(xí)的技術(shù):
(1)Java基礎(chǔ)知識
(2)JavaNIO編程
(3)Netty,Mina網(wǎng)絡(luò)框架精通一種,其它作為了解。
(4)一種緩存框架:Redis;memcache熟悉使用一個。
(5)SQL語言,用于數(shù)據(jù)庫:mysql數(shù)據(jù)庫
(6)springmvc主要用于http協(xié)議的服務(wù)器
(7)多線程編程,明白線程安全的重要性。
(8)Java并發(fā)集合的掌握。
(9)Linux常用的基本命令及shell腳本。
(10)數(shù)據(jù)庫操作,比如mybatis。
以Java為服務(wù)器編程語言來說,掌握J(rèn)ava的基本知識就不必說了,是必不可少的??梢詤⒖肌禞ava編程思想》,《Java核心技術(shù)》等書。根據(jù)游戲通信協(xié)議的不同,大致有兩種實現(xiàn)方式:Socket和http。先說簡單些的http協(xié)議,這個協(xié)議已經(jīng)很成熟的應(yīng)用到了網(wǎng)站上。而Java語言也可以用于網(wǎng)站開發(fā),所以相當(dāng)就簡單些?,F(xiàn)在有很多開源的服務(wù)器軟件,比如:tomcat,resin等。游戲前端不管是頁游flash,還是手游的Android,IOS都支持http協(xié)議,只要把游戲的邏輯數(shù)據(jù)按post方法向服務(wù)器發(fā)出請求即可了。
二、學(xué)習(xí)流程
當(dāng)然了,學(xué)習(xí)這些東西并不是一蹴而就的。需要根據(jù)實踐循環(huán)漸進,這里推薦一個學(xué)習(xí)流程:
(1)對于初學(xué)Java的人來說,如果自學(xué)能力好些,可以買些書自己練習(xí),而現(xiàn)在又更的多選擇參加Java培訓(xùn)機構(gòu),以快速的掌握J(rèn)ava的知識。
(2)掌握了Java知識之后,要多寫代碼實踐。這個時候可以結(jié)合mysql學(xué)習(xí)SQL語言,掌握數(shù)據(jù)庫的操作。比如用springmvc寫一個小網(wǎng)站,用mybatis實現(xiàn)網(wǎng)站數(shù)據(jù)的增,刪,改,查等功能。
(3)完成上步之后,可以在服務(wù)器程序和數(shù)據(jù)庫之間加一個緩存,學(xué)習(xí)redis或memcache。
(4)把程序部署到linux服務(wù)器上,練習(xí)linux的基本命令及shell腳
免責(zé)聲明:內(nèi)容來源于公開網(wǎng)絡(luò),若涉及侵權(quán)聯(lián)系盡快刪除!
有,我個人比較喜歡Java的框架。這也是安卓應(yīng)用開發(fā)的祖?zhèn)骺蚣苤涣恕F鋵崿F(xiàn)在安卓的應(yīng)用市場是很大的,因為更多人的手機系統(tǒng)應(yīng)用的是安卓。因為安卓的市場份額和手機應(yīng)用的火熱,與之相關(guān)的一些程序員在這些方面也是有很大的前途的。雖然程序員的工作比較累,但每年還是有無數(shù)人前仆后繼加入其中。
01、安卓應(yīng)用的原生框架,Java和c++
說實話我其實對程序不太懂,但是因為有朋友在學(xué)Java,所以我也讀這個比較有好感。手機上的一些應(yīng)用最基礎(chǔ)的設(shè)計和功能基本上都是通過Java和c++實現(xiàn)的。通過這兩種程序語言,不僅可以設(shè)計出安卓應(yīng)用,還包括網(wǎng)頁和其他方面的很多東西。這兩種語言都比較靈活,可以讓用戶體驗更流暢、更便捷。
02、Unity開發(fā),比較不錯的安卓游戲開發(fā)框架
Unity是一種什么樣的語言呢?相較于Java來說,Unity其實更適合游戲開發(fā)。因為很多游戲都是二維、三維的,使用這種語言開發(fā)游戲會比開發(fā)應(yīng)用更方便一些。舉一個我們平常經(jīng)常玩的游戲,比方說王者榮耀,就是通過這種技術(shù)實現(xiàn)的。Unity的種類特別多,所以相較于Java來說,內(nèi)容更集中一些。
03、作為開源框架的React Native,走在前端
React Native這個東西是一個開源框架,可以對開源軟件進行定義。這個框架算是一個比較新鮮的框架了。而且React Native的利用率是非常高的。現(xiàn)在很多網(wǎng)頁瀏覽器已經(jīng)選擇React Native作為自己的選擇了。像ins和沃爾瑪,都對這一框架十分青睞。所以它的未來是比較被看好的。
首先,我得說明的是,目前市場上新人很難去做pc游戲開發(fā),要么是做頁游要么是手游。
頁游不清楚我就不說了,手游里面,客戶端主要就是c2d和u3d。
如果你想做客戶端,那么你可以轉(zhuǎn)學(xué)u3d,因為它使用的語言是csharp,這個語言和java相似。網(wǎng)上unity的教程也很多,你隨便找一下就有了。
再說說手游服務(wù)器,其實我入行服務(wù)器還是挺巧合的,當(dāng)初本來是打算做客戶端的,都入職了,因為招不到服務(wù)器,就讓我轉(zhuǎn)服務(wù)器了。。
服務(wù)器的教程,我至今也沒找到,而且也找不到系統(tǒng)的教程。
開源的服務(wù)器框架也只熟悉kbengine和scut。其中一個是cpp做底層python做開發(fā)的,一個是csharp做開發(fā)。而且scut已經(jīng)兩年沒有更新了,應(yīng)該是死掉了。
所以,想要學(xué)服務(wù)器開發(fā),得碰點運氣。
java服務(wù)器目前主流框架技術(shù)有網(wǎng)絡(luò)層netty或mina,數(shù)據(jù)協(xié)議protobuf,數(shù)據(jù)庫mysql,緩存數(shù)據(jù)庫redis,jdbc一般是mybaits或者jpa,項目管理maven,設(shè)計層面spring
然后還需要熟悉多線程,linux的基本操作,git或者svn。
差不多了,這些都有個大致的了解,會用,應(yīng)該就能找到工作了。
后面再深入需要學(xué)習(xí)的也挺多的,到時候你再根據(jù)業(yè)務(wù)需求自己琢磨著學(xué)吧。
在第1章“配置開發(fā)環(huán)境”中,我向讀者介紹了將要在整本書中使用的代碼庫。描述了這個庫的設(shè)計,并給出了編譯示例游戲的說明??赡軙谟螒蜷_發(fā)環(huán)境中使用的一些附加代碼、圖形和音頻文件,也在本章確定了下來,還介紹了軟件開發(fā)的一些流行工具。以模板的形式給出了一個演示Java游戲編程基礎(chǔ)知識的游戲示例。
在第2章“部署框架”中,我們關(guān)注的重點是在可以安裝在多種不同類型的平臺上的一個框架中部署游戲。在動畫線程管理技術(shù)的相關(guān)內(nèi)容中,介紹了一個被廣泛使用的框架接口以及applet生命周期。在對適合于游戲的不同發(fā)布而進行不同部署的選項進行了一個簡要的回顧以后,給出了允許游戲部署在不同開發(fā)環(huán)境中而不需要任何修改的一個抽象層的源代碼示例。
在第3章“Swing動畫”中,介紹了一個基于Swing的動畫庫,這個動畫庫會在整本書中使用。這一章主要考慮的問題是動畫的性能和靈活性。在介紹核心動畫引擎類的源代碼時簡單介紹了優(yōu)化權(quán)衡。
在第4章“動畫庫”中,介紹了通用動畫任務(wù)的一個類集合。這些類提供了很多功能,例如場景管理和Sprite實現(xiàn)。它們也用來介紹怎樣開發(fā)與核心動畫引擎類互操作的游戲特定代碼。
在第5章“高級圖形技術(shù)”中,介紹了高級圖形技術(shù),包括硬件加速圖形、多緩沖和全屏獨占模式。給出了使這些技術(shù)的使用變得更加方便的可重用類和使用這些可重用類的示例游戲。對其中的每一個技術(shù),都介紹了關(guān)于它們使用方法的一些限制。
在第6章“持久數(shù)據(jù)”中,對在各種部署框架中加載和保存游戲數(shù)據(jù)的機制進行了對比。在這個過程中還介紹了可以用于大多數(shù)游戲編程的可重用數(shù)據(jù)持久性的類庫。對更加高級的持久性需求的其他選擇也進行了考慮。
在第7章“游戲體系結(jié)構(gòu)”中,介紹了適合于Java游戲開發(fā)的面向?qū)ο蟮能浖w系結(jié)構(gòu)的優(yōu)點。使用這種體系結(jié)構(gòu)的一個示例游戲是作為新游戲開發(fā)模板進行介紹的。本章還簡單介紹了一下數(shù)據(jù)驅(qū)動的設(shè)計。
在第8章“A*算法”中,介紹了現(xiàn)在在游戲行業(yè)中*和最常用的一個人工智能(AI)算法的實現(xiàn)。本章還介紹了使用A*算法繞過障礙物尋找路徑的示例。
在第9章“HTTP隧道技術(shù)”中,介紹一個可以在大部分Java游戲部署環(huán)境里常見的安全限制以內(nèi)進行操作的一個聯(lián)網(wǎng)庫。本章還給出了一個示例,在這個示例中,數(shù)據(jù)在服務(wù)器和客戶機之間進行傳遞。
在第10章“HTTP輪詢機制”中,將聯(lián)網(wǎng)庫擴展以支持在線多玩家游戲。使用輪詢來同步客戶機和服務(wù)器上的游戲狀態(tài)。在由單玩家游戲向多玩家聯(lián)網(wǎng)游戲的轉(zhuǎn)換中,介紹了我所推薦的軟件體系結(jié)構(gòu)的靈活性。
在第11章“HTTP Pulling機制”中,事件驅(qū)動的消息是作為輪詢的另一個選擇而推薦使用的。使用在前面兩章中介紹的這些類,演示了這是怎樣在無符號applet的安全限制以內(nèi)實現(xiàn)的。使用這些技術(shù)進行進一步開發(fā)的一些建議已經(jīng)超出了本書的范圍,這里只進行簡單的介紹。
本書合作站點
本書應(yīng)該保持其“高級性”。為此,我專門為這本書建立了一個Web站點。從這個站點上,您能夠訂閱與本書相關(guān)的電子郵件列表,包括補充的指南和勘誤表。您將能夠測試和運行本書所介紹的示例游戲,并下載開放源代碼庫和用來創(chuàng)建這些游戲的公共領(lǐng)域的多媒體文件。針對老師,我已經(jīng)在Creative Commons License下發(fā)布了我在講授游戲開發(fā)課程中使用的課程提綱、幻燈片和布置給學(xué)生的作業(yè)。我也提供了我的聯(lián)系方式,這樣您可以將您的建議和意見反饋給我,以便我以后進行更正。
在開始閱讀第1章以前,請先訪問網(wǎng)站,并訂閱Advanced Java Game 通知郵件列表。
IV
Java游戲高級編程
只要一個電話
我們免費為您回電