針對遊戲開發(fā)者舉辦的會議講座「CEDEC 2020」在最後一天 2020 年 9 月 4 日,舉辦了以
「《健身環(huán)大冒險(リングフィット アドベンチャー)》的軟硬體一體式開發(fā)~跨越開發(fā)週期的差異~」為主題的講座。
採用稱為 Ring-Con 前所未見的控制器,以至今為止從未出現(xiàn)過的遊戲之姿創(chuàng)造出了龐大熱潮的《
健身環(huán)大冒險》。此次講座是由任天堂的
田邨嘉隆、
和田真樹、
成瀨文覺三人來講述本作在開發(fā)時的情況。揭露了開發(fā)週期各有不同的「硬體班」、「系統(tǒng)班」、「遊戲班」相互踏入對方的領(lǐng)域來革新想法的創(chuàng)舉,在此將為玩家們送上這次講座的情況。
關(guān)於《
健身環(huán)大冒險》,筆者認(rèn)為已經(jīng)不需要再多加詳細(xì)說明了。該作品是兼顧了運用可偵測推壓力道的圓環(huán)型控制器「Ring-Con」來進行運動,以及於幻想世界裡進行冒險的 RPG 等兩種要素的遊戲軟體。Ring-Con 採用了纖維強化塑膠所製成的彈簧,能夠確實讓人享受到帶有負(fù)擔(dān)的運動。
要使用前所未見的控制器來製作遊戲,不可或缺的是田邨率領(lǐng)的「硬體班」、成瀨的「系統(tǒng)班」、和田的「遊戲班」之間的相互協(xié)助。硬體班是負(fù)責(zé)以研討材料跟組合方式,在物理層面上來開發(fā) Ring-Con 的工作。系統(tǒng)班則是負(fù)責(zé)製作 SDK 及 Ring-Con 的韌體等讓 Ring-Con 運作的設(shè)計工作。而遊戲班則是使用 Ring-Con 來開發(fā)使用者的體驗(遊玩感)。
話雖如此,三個班所負(fù)責(zé)的工作分別存在著不同的週期。若是按照週期來進行開發(fā)的話,便會產(chǎn)生許多的等待時間,進而導(dǎo)致時間上的浪費。這樣一來便難以實現(xiàn)「在有限的時間裡,盡可能高速地開發(fā)眾多健身項目(迷你遊戲)」的目標(biāo)」。講述在這樣的過程中由三個班所進行的想法革新,便是本講座的主旨。
成為障礙的是不同的開發(fā)週期
硬體班先設(shè)計 Ring-Con 的機構(gòu)及迴路,並以此來進行產(chǎn)品設(shè)計。以掌握所需功能及實現(xiàn)手段等方針的「原理試作」,確認(rèn)能否按照設(shè)計加以實現(xiàn)並進行改良的「開發(fā)試作」,接著是進行量產(chǎn)產(chǎn)品的準(zhǔn)備,確認(rèn)規(guī)格是否適用的「量產(chǎn)試作」等三個週期來進行工作。當(dāng)開發(fā)週期越往後推進,與其相關(guān)的人士也會變多,而責(zé)任也會隨之增大。由於牽涉到使用者的安全,因此在一個週期上相對來說較長。
而系統(tǒng)班則是要開發(fā)能讓 Ring-Con 於遊戲內(nèi)使用的 Nintendo SDK。在 Nintendo SDK 裡包含了如「Ring-Con 的韌體」、 Joy-Con 的韌體及 Nintendo Switch 的 Switch OS 的「主機系統(tǒng)」、「Ring-Con 用資料庫」等項目。
首先透過韌體取得加諸於 Ring-Con 上的力道,並以原始資料的形式傳給將裝設(shè)在上面的 Joy-Con 控制器。由於原始資料是很複雜的數(shù)值羅列,得透過 Switch OS 變換為能於遊戲內(nèi)使用的遊戲用資料(這裡是指速度及顯示 Ring-Con 位置的座標(biāo))。在此必須得建立起自資料庫中取出這種遊戲用資料並傳遞給遊戲……的流程。
話雖如此,Nintendo SDK 不僅只用於開發(fā) Ring-Con 上。它是彙整了一定數(shù)量的各種遊戲與服務(wù)所需的修正與改良內(nèi)容及追加新功能後所發(fā)布的套件。可說是在三個班之中以中等程度的週期來運作的一個班。
遊戲班則是,大概在一個月裡以討論規(guī)格→實裝→監(jiān)控遊玩→檢討改良點的方式來循環(huán)一個週期,並持續(xù)進行著遊戲的開發(fā)。單一週期是在三班裡最短的,其任務(wù)便是以高速來開發(fā)眾多健身項目。
換句話說,三個班的工作週期其長度與結(jié)束時機各有不同,要是以一般的方式進行工作,就會出現(xiàn)讓遊戲班被迫進入等待時間的問題。
透過硬體班與遊戲班的協(xié)助,讓 Ring-Con 的耐久度可供辨識
田邨談及了關(guān)於由硬體班與遊戲班攜手合作,讓耐久度評估轉(zhuǎn)為效率化的過程。Ring-Con 身為一種前所未見的控制器,為了安全需追求較高的耐久度。為了讓遊戲班所提倡的健身項目,也能藉由通過耐久度評估而獲得實裝,因此才透過針對 Ring-Con 特別強化的全新評估週期來提高效率。
在此由硬體班與遊戲班所設(shè)計出的是,一種將 Ring-Con 的耐久度轉(zhuǎn)為在 RPG 等作品中使用的「HP」數(shù)值的方法。製作了會自動推壓 Ring-Con 的測試機,算出了在全力推壓下 Ring-Con 所能承受的次數(shù),也就是抓出 Ring-Con 的 HP。 透過將 HP 數(shù)值化,也就更為容易得知改良了 Ring-Con 時的效果。
應(yīng)用這種思考方式的,就是 20 秒內(nèi)比賽推壓健身環(huán)次數(shù)的迷你遊戲「大胸肌挑戰(zhàn)」,也就是傷害的數(shù)值化。這裡所指的傷害,是使用者在推壓 Ring-Con 時,所給予 Ring-Con 的傷害。傷害會讓 Ring-Con 的 HP 減少,當(dāng)歸零時便會使 Ring-Con 損壞。
首先是由遊戲班提出實裝新迷你遊戲的要求,接受要求的硬體班則測量在過程中對 Ring-Con 造成的傷害。若對 HP 的影響較低,就能夠順利進行實裝。
要測量迷你遊戲?qū)?Ring-Con 所造成的傷害,並非是在一開始就用上試驗機,而是需要使用者的遊玩歷程。推壓的力量會根據(jù)使用者的臂力而有所不同,即使是同一個使用者也會因疲累而使力量減弱。
接著由硬體班進行歷程的分析。以 10~100% 的十種階段來評估推壓 Ring-Con 的力道(推壓至雙手交錯的狀態(tài)下被視為「推壓量」100%)。計算在每種推壓量下推壓數(shù)次的總值。
隨後使用前面提到的試驗機,以 “若是推壓量為 100% 能夠承受多少次的推壓呢” 為基準(zhǔn),若為 90% 時會是幾次、若為 80% 時會是幾次……這樣子的方式來進行測量,針對每次推壓量所給予 Ring-Con 的 HP 傷害的數(shù)值來進行量化。
再將其與記錄於歷程內(nèi)的各階段推壓次數(shù)組合,就能算出遊玩一次時造成的傷害。由於傷害較小被判定為不會對 Ring-Con 造成太大影響,因此順利實裝了「大胸肌挑戰(zhàn)」。
另外當(dāng)遊戲班在提出「希望提升負(fù)荷採用更激烈的設(shè)定」的要求時也會用上這種想法。收集全體開發(fā)者的歷程,硬體班透過分析此筆資料計算出直到遊戲全破為止的總傷害。由此得知了 Ring-Con 可充分地承受傷害,為此可實裝遊戲班所希望進行的調(diào)整。
田邨以把另一班所抱持的問題視為自己班上的問題,並透過相互踏入對方的領(lǐng)域來解決問題的說法,來作為這種做法的總結(jié)。
為了高速進行開發(fā),捨棄至今為止的政策
為了要以高速開發(fā)健身項目的另一個問題,就是沒辦法立即發(fā)布 SDK。正如前面所提到的,SDK 存在著彙整了多項修正、改良與新功能後才進行發(fā)布的慣例。要是得在 SDK 發(fā)布之後才能使用好不容易作好的新功能,在此便會產(chǎn)生時差。
成瀨對此表示遊戲班為了要能集中在遊戲開發(fā)上,雖然十分重視「能簡單運用功能,要設(shè)計的淺顯易懂(容易)」、「不需在各種遊戲內(nèi)加入同樣的處理,而是將能共通化的處理集中於系統(tǒng)端(功能集中)」、「進行總和測試,在各種使用方式下能毫無問題的運作(堅固性)」等政策,但要是死守在這種週期上,就沒辦法跨越開發(fā)週期之間不同的鴻溝了。
在此他不將開發(fā)所需的 Ring-Con 韌體、主機系統(tǒng)、Ring-Con 用資料庫彙整至 SDK 內(nèi),而是以直接提供的方式提供給遊戲班,但此種做法仍存在著數(shù)種問題。
首先便是 Ring-Con 韌體的更新。雖然曾考慮過透過主機系統(tǒng)下的資料更新來進行,卻因為那是依附於 SDK 的發(fā)布週期之下而行不通。接著是雖準(zhǔn)備了於 Switch 上運行的工具,但不僅在版本管理上變的很麻煩外,還會演變?yōu)閺倪[戲班那提出有關(guān)更新上的問題的情況,因此這個方法也行不通。
關(guān)於像這種反覆嘗試的時期,成瀨對此表示「雖然有貼心想過,要盡量不麻煩遊戲班進行開發(fā),但那對整體開發(fā)工作而言並不是最佳解答」。成為解決之契機的是,他與遊戲班討論這件令他煩惱的事。從遊戲班那邊提出了「如果在測試選單下設(shè)有更新工具的話會很方便的」這樣的意見,並由他們整頓出能夠立即提供的環(huán)境。
而剩下的是主機系統(tǒng)與 Ring-Con 用資料庫。正如前面所提到的,主機系統(tǒng)是將從 Ring-Con 韌體所取得的輸入資料進行「適當(dāng)?shù)奶幚怼沽钇渥優(yōu)橐嘴妒褂玫闹怠5@種「適當(dāng)?shù)奶幚怼箙s會因在開發(fā)過程中持續(xù)產(chǎn)生變化,因此無法立刻提供給遊戲班。在此成瀨改變了想法,把主機系統(tǒng)加以「線路化」。將輸入資料的處理交給 Ring-Con 用資料庫,而主機系統(tǒng)則變?yōu)椴唤佑|任何資料。這樣一來主機系統(tǒng)就只要負(fù)責(zé)與 Joy-Con 的連接及處理通訊,而完全不會對遊戲帶來影響。
可說是把牽動遊戲班意見的部分自主機系統(tǒng)上切離,並集中至 Ring-Con 用資料庫上。這樣一來就變得能夠即時提供主機系統(tǒng)了。
而且還把 Ring-Con 用資料庫以原始碼的形式提供給遊戲班,如此一來除了系統(tǒng)班之外也能進行修正了。換言之,三個班在一邊踏入了對方領(lǐng)域的同時,也變得能夠共同進行開發(fā)了。此舉不僅讓遊戲班能集中於開發(fā)上,還讓成員們的想法變成以《
健身環(huán)大冒險》團隊一份子的身分,由三個班來共同完成遊戲為目標(biāo)。
儘管是在這種情況下進行開發(fā),但開發(fā)團隊仍在時程上接近最後關(guān)頭的時候?qū)嵮b了僅用 Ring-Con 來進行訓(xùn)練的「背景執(zhí)行模式」。在三個班共同進行開發(fā)的過程中,得決定要從 Ring-Con 的韌體或 Joy-Con 的韌體之中,選出一方來追加功能。前者剩餘的空間很小只有幾 KB 的空間,但由於身為僅使用在《
健身環(huán)大冒險》的硬體,所以只會對參與開發(fā)的三個班造成影響,為此具有較高的自由度。另一方面,後者的剩餘空間雖然很大,但由於 Joy-Con 控制器本身也使用於其他的遊戲上,在追加功能時所產(chǎn)生的影響也較大。
結(jié)果為了讓三個班在相互協(xié)助之下以高速的狀態(tài)來進行開發(fā)週期的循環(huán),為此有必要整頓出僅止步於《
健身環(huán)大冒險》上的體制,而決定替 Ring-Con 追加功能。在進行削減 1 Byte 的作業(yè)之後,終於順利實裝了「背景執(zhí)行模式」。
一般來說,若是要替遊戲追加某種功能或變動,只需要調(diào)整軟體就能搞定。但是就《
健身環(huán)大冒險》而言,由於存在著前所未有的 Ring-Con,因此也得要開發(fā)耐久度評估與韌體及資料庫等項目。特別是耐久度評估,因為每次在追加新功能時都得要執(zhí)行此項目,可說是得付出正常遊戲難以想像的心力。講述為了創(chuàng)造出全新的硬體及遊戲體驗,不僅得耗費心力,也必須在想法上有所改革,讓人深深感覺這是一場十分有趣的講座。