iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 21
0
自我挑戰組

探索Unity中的視覺化製作工具系列 第 21

節點式分岐劇情撰寫工具Dialogue System for Unity

  • 分享至 

  • xImage
  •  

今天花了一些時間研究Dialogue System(DS)這套擴充,其名稱就可以了解到它是一套為了對話而特別存在的外掛。雖然很早以前就買下來,但一直沒有時間也沒有需求使用它,所以一直擺在那。但DS又不像一些擺了一陣子就會自動下架的的外掛,它一直有更新,且它的討論一直都很熱烈,應該是很受歡迎的一套擴充,若能夠稍稍了解,對於日後開發也應該有些許幫助。

稍徽流覽過它的文件,但仍不是很明白,還好它有Demo可供參考,以下就是跟著Demo走一遍後的記錄。

DialogueSystemController這元件裡最主要的就是拿取DialogueDatabase這Asset,而DialogueDatabase在客製化視窗裡,用了數個Tab進行呈現其分類。

Actor這定義了哪些演員參與對話的過程,而Conversations則是實際對話撰寫的地方。DS用看起來像是圖和節點的方式呈現(其實較像樹狀結構)。Conversations的下拉式選單將一個個劇本概念的對話做切分。Demo 1裡主要就是玩家(Player)和Private Heart,以及玩家和Terminal的互動。從這裡的分法可以看出演員的定義是可藉由互動而進行對話進程的事物,並不局限在特定NPC種類的設定上。

其樹狀的結構下來說節點和節點之間的箭頭,只是形式上的引導,引導上個對話和下個對話之間的進程,若是用狀態機的概念來看,會有些不適應,它的條件並不是做在線上,而是節點本身就有條件設定的地方,而這樣的設計是比較接近Behavior Tree的概念(還記得Behavior Designer裡的節點也是給予條件的地方?)

而Private Heart決定要開始哪條對話線的條件判定是在於

CurrentQuestState("Get the Launch Codes") == "unassigned"

這裡的Get the Launch Codes是索引鍵,而CurrentQuestState是DS定義可用於Lua中的函式。

題外話,雖然Lua一直以來都在Unity開發生態中佔了很重要的一席之地,它的熱更新和規避手機審查的用法對很多遊戲來說幫助很大。但在Unity裡官方一直沒有將之納入正規的Script,這也導致很多Lua的版本更新和維護一直沒有統一的方案,這讓Lua在Unity中的使用總是像二等公民一般,隨時都有可能因為Unity的更新而會面臨一些麻煩。

雖然會有這樣的不確定性,但DS這些年來也是用Lua用的好好的,在不同的平台上沒有什麼災情傳出。看在DS對於管理對話、任務的助益上,就先暫時忘記Lua可能帶來的不確定性。

回到範例的研究上,Get the Launch Codes的值會一直停在activate直到和Terminal互動並有相對應的選項才有可能改變。

和Terminal互動時會出現輪入UI,按下Dominate後,就可以出現選項決定要怎麼進行,也是在這裡看到節點可以返回到上面的節點時才又確定它是圖和節點的結構只是多數時用樹狀溉念來處理。

SetQuestState("Get the Launch Codes", "success");
Variable["Alert"] = "Mission Complete: Launch Codes Acquired"

在其Script的欄位裡看到它利用Lua函式進行狀態(!?)和變數的設定。設定後會讓Private Heart的對話至第條線,進而完成Demo 1。

Get the Launch Codes其實是Quest/Items裡的其中一個項目,在DS中預設對於任務的狀態就是

在看完二個Demo後對於DS如何使用就大約有六成的了解,其它像是和UI銜接的部份,多個DialougeDatabase的使用等,就等到日後正式要使用時再進行研究。

以現今這個年代來說,若DS能夠使用類似於Flow Graph的方式或是State Graph的方式進行變數的引用、判定、設定,或許更符合現今的開發方式,畢竟寫Lua以文字的方式進行又沒有Compiler等協助,出錯的機率挺高的。

若條件撰寫不多、不複雜,主要還是多線劇情的撰寫,在這樣的遊戲裡用Dialogue System是很直覺快速的。不過若條件複雜又多的話,看到另一款這一年多來才出現的擴充 - Discourse,或許有著更強大的助力。第一眼的映象很好,但高價會讓人卻步,有興趣的開發者可以自行了解。


上一篇
可否)用Behavior Tree實現Utility Theory的嘗試
下一篇
表單仍是視覺化工具的典範
系列文
探索Unity中的視覺化製作工具30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言