一,游戲服務器編程語言的選擇
所謂的游戲服務器編程語言其實有很多,基本上任何一種語言都可以作為游戲服務器的編程語言。這需要根據自己游戲的類型和要求加以選擇。比如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方法向服務器發出請求即可了。
而對於socket來說,就需要掌握一些深入的網絡通信知識。對於Java來說,一般選擇NIO(非阻塞)開發方式。可以參考Java NIO編程相關資料。為了適應這個需求,現在有很多網絡通信框架,比如Netty,mina。目前已經成熟的應用到了游戲開發當中。這些都是開源的,有興趣可以閱讀它們的源碼。
游戲服務器開發過程中,會涉及到很多多線程的應用。這樣可以提高服務器的性能和實現某些特定的操作。比如組隊打怪,競技場的事實排名。這些涉及到了並發對共享數據的操作。為了防止數據的錯誤,一定要做好數據的同步。這里推薦一本書《Java並發編程實戰手冊》。
三,學習流程
當然了,學習這些東西並不是一蹴而就的。需要根據實踐循環漸進,這里推薦一個學習流程:
(1)對於初學Java的人來說,如果自學能力好些,可以買些書自己練習,而現在又更的多選擇參加培訓機構的培訓,以快速的掌握Java的知識。
(2)掌握了Java知識之后,要多寫代碼實踐。這個時候可以結合mysql學習SQL語言,掌握數據庫的操作。比如用springmvc寫一個小網站,用mybatis實現網站數據的增,刪,改,查等功能。
(3)完成上步之后,可以在服務器程序和數據庫之間加一個緩存,學習redis或memcache。
(4)把程序部署到linux服務器上,練習linux的基本命令及shell腳