1. 程式人生 > >遊戲伺服器開發需要學習的技術

遊戲伺服器開發需要學習的技術

一,遊戲伺服器程式語言的選擇

  所謂的遊戲伺服器程式語言其實有很多,基本上任何一種語言都可以作為遊戲伺服器的程式語言。這需要根據自己遊戲的型別和要求加以選擇。比如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腳