最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

不看后悔!揭秘游戲服務(wù)器開(kāi)發(fā)

 更新時(shí)間:2021年06月30日 15:12:45   作者:香菜聊游戲  
剛開(kāi)始時(shí)以為做游戲服務(wù)器和做web差不多,但是經(jīng)過(guò)一段時(shí)間之后,才發(fā)現(xiàn)代碼太多,太亂了,這里我把一些游戲開(kāi)發(fā)方面的東西整理一下,希望能對(duì)那些想做游戲服務(wù)器開(kāi)發(fā)的朋友有所幫助

前言

《摩爾莊園》前段時(shí)間上線, 持續(xù)超出市場(chǎng)預(yù)期,相信也有不錯(cuò)的收益。游戲好玩,所有玩家看到了前端,但是做一款游戲,離不開(kāi)后臺(tái)游戲服務(wù)器的支持,服務(wù)器都要做什么,服務(wù)器的架構(gòu)是什么,需要哪些技術(shù),一系列的問(wèn)題有沒(méi)有思考過(guò)?下面講下作為做服務(wù)器開(kāi)發(fā)中需要做的事。

1、常見(jiàn)游戲模塊

游戲玩法

游戲開(kāi)發(fā)中常見(jiàn)的玩法模塊,一般的游戲都會(huì)包含這些玩法

新手引導(dǎo)、任務(wù)系統(tǒng)、背包系統(tǒng)、裝備系統(tǒng)、副本、戰(zhàn)斗系統(tǒng)、活動(dòng)、商店、充值,競(jìng)技場(chǎng),公會(huì)系統(tǒng),好友系統(tǒng)、聊天系統(tǒng)、郵件系統(tǒng)、紅點(diǎn)系統(tǒng)等等

通用模塊

  1. 定時(shí)job,處理一些定期活動(dòng)重置,排名發(fā)獎(jiǎng)勵(lì)等
  2. 登錄,頂號(hào),離線,斷線重連處理
  3. 敏感詞檢測(cè),版署需要
  4. 日志系統(tǒng),記錄玩家行為日志,獎(jiǎng)勵(lì)日志等
  5. 功能開(kāi)啟關(guān)閉,有時(shí)候游戲出問(wèn)題后(比如刷獎(jiǎng)勵(lì))指定功能需要及時(shí)關(guān)閉
  6. 掉落,獎(jiǎng)勵(lì)隨機(jī)規(guī)則
  7. 防沉迷系統(tǒng),主要是未成年人保護(hù)規(guī)則
  8. 聊天監(jiān)控,
  9. 錯(cuò)誤上報(bào)機(jī)制
  10. 道具卡兌換,邀請(qǐng)碼
  11. 夏令時(shí)問(wèn)題處理
  12. 不停服熱更線上代碼
  13. 緊急下家運(yùn)營(yíng)活動(dòng)
  14. 合服

運(yùn)營(yíng)后臺(tái)管理系統(tǒng)

  1. 發(fā)布下架活動(dòng)
  2. 發(fā)布公告
  3. 發(fā)送郵件
  4. 游戲資源凍結(jié)
  5. 賬號(hào)封號(hào),解封,禁言
  6. 查詢(xún)當(dāng)前在線人數(shù)

2、開(kāi)發(fā)語(yǔ)言與項(xiàng)目構(gòu)建發(fā)布

一般游戲服務(wù)器使用C++,nodejs,photon, JAVA等語(yǔ)言開(kāi)發(fā),端游戲一般選擇C++,因?yàn)槎擞螌?duì)服務(wù)器的性能要求相對(duì)比較高一些,語(yǔ)言各有利弊,C++效率高,但是掌握度難些,JAVA易于掌握,開(kāi)發(fā)效率搞,目前對(duì)于追求快速上線率的頁(yè)游和手游來(lái)說(shuō),JAVA成了一個(gè)不錯(cuò)的選擇,下面主要以JAVA項(xiàng)目來(lái)講述服務(wù)器各模塊之間如何交互,如何分工合作。項(xiàng)目采用maven框架構(gòu)建,簡(jiǎn)化了項(xiàng)目依賴(lài)管理, jar包便于與持續(xù)集成工具(jenkins)整合一鍵打包發(fā)布svn,一般地,游戲服務(wù)器的架構(gòu)劃分如下三層:網(wǎng)絡(luò)接入層、游戲邏輯層、數(shù)據(jù)存儲(chǔ)層

網(wǎng)絡(luò)接入層

通信方面使用Netty框架,主要封裝各種物理底層通訊機(jī)制,讓?xiě)?yīng)用程序員關(guān)注業(yè)務(wù)邏輯。協(xié)議數(shù)據(jù)使用protobuff, Protobuf有更高的消息壓縮率,時(shí)間效率和空間效率都有很大的提升,支持多語(yǔ)言,跨平臺(tái)

數(shù)據(jù)緩存以及存儲(chǔ)

市面用的游戲用到的數(shù)據(jù)庫(kù)大多是下面這幾種:

MySQL,MongoDB, Redis

游戲服務(wù)器都配備了數(shù)據(jù)庫(kù),是因?yàn)橛螒蛟絹?lái)越復(fù)雜,數(shù)據(jù)量也越來(lái)越多,而且采用數(shù)據(jù)庫(kù)也方便對(duì)數(shù)據(jù)的管理和備份。mysql主要存儲(chǔ)一些游戲中玩家數(shù)據(jù),redis主要存儲(chǔ)一些跨服數(shù)據(jù),比如跨服排行榜數(shù)據(jù)實(shí)時(shí)排名,或者數(shù)據(jù)的緩存。

游戲中玩家數(shù)據(jù)需要及時(shí)響應(yīng),及時(shí)反饋,一般游戲中絕大部分的數(shù)據(jù)是有緩存的,游戲中玩家產(chǎn)生的數(shù)據(jù)變化,一般先修改玩家緩存數(shù)據(jù),一定時(shí)間后,緩存數(shù)據(jù)定時(shí)批量寫(xiě)入數(shù)據(jù)庫(kù),長(zhǎng)期使用不到的緩存將會(huì)被清理,減少內(nèi)存空間使用。

游戲邏輯層

服務(wù)器各類(lèi)模塊介紹 :

模塊名 功能類(lèi)型 功能說(shuō)明
yyds-all maven父功能 管理模塊關(guān)系,maven的一些配置
yyds-core 公共模塊 游戲業(yè)務(wù)無(wú)關(guān)的公共代碼。
yyds-common 基礎(chǔ)模塊 游戲業(yè)務(wù)相關(guān)的公共代碼。
yyds-game 游戲服 處理游戲業(yè)務(wù)邏輯(游戲和聊天業(yè)務(wù),聊天消息通過(guò)網(wǎng)關(guān)進(jìn)行轉(zhuǎn)發(fā))
yyds-gate 網(wǎng)關(guān)服 負(fù)責(zé)維護(hù)客戶(hù)端連接,轉(zhuǎn)發(fā)消息。
yyds-scene 場(chǎng)景服 處理地圖相關(guān)業(yè)務(wù)(移動(dòng)、視野同步)
yyds-web WEB服 登錄、創(chuàng)角、充值、GM命令、運(yùn)營(yíng)后臺(tái)操作入口。
yyds-platform 跨服 游戲服之間的消息中轉(zhuǎn),跨服類(lèi)玩法。
yyds-fighter 戰(zhàn)斗服 處理戰(zhàn)斗邏輯

服務(wù)器架構(gòu) :

注:platform 和多個(gè)游戲服相連接。

流程說(shuō)明:

登陸流程:玩家登陸時(shí)首先連接web服,進(jìn)行登陸,驗(yàn)證成功后,會(huì)將玩家登陸的token 放到Gate服。然后玩家連接Gate服登陸到Game服。

戰(zhàn)斗流程:玩家在Game服發(fā)起戰(zhàn)斗,比如匹配戰(zhàn)斗,則在Game服上匹配,然后送入Fighter 戰(zhàn)斗服進(jìn)行戰(zhàn)斗,此時(shí)所有的戰(zhàn)斗消息從Gate服直接路由到Fighter服,戰(zhàn)斗結(jié)果發(fā)送給Game服,然后進(jìn)行發(fā)獎(jiǎng)等邏輯

玩家移動(dòng)流程:玩家移動(dòng)消息同步給Scene服,Scene服每一幀同步給所有的玩家

3、JAVA游戲服務(wù)器,需要掌握的技術(shù)

  1. Java基礎(chǔ)知識(shí)
  2. JavaNIO編程
  3. 多線程編程,并發(fā)集合的掌握,游戲中有很多并發(fā)事件,安全性尤為重要
  4. 熱更新,內(nèi)存,CPU性能分析
  5. Netty,Mina網(wǎng)絡(luò)框架精通一種
  6. Redis,memcache,MongoDB等單用或者組合使用
  7. SQL語(yǔ)言,數(shù)據(jù)庫(kù):如mysql
  8. 數(shù)據(jù)庫(kù)操作,比如mybatis,Hibernate
  9. spring,springMvc主要用于http協(xié)議的WEB服務(wù)器
  10. tomcat,Nginx
  11. Linux常用的基本命令及shell腳本(服務(wù)器發(fā)布,啟動(dòng)關(guān)閉)

4、總結(jié)

游戲服務(wù)器因?yàn)樾枰嫦蛩械耐婕遥詫?duì)服務(wù)器的穩(wěn)定性要求比較高,不能總是出現(xiàn)問(wèn)題,需要在開(kāi)發(fā)中細(xì)心。

策劃的設(shè)計(jì)經(jīng)常天馬行空,所以也要考慮到服務(wù)器的功能擴(kuò)展性,爭(zhēng)取在盡量少寫(xiě)代碼的情況下完成功能。

服務(wù)端程序的開(kāi)發(fā)速度很重要,需要考慮模塊的通用性,功能的擴(kuò)展性,盡量的降低bug可能性,合理設(shè)計(jì)。

服務(wù)端同學(xué)任重道遠(yuǎn),需要不斷的學(xué)習(xí)和積累經(jīng)驗(yàn),才能做好游戲的支撐。

加油吧,希望各位同學(xué)做出自己喜歡的游戲,這篇文章就到這里了,希望能幫到你,請(qǐng)多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java實(shí)現(xiàn)斗地主與猜數(shù)字游戲詳細(xì)流程

    Java實(shí)現(xiàn)斗地主與猜數(shù)字游戲詳細(xì)流程

    這篇文章主要介紹了怎么用Java來(lái)寫(xiě)斗地主種洗牌和發(fā)牌的功能,以及猜數(shù)字的游戲,斗地主相信大家都知道,同時(shí)也知道每一局都要洗牌打亂順序再發(fā)牌,本篇我們就來(lái)實(shí)現(xiàn)它們能,感興趣的朋友跟隨文章往下看看吧
    2022-04-04
  • Spring中基于Java的配置@Configuration和@Bean用法詳解

    Spring中基于Java的配置@Configuration和@Bean用法詳解

    這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個(gè)配置類(lèi)(例如SpringConfig)來(lái)對(duì)bean進(jìn)行配置。,需要的朋友可以參考下
    2019-06-06
  • Mybatis動(dòng)態(tài)元素if的使用方式

    Mybatis動(dòng)態(tài)元素if的使用方式

    這篇文章主要介紹了Mybatis動(dòng)態(tài)元素if的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析

    Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容實(shí)例解析

    這篇文章主要介紹了Java采用setAsciiStream方法檢索數(shù)據(jù)庫(kù)指定內(nèi)容,是比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • SpringBoot返回json和xml的示例代碼

    SpringBoot返回json和xml的示例代碼

    本篇文章主要介紹了SpringBoot返回json和xml的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信)

    java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信)

    這篇文章主要介紹了java實(shí)現(xiàn)基于UDP協(xié)議網(wǎng)絡(luò)Socket編程(C/S通信),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java設(shè)計(jì)模式之GOF23全面講解

    Java設(shè)計(jì)模式之GOF23全面講解

    這篇文章主要介紹了Java設(shè)計(jì)模式之GOF23全面講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Java使用poi實(shí)現(xiàn)excel的導(dǎo)入操作指南

    Java使用poi實(shí)現(xiàn)excel的導(dǎo)入操作指南

    使用Apache Poi是一種流行且廣泛使用的方式,可以幫助開(kāi)發(fā)人員直接從Java代碼中讀取、寫(xiě)入和處理Excel文件,因此在這篇文章我們將著重介紹如何實(shí)現(xiàn)excel的導(dǎo)入,感興趣的朋友可以跟著小編一起來(lái)學(xué)習(xí)
    2023-06-06
  • SpringBoot項(xiàng)目中使用騰訊云發(fā)送短信的實(shí)現(xiàn)

    SpringBoot項(xiàng)目中使用騰訊云發(fā)送短信的實(shí)現(xiàn)

    本文主要介紹了SpringBoot項(xiàng)目中使用騰訊云發(fā)送短信的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Java實(shí)戰(zhàn)之王者榮耀的英雄是怎么產(chǎn)生的?

    Java實(shí)戰(zhàn)之王者榮耀的英雄是怎么產(chǎn)生的?

    這篇文章主要介紹了Java實(shí)戰(zhàn)之王者榮耀的英雄是怎么產(chǎn)生的?文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評(píng)論

苍南县| 邢台市| 灌云县| 富平县| 加查县| 申扎县| 平武县| 洪雅县| 项城市| 万安县| 昔阳县| 张家港市| 黄陵县| 竹山县| 临颍县| 昌乐县| 大连市| 万山特区| 东港市| 顺义区| 竹山县| 天水市| 莒南县| 左云县| 青海省| 犍为县| 泽普县| 神农架林区| 东兰县| 元阳县| 安国市| 亳州市| 新化县| 高州市| 成都市| 双辽市| 夏邑县| 盐池县| 克什克腾旗| 同仁县| 肥东县|