
目錄
前言
1、常見游戲模塊
2、開發語言與專案構建發布
3、JAVA游戲服務器,需要掌握的技術
4、總結
點贊在看,養成習慣
前言
《摩爾莊園》前段時間上線, 持續超出市場預期,相信也有不錯的收益,游戲好玩,所有玩家看到了前端,但是做一款游戲,離不開后臺游戲服務器的支持,服務器都要做什么,服務器的架構是什么,需要哪些技術,一系列的問題有沒有思考過?下面講下作為做服務器開發中需要做的事,
1、常見游戲模塊
-
游戲玩法
游戲開發中常見的玩法模塊,一般的游戲都會包含這些玩法
新手引導、任務系統、背包系統、裝備系統、副本、戰斗系統、活動、商店、充值,競技場,公會系統,好友系統、聊天系統、郵件系統、紅點系統等等
-
通用模塊
-
定時job,處理一些定期活動重置,排名發獎勵等
-
登錄,頂號,離線,斷線重連處理
-
敏感詞檢測,版署需要
-
日志系統,記錄玩家行為日志,獎勵日志等
-
功能開啟關閉,有時候游戲出問題后(比如刷獎勵)指定功能需要及時關閉
-
掉落,獎勵隨機規則
-
防沉迷系統,主要是未成年人保護規則
-
聊天監控,
-
錯誤上報機制
-
道具卡兌換,邀請碼
-
夏令時問題處理
-
不停服熱更線上代碼
-
緊急下家運營活動
-
合服
-
運營后臺管理系統
-
發布下架活動
-
發布公告
-
發送郵件
-
游戲資源凍結
-
賬號封號,解封,禁言
-
查詢當前在線人數
-
我自己的專欄:https://blog.csdn.net/perfect2011/category_11069339.html
2、開發語言與專案構建發布
一般游戲服務器使用C++,nodejs,photon, JAVA等語言開發,端游戲一般選擇C++,因為端游對服務器的性能要求相對比較高一些,語言各有利弊,C++效率高,但是掌握度難些,JAVA易于掌握,開發效率搞,目前對于追求快速上線率的頁游和手游來說,JAVA成了一個不錯的選擇,下面主要以JAVA專案來講述服務器各模塊之間如何互動,如何分工合作,專案采用maven框架構建,簡化了專案依賴管理, jar包便于與持續集成工具(jenkins)整合一鍵打包發布svn,一般地,游戲服務器的架構劃分如下三層:網路接入層、游戲邏輯層、資料存盤層
-
網路接入層
通信方面使用Netty框架,主要封裝各種物理底層通訊機制,讓應用程式員關注業務邏輯,協議資料使用protobuff, Protobuf有更高的訊息壓縮率,時間效率和空間效率都有很大的提升,支持多語言,跨平臺
-
資料快取以及存盤
市面用的游戲用到的資料庫大多是下面這幾種:
MySQL,MongoDB, Redis
游戲服務器都配備了資料庫,是因為游戲越來越復雜,資料量也越來越多,而且采用資料庫也方便對資料的管理和備份,mysql主要存盤一些游戲中玩家資料,redis主要存盤一些跨服資料,比如跨服排行榜資料實時排名,或者資料的快取,
游戲中玩家資料需要及時回應,及時反饋,一般游戲中絕大部分的資料是有快取的,游戲中玩家產生的資料變化,一般先修改玩家快取資料,一定時間后,快取資料定時批量寫入資料庫,長期使用不到的快取將會被清理,減少記憶體空間使用,
-
游戲邏輯層
服務器各類模塊介紹 :
| 模塊名 | 功能型別 | 功能說明 |
|---|---|---|
| yyds-all | maven父功能 | 管理模塊關系,maven的一些配置 |
| yyds-core | 公共模塊 | 游戲業務無關的公共代碼, |
| yyds-common | 基礎模塊 | 游戲業務相關的公共代碼, |
| yyds-game | 游戲服 | 處理游戲業務邏輯(游戲和聊天業務,聊天訊息通過網關進行轉發) |
| yyds-gate | 網關服 | 負責維護客戶端連接,轉發訊息, |
| yyds-scene | 場景服 | 處理地圖相關業務(移動、視野同步) |
| yyds-web | WEB服 | 登錄、創角、充值、GM命令、運營后臺操作入口, |
| yyds-platform | 跨服 | 游戲服之間的訊息中轉,跨服類玩法, |
| yyds-fighter | 戰斗服 | 處理戰斗邏輯 |
服務器架構 :

注: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,Hibernate
-
spring,springMvc主要用于http協議的WEB服務器
-
tomcat,Nginx
-
Linux常用的基本命令及shell腳本(服務器發布,啟動關閉)
4、總結
游戲服務器因為需要面向所有的玩家,所以對服務器的穩定性要求比較高,不能總是出現問題《需要在開發中細心,
策劃的設計經常天馬行空,所以也要考慮到服務器的功能擴展性,爭取在盡量少寫代碼的情況下完成功能,
服務端程式的開發速度很重要,需要考慮模塊的通用性,功能的擴展性,盡量的降低bug可能性,合理設計,
服務端同學任重道遠,需要不斷的學習和積累經驗,才能做好游戲的支撐,
加油吧,希望各位同學做出自己喜歡的游戲

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/287378.html
標籤:java
