遊戲服務器開發

本人從事遊戲服務端開發3年以來,對於遊戲服務端開發的總結

一款網絡遊戲的開發,上線是一個團隊共同合作的成果。每一個成員都是這款遊戲成功道路是的基石。

1.學會溝通

一個遊戲開發團隊角色構成主要由:總經理,技術主管,策劃組(遊戲數據,系統,特效,玩法的設計),美術組(遊戲原畫,UI,特效的設計),客戶端開發組(客戶端程序員...),服務端開發組(服務器程序員...),測試組,外加運維。遊戲的大部分的邏輯和數據驗證是放在服務器進行的,因此和策劃溝通,明確的瞭解需求是十分重要的。由於遊戲邏輯的複雜性,會出現策劃無法預估的情況因此服務端開發中要完善這個邏輯,此時要先於策劃溝通才能保證實現功能的正確性。同時和客服端的溝通也是必不可少的,雙方選擇的處理方式和交互方式,決定了是否能實現一個遊戲的功能和遊戲的性能的可靠性。所以做爲一名遊戲程序員,一定要有良好的溝通方式和技巧。

2.善用架構

架構的設計好比房屋建築結構,房屋結構設計的好壞是保證所建造的結構安全適用,能夠在規定的年限內滿足各種預期功能的要求,並且經濟合理。軟件架構的設計的好壞也是同等的道理,軟件架構的設計一般有幾個特性。

易用性:架構一旦完成,在開發的時候就要方便使用。如:網絡通信架構,設計好之後,其他開發者就不需要關心客戶端的數據是怎麼被傳輸到服務器端的,這個時候對於服務器開發者來說,只需要實現一些簡單的接口,就可以直接對客戶端發送來的請求進行處理操作。

可擴展性:代碼的可擴展和部署機械的可擴展。比如說遊戲中活動有很多種,而且還可能不定時的增加。對與每個活動的開始,結束,獎勵發放,活動出發的事件等一系列共有的功能,應該集中管理,抽象出基類,形成成活動表,再有具體活動區繼承這個基類區實現。而不是每一個活動的出現,去單獨的實現這些重複的功能。比如當數據庫太大要分庫,需要支持在不影響其它服務器運行的情況下,可以動態的添加機器。而當壓力降低之後,又可以移除某些機器,合理利用資源。

高吞吐量:能儘量最大化的利用計算機固定的資源,去處理更多的請求,更快速的響應客戶端。服務器架構設計的時候考慮異步處理,減少IO等待時間(比如請求redis,存儲數據庫,和其它服務器通信)以及數據緩存。說到異步,一定會涉及到多線程,併發等相關的技術。

架構設計不僅僅咋遊戲整體佈局用到,而且在每個功能設計的時候都應該要去考慮。邏輯開發是一個任重而道遠的過程,同一個問題,可能有很多種實現方式,不同的實現方式對效率和吞吐量有很大的影響,所以就需要對需求功能的理解要深入,不同功能之間的關聯要明確。對常用的設計模式要知道如何使用。

3.輔助工具開發

一個遊戲成功的運營,需要很多服務去支持它,比如sdk接入,充值接入,日誌統計,遊戲運行管理系統(一般叫後臺管理系統,是內部人員爲了管理遊戲的而開發的系統)。比如修改某個用戶的等級,封號等。管理系統一般會用web開發,與遊戲服務器通信;比如 開服工具,日誌分析工具,數據處理工具等。凡是繁瑣重複的事情可以用程序去完成的都可以寫出來,提高效率。

附:

想做Java遊戲服務器方面的開發要掌握的技術有以下一些:

1,網絡通信框架,Mina或Netty必須熟悉一種。而且自己必須要親自搭建過,並明白其它原理。

2,通信協議制定和處理斷包粘包,這一般屬於網絡通信框架要解決的問題。

3,數據緩存框架,redis或memcache選擇一個,能熟練使用其客戶端的命令。

4,Java基礎,Java NIO通信原理,Java集合的使用,Java多線程開發,Java鎖的使用

5,瞭解一些設計模式。最好能把23種設計模式都看一遍,並結合自己的開發經驗,看哪些可以用到設計模式,但也不能死套設計模式,要靈活運用。

6,熟悉使用Mysql數據庫

7,瞭解數據庫連接池的一些框架,比如Mybatis,hibernate

8,對Http協議熟悉,熟悉一種web容器,比如tomcat,瞭解其配置。

9,對常用的一些Linux命令要熟悉使用。

10,熱愛學習,不斷的充實自己,上面所說的只是入門技能而已,真正做起來要複雜的多,一定要讓自己喜歡遊戲這個行業,這樣纔能有動力做下去,做自己喜歡的工作還是比爲了工作要好的!

java服務器目前主流框架技術有 

網絡層netty或mina 
數據協議protobuf 
數據庫mysql 
緩存數據庫redis    jdbc一般是mybaits或者jpa 
項目管理maven 
設計層面spring 
然後還需要熟悉多線程 
linux的基本操作,git或者svn。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章