[程式] 工作流程研究:快速世界建構
雖然分類在程式好像不算是很正確。
不過相較其他分類應該比較接近程式,就用這個分類了(望
一、前言
開放世界應該對於很多人來說是某種夢想與浪漫。然而小團隊在資源上不太可能器及多大
的規模,自動地圖產生機制的設計又可能太難。
今年二月初因為從手上的專案暫時休息,也算當作一個練習,我決定摸索看看有什麼流程
可以讓廣大世界的製作能夠簡單達成,用最低限度的資源製作某種大規模場景。
雖然這篇裡面用的工具是 Unity,但是純粹工具組跟流程應該是可以適用於任何引擎。
二、目標
在這邊要為目標「使用最低資源製作大規模場景」做更明確的定義,以了解這項實驗的可
用之處與限制:
1.最低資源
不花費任何金錢,甚至以不撰寫任何程式為目標,意即近乎沒有技術知識也能處理。
2.大規模場景
能近乎無人工的情況下製作某種程度上可用的場景,開放世界關卡不是唯一目標。
所以某方面來說這個流程並不會讓你閉著眼睛就做出一款 3A 大作,但有可能作為有效的
基礎,幫助你進行地圖的建設或者是一個大規模背景的製作。
同時因為主要是流程上的探討,基本上不會花時間詳述實作細節,但是所有提到的工具應
該都有不少網路上提供的教學,只是沒有人整併起來整個流程。
三、流程
Open Street Map 是一個由社群之力建構的完全開放任何用途的地圖,這個流程基本上奠
基於 Open Street Map 的資料。由於 OSM 也有 3D 建築形狀的標記,所以就代表我們可
以直接從中取出建築跟道路的資訊。
1.建築
建築資訊可以藉由 Blender 的工具 Blender-GIS[1] 取得。
可以取得的模型大約像這樣:https://imgur.com/qAebT6J
基本大多是純粹的建築描框,甚至有些因為沒有高度標示而只能隨機產生。
使用 Blender-OSM[2] 的話能選擇建築的屋頂形式:https://imgur.com/f6dt7az
如果進一步使用的是 Blender-OSM 付費版[3] 的話,這個版本作者有額外附上建築材質:
https://imgur.com/sKHFBvn
我則因為想要對於建築的表現有更多的控制權,我選擇另外寫了一個 Unity HDRP/URP 用
的可控簡易建築外觀 Shader[4]:
https://imgur.com/VjeNatZ
應該還算騙(日夜循環影片)
https://imgur.com/kPLgbdY
2.道路
Blender-GIS 跟 Blender-OSM 同樣都可以取得道路資訊,差異是 Blender-GIS 只會取得
曲線,Blender-OSM 會直接給出一個 Mesh,因此先用這邊延續下去。
從 Blender-OSM 可以取得的 Mesh 資訊大約像這樣:https://imgur.com/Nic7wW1
路面資訊會另外根據道路用途標示出來,因此可以多準備幾種不同的材質分開貼上。這邊
再根據 Roman Papush 的道路 Shader 教學[5]製作可以輕易修改的程序產生材質。
https://imgur.com/7akfI8X
(天空是根據 @jannik_boysen 的教學[6]製作的)
這個實驗結果並沒有辦法瞬間完成「某某城市」的 GTA,但作為一個基礎原型應該是相當
充足的。而如果是作為背景,甚至應該已經是完全可用的程度。
五、限制
當然畢竟作為一個完全土炮的流程,限制當然也很多。以下會詳述各項待處理的限制:
1.路口交界
由於 OSM 拉下來的資料只有路,因此不會特別處理掉路與路之間交疊的區域。
2.人行道
以城市來說這個做法還缺少最重要的人行道。可以嘗試在 Blender 裡面藉由布林運算取得
,但是可能會因為路面幾何的問題而無法有效取得。
3.地形
雖然像 Blender-GIS 可以拉衛星地形資料,但因為精度只有 30 公尺所以會造成奇怪的起
伏。因此如果要做為遊戲空間,可能不適合選擇地形起伏大的地區。
4.資料標示不全
由於 OSM 是社群貢獻,因此完整度、正確性會根據地區有極大的差異。
5.OSM 解析不全
由於 OSM 有一些複雜的 Relation 標記,標記物件之間的關係,如果沒有解析正確的話可
能無法有效取得所有有用的資訊。
例如下圖是 Blender-GIS 取得的新宿都廳資料:
https://imgur.com/3mteLBS
但是實際上 OSM 標記的新宿都廳資料更加完整:
https://imgur.com/V4zdDdY
六、結語
隨著政府公開資料越來越多、以及各地社群的貢獻之下,顯然讓 OSM 的完整度對於遊戲、
3D 創作等帶來不少幫助。
其中資料甚至也包含有行人穿越道等項目,如果隨時間更加完整,想必可以帶來更大的幫
助。現階段要能夠進一步使用這些資料產生有效的遊戲關卡還需要更多的努力,不過至少
作為一個乍看之下很精緻的場景似乎已經能做到了。
也期待是不是有人能藉由我分享的流程作出精彩的作品:)
七、參考資源
[1]Blender-GIS-https://github.com/domlysz/BlenderGIS
[2]Blender-OSM(免費版)-https://gumroad.com/l/blender-osm
[3]Blender-OSM(付費版)-https://gumroad.com/l/blosm
[4]我的客製建築 Shader Graph-
https://github.com/dklassic/Unity-Simple-Building-Triplanar-Shader
內部空間 Cubemap 對應是根據這個教學做的:https://youtu.be/dUjNoIxQXAA
[5]Roman Papush 的道路 Shader 教學-https://youtu.be/vhrIEcVSI5M
[6]@jannik_boysen 的教學-
https://medium.com/@jannik_boysen/procedural-skybox-shader-137f6b0cb77c
延伸手段-Houdini Game Dev Tool
Houdini 去年增加了一系列能夠使用 OSM 資料做城市建構的工具,其中個人認為最大的亮
點是內建可以解析路口交界,產生更加自然的路面。有興趣的可以嘗試看看:
https://youtube.com/playlist?list=PLXNFA1EysfYkFzKS--S3_3393X2z1F_e0
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.50.132 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1617008534.A.62E.html
※ 編輯: dklassic (111.250.50.132 臺灣), 03/29/2021 17:02:54
推
03/30 00:07,
3年前
, 1F
03/30 00:07, 1F
推
03/30 10:10,
3年前
, 2F
03/30 10:10, 2F
推
03/30 11:49,
3年前
, 3F
03/30 11:49, 3F
推
03/31 20:21,
3年前
, 4F
03/31 20:21, 4F
→
03/31 21:03,
3年前
, 5F
03/31 21:03, 5F
→
03/31 21:03,
3年前
, 6F
03/31 21:03, 6F
→
04/01 02:19,
3年前
, 7F
04/01 02:19, 7F
→
04/01 02:21,
3年前
, 8F
04/01 02:21, 8F
確實是這樣,我想尤其是對 3A 級製作來說更是如此,畢竟人一多起來如果 pipline 壞掉
就會整個開發流程都壞掉 XD 所以變成事前要花很長的時間確保沒有問題。
像去年看下來 Capcom 的分享,有滿多的主題都是在講跟 RE Engine 跟 Houdini 的整併
,確實顯示有效地完成高品質遊戲這個議題上,整理 pipeline的重要性極高。
至於雖然個人研究時確實在初期非常感受不到推進遊戲開發的成果,不過畢竟目標是更長
的開發週期中可以有穩定的處理,所以應該還是會比直接投入製作更安全。
而且幾乎在研究後期都會發現能發揮的成效是指數成長的 XD
順道預告下一輪應該會嘗試進行美術的流程化,目標是想要嘗試像 Falconeer 那樣,建立
起可以控制整體美術表現的流程,如果順利的話就可以讓實際世界製作時不需要花時間在
建立素材上。
不過 Falconeer 的作者說光是讓世界的日夜循環正常運作就花了他一整年(望
※ 編輯: dklassic (111.250.15.43 臺灣), 04/01/2021 04:05:11
推
04/01 14:38,
3年前
, 9F
04/01 14:38, 9F
→
04/01 14:38,
3年前
, 10F
04/01 14:38, 10F
一部分原因大概還是得歸咎在用途不同吧。
國土交通省最近提供的那些資料大半用途是建築界、土木界為主準備的,雖然完全可以被
重新調整成遊戲用途,但確實要整理就是個大問題了 XDDD
※ 編輯: dklassic (111.250.15.43 臺灣), 04/01/2021 17:15:52
推
04/08 09:04,
3年前
, 11F
04/08 09:04, 11F
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章