我對主選單項目製作已數個月餘了,我最不能忘記的是它的背景。
今年夏天,快熱死了,冷氣的電費也爆錶了,正是禍不單行的日子,我從介面到命名,打算隨著標題一併完成。
到後臺見著代碼,看見滿面撲來的漏洞,又想起尚未開發的地圖功能,不禁隱隱地頭痛起來。
《索利戴爾 -SoliDaire-》
這款遊戲的主標題,也是玩家所在世界的名稱。(敲定)
因為是專有名詞,副標題會是比較能夠指明遊戲故事或其性質的,希望在繪製 Logo 的時候,我會有個比較好的取名靈感。
◆【主選單樣式】
原先的主要選單以及系統設置選單中,選項是直接條列式出特定項目來的,當初沒有想太多的緣故,就導致現在要穿插新選項,或是要隱藏特定項目就變得很不方便。
程式跟機制真的不能寫死,貪圖一時的方便就是得讓未來的自己去進行善後。
加上現在又要讓主選單能夠在顯示標題畫面的專用樣式之間進行切換,勢必得做出調整才行。
中間牽扯即時物件還有選項控制的生成、操作反饋還有位置排版,七月的時候花了不少時間在處理這塊上。
Δ 主要選單相應於特定樣式時顯示的內容清單,會根據實質存在的項目之辨識名稱來產生能夠選擇的項目。
Δ 各選項的辨識名稱、標籤文字、圖示與反饋內容設置
經由指定選單樣式而即時生成的主要選單,啟用跟關閉之間的過渡動畫也做出了一些調整。
即時運行期間也能讓特定的選項隱藏,並且會做出相應的排版跟操作上變化(因為選項間切換時的目標不同了)。
雖然表面上跟舊版本之間沒什麼兩樣,但從開發者角度來說可以算是大改了。
● 系統設置介面追加新的選項樣式
另一個同樣改為動態選項生成的是系統設置選單。
原先只是要把語言選項弄成標題限定的欄位,但考慮到將來應該會多出不少系統設置類的項目,故把它給一起翻新了,雖然視覺上同樣看不出太大的差別就是。
此次翻新中,在選項之間加了分類標題還有可設置的縮排。
至於可供玩家調整的選項上,除了原先僅有的勾選欄位外,還追加了兩種選項樣式:
? [複數選項欄位]
可設置玩家一次性可選擇複數數量項目的欄位,如果說原先的勾選欄位對應的是 Bool 類型的話,這個複數選項欄位對應的則是位元旗標的列舉類型。
Δ 因應位元運算的特性,值為 0 的項目將不在處理範圍內。
假設最後玩家所設置的複數選項結果中,勾選了圖例中的第一項及 MyGO 兩個選項,則最後儲存的值相應的則會是:
TestFlagEnum.First | TestFlagEnum.MyGO
如此一來就達成了複數選項功能的目的,就能以該儲存值拿去應用在所需之處了。
? [計量條選項欄位]
對應的是 Float 類型,當然也能轉換為 Int 之類的數值格式。需設置最小值及最大值,以及單次設置的變化量。畢竟變化量太小的話,想像一下某組計量條的可控範圍是 0~1000,玩家要從 0 調整到 500,但每次的變化量只給 1 大概就知道了。和物品選單那時一樣,提供了直接設置成極限值的快捷鍵。
雖然音量設置中也已經有類似的計量條功能存在,但功能沒這個齊全就是。
◆【製作名單/素材來源】
僅限於標題畫面時才會顯示的主要選項之一,用途也就如名稱所示。
在製作前查了一下相關的資料,怎麼好像都沒有什麼教人製作這種介面的教學或是整體方向?
還是普遍上的認知都只是把製作名單,用數行文字捲動帶過就完事的關係,所以簡單到不需要有教學之類的…?
先整理了自己這邊的製作方向,由於部分的素材可能會需要嵌合授權文檔,亦或是根據原作者的需求,得附上特定的外部連結等等的,傳統上只是顯示數行文字就帶過的製作名單可能會不足夠。
參考了一下手邊的遊戲,有前面提及的在遊戲內置入純文字製作名單,也有直接把製作名單弄成純文字檔放在遊戲資料夾內的。
最後找到在方向性上最符合的是 RPG Maker MV 所製作的遊戲,其遊戲資料夾內似乎都會附有固定的 credits.html 檔,
它的內容就是以多個摺疊式的項目來做為構成要素,每個都含有可展開的內文區塊及超連結這樣的。
總體而言在製作方向上提供了不少點子,最後整合了自己的選單系統才完成。
有鑑於這種摺疊式選項的內文區塊展開跟收合本身就不好弄,這次還有涉及到文字本身的過渡效果,最後還得合併到選單本身的捲動處理,
因為選項的可視涵蓋範圍會受內文的展開而產生變化(參考開發日誌 #13),導致整個製作名單介面前後調整花了兩週以上才搞定。
目前製作名單介面主要分三個區塊:開發者名冊、素材來源註記、特別感謝
摺疊項目即為素材註記的主要構成,還會因其類型再進行細部的劃分,像是插件、特效、音樂等等。
若該素材註記附有超連結,則可以對其進行外部連結的開啟,就是在你瀏覽器開一個相應網址的分頁出來這樣。
素材註記的生成也很簡單,只要在特定的資料夾中,新增一個特定的 ScriptableObject 就行,遊戲初始化階段就會把它載入進去。
其實最早是想打算在外部的素材上,全都利用屬於公眾領域的項目,一方面也是想說可以省去做 credit 的麻煩啦。
但中間有部分素材真的很吸引人,加上也沒有找到其他類型相近的可利用,最後才打消這念頭。
也好啦,至少不用綁手綁腳的,挑個素材都還得看是不是 CC0,感覺也會錯失不少優秀的素材,畢竟使用外部素材的重點是要能夠節省開發時間才是。
◆【於背景運行時靜音】
比較次要的附加功能,但還是額外拿出來寫一下。
這次在音訊設置選單中新增了這個欄位,功能也就如名稱所示,當遊戲不處於視窗最上層的場合,將其音量淡出至靜音狀態,反之的場合再淡入回來。
對於遊戲過程中想暫時去做其他事的時候,讓應用程式在背景運行又不會被其音訊干擾的場合,可說是相當好用。
基本上自己玩過都遊戲只要有這類的設置的話,通常都會將其啟用,真心覺得所有遊戲都該有這功能。(確信)
實現該功能也不會很複雜,Unity 本身有個 OnApplicationFocus 的方法,把音量調整的東西扔進去裡面就可以了。
標題介面的接口,重置遊戲、開始新遊戲還有存讀檔的功能至此已經全部完成。
至於最前面提及的地圖功能,雖然會在主選單有一個專用的選項,但涉及的面向更繁雜,除非今年末的預定進度能提前完成,不然應該會是明年的項目了。
這段期間上去 itch.io 蒐羅了不少素材,還真的是個開發者的寶庫,看見有的品質如此地高,完全不遜色於付費素材,才感嘆以前怎麼都沒好好上去逛過一番。
當前是嘗試往圖示類的素材去搜,針對一些比較通用的物品或是事件道具來說,可以說是相當合適。
未來有機會可能會改為往背景還有特效類的去找看看,當然風格和當前遊戲本身相形下過於迥異的基本上都會篩選過,允許的情況下才會進行重繪微調吧。
往後以當前專案《索利戴爾 -SoliDaire-》為主題的創作標題中,都會將作品名稱給納入,連帶把開發“日誌”字樣給拿掉了,畢竟就我這發文頻率怎麼看也不像日誌吧。
總之先這樣囉 謝謝各位 下回見