GameplayKit框架詳細(xì)解析(一) —— 基本概覽(一)

版本記錄

版本號 時間
V1.0 2018.02.06

前言

GameplayKit框架缘眶,構(gòu)建和組織你的游戲邏輯。 整合常見的游戲行為滩字,如隨機(jī)數(shù)生成造虏,人工智能,尋路和代理行為麦箍。接下來幾篇我們就一起看一下這個框架漓藕。

Overview

下面先看一下該框架的基本信息。

GameplayKit是一個面向?qū)ο蟮目蚣苄眩瑸闃?gòu)建游戲提供基礎(chǔ)工具和技術(shù)享钞。 GameplayKit包含用于設(shè)計具有功能性,可重用架構(gòu)的游戲的工具诀蓉,以及用于構(gòu)建和增強(qiáng)諸如角色移動和對手行為的游戲玩法特征的技術(shù)栗竖。

下面看一下該框架的基本結(jié)構(gòu)。


Getting Started with GameplayKit - GameplayKit開始

GameplayKit涵蓋游戲設(shè)計和開發(fā)的許多方面渠啤。 有關(guān)游戲設(shè)計模式的更深入討論狐肢,您可以使用GameplayKit,以及說明使用GameplayKit功能構(gòu)建游戲的教程沥曹,請參閱GameplayKit Programming Guide份名。


Related Sample Code - 相關(guān)示例代碼

要實(shí)驗(yàn)GameplayKit碟联,請參閱以下示例代碼項目:


Topics

1. Entities and Components

用于設(shè)計可組合的,可重復(fù)使用的游戲邏輯的通用架構(gòu)僵腺。

  • GKEntity

    • 與游戲相關(guān)的對象鲤孵,其功能完全由一組組件對象提供。
  • GKComponent

    • 抽象超類辰如,用于創(chuàng)建將特定游戲玩法功能添加到實(shí)體的對象普监。
  • GKComponentSystem

    • 為指定類的所有組件對象管理定期更新消息。

2. State Machines

用于定義狀態(tài)相關(guān)游戲邏輯的模塊化系統(tǒng)琉兜。

  • GKState

    • 抽象超類凯正,用于將狀態(tài)特定的邏輯定義為狀態(tài)機(jī)的一部分。
  • GKStateMachine

    • 一個有限狀態(tài)機(jī) - 一個狀態(tài)對象的集合呕童,每個狀態(tài)對象定義了游戲玩法的特定狀態(tài)的邏輯和狀態(tài)之間轉(zhuǎn)換的規(guī)則漆际。

3. Spatial Partitioning

數(shù)據(jù)結(jié)構(gòu),組織游戲世界中的對象夺饲,以快速搜索位置或鄰近度。

  • GKQuadtree

    • 用于根據(jù)二維空間中的位置來組織對象的數(shù)據(jù)結(jié)構(gòu)施符。
  • GKQuadtreeNode

    • 用于管理在四叉樹中組織的對象的輔助類往声。
  • GKOctree

    • 用于根據(jù)三維空間中的位置來組織對象的數(shù)據(jù)結(jié)構(gòu)。
  • GKOctreeNode

    • 用于管理在八叉樹中組織的對象的輔助類戳吝。
  • GKRTree

    • 一種數(shù)據(jù)結(jié)構(gòu)浩销,根據(jù)二維空間中的位置自適應(yīng)組織對象。

4. Strategists

用于計劃的AI形式在回合制游戲中移動听哭。 通過創(chuàng)建采用游戲模型協(xié)議的類來描述您的游戲玩法慢洋,然后使用這些類與策略對象來創(chuàng)建AI玩家或建議移動。

  • GKStrategist

    • 提供人工智能的對象的一般接口陆盘,用于回合(和類似)游戲普筹。
  • GKMinmaxStrategist

    • 使用確定性策略選擇回合制游戲的人工智能。
  • GKMonteCarloStrategist

    • 使用概率策略選擇回合制游戲的人工智能
  • GKGameModel

    • 實(shí)施這個協(xié)議來描述你的游戲模型隘马,這樣一個戰(zhàn)略對象可以計劃游戲的移動
  • GKGameModelPlayer

    • 執(zhí)行這個協(xié)議來描述你的回合制游戲中的一個玩家太防,這樣一個策略對象可以計劃游戲的移動。
  • GKGameModelUpdate

    • 實(shí)施這個協(xié)議來描述在你的回合制游戲中的一個移動酸员,以便一個策略對象可以計劃游戲的移動蜒车。

5. Decision Trees

定義一系列問題和可能的答案,最終采取行動幔嗦,或根據(jù)您提供的數(shù)據(jù)自動構(gòu)建預(yù)測模型酿愧。

  • GKDecisionTree

    • 一個數(shù)據(jù)結(jié)構(gòu),模擬一系列具體的問題邀泉,他們可能的答案嬉挡,以及一系列答案中的后續(xù)行動钝鸽。
  • GKDecisionNode

    • 用于手動創(chuàng)建決策樹的節(jié)點(diǎn),代表特定的問題和可能的答案棘伴,或回答其他問題后的操作寞埠。

6. Pathfinding

創(chuàng)建圖形,模擬您的游戲世界的導(dǎo)航性焊夸,允許GameplayKit規(guī)劃游戲角色的最佳路線仁连。

  • GKGraph

    • 描述游戲世界的可導(dǎo)航性并提供尋路方法來搜索通過該空間的路線的節(jié)點(diǎn)的集合。
  • GKObstacleGraph

    • 2D游戲世界的導(dǎo)航圖形創(chuàng)建了一個最小的網(wǎng)絡(luò)阱穗,用于在障礙物周圍進(jìn)行精確的路徑查找饭冬。
  • GKMeshGraph

    • 2D游戲世界的導(dǎo)航圖形創(chuàng)建了一個空間填充網(wǎng)絡(luò),可以在障礙物周圍進(jìn)行平滑尋路揪阶。
  • GKGridGraph

    • 2D游戲世界的導(dǎo)航圖昌抠,其中運(yùn)動被限制為整數(shù)網(wǎng)格。
  • GKGraphNode

    • 導(dǎo)航圖中的單個節(jié)點(diǎn)用于尋路鲁僚。
  • GKGraphNode2D

    • 導(dǎo)航圖中的一個節(jié)點(diǎn)炊苫,與連續(xù)2D空間中的一個點(diǎn)相關(guān)聯(lián)。
  • GKGraphNode3D

    • 導(dǎo)航圖中的一個節(jié)點(diǎn)冰沙,與連續(xù)三維空間中的一個點(diǎn)相關(guān)聯(lián)侨艾。
  • GKGridGraphNode

    • 導(dǎo)航圖中的一個節(jié)點(diǎn),與離散二維網(wǎng)格上的位置關(guān)聯(lián)拓挥。

7. Agents, Goals, and Behaviors

通過結(jié)合高層次的目標(biāo)唠梨,例如移動到目標(biāo),遵循路徑或避開障礙侥啤,將自主移動添加到角色和其他游戲?qū)ο蟆?/p>

  • GKAgent

    • 根據(jù)一組目標(biāo)和現(xiàn)實(shí)約束來移動游戲?qū)嶓w的組件当叭。
  • GKAgent2D

    • 在二維空間中操作的代理。
  • GKAgent3D

    • 在三維空間中運(yùn)作的代理
  • GKGoal

    • 激勵一個或多個代理人移動的影響盖灸。
  • GKBehavior

    • 一套共同影響代理人運(yùn)動的目標(biāo)蚁鳖。
  • GKCompositeBehavior

    • 一組行為,每個行為都是一組目標(biāo)糠雨,共同影響一個代理人的行動才睹。
  • GKPath

    • 一個代理可以跟隨的多邊形路徑。
  • GKAgentDelegate

    • 實(shí)現(xiàn)這個協(xié)議來同步一個代理的狀態(tài)和它在游戲中的可視化表示甘邀。

8. Obstacles

在游戲世界中模擬不可訪問區(qū)域的類琅攘,用于Pathfinding和Agents。

  • GKObstacle

    • 游戲世界中代表不可訪問區(qū)域的對象的抽象基類松邪。
  • GKCircleObstacle

    • 代理要避免的一個循環(huán)不能通行的區(qū)域坞琴。
  • GKSphereObstacle

    • 代理應(yīng)避免的球形不可通過的體積。
  • GKPolygonObstacle

    • 2D游戲世界中的多邊形不可通行區(qū)域逗抑。

9. Procedural Noise

生成相干隨機(jī)噪聲的場剧辐,然后用它們來創(chuàng)建類似云或木紋等自然現(xiàn)象的紋理圖像寒亥,建立無限大小的程序游戲世界等等。

  • GKNoiseSource

    • 噪聲生成器的抽象超類荧关。
  • GKNoise

    • 由噪聲源產(chǎn)生的程序性噪聲溉奕,可以用來處理,變換或合并噪聲忍啤。
  • GKNoiseMap

    • 程序噪聲數(shù)據(jù)的樣本加勤,您可以從中直接讀取噪聲值或創(chuàng)建噪聲紋理。
  • GKCoherentNoiseSource

    • 產(chǎn)生相干噪聲的程序噪聲發(fā)生器的抽象超類同波。
  • GKBillowNoiseSource

    • 一種程序噪聲發(fā)生器鳄梅,其輸出是一種具有平滑特征的分形相干噪聲。
  • GKPerlinNoiseSource

    • 一種程序性噪聲發(fā)生器未檩,其輸出是一種類似于云和地形等自然現(xiàn)象的分形相干噪聲戴尸。
  • GKRidgedNoiseSource

    • 程序噪聲發(fā)生器,其輸出是一種具有明確定義的特征的多重分形相干噪聲冤狡。
  • GKVoronoiNoiseSource

    • 一個程序性噪聲發(fā)生器孙蒙,其輸出(也稱為沃利噪聲或蜂窩噪聲)將空間劃分為圍繞隨機(jī)種子點(diǎn)的離散單元。
  • GKCylindersNoiseSource

    • 程序噪聲發(fā)生器悲雳,其輸出是同心圓柱殼的3D場马篮。
  • GKSpheresNoiseSource

    • 程序噪聲發(fā)生器,其輸出是同心球殼的3D場怜奖。
  • GKCheckerboardNoiseSource

    • 程序性噪聲發(fā)生器,其輸出是交替方形模式翅阵。
  • GKConstantNoiseSource

    • 程序噪聲發(fā)生器歪玲,輸出一個單一的恒定值的字段。

10. Randomization

標(biāo)準(zhǔn)算法的強(qiáng)大而靈活的實(shí)現(xiàn)掷匠,讓您在不影響可測試性的情況下增加游戲玩法的不可預(yù)測性滥崩。

  • GKRandom·

    • GameplayKit中的所有隨機(jī)化類(或可用)的通用界面。
  • GKRandomSource

    • GameplayKit中所有基本隨機(jī)化類的超類讹语。
  • GKARC4RandomSource

    • 實(shí)現(xiàn)ARC4算法的基本隨機(jī)數(shù)生成器钙皮,適用于大多數(shù)游戲機(jī)制。
  • GKLinearCongruentialRandomSource

    • 一個基本的隨機(jī)數(shù)生成器實(shí)現(xiàn)線性同余生成器算法顽决,比默認(rèn)的隨機(jī)源更快但更少隨機(jī)短条。
  • GKMersenneTwisterRandomSource

    • 一個實(shí)現(xiàn)Mersenne Twister算法的基本隨機(jī)數(shù)生成器,它隨機(jī)性更強(qiáng)才菠,但比默認(rèn)隨機(jī)源慢茸时。
  • GKRandomDistribution

    • 用于隨機(jī)數(shù)的發(fā)生器,落在特定的范圍內(nèi)赋访,并在多個采樣中顯示特定的分布可都。
  • GKGaussianDistribution

    • 用于隨機(jī)數(shù)的生成器缓待,它跨多個采樣,遵循高斯分布(也稱為正態(tài)分布)渠牲。
  • GKShuffledDistribution

    • 一個隨機(jī)數(shù)的生成器旋炒,它是在許多采樣中均勻分布的,但是類似值的短序列是不可靠的

11. Rule Systems

將游戲設(shè)計從可執(zhí)行代碼中分離出來签杈,以加速游戲的開發(fā)周期瘫镇,或者實(shí)現(xiàn)模糊邏輯推理,為游戲添加真實(shí)的行為芹壕。

  • GKRule

    • 在規(guī)則系統(tǒng)的上下文中使用的規(guī)則汇四,要測試謂詞并在測試成功時執(zhí)行操作。
  • GKNSPredicateRule

    • 在使用Foundation NSPredicate對象評估自身的規(guī)則系統(tǒng)中使用的規(guī)則踢涌。
  • GKRuleSystem

    • 規(guī)則列表通孽,以及用于評估和解釋結(jié)果的上下文,用于構(gòu)建數(shù)據(jù)驅(qū)動的邏輯或模糊邏輯系統(tǒng)睁壁。

12. Xcode and SpriteKit Integration

支持使用Xcode中的SpriteKit場景編輯器輕松創(chuàng)建和編輯GameplayKit功能的類和協(xié)議背苦。

  • GKScene

    • 用于將GameplayKit對象與SpriteKit場景相關(guān)聯(lián)的容器。
  • GKSceneRootNodeType

    • 標(biāo)識支持嵌入的GameplayKit信息的其他框架的場景類潘明。
  • GKSKNodeComponent

    • 管理SpriteKit節(jié)點(diǎn)的組件行剂。

13. Reference

14. Classes

后記

本篇已結(jié)束,后面更精彩~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钳降,一起剝皮案震驚了整個濱河市厚宰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遂填,老刑警劉巖铲觉,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異吓坚,居然都是意外死亡撵幽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門礁击,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盐杂,“玉大人,你說我怎么就攤上這事哆窿×戳遥” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵更耻,是天一觀的道長测垛。 經(jīng)常有香客問我,道長秧均,這世上最難降的妖魔是什么食侮? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任号涯,我火速辦了婚禮,結(jié)果婚禮上锯七,老公的妹妹穿的比我還像新娘链快。我一直安慰自己,他們只是感情好眉尸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布域蜗。 她就那樣靜靜地躺著,像睡著了一般噪猾。 火紅的嫁衣襯著肌膚如雪霉祸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天袱蜡,我揣著相機(jī)與錄音丝蹭,去河邊找鬼。 笑死坪蚁,一個胖子當(dāng)著我的面吹牛奔穿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敏晤,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼贱田,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嘴脾?” 一聲冷哼從身側(cè)響起男摧,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎译打,沒想到半個月后彩倚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扶平,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔬蕊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片结澄。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岸夯,靈堂內(nèi)的尸體忽然破棺而出麻献,到底是詐尸還是另有隱情,我是刑警寧澤猜扮,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布勉吻,位于F島的核電站,受9級特大地震影響旅赢,放射性物質(zhì)發(fā)生泄漏齿桃。R本人自食惡果不足惜惑惶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望短纵。 院中可真熱鬧带污,春花似錦、人聲如沸香到。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽悠就。三九已至千绪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梗脾,已是汗流浹背荸型。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留藐唠,地道東北人帆疟。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宇立,于是被迫代替她去往敵國和親踪宠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容