偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

蘋果手游開發(fā)工具:GameplayKit開發(fā)指南

移動開發(fā) iOS
6月9日凌晨舉行的WWDC 2015大會上,蘋果宣布iOS 9的同時推出了兩個非常重要的工具,分別是GameplayKit以及ReplayKit,從該公司的介紹中來看,這兩個工具對于iOS手游開發(fā)者以及歐美游戲視頻相關(guān)領(lǐng)域可能會產(chǎn)生比較大的影響。

WWDC-2015-invitation.jpg

6月9日凌晨舉行的WWDC 2015大會上,蘋果宣布iOS 9的同時推出了兩個非常重要的工具,分別是GameplayKit以及ReplayKit,從該公司的介紹中來看,這兩個工具對于iOS手游開發(fā)者以及歐美游戲視頻相關(guān)領(lǐng)域可能會產(chǎn)生比較大的影響。

簡單的說,GameplayKit就是一個幫助新手開發(fā)者們在OS X和iOS平臺創(chuàng)作游戲的基礎(chǔ)工具和技術(shù)框架,可提供游戲資源、模塊、玩法設(shè)計以及系統(tǒng)規(guī)則方面的內(nèi)容,并不包括視覺渲染等功能。因此,可能對于有些資深開發(fā)者們來說,支持多平臺發(fā)布、功能更為復雜的游戲研發(fā)框架或許會更適合。

而ReplayKit的細節(jié)透露較少,在蘋果的官網(wǎng),我們可以看到,玩家們可以通過該功能在游戲中錄制、編輯并在線分享游戲,并沒有進一步的說明。

Screen-Shot-2015-06-09-at-17.09.15.jpg

以下為整理的蘋果官方《GameplayKit參考和編程指南》(由于篇幅限制,這里僅翻譯概念部分,想了解實例請移步蘋果官網(wǎng),還可下載樣本游戲代碼):

第一部分:框架參照

提示:這是一個正在研發(fā)的API或技術(shù)的概要文件,蘋果公司提供這些信息主要是為了幫助你通過蘋果產(chǎn)品使用這些技術(shù)或者編程界面而做好計劃,該信息有可能會在未來發(fā)生改變,本文當中提到的軟件應(yīng)該以最終發(fā)布的操作系統(tǒng)測試和最終文檔為準,未來有可能會提供新版本的文檔信息。

GameplayKit是一個面向?qū)ο蟮目蚣埽∣bject-oriented framework),為在OS X和iOS平臺打造游戲提供基礎(chǔ)工具與技術(shù)。GameplayKit包括為設(shè)計游戲功能而提供的工具、可重復使用的架構(gòu),還包括為創(chuàng)造和提高玩法功能而研發(fā)的技術(shù),比如角色移動和敵人的行為設(shè)計等等。

初識GameplayKit

GameplayKit框架包含了一些獨立的分支系統(tǒng),覆蓋了游戲設(shè)計和研發(fā)的多個領(lǐng)域。

  • 隨機化(Randomization):使用GKRandom協(xié)議、GKRandomSource以及GKRandomDistribution class,而且還有更多獨特的subclasses來增加游戲玩法的不確定性,同時不需要以增加BUG調(diào)試量為代價。

  • 狀態(tài)機(State Machines):使用GKStateMachine和GKState class打造模塊化的玩法系統(tǒng)。

  • Minmax Strategist:GKMinmaxStrategist class為回合制游戲中的敵人提供AI設(shè)計,想要使用一個Strategist的話,你需要用GKGameModel協(xié)議以及相關(guān)協(xié)議來描述游戲玩法。

  • 尋路系統(tǒng)(pathfinding):使用GKGraph和GKGraphNode class以及它們的subclasses來為你的游戲世界導航建模,并且為游戲?qū)ο笳业娇梢允褂玫穆肪€。

  • 代理、目標和行為:GKAgent class提供模擬功能你可以通過GkGoal對象為游戲單位定制化移動行為規(guī)則,每一個class都為一個代理自動跟隨設(shè)計了高等目標。

  • 規(guī)則系統(tǒng):使用GKRuleSystem和GKRule class打造復雜的游戲邏輯,包括模糊推理(fuzzy reasoning)以及應(yīng)急行為。

第二部分:GameplayKit編程指南

GameplayKit是為iOS和OS X平臺做游戲而研發(fā)的一系列基礎(chǔ)工具和技術(shù),與更高級的SpriteKit以及SceneKit游戲引擎不同的是,GameplayKit并不包含動畫和視覺渲染等內(nèi)容。GameplayKit主要是幫助開發(fā)者研發(fā)游戲的玩法并設(shè)計模塊化組件、用最少的努力做出可擴展的游戲架構(gòu)。

GameplayKit功能

打造、改善和維護一個復雜的游戲需要非常好的游戲設(shè)計。GameplayKit提供一個實體組件架構(gòu),幫助你設(shè)計可以重復使用的玩法代碼,并為解決復雜的面向過程的代碼提供一個狀態(tài)機系統(tǒng)(State Machine System)。GameplayKit還包含了一些隨機化的工具,可以為很多種玩法提供基本的資源。

創(chuàng)作一款優(yōu)秀的游戲還需要使用復雜的算法(algorithms)來解決很多常見的游戲玩法問題。通過GameplayKit,你不再需要寫自己的算法,而是可以直接使用GameplayKit提供的資源,這樣開發(fā)者就有更多的時間專注于把玩法做到更加獨特。

比如,你可以使用Minmax Strategist功能為回合制游戲打造AI系統(tǒng)、通過尋路功能為游戲角色設(shè)計導航路線,為高等級的游戲角色設(shè)置自動行走或者使用與代碼分離的規(guī)則系統(tǒng)并實現(xiàn)模糊邏輯推理(Fuzzy Logic Reasoning)。

由于GameplayKit在iOS和OS X系統(tǒng)中是獨立于高級游戲引擎而存在的,因此你可以拿它與任何可以做一個完整游戲的技術(shù)進行整合,比如做2D游戲用的SpriteKit、做3D游戲用的SceneKit或者使用Metal/OpenGL ES定制化的第三方游戲引擎。對于畫質(zhì)要求不高的游戲來說,你甚至可以只用GamePlayKit和(iOS里的)UIKit或者(OS X中的)AppKit直接創(chuàng)作游戲。

#p#

隨機化

游戲中有很多玩法都是基于概率和機會。桌游中玩家用骰子決定移動步數(shù)、紙牌游戲有洗牌的玩法、街機游戲的敵對生物會在不可預測的時間出現(xiàn)、RPG游戲里的每一步動作都有成功或者失敗的可能、開放世界游戲里的背景角色會自然移動,這里實在有太多太多的例子可以佐證。意想不到的驚喜可以讓一款游戲變得更有趣,每一步都有變化的行為可以增加游戲的重復體驗價值,模仿自然界系統(tǒng)的元素可以讓游戲更加生動真實。

做一款依靠概率因素的游戲,通常需要使用一個虛擬隨機數(shù)字生成器,或者說是隨機資源。然而,并非所有的隨機資源都是平等的,如果使用不當就達不到開發(fā)者的目的。在一款游戲中打造優(yōu)秀的虛擬隨機行為,你通常需要做到以下特點:

  • 隨機性:一個隨機數(shù)字生成器應(yīng)該產(chǎn)生不可預測的行為(至少看起來是這樣),但是,隨機性是怎么衡量的呢?計算機化的虛擬隨機數(shù)字生成器是基于無序的有窮數(shù)列。最終,這個數(shù)列終究會發(fā)生重復,至于在重復之前可以生成多少隨機數(shù)字,完全取決于資源使用的算法。更重要的是,當用二進制來看生成數(shù)字的時候,有些數(shù)字甚至是可以預測的,當然這取決于隨機資源的算法。

  • 游戲性能:更為復雜的算法可以產(chǎn)生更多的不可預測性,但代價是更多的處理時間。如果你的游戲為每一幀都使用多個隨機數(shù)字,并且需要保持60FPS的運行幀率,一個復雜的隨機源可能就會讓你的游戲變得很慢,在選擇隨機源的時候,一定要衡量隨機性與游戲性能的關(guān)系。

  • 決定機制:高質(zhì)量的游戲都需要測試,但真正的隨機性會讓你很難創(chuàng)造一個特定的測試環(huán)境。一個隨機源(Random Source)應(yīng)該在游戲中為玩家們保留表面上的不可預測性,但同時要允許多次重復之后的特定結(jié)果。決定機制隨機源對于聯(lián)網(wǎng)游戲來說是必要的,你需要確保隨機游戲玩法對于所有人都是平等的。

  • 獨立性:由于隨機源是基于一個數(shù)列,所以下一個出現(xiàn)的數(shù)字一定程度上取決于已經(jīng)出現(xiàn)過的數(shù)字。然而,一款游戲通常包含多個隨機元素。比如說,如果一款游戲在玩法和美觀方面都加入了隨機性,比如競技游戲中,玩家們的對手往往是隨即匹配的,而他們的角色可以在游戲中選擇聊天對話,增加游戲的獨特性。如果對話系統(tǒng)和已有的功能使用同一個隨機器的話,一名老練的玩家或許就可以預測下一個對話框是什么內(nèi)容。

透明的分配機制:對于很多玩法中的隨機化使用來說,數(shù)字應(yīng)該使用統(tǒng)一的分配機制,也就是說,所有人生成一個特定數(shù)字的可能性應(yīng)該是相同的。而對其他用途的游戲來說,這些隨機數(shù)字應(yīng)該遵循特定的分配機制,比如說很多游戲都加入了正常的分配機制,隨機的樣本經(jīng)常會產(chǎn)生與平均值相近的數(shù)字。

GameplayKit包含多個隨機化的class,足以滿足開發(fā)者們的這些目標。

如何在你的游戲中使用隨機化功能

GameplayKit中所有的隨機化class都是按照GKRandom協(xié)議,可以用最少的界面生成隨機數(shù)字,首先你需要選擇一個適合自己游戲任務(wù)的隨機生成器:

在大多數(shù)情況下,你需要一些按照特定范圍固定分配的隨機數(shù)字對于這類任務(wù)來說,使用GKRandomDistribution就可以了。如果要定制化隨機行為同時保持統(tǒng)一分配,你可以選擇不同的GKRandomSource子類為GKRandomDistribution對象提供基本的隨機數(shù)值。

為定制化隨機數(shù)字的分配,請使用GK GaussianDistribution或者GKShuffledDistribution class。

如果你不需要特定范圍或者分配隨機數(shù)字,可以直接使用GKRandomSource subclasses。

你還可以直接使用GKRandomSource classes的一種來為一組數(shù)列進行隨機排序,比如為紙牌洗牌。首先,選擇你需要的隨機源對象,然后把數(shù)列放到隨機源當中。這種方法可以返回原數(shù)列的數(shù)字,不過是亂序排列。

實體和組件(Entities and Components)

和任何的軟件一樣,設(shè)計一款復雜的游戲需要規(guī)劃一個很好的架構(gòu)。隨著你的游戲變得越來越大、內(nèi)容越來越豐富,最初做樣本游戲Demo時的一些決定可能會成為游戲發(fā)展路上的障礙。GameplayKit可以提供一個讓你從一開始就可以重復利用的架構(gòu),把游戲中不同的方面分隔開來。

在這種架構(gòu)里,一個實體指的是游戲相關(guān)對象的類型總稱。實體可以代表對玩法非常重要的對象,比如玩家以及敵人角色;也可以是只存在于游戲中很少和玩家進行互動的對象,比如某個關(guān)卡里的動畫裝飾。實體還可以是創(chuàng)意或者游戲的UI元素,比如決定何處放置地方角色的系統(tǒng)或者管理玩家角色裝備的系統(tǒng)等等。

一個實體只有容納了游戲組件之后才開始起作用,一個組件指的是處理特定而有限方面外觀或者行為的對象。由于一個組件的功能范圍是有限的,而且不隸屬于特定實體,所以你可以在多個實體中重復使用同一個組件。

狀態(tài)機(State Machines)

幾乎在所有的游戲中,玩法相關(guān)的邏輯都高度依賴于目前游戲的狀態(tài)。比如動畫代碼的改變可能取決于一個玩家的角色目前在行走、跳躍還是站立。敵人的移動代碼可能取決于你為其所做的模擬決定,比如是否追逐較弱的玩家或者躲開強大的玩家等等。甚至你的游戲在特定時間運行的幀率代碼更新也取決于游戲是在進行、暫停還是在菜單或者過場動畫界面。

當你開始研發(fā)一款游戲的時候,很容易把所有取決于游戲狀態(tài)的代碼放到同一個地方。不過,隨著你的游戲變得越來越復雜,單一的方法已經(jīng)很難支撐進一步的擴展。

狀態(tài)機可以幫助你定義不同游戲狀態(tài)下的規(guī)則,這些定義被稱為狀態(tài)機。然后,你就可以把相關(guān)的狀態(tài)和任意代碼聯(lián)系起來,可以在不同游戲狀態(tài)下切換模式,使用狀態(tài)機管理代碼可以讓你更容易給游戲中的復雜行為進行理性面對,狀態(tài)機可以用于你游戲中的任何一部分。

Minmax Strategist功能

很多游戲在視頻游戲(Video Gaming)出現(xiàn)之前就已經(jīng)非常流行了,尤其是桌游,比如十五子棋、國際象棋、石頭剪刀布以及Go等等,從邏輯意義上講都是游戲。玩家們想要在這些游戲中獲勝就需要在每次機會中規(guī)劃好最佳的行動,考慮到對手的步驟。這類游戲玩起來很帶感,不管對手是另外一個人還是電腦玩家。

在GameplayKit中,Strategist就是AI的簡單形式,你可以為這類游戲創(chuàng)造電腦對手。使用Minmax策略的游戲使用的GKMinmax class和支持API應(yīng)該具有以下特點:

順序性:每個玩家都需要按順序行動,也就是說,玩家們要輪流體驗。

對抗性:一個玩家贏,就必須有其他玩家(們)輸,這類游戲的設(shè)計理念是,一個玩家的每一步都應(yīng)該讓自己離勝利越來越近,或者讓其他玩家們離失敗越來越近。

可知性:玩家們可以自信的猜測自己的每一步可以帶來什么樣的后果,也就是說,玩家們的行動是不取決于機會和概率的。

完美的信息:所有對于游戲結(jié)果重要的信息必須始終對所有玩家開放。比如,國際象棋的輸贏基于雙方在棋盤上的位置,不過大多數(shù)玩家在大多數(shù)情況下都可以看到這些位置。如果有人在過程中藏了棋子的話,那么就不是完美的信息了,因為一個玩家的行動出現(xiàn)了未知因素。

尋路系統(tǒng)(Pathfinding)

在很多游戲中,導航都是非常重要的概念,一些回合制游戲要求玩家們選擇通往目標的路徑,很多動作和冒險游戲把角色放到一些迷宮當中,玩家們必須揭開謎題才能實現(xiàn)玩法目標,敵方角色必須按照既定方式給玩家?guī)硖魬?zhàn)。決定如何設(shè)置游戲迷宮、或者其他導航方面的過程就是尋路。GameplayKit為你的游戲提供一系列的地圖以及尋路工具,你可以用來移動角色或者其他的游戲組件。

使用GameplayKit尋路工具需要把游戲中的導航區(qū)域描述為一張圖表,上面有不同的位置或者節(jié)點一個組件從一個位置到另一個位置的移動路徑是不同的。由于大多數(shù)的2D游戲都比較適合,所以為這些游戲做尋路系統(tǒng)是非常容易的。

代理、目標和行為(Agents, Goals, and Behaviors)

在很多種游戲中,游戲組件的實時移動都具有一定程度的自動化。比如玩家可以在一個游戲中拖動角色去特定區(qū)域,然后角色會自動行走并達到該地點。敵方角色可能會在圖中攻擊,計劃打斷玩家的行動。同盟玩家可以通過消息告訴玩家,保持平行的距離。在所有的情況下,每一個組件的移動都可能具有現(xiàn)實制,所以游戲角色依然可以實時移動和變換方向

GameplayKit中的代理系統(tǒng)可以提供有效的自動移動方式,一個代理意味著游戲中的組件會按照時機的特點進行2D空間移動,比如尺寸、位置以及速率,當然也包括速率改變時候的阻力。一個組件的移動取決于其行動目標。

目標就是可以長期影響代理移動行為的目標。

行為和帶動一個游戲組件移動的一個或者多個目標有關(guān),比如,一個目標可能包含直接移動到一個點,路上避免所有障礙。當你把行為中的多個目標綜合起來之后,就可以為每一個帶來相關(guān)影響的目標分配權(quán)重。

規(guī)則系統(tǒng)(Rule Systems)

一些游戲包含非常復雜的規(guī)則,比如回合制RPG戰(zhàn)斗游戲可能會規(guī)定對方角色抵達相同區(qū)域之后的反應(yīng),比如誰先手?是否可以相互攻擊?如果角色試圖攻擊或者與另一個角色互動的時候會發(fā)生什么等規(guī)則。

有些最有趣的游戲包括突發(fā)的行為,簡單個體之間的互動可以為整個系統(tǒng)帶來樂趣。

在GameplayKit當中,規(guī)則系統(tǒng)解決了這些問題。通過游戲邏輯數(shù)據(jù)的對比,規(guī)則系統(tǒng)可以幫助你把游戲分解為功能性、可重復使用性、以及可擴展組件,簡單的規(guī)則也可以到來復雜的行為。

GameplayKit包含兩個主要的規(guī)則系統(tǒng)打造class,分別是代表永恒狀態(tài)下的特定決定規(guī)則GKRule,以及決定一些特定方面狀態(tài)數(shù)據(jù)的規(guī)則GKRuleSystem。

責任編輯:林師授 來源: gamelook
相關(guān)推薦

2013-06-17 14:30:56

手游開發(fā)工具CocoStudioCocos2d-x

2013-06-03 16:45:54

手游開發(fā)CocoStudio下工具

2011-06-29 08:45:15

Xcode

2010-07-23 15:51:27

Perl開發(fā)工具

2014-06-06 09:13:28

SwiftSwift編程

2011-03-02 08:35:19

人機交互界面iOS

2010-09-10 13:19:48

放寬限制開發(fā)工具iPhone

2015-06-15 18:45:28

App Thinnin應(yīng)用瘦身

2015-04-23 19:22:09

崩潰分析工具

2011-07-25 16:21:22

Sencha touc

2022-08-02 08:01:09

開發(fā)插件Chrome前端技術(shù)

2010-05-28 13:38:29

Linux開發(fā)工具

2010-09-10 10:59:48

蘋果iOS應(yīng)用

2011-08-05 10:01:23

Xcode Interface

2015-07-07 10:08:02

2011-06-09 18:24:36

QT Wince

2012-03-26 09:27:40

谷歌安卓開發(fā)谷歌安卓

2023-05-15 18:44:07

前端開發(fā)

2009-06-24 16:30:21

JSF組件模型

2014-08-06 14:56:15

點贊
收藏

51CTO技術(shù)棧公眾號