亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>ioGame網(wǎng)絡(luò)游戲框架

ioGame網(wǎng)絡(luò)游戲框架

2022-06-14 | zip | 1.34 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 Apache
開發(fā)語言 Java
軟件類型 開源軟件

軟件簡介

ioGame 是一個(gè)由 java 語言編寫的網(wǎng)絡(luò)游戲服務(wù)器框架。支持 websocket、tcp ,適用于回合制游戲、策略游戲、即時(shí)戰(zhàn)斗游戲,等游戲服務(wù)器的開發(fā)。具有高性能、穩(wěn)定、易用易擴(kuò)展、超好編程體驗(yàn)等特點(diǎn)??勺鰹?H5(HTML5)、手游、端游的游戲服務(wù)器。

在 ioGame 中能讓你遺忘 Netty,你幾乎沒有機(jī)會能直接的接觸到 Netty 的復(fù)雜,但卻能享受 Netty 帶來的高性能。對開發(fā)者要求低,為開發(fā)者節(jié)約開發(fā)時(shí)間。

ioGame 可以很方便的與 spring 集成。支持多服多進(jìn)程的方式部署,也支持多服單進(jìn)程的方式部署。圖中的每個(gè)對外服、每個(gè)游戲邏輯服、每個(gè) broker (游戲網(wǎng)關(guān))都可以在單獨(dú)的進(jìn)程中部署,邏輯服之間可以跨進(jìn)程通信(對外服也是邏輯服的一種)。

過去、現(xiàn)在、將來都不會有商業(yè)版本,所有功能全部開源

只做真的完全式開源,拒絕虛假開源,售賣商業(yè)版,不搞短暫維護(hù)

承諾項(xiàng)目的維護(hù)周期是十年起步, 2022-03-01起,至少十年維護(hù)期

提供高質(zhì)量的使用文檔

愿景

????????讓網(wǎng)絡(luò)游戲服務(wù)器的編程變得輕松簡單!

架構(gòu)簡圖

poYBAGKhy3uAHt0WAAL6q7fbmRA564.png

?

通過 ioGame 你可以很容易的搭建出一個(gè)集群、分步式的網(wǎng)絡(luò)游戲服務(wù)器!

游戲網(wǎng)關(guān)集群

????broker (游戲網(wǎng)關(guān))可以集群的方式部署,集群無中心節(jié)點(diǎn)、自帶負(fù)載均衡。ioGame 本身就包含服務(wù)注冊,你不需要外接一個(gè)服務(wù)注冊中心,如 Eureka,ZooKeeper 等(變相的節(jié)約服務(wù)器成本)。

????通過 broker (游戲網(wǎng)關(guān)) 的介入,之前非常復(fù)雜的負(fù)載均衡設(shè)計(jì),如服務(wù)注冊、健康度檢查(后續(xù)版本提供)、到服務(wù)端的連接維護(hù)等這些問題,在 ioGame 中都不需要了,結(jié)構(gòu)也簡單了很多。

????實(shí)際上單臺 broker (游戲網(wǎng)關(guān)) 性能已經(jīng)能夠滿足了,因?yàn)橛螒蚓W(wǎng)關(guān)只做了轉(zhuǎn)發(fā)。

邏輯服

????對外服和游戲邏輯服可以有很多個(gè),邏輯服數(shù)量的理論上限是 netty 的連接上限。

ioGame 支持的通信方式

pYYBAGKhy32AUXSSAAGdQKWObjk632.png

ioGame 支持 3 種類型的通訊方式,分別是單次請求處理、推送、邏輯服間的相互通信;下面分別對這 3 種類型的通訊方式的使用上舉幾個(gè)例子。

1.單次請求處理

????1.1 請求、無響應(yīng)

????????當(dāng)請求端發(fā)起請求后,邏輯服不會發(fā)送任何響應(yīng)給請求端??梢杂迷谠诰W(wǎng)絡(luò)通訊中,存在著不需要接收方回執(zhí)確認(rèn)的調(diào)用模型,如數(shù)據(jù)采集的場景: 打點(diǎn)采集、日志傳輸、metrics上報(bào)等。

????1.2 請求、響應(yīng)

????????請求、響應(yīng)是在游戲開發(fā)中常見的通訊模式,也就是通訊的一方發(fā)出請求,而遠(yuǎn)程通訊的對方做出響應(yīng),也就是常說的請求/響應(yīng)模式。

????????比如:裝備的升級、人物的升級、玩家的移動(dòng)、抽獎(jiǎng)、游戲前端到某一個(gè)場景時(shí)需要從游戲服務(wù)端獲取一些對應(yīng)的場景配置等;

?

2.推送

????2.1 指定單個(gè)或多個(gè)用戶廣播(推送)

????????向一個(gè)或多個(gè)指定的用戶(玩家)主動(dòng)發(fā)送一些數(shù)據(jù)。?比如:

????????????給指定的在線玩家發(fā)送一些獎(jiǎng)勵(lì)。

????????????給在同一個(gè)房間內(nèi)的玩家廣播一些數(shù)據(jù),如某一個(gè)玩家射擊子彈,把這子彈的數(shù)據(jù)廣播給房間內(nèi)的其他玩家。如幾個(gè)玩家在同一個(gè)房間內(nèi)打牌,某個(gè)玩家出牌后,把這張牌的數(shù)據(jù)廣播給房間內(nèi)的其他玩家。

2.2 全服廣播(推送)

????給全服的所有在線玩家廣播消息,如廣播公告、即將停服維護(hù)等。

3.邏輯服間的相互通信

????3.1 單個(gè)邏輯服與單個(gè)邏輯服通信請求(可跨進(jìn)程

????????邏輯服與邏輯服之間的相互請求通信

????????比如:我們有兩個(gè)游戲邏輯服,分別是:a.天氣預(yù)報(bào)邏輯服、b.戰(zhàn)斗邏輯服?,F(xiàn)在我們設(shè)想一個(gè)回合制游戲的戰(zhàn)斗場景,需要配合天氣,根據(jù)天氣來增強(qiáng)或者減弱某個(gè)英雄的能力。那么在戰(zhàn)斗開始前,戰(zhàn)斗邏輯服只需要向游戲網(wǎng)關(guān)發(fā)起一個(gè)獲取當(dāng)前天氣的請求,就可以得到當(dāng)前的天氣信息了,在根據(jù)當(dāng)前的天氣數(shù)據(jù)來增強(qiáng)或減弱該英雄的能力。

????????又比如:a.大廳邏輯服、b.獎(jiǎng)勵(lì)發(fā)放邏輯服。大廳記錄著一些數(shù)據(jù)(房間總數(shù)),獎(jiǎng)勵(lì)發(fā)放邏輯服根據(jù)當(dāng)前的房間數(shù)量,來生成不同獎(jiǎng)品,隨機(jī)發(fā)放給在線用戶。

詳細(xì)示例可參考:邏輯服與邏輯服之間的交互示例

????3.2 單個(gè)邏輯服與同類型多個(gè)邏輯服通信請求(可跨進(jìn)程

????????比如:象棋邏輯服有 3 臺, 每臺邏輯服都有一個(gè)唯一的 邏輯服 id;我們可以在大廳邏輯服中向同類型的多個(gè)游戲邏輯服通信請求(可跨進(jìn)程),意思是大廳發(fā)起一個(gè)向這 3 臺象棋邏輯服的請求,框架會聚合 3個(gè)結(jié)果集,(假設(shè)結(jié)果是:當(dāng)前服務(wù)器房間數(shù))當(dāng)大廳得到這個(gè)結(jié)果集,我們可以選擇房間最少人的象棋邏輯服,假設(shè) 《象棋邏輯服-1》 是房間數(shù)最少的,我們就可以把邏輯服 id 給到玩家所在的對外服,讓玩家在對外服記錄下來,之后這個(gè)玩家發(fā)起的請求就會自動(dòng)的到 《象棋邏輯服-1》 這臺服務(wù)器上,不會把請求分配到其他的象棋邏輯服上。

最后,發(fā)揮你的想象力,把這 3 類通訊方式用活,可以滿足很多業(yè)務(wù)。

網(wǎng)絡(luò)游戲框架簡介

????ioGame 是國內(nèi)首個(gè)基于螞蟻金服 sofa-bolt 的網(wǎng)絡(luò)游戲框架,游戲框架由 [網(wǎng)絡(luò)通信框架] 和 [業(yè)務(wù)框架] 組成。

  • 網(wǎng)絡(luò)通信框架負(fù)責(zé)服務(wù)器之間的網(wǎng)絡(luò)通信
  • 業(yè)務(wù)框架:負(fù)責(zé)業(yè)務(wù)邏輯的處理方式和編寫方式

通過 ioGame 可以快速的搭建一個(gè)穩(wěn)定的、高性能的、分步式的網(wǎng)絡(luò)游戲服務(wù)器。

broker (游戲網(wǎng)關(guān))可以集群的方式部署,集群無中心節(jié)點(diǎn)、自帶負(fù)載均衡。

游戲框架借助于螞蟻金服 sofa-bolt 通信框架來提供穩(wěn)定、高性能。

即使之前沒有游戲編程的經(jīng)驗(yàn),也能參與到游戲編程中。如果你之前具備一些游戲開發(fā)或者 web MVC 相關(guān)的知識,則會更容易上手游戲服務(wù)的開發(fā)。

源碼內(nèi)置了一個(gè)坦克射擊游戲的示例,可直接運(yùn)行。

坦克射擊游戲是基于FXGL引擎(純java的游戲引擎)開發(fā)的。

通過示例,可以快速的掌握網(wǎng)絡(luò)游戲編程!

游戲示例在線文檔

網(wǎng)絡(luò)通信框架 - SOFABolt

SOFABolt 是螞蟻金融服務(wù)集團(tuán)開發(fā)的一套基于 Netty 實(shí)現(xiàn)的網(wǎng)絡(luò)通信框架。

  • 為了讓 Java 程序員能將更多的精力放在基于網(wǎng)絡(luò)通信的業(yè)務(wù)邏輯實(shí)現(xiàn)上,而不是過多的糾結(jié)于網(wǎng)絡(luò)底層 NIO 的實(shí)現(xiàn)以及處理難以調(diào)試的網(wǎng)絡(luò)問題,Netty 應(yīng)運(yùn)而生。
  • 為了讓中間件開發(fā)者能將更多的精力放在產(chǎn)品功能特性實(shí)現(xiàn)上,而不是重復(fù)地一遍遍制造通信框架的輪子,SOFABolt 應(yīng)運(yùn)而生。

Bolt 名字取自迪士尼動(dòng)畫-閃電狗,是一個(gè)基于 Netty 最佳實(shí)踐的輕量、易用、高性能、易擴(kuò)展的通信框架。

業(yè)務(wù)框架

如果說 sofa-bolt 為了讓 Java 程序員能將更多的精力放在基于網(wǎng)絡(luò)通信的業(yè)務(wù)邏輯實(shí)現(xiàn)上。而業(yè)務(wù)框架正是解決業(yè)務(wù)邏輯如何方便的實(shí)現(xiàn)這一問題上。

業(yè)務(wù)框架是游戲框架的一部份,職責(zé)是簡化程序員的業(yè)務(wù)邏輯實(shí)現(xiàn)。業(yè)務(wù)框架使程序員能夠快速的開始編寫游戲業(yè)務(wù)。

內(nèi)置多種可選模塊,可按需選擇,以方便應(yīng)用開發(fā):

  • 領(lǐng)域事件disruptor 實(shí)現(xiàn)類似Spring事件驅(qū)動(dòng)模型 ApplicationEvent
  • 任務(wù)延時(shí)器 (將來某個(gè)時(shí)間可對任務(wù)進(jìn)行執(zhí)行、暫停、取消等操作,并不是類似 Quartz 的任務(wù)調(diào)度)
  • 多環(huán)境切換 (不同運(yùn)行環(huán)境下的配置支持)
  • light-jprotobuf 補(bǔ)足 jprotobuf 不能讓多個(gè)對象在單個(gè) .proto 源文件中生成的需求,并簡化jprotobuf對源文件的注釋
  • 分步式鎖 (基于Redisson的簡單實(shí)現(xiàn))

內(nèi)置的其他功能:

集成相關(guān):

  • spring 集成 (業(yè)務(wù)框架可以方便的與 spring 進(jìn)行集成,5 行代碼)

后續(xù)計(jì)劃:

  • 抽象通用的游戲邏輯 (進(jìn)一步減少開發(fā)實(shí)踐過程中的工作量)
  • 步驟表
  • 幀同步
  • 狀態(tài)同步

業(yè)務(wù)交互簡圖


poYBAGKhy4CAVgcGAALrkui6hVM097.jpg

抽象的說,游戲前端與游戲服務(wù)端的的交互由上圖組成。游戲前端與游戲服務(wù)端可以自由的雙向交互,交互的業(yè)務(wù)數(shù)據(jù)由 .proto 作為載體。

協(xié)議文件

協(xié)議文件是對業(yè)務(wù)數(shù)據(jù)的描述載體,用于游戲前端與游戲服務(wù)端的數(shù)據(jù)交互。Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司開發(fā)的一種數(shù)據(jù)描述語言,也簡稱 PB。當(dāng)然協(xié)議文件描述還可以是 json、xml或者任意自定義的,因?yàn)樽詈髠鬏敃r(shí)會轉(zhuǎn)換為二進(jìn)制,但游戲開發(fā)中 PB 是目前的最佳。

游戲前端可以是 UnityUE(虛幻)、 Cocos或者其他的游戲引擎。

快速入門代碼示例

Proto 協(xié)議文件定義

首先我們自定義一個(gè)協(xié)議文件,這個(gè)協(xié)議文件作為我們的業(yè)務(wù)載體描述。這個(gè)協(xié)議是純java代碼編寫的,使用的是 jprotobuf, jprotobuf 是對 google protobuf 的簡化使用,性能同等。

/** 請求 */
@ProtobufClass
@FieldDefaults(level = AccessLevel.PUBLIC)
public class HelloReq {
    String name;
}

Action

游戲服務(wù)端的編程,游戲服務(wù)端接收業(yè)務(wù)數(shù)據(jù)后,對業(yè)務(wù)數(shù)據(jù)進(jìn)行處理;

@ActionController(1)
public class DemoAction {
    @ActionMethod(0)
    public HelloReq here(HelloReq helloReq) {
        HelloReq newHelloReq = new HelloReq();
        newHelloReq.name = helloReq.name + ", I'm here ";
        return newHelloReq;
    }
}

一個(gè)方法在業(yè)務(wù)框架中表示一個(gè) Action(既一個(gè)業(yè)務(wù)動(dòng)作)。

方法聲名的參數(shù)是用于接收前端傳入的業(yè)務(wù)數(shù)據(jù),在方法 return 時(shí),數(shù)據(jù)就可以被游戲前端接收到。程序員可以不需要關(guān)心業(yè)務(wù)框架的內(nèi)部細(xì)節(jié)。

從上面的示例可以看出,這和普通的 java 類并無區(qū)別。如果只負(fù)責(zé)編寫游戲業(yè)務(wù),那么對于業(yè)務(wù)框架的學(xué)習(xí)可以到此為止了。

游戲編程就是如此簡單!

訪問示例(控制臺

當(dāng)我們訪問 here 方法時(shí)(通常由游戲前端來請求),控制臺將會打印

┏━━━━━ Debug. [(DemoAction.java:4).here] ━━━ [cmd:1 - subCmd:0 - cmdMerge:65536]
┣ userId : 888
┣ 參數(shù): helloReq : HelloReq(name=塔姆)
┣ 響應(yīng): HelloReq(name=塔姆, I'm here )
┣ 時(shí)間: 0 ms (業(yè)務(wù)方法總耗時(shí))
┗━━━━━ Debug [DemoAction.java] ━━━

快速從零編寫服務(wù)器完整示例

????如果覺得 ioGame 適合你,可以看一下 快速從零編寫服務(wù)器完整示例 。在這個(gè)示例中,你可以用很少的代碼實(shí)現(xiàn)一個(gè)完整的、可運(yùn)行的、高性能的、穩(wěn)定的服務(wù)器。

坦克游戲示例

????ioGame 內(nèi)提供了一個(gè)基于 FXGL 游戲引擎的游戲示例坦克射擊啟動(dòng)文檔),F(xiàn)XGL 是純 java 開發(fā)的一個(gè)游戲引擎,可以在項(xiàng)目中直接運(yùn)行。運(yùn)行 TankApp.java 文件就可以啟動(dòng)游戲了。原計(jì)劃用 U3D 來做游戲示例的,但想到大伙還得安裝 u3d 的環(huán)境,就用 FXGL 來做游戲示例了。

?

適合人群?

  1. 長期從事 web 內(nèi)部系統(tǒng)開發(fā)人員, 想了解游戲的
  2. 剛從事游戲開發(fā)的
  3. 未從事過游戲開發(fā)但卻對其感興趣的
  4. 對設(shè)計(jì)模式在實(shí)踐中的應(yīng)用和 sofa-bolt 有興趣的學(xué)習(xí)者

推薦實(shí)際編程經(jīng)驗(yàn)一年以上的人員

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
  2. 1.83 MB   |  12次下載  |  4 積分
  3. 2世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
  4. 10.93 MB  |  11次下載  |  免費(fèi)
  5. 3電源測試報(bào)告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
  6. 6.47 MB  |  11次下載  |  免費(fèi)
  7. 4PWM控制器的控制方法
  8. 0.39 MB   |  3次下載  |  4 積分
  9. 5電流檢測芯片F(xiàn)P135應(yīng)用說明
  10. 1.24 MB   |  3次下載  |  免費(fèi)
  11. 6全面解讀被動(dòng)式與主動(dòng)式PFC電路
  12. 1.27 MB   |  1次下載  |  4 積分
  13. 7HC88L051F4低功耗芯片規(guī)格書
  14. 4.76 MB  |  1次下載  |  免費(fèi)
  15. 8CIU32D655x5數(shù)據(jù)手冊
  16. 2.14 MB   |  1次下載  |  免費(fèi)

本月

  1. 1常用電子元器件使用手冊
  2. 2.40 MB   |  52次下載  |  免費(fèi)
  3. 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
  4. 2.27 MB   |  33次下載  |  10 積分
  5. 3PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
  6. 1.83 MB   |  12次下載  |  4 積分
  7. 4世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
  8. 10.93 MB  |  11次下載  |  免費(fèi)
  9. 5電源測試報(bào)告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
  10. 6.47 MB  |  11次下載  |  免費(fèi)
  11. 6USB拓展塢PCB圖資料
  12. 0.57 MB   |  11次下載  |  免費(fèi)
  13. 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊
  14. 4.51 MB   |  9次下載  |  免費(fèi)
  15. 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊
  16. 0.70 MB   |  9次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935134次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191424次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183352次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81600次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73818次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分