您當前所有(yǒu)位(wèi)置:首(shǒu)頁 > 注(zhù)冊類型 > 軟件遊戲(xì)

深度解析Java遊戲(xì)服務器開發

作者:企業好幫手
時間:2019-11-16 10:01:06  瀏覽量:
[ 企業好幫手(shǒu)導讀 ] RPG角色扮(bàn)演遊戲、ACT動作遊戲、AVG冒險遊戲、FPS第一人稱視角(jiǎo)射擊遊戲、TPS第三(sān)人稱視角射擊遊戲、FTG格鬥遊戲、SPT體(tǐ)育遊戲(xì)、RAC競速遊戲、RTS即時戰略遊戲、STG射擊類(lèi)遊戲、SLG策(cè)略遊戲、MSC音樂遊戲、SIM生活模(mó)擬遊戲

  1.認識遊戲

  1.1什麽是遊戲

  1.1.1遊戲的定義

  任何人類正常生理需求之外的活動均可稱為遊戲

  1.1.2遊戲的分類

  RPG角色扮演遊戲、ACT動作遊戲、AVG冒險遊戲、FPS第一人稱視角射擊遊戲、TPS第三人稱視角射擊遊戲、FTG格鬥遊戲、SPT體育遊戲、RAC競速遊戲、RTS即時戰略遊戲、STG射擊類遊(yóu)戲、SLG策略遊戲、MSC音樂遊戲、SIM生活模擬遊戲、TCG育成遊戲、CAG卡片遊戲(xì)、LVG戀愛遊戲、GAL美少(shǎo)女遊(yóu)戲、WAG手機遊戲、MMOPRG大型多人在線角色扮演遊戲(xì)、ARPG動作(zuò)角色扮演遊戲、ETC其他類遊戲(xì)、動漫遊戲(xì)、MOBA多人在線技術競技遊戲

  1.2遊戲開發及分工

  可行性與計劃研究階段、分析需求階段、設計階段、開發階段、測試階(jiē)段、係統驗收

  開發流程:產品立項、遊戲設計、開發(fā)階段、測試階段、Alpha測試(項目組內部測試)、Beta測試(遊戲內測(cè))、上線推廣階段、運營階段

  1.3遊戲行業現狀分析

  虛擬現(xiàn)實設備及內容、移動遊戲操控設(shè)備、互聯網+遊戲創業、電競直播平台、原創IP、H5遊戲

  1.4遊戲服務(wù)器開(kāi)發要點

  網絡知識(OSI參考模型、套接(jiē)字、長連接、短連接)、並發編程、設計模式(單例模式、工廠模(mó)式、觀察者模式)、數據庫(MySQL、Mongo,內存數據庫Redis、Memcache、Ehcache)、gm運營(yíng)工具(jù)、運維知識(服務器部署、架(jià)構搭建、負載均衡、日誌管理、數(shù)據庫備份恢複、災難處理)

  2.環境搭建

  2.1Windows開發環境搭建

  2.1.1安裝(zhuāng)JDK

  設置Path變量、設(shè)置CLASSPATH環境變量、設置JAVA_HOME

  2.1.2安裝Eclipse

  2.1.3安裝數據庫客戶端工具(jù)

  Navicat for MySQL (MySQL) : http: //www.navicat.eom.cn/

  MongoVUE (Mongo ) : http:/ www.mongovue.com

  RedisClient (Redis) : https: // github.com/caoxin /RedisClient

  2.1.4安裝SSH工具

  XShell: http: //www.netsarang.com/products/xsh_overview.html

  SSH: http://ultra.pr.erau.edu/~·jaffem/tutoriaVSSH _secure_ shell_ client.htm

  2.1.5 安(ān)裝(zhuāng)其他工具

  文本編(biān)輯器

  Ediψlus: https: //www.ediφlus.com/download.htrnl

  Sublime Text: http: //www.sublimetext.com/

  容器

  Tomcat: https: //tomcat.apache.org/

  JBoss: http://jbossas.jboss.o

  JSON 解析工具

  在(zài)線(xiàn) JSON 解析: http://json.cn

  2.2Mac OS X開發環境搭建

  2.3Linux服務器環境搭建

  3.網絡通信

  3.1通信協議(yì)

  TCP/IP模型:鏈(liàn)路層、網絡層、傳輸(shū)層、應用層

  3.1.1麵向連接的 TCP

  3次(cì)握手建立連接

深度(dù)解析Java遊戲服務器開發

  麵向連接:通信(xìn)之前必須通過三次“握手”建立可靠連接

  安全可靠:每 次通信都必須得到對方的應答,否則認為數(shù)據報丟失,需要重發。

  全雙工(gōng)通信: 旦建立連接,雙方都可以通(tōng)過通道進行數據傳輸

  通信隻能建立在兩個點之間

  麵向流(liú)通(tōng)信:通信傳輸是(shì)通過流的形式進行的。

  3.1.2麵向數據報的UDP

  3.1.3HTTP編程

  3.1.4Socket編程

  服務器監聽、客戶端請求、連接(jiē)確認

深度解析Java遊戲服務器(qì)開發

  3.1.5 WebSocket 編程

  3.2Java NIO 基礎

  3.2.1BIO編(biān)程(阻塞式IO)

深度解析Java遊戲(xì)服務器開發

  3.2.2NIO編(biān)程(非阻(zǔ)塞式IO)

  創建1個線程負責處理 IO 事件和 事件的分發(fā)。

  事件驅動機製非同步監視事件,而(ér)是(shì)事件到達之後觸發。

  線程之間通過 wait notify 等(děng)方(fāng)式通信(xìn),減少了不必要的線程切換。

深度解析Java遊戲服務器開(kāi)發

  3.2.3AIO編程(異步IO)

  沒有阻塞(sāi)等待客戶端連接

  3.3Mina的介紹及其使用

  3.3.1總體架構

深度(dù)解析Java遊戲服務(wù)器開發

  3.3.2ioseservice

  負責IO相關工(gōng)作

  3.3.3IoFilterChain

  擴展處理器

  3.3.4IoHandler

  業(yè)務邏輯處理

  3.3.5iosesession

  對應客戶端(duān)與服務端的IO連接

  3.3.6工作原(yuán)理(lǐ)

深度解(jiě)析Java遊戲服務器開發

  3.3.7Acceptor與Connector 線程

  監聽(tīng)連接

  3.3.8 Processor 線程

  複製IO讀寫操(cāo)作

  3.3.9線程模式

深(shēn)度解析Java遊戲服(fú)務器開發

  3.3.10請求的處理順(shùn)序

  保證請求IO請求順序

  3.3.11Mina編程

  3.4Netty的介紹及(jí)其使用

  3.4.1總體架構

深度解析Java遊戲服務器(qì)開發

  3.4.2零拷貝

  Netty 的接收和發送來用 ByteBuffer, ByteBuffer 采用 Direct Buffers ,即ByteBuffer 直接使用堆外的(de)內存進行 Socket 讀寫,而不需要(yào)進行(háng)字節緩衝區的二次拷貝

  Netty 的組合 Buffer 對象,能聚合多個 ByteBuffer 對象,用戶如果要操作(zuò)多(duō)個Buffer ,可以先(xiān)將這些 Buffer 組合,然(rán)後操作這個組合 Buffer

  Netty 采用 transferTo 進行文件傳輸,可以直接把文件緩衝區的數據發送到(dào)目標(biāo)的Channel

  3.4.3 Codec 框架

  FrameDecoder

  FrameDecoder 通過維護 DynamicChannelBuffer 存儲接收的數(shù)據,它提供抽(chōu)象模板,在(zài)模板(bǎn)中寫好了整個解碼過程,使用它隻需在子類(lèi)實(shí)現 decode 方法。

  ReplayingDecoder

  ReplayingDecoder FrameDecoder 的非阻塞解碼

  ObjectEncoder和(hé)Objectoecoder

  這(zhè)兩個類能對 Java 對象進行編解碼序列化。

  HttpRequestEncoder 和HttpRequestDecoder

  Netty中(zhōng)還能實現 HTTP 服務器,通過 HttpRequestEncoder HtφRequestDecoder能實現 HTTP 請求和響應(yīng)的編解碼。

  3.4.4 Channel

  3.4.5 ChannelEvent

  3.4.6 ChannelPipeline

  3.4.7 Netty 編程

  4.數據交互

  4.1數據傳輸格式

  網絡(luò)數據大小、網絡數據安全(quán)性、實現複雜度、協議通用性

  數據類型:自定(dìng)義二進製 Binary、開源協(xié)議、文博會協議

深度(dù)解(jiě)析Java遊戲服務器開發

  4.2JSON的使用及解析

  4.3XML的(de)使用及解析

  4.4Google Protocol Buffer 的介紹及使用

  4.4.1 Protobuffer 的安(ān)裝與編譯

  4.4.2 Protobuffer 的語法

  標識符,Proto buffer 協(xié)議的標識符為 message enum, message 代表消息類型, enum 代表枚舉(jǔ)類(lèi)型(xíng),在通(tōng)過 Protobuffer 的編譯器編譯之後,它(tā)們都(dōu)生成 Java 中的一個類。

  修飾符

  required :該宇段(duàn)不能為空,必(bì)須傳遞值,否則 message 不能被正確初始化。

  optional :該(gāi)字段可以(yǐ)為空,不管該字段是否傳值, message 都能正確初始化(huà)。

  repeated :重(chóng)複的字(zì)段,等同動態數組,編譯成 Java 後即為 List ,但是其數據可以為空。

  數據類型

  Package

  Option,Option 可以定義 些常用選工頁

  4.4.3 生成 Java類

  4.4.4 Eclipse的protobuf-dt 插件

  4.4.5 示例程序(xù)

  5.數據緩存與(yǔ)持久化

  5.1遊戲數據存儲

  5.1.1 數據(jù)分類

  全(quán)局數據(jù)(排行榜信息、聯盟信息、國家信息、競技(jì)場信息等全服(fú)所有玩家共享的信息)、在(zài)線玩家數據(jù)、離線(xiàn)玩家數據

  5.1.2 數據緩(huǎn)存方式

  5.1.3 數據持久化方式

  5.1.4 數據庫的比較

深度解析Java遊(yóu)戲(xì)服務器開發

  5.2MySql的(de)介紹及使用

  5.3MongoDB的介紹及使用

  文檔存儲、可擴展性、易查詢、安全性

  5.4Memcache的介紹和(hé)使用

  5.5Redis的介紹和使(shǐ)用

  5.5.1Redis的特點

  速(sù)度快、數(shù)據類型豐富(fù)、操作原子性、持久化(huà)、應用場景豐富

  5.5.3Redis的持久化

  AOF 模式指 Redis 在(zài)執行(háng)過程中會把所有的寫指令(lìng)記錄下來,當數(shù)據恢(huī)複時,再按照當時記錄的順(shùn)序執行 遍命(mìng)令

  RDB 模(mó)式是在(zài)不同的時間 點將 Red is 存儲的數(shù)據快照存儲到磁盤等(děng)介質上, Redis在持久(jiǔ)化過程中,會(huì)先(xiān)將數據寫到臨時文件中,持久化過程(chéng)結束之後再用臨時文件替換上次(cì)持久化好的文件

  5.5.4Redis的主從複(fù)製

  6.遊戲邏輯

  6.1邏輯(jí)架構

  6.1.1項(xiàng)目(mù)目錄

深(shēn)度解析Java遊戲服務器開發

  6.1.2模塊介紹

  core :核心模(mó)塊

  Gamelnit :遊(yóu)戲(xì)服務器啟(qǐ)動關閉類,負責服務器資源的加載與釋放

  Router :處理玩家請求接入的邏輯處理消息分發

  manager:邏輯模塊

深度解析Java遊戲服務器開發

  event 事件處理(lǐ)模塊。

  module :邏輯模塊(kuài)。

  net :網絡模塊,使用的網絡框架(jià)及網絡請求處理等

  rpc:負責邏輯服務器與其他服務器的遠程(chéng)服務調用。

  NetFramework :模(mó)擬網絡層框(kuàng)架,負責(zé)網絡(luò)請求響應的封裝(這(zhè)裏隻寫了一個模擬類,正式開發中應當使(shǐ)用 Netty Mina 等(děng)網絡框架〉

  NetHandler :模擬網(wǎng)絡框架處理接口,負責處理(lǐ)網絡框架的邏(luó)輯。

  NetHandlerlmpl :模擬(nǐ)網絡(luò)框架處理(lǐ)接口的實現類

  NetModule :模擬網絡層框架封裝,負責封裝網絡框(kuàng)架。

  ProtoIds :網絡請求協議號,客戶端與服務器交互的協議號(hào)

  ProtoMessage :網絡請求消息體,客戶端與服務器交互的(de)消(xiāo)息(xī)結構

  ResultCode :網絡響應(yīng)碼,客戶(hù)端(duān)與服務器交互返回結構的響應(yīng)碼封裝

  net.properties :網絡配置 IP 端口文件

  task :任務模塊,遊(yóu)戲中需要的(de)定時任務。

  JobMgr: Job 管理類

  QuartzManager: Quartz 管理類(lèi)

  TestJob :測試 Job類

  template :靜態數據,遊戲中靜態數據的載入和讀取。

  DataLoader :遊戲(xì)服務器數據載入類。

  util :工(gōng)具類,所(suǒ)需要的工具類,如數(shù)據(jù)庫工具類、緩存(cún)工具類、線程池工具

  CacheUtil 緩存管理類

  DB 數據庫管理類

  ExecutorPool 線(xiàn)程池管理類

  test:遊戲(xì)服務(wù)器邏輯框架測試類

  6.2邏(luó)輯流程

  6.2.1網絡模塊

  6.2.2線程池

  6.2.3啟動服務器

  6.2.4邏輯請求處理(lǐ)

  6.2.5關閉(bì)服(fú)務器

  6.3事(shì)件處理器(qì)

  在(zài)遊戲服(fú)務器中,經常會有事(shì)件觸發機製,觸發的事件通常是通過異步方式執行。服務器內(nèi)部事件處理器,用於斷開(kāi)模塊之間(jiān)藕合。比如登錄後要給好友發上線通知 登(dēng)錄完成後觸發一個登錄事件,所有關注這個(gè)事件的模塊,仍然處理自己的業(yè)務 避免 登錄完成後直接調用其他模塊的接口(kǒu)。

  6.4定時任(rèn)務

  在遊戲服務器中,經常(cháng)會有定時執(zhí)行某個邏(luó)輯的需求,如每日簽到、整點更新、玩 家某個屬性在某個時刻進行刷新、聯盟或國家(jiā)的聲(shēng)望值在每周的某個時刻刷新,這一係 列的需求都需要使用定時任務來實現

  6.5RPC框架

  各個服務器進程之間的通信部分,在多個服(fú)務器進程之間(jiān)的通信,目前使用的技術 般是 RPC

  6.5.1 Json-rpc

  6.5.2 Motan

  發現服(fú)務、訂(dìng)閱服務和服務通知

  支持 Fail Over FailFast ,以及 Server 連續(xù)失敗的次數(shù)達到規定(dìng)次數進行心跳檢 測等高可用(yòng)策略

  支持優(yōu)先低(dī)並發、 致性 Hash 、隨機請求、輪詢 負載均衡(héng)策略

  支持 SPI 擴展

  可調用統計日誌和訪問日誌(zhì)

  7.遊戲安(ān)全

  7.1遊戲安全的必要性

  7.2登錄安全

  7.3遊戲充值

  客(kè)戶(hù)端向開發商服務(wù)器請求生成訂單。

  客戶(hù)端調用聯運 SDK 打開支付界麵,玩家輸入支付信息。

  聯運 SDK 將訂單信息發送給聯運服務器。

  聯運服務器記錄訂單並發送訂單給開發商服務器進行(háng)支付驗證。

  開發商服務器校驗訂單信息,校驗成(chéng)功就對客戶端發貨,並返回校驗(yàn)結果給(gěi) 聯運服務器。

  聯(lián)運服(fú)務器返(fǎn)回訂單結果給客戶端。

  7.4SQL 注入

  7.5通信協(xié)議與消息(xī)格式

  7.6整型溢出

  7.7並發請求

  7.8邏輯漏洞

  7.9日誌係(xì)統

  8.服務器架構分析

  8.1服務器(qì)架構的演變過程

深度解析Java遊戲服務器開發

  8.2全區(qū)同服架構分析

  8.2.1 coc 架構模型分析

深(shēn)度解析Java遊戲服務器開(kāi)發

  8.2.2 COK 架構模型分析

深度解析Java遊戲服務器開發(fā)

  8.3分區分服架構分析

深度解析Java遊戲服務器開發

  8.4弱聯網(wǎng)類遊戲架構分析

深度解析Java遊戲服務器開發

  8.5MMORPG 類遊戲架構分(fèn)析

深度解析Java遊戲服務器開發

  9.《皇室戰爭》遊戲開(kāi)發實戰

  9.1微競(jìng)技遊戲介紹(shào)

  9.2架構分析及搭(dā)建

  9.2.1 功能分析

深度解析Java遊戲服務器開發

  9.2.2 服務器部署架構

深度解析Java遊戲服務器開發

  9.2.3 係統架構

  .通信機製、數據(jù)處理、項目管理、係統(tǒng)技術(shù)架構圖

深度解析(xī)Java遊戲服務器開發

  9.3數據持(chí)久化方案

  9.3.1 數據結構分(fèn)析

深度(dù)解析(xī)Java遊戲服(fú)務器開發

  9.3.2 使用 Morphia 操(cāo)作 MongoDB

  9.4Netty 網絡框架的使用

  9.4.1 Netty 實現的 HTTP 服務器

  9.4.2 Netty 實現的 TCP 服務器

  9.5賬號係(xì)統

  9.6個人信息

  9.7英雄卡牌係統

  9.8寶箱係(xì)統

  9.9戰(zhàn)鬥係統

  9.10客戶端模擬

  10.遊戲開發技術前景

  10.1Egret

  10.2Cocos 20

  10.3Unity

  10.4Unreal

  10.5Java

  10.6Node.js

  • 上(shàng)一篇:遊(yóu)戲一般用什(shí)麽編程語言(yán)開發
  • 下一篇:軟件開發公司主營(yíng)什(shí)麽
  • 相關文章

      無相關信息
    • 北京代辦(bàn)公司注冊的頭像
      北京(jīng)代辦公司注冊

      注冊時間:18-12-31

    • 企業好幫(bāng)手的頭像
      企業好幫手

      注冊時間:19-01-27

    • 企業ISO認證的頭像
      企業ISO認證

      注冊時間:20-12-22


    意見反饋
    意見反饋(kuì)
    返回頂部
    '); })(); 久久久久久 一区丨日韩中文字幕在线免费观看丨美国一级天天操夜夜操丨人人色人人干丨伊人干88综合网丨99精品国产免费观看视频 99精品国产免费观看丨久久不卡高清一区丨日日干