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