99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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
開(kāi)發(fā)語(yǔ)言 Java
操作系統(tǒng) 跨平臺(tái)
軟件類型 開(kāi)源軟件

軟件簡(jiǎn)介

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

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

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

過(guò)去、現(xiàn)在、將來(lái)都不會(huì)有商業(yè)版本,所有功能全部開(kāi)源

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

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

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

愿景

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

架構(gòu)簡(jiǎn)圖

poYBAGKhy3uAHt0WAAL6q7fbmRA564.png

?

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

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

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

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

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

邏輯服

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

ioGame 支持的通信方式

pYYBAGKhy32AUXSSAAGdQKWObjk632.png

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

1.單次請(qǐng)求處理

????1.1 請(qǐng)求、無(wú)響應(yīng)

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

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

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

????????比如:裝備的升級(jí)、人物的升級(jí)、玩家的移動(dòng)、抽獎(jiǎng)、游戲前端到某一個(gè)場(chǎng)景時(shí)需要從游戲服務(wù)端獲取一些對(duì)應(yīng)的場(chǎ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è)邏輯服通信請(qǐng)求(可跨進(jìn)程

????????邏輯服與邏輯服之間的相互請(qǐng)求通信

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

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

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

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

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

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

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

????ioGame 是國(guó)內(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ù)邏輯的處理方式和編寫方式

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

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

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

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

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

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

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

游戲示例在線文檔

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

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

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

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

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

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

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

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

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

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

集成相關(guān):

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

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

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

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


poYBAGKhy4CAVgcGAALrkui6hVM097.jpg

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

協(xié)議文件

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

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

快速入門代碼示例

Proto 協(xié)議文件定義

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

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

Action

游戲服務(wù)端的編程,游戲服務(wù)端接收業(yè)務(wù)數(shù)據(jù)后,對(duì)業(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 類并無(wú)區(qū)別。如果只負(fù)責(zé)編寫游戲業(yè)務(wù),那么對(duì)于業(yè)務(wù)框架的學(xué)習(xí)可以到此為止了。

游戲編程就是如此簡(jiǎn)單!

訪問(wèn)示例(控制臺(tái)

當(dāng)我們?cè)L問(wèn) here 方法時(shí)(通常由游戲前端來(lái)請(qǐng)求),控制臺(tái)將會(huì)打印

┏━━━━━ 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] ━━━

快速?gòu)牧憔帉懛?wù)器完整示例

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

坦克游戲示例

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

?

適合人群?

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

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

?

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

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)