《揭秘遊戲服務器,不看後悔!》 香菜聊遊戲Author By:某位大佬 前言《摩爾莊園》前段時間上線, 持續超出市場預期,相信也有不錯的收益。遊戲好玩,所有玩家看到了前端,但是做一款遊戲,離不開後台遊戲服務器的支持,服務器都要做什麼,服務器的架構是什麼,需要哪些技術,一系列的問題有沒有思考過?下面講下作為做服務器開發中需要做的事。1、常見遊戲模塊遊戲玩法遊戲開發中常見的玩法模塊,一般的遊戲都會包含這些玩法新手引導、任務系統、背包系統、裝備系統、副本、戰鬥系統、活動、商店、充值,競技場,公會系統,好友系統、聊天系統、郵件系統、紅點系統等等通用模塊定時job,處理一些定期活動重置,排名發獎勵等登錄,頂號,離線,斷線重連處理敏感詞檢測,版署需要日志系統,記錄玩家行為日志,獎勵日志等功能開啟關閉,有時候遊戲出問題後(比如刷獎勵)指定功能需要及時關閉掉落,獎勵隨機規則防沉迷系統,主要是未成年人保護規則聊天監控,錯誤上報機制道具卡兌換,邀請碼夏令時問題處理不停服熱更線上代碼緊急下架運營活動合服運營後台管理系統發布下架活動發布公告發送郵件遊戲資源凍結賬號封號,解封,禁言查詢當前在線人數2、開發語言與項目構建發布一般遊戲服務器使用C++,nodejs,photon, JAVA等語言開發,端遊戲一般選擇C++,因為端遊對服務器的性能要求相對比較高一些,語言各有利弊,C++效率高,但是掌握起來難些,JAVA易於掌握,開發效率高,目前對於追求快速上線率的頁遊和手遊來說,JAVA成了一個不錯的選擇,下面主要以JAVA項目來講述服務器各模塊之間如何交互,如何分工合作。項目采用maven框架構建,簡化了項目依賴管理, jar包便於與持續集成工具(jenkins)整合一鍵打包發布svn,一般地,遊戲服務器的架構劃分如下三層:網絡接入層、遊戲邏輯層、數據存儲層網絡接入層通信方面使用Netty框架,主要封裝各種物理底層通訊機制,讓應用程序員關注業務邏輯。協議數據使用protobuff, Protobuf有更高的消息壓縮率,時間效率和空間效率都有很大的提升,支持多語言,跨平台數據緩存以及存儲市面用的遊戲用到的數據庫大多是下面這幾種:MySQL,MongoDB, Redis遊戲服務器都配備了數據庫,是因為遊戲越來越複雜,數據量也越來越多,而且采用數據庫也方便對數據的管理和備份。mysql主要存儲一些遊戲中玩家數據,redis主要存儲一些跨服數據,比如跨服排行榜數據實時排名,或者數據的緩存。遊戲中玩家數據需要及時響應,及時反饋,一般遊戲中絕大部分的數據是有緩存的,遊戲中玩家產生的數據變化,一般先修改玩家緩存數據,一定時間後,緩存數據定時批量寫入數據庫,長期使用不到的緩存將會被清理,減少內存空間使用。遊戲邏輯層服務器各類模塊介紹 : 服務器架構 : 注:platform 和多個遊戲服相連接。流程說明:登陸流程:玩家登陸時首先連接web服,進行登陸,驗證成功後,會將玩家登陸的token 放到Gate服。然後玩家連接Gate服登陸到Game服。戰鬥流程:玩家在Game服發起戰鬥,比如匹配戰鬥,則在Game服上匹配,然後送入Fighter 戰鬥服進行戰鬥,此時所有的戰鬥消息從Gate服直接路由到Fighter服,戰鬥結果發送給Game服,然後進行發獎等邏輯玩家移動流程:玩家移動消息同步給Scene服,Scene服每一幀同步給所有的玩家3、JAVA遊戲服務器,需要掌握的技術Java基礎知識JavaNIO編程多線程編程,並發集合的掌握,遊戲中有很多並發事件,安全性尤為重要熱更新,內存,CPU性能分析Netty,Mina網絡框架精通一種Redis,memcache,MongoDB等單用或者組合使用SQL語言,數據庫:如mysql數據庫操作,比如mybatis,Hibernatespring,springMvc主要用於http協議的WEB服務器tomcat,NginxLinux常用的基本命令及shell腳本(服務器發布,啟動關閉)4、總結遊戲服務器因為需要面向所有的玩家,所以對服務器的穩定性要求比較高,不能總是出現問題《需要在開發中細心。策劃的設計經常天馬行空,所以也要考慮到服務器的功能擴展性,爭取在盡量少寫代碼的情況下完成功能。服務端程序的開發速度很重要,需要考慮模塊的通用性,功能的擴展性,盡量的降低bug可能性,合理設計。服務端同學任重道遠,需要不斷的學習和積累經驗,才能做好遊戲的支撐。加油吧,希望各位同學做出自己喜歡的遊戲 《揭秘遊戲服務器,不看後悔!》完,請繼續朗讀精采文章。 喜歡 小編的世界 e4to.com,請記得按讚、收藏及分享!
音調
速度
音量
語言
揭秘遊戲服務器,不看後悔!
精確朗讀模式適合大多數瀏覽器,也相容於桌上型與行動裝置。
不過,使用Chorme瀏覽器仍存在一些問題,不建議使用Chorme瀏覽器進行精確朗讀。