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