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

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

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

前言

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

1、常見游戲模塊

游戲玩法

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

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

通用模塊

  1. 定時(shí)job,處理一些定期活動(dòng)重置,排名發(fā)獎(jiǎng)勵(lì)等
  2. 登錄,頂號,離線,斷線重連處理
  3. 敏感詞檢測,版署需要
  4. 日志系統(tǒng),記錄玩家行為日志,獎(jiǎng)勵(lì)日志等
  5. 功能開啟關(guān)閉,有時(shí)候游戲出問題后(比如刷獎(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. 道具卡兌換,邀請碼
  11. 夏令時(shí)問題處理
  12. 不停服熱更線上代碼
  13. 緊急下家運(yùn)營活動(dòng)
  14. 合服

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

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

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

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

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

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

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

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

MySQL,MongoDB, Redis

游戲服務(wù)器都配備了數(shù)據(jù)庫,是因?yàn)橛螒蛟絹碓綇?fù)雜,數(shù)據(jù)量也越來越多,而且采用數(shù)據(jù)庫也方便對數(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í)批量寫入數(shù)據(jù)庫,長期使用不到的緩存將會(huì)被清理,減少內(nèi)存空間使用。

游戲邏輯層

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

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

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

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

流程說明:

登陸流程:玩家登陸時(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ǔ)知識
  2. JavaNIO編程
  3. 多線程編程,并發(fā)集合的掌握,游戲中有很多并發(fā)事件,安全性尤為重要
  4. 熱更新,內(nèi)存,CPU性能分析
  5. Netty,Mina網(wǎng)絡(luò)框架精通一種
  6. Redis,memcache,MongoDB等單用或者組合使用
  7. SQL語言,數(shù)據(jù)庫:如mysql
  8. 數(shù)據(jù)庫操作,比如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)樾枰嫦蛩械耐婕?,所以對服?wù)器的穩(wěn)定性要求比較高,不能總是出現(xiàn)問題,需要在開發(fā)中細(xì)心。

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

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

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

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

相關(guān)文章

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

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

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

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

    這篇文章主要介紹了Spring中基于Java的配置@Configuration和@Bean用法詳解,Spring中為了減少xml中配置,可以聲明一個(gè)配置類(例如SpringConfig)來對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à)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java采用setAsciiStream方法檢索數(shù)據(jù)庫指定內(nèi)容實(shí)例解析

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

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

    SpringBoot返回json和xml的示例代碼

    本篇文章主要介紹了SpringBoot返回json和xml的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    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通信),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Java設(shè)計(jì)模式之GOF23全面講解

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

    這篇文章主要介紹了Java設(shè)計(jì)模式之GOF23全面講解,本篇文章通過簡要的案例,講解了該項(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是一種流行且廣泛使用的方式,可以幫助開發(fā)人員直接從Java代碼中讀取、寫入和處理Excel文件,因此在這篇文章我們將著重介紹如何實(shí)現(xiàn)excel的導(dǎo)入,感興趣的朋友可以跟著小編一起來學(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),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(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ì)的代碼示例,對正在學(xué)習(xí)java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05

最新評論

呼图壁县| 高阳县| 石家庄市| 华坪县| 清苑县| 五常市| 绥棱县| 富裕县| 镇赉县| 玉山县| 永兴县| 息烽县| 万宁市| 五峰| 行唐县| 新河县| 东乡| 达孜县| 武冈市| 江永县| 长垣县| 交口县| 加查县| 大田县| 丰原市| 怀化市| 包头市| 施甸县| 清流县| 襄垣县| 阳东县| 文水县| 安岳县| 珲春市| 静宁县| 南漳县| 库尔勒市| 望谟县| 磐石市| 苍梧县| 阜新|