🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

純正的程式設計師在「只能使用視覺化腳本環境」中真心面對後的感想

我是一名純正的程式設計師。
在大學時期學習了 C / C++ / C#,進入社會後則學習了 Java、JavaScript、PHP、Python、Go、TypeScript 等當時所需的語言。

然而,因為在 2020 年左右轉職進入 VR 產業,我的程式設計人生發生了很大的變化。
在那裡,我遇到了 視覺化腳本

與視覺化腳本的邂逅

在 VRChat(用戶可以公開自製世界的社交型 VR 平台)中使用 Udon [^1],
在 STYLY(無代碼 XR 創作工具)中則使用 PlayMaker

這兩者都是基於 Unity 的 AssetBundle 平台,並且有無法直接撰寫 C# 的限制。
因此,補足這一限制的方式就是發展出將節點用線相連的「視覺化腳本」。

最初的第一年真的非常痛苦。

例如,假設我想求取兩個位置之間的方向向量。
在 C# 中只需要以下兩行程式碼即可完成。

Vector3 CalcDirection(Vector3 A, Vector3 B)
{
    var direction = B - A;
    return direction.magnitude < 0.0001f ? Vector3.forward : direction.normalized;
}

如果在 PlayMaker 中組成相同的處理,則會變成這樣。

image.png

若強行以 C# 表現,則如下。

Vector3 CalcDirection(Vector3 A, Vector3 B)
{
    var direction = B - A;
    var length = direction.magnitude;
    if (length < 0.0001f)
    {
        direction = Vector3.forward; // (0,0,1)
    }
    else
    {
        direction = direction.normalized;
    }
    return direction;
}

行數大約是三倍多。此外,還出現了名為 length 的一次性變數。
從程式設計師的角度來看,這非常冗長,若不整理節點,稍後自己也難以閱讀。

程式碼審查也持續面臨困難

痛苦的不僅僅是編寫程式碼。
在視覺化腳本中,閱讀他人的處理極其困難

例如,若仔細命名節點,就可以理解他在做什麼。

image

然而,如果標題被省略,就會變成這樣。

image

光看這個,根本無法了解他在做什麼。
因此,在審查時,我通常會要求他先為節點命名。

當時我常常想到「這太低效了」「我希望能直接編寫文本」。

不過,周圍的人卻看起來很享受

另一方面,某些同事則表示「視覺化腳本更容易理解」。
他們中的大多數是 3D 建模師或影像創作者,並不是以程式設計為職業的人。

我感到疑惑。
為什麼他們會覺得這樣反而「更容易使用」呢?

領悟:認知風格不同

在進行一對一會談和了解後,我發現了一些趨勢。

「擅長層級型條列的人」對文本程式編寫較為擅長。
「不擅長這種形式的人」則在視覺化腳本中表現較佳。

<details><summary>層級型條列是這樣的。(點擊可以查看)</summary>
<ul>
<li>
文本型程式設計
<ul>
<li>
Unity
<ul>
<li>邏輯 / 腳本
<ul>
<li>C#</li>
</ul>
</li>
<li>著色器
<ul>
<li>HLSL / ShaderLab(.shader 檔案)</li>
</ul>
</li>
</ul>
</li>
<li>
虛幻引擎
<ul>
<li>邏輯 / 腳本
<ul>
<li>C++</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li>
視覺化腳本
<ul>
<li>
Unity
<ul>
<li>邏輯 / 腳本
<ul>
<li>Unity 視覺化腳本(原 Bolt)</li>
<li>PlayMaker</li>
</ul>
</li>
<li>著色器
<ul>
<li>著色器圖(Shader Graph)</li>
<li>Amplify 著色器編輯器</li>
</ul>
</li>
<li>視覺效果
<ul>
<li>視覺效果圖(VFX Graph)</li>
</ul>
</li>
</ul>
</li>
<li>
虛幻引擎
<ul>
<li>邏輯 / 腳本
<ul>
<li>藍圖(事件圖 / 函數圖等)</li>
</ul>
</li>
<li>視覺效果
<ul>
<li>Niagara</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</details>

不擅長閱讀這種層級結構的人,在文本程式設計上也往往會遭遇困難。
(這只是基於我接觸過的數十人中的觀察。)

像 C# 和 TypeScript 這類文本程序是通過縮排來構造層級,並組織邏輯。
也就是說,要求具備閱讀和撰寫「層級型條列」的技能。

另一方面,擅長圖形化信息整理的人,似乎對這種「層級結構」會感到困難。
然而,他們創作的簡報或資料往往非常易於理解,具備優秀的視覺構成能力。

這種差異不是「能力的優劣」,而是「認知類型」的不同。
所謂的 視覺思考者(Visual Thinker),是透過圖形或空間來理解信息,而非文字。

即使不是程式設計師,創作者們都渴望創作

我的許多 3D 建模師和影像創作者朋友,
都有著「自己想製作互動內容」的強烈意願。
因此,開始自學程式編寫的人並不少見。

不過,大多數人會在 文本型程式設計中遭遇挫折
因此,自然會將目光轉向 視覺化腳本

例如,他們不會嘗試直接寫 Unity 的著色器語言 HLSL,
而是選擇使用 Amplify 著色器編輯器著色器圖 等視覺編輯器。

即使再怎麼說「HLSL 更快且自由度更高」,對他們來說也不具吸引力。
著色器圖顯然更容易理解

在這個時候,我終於明白了。
他們並不是在「偷懶」,而是用符合「自己認知特性的方法」在學習。

轉變觀點

因為這個領悟,我開始摒棄「視覺化腳本=劣等」的想法。
而是重新認識到「任何人都可以編程的環境」的價值。

多虧有了視覺化腳本,3D 建模師和影像創作者都能創造互動體驗。
這大大擴展了團隊開發的可能性。

Unity 的視覺化腳本(原 Bolt)、著色器圖,
虛幻的藍圖、Houdini 的節點基礎系統。
這麼多工具的存在,是因為確實有需求

視覺化腳本的局限性

不過,視覺化腳本並不是萬能的。
它僅僅是 小型專案 的解決方案。

  • 無法在 Git 中確認差異
  • 例外處理薄弱,難以描述異常情況
  • 隨著複雜分支的增加,整體可讀性無法維持
  • 無法進行 private / public 的範圍管理,易產生依賴(※藍圖可以[^2])
  • 沒有 interface,無法表現多態(※藍圖可以[^2])

因此,不適合以擴展性或可維護性為前提的設計
因此,透過視覺化腳本積累經驗的創作者,面對大型專案時,常常會遭遇困難。

如果項目可能會變得龐大,請務必尋求 專業程式設計師 的幫助!

視覺化腳本有效的場合

如果用得當,視覺化腳本是非常強大的。
尤其是在以下條件下特別有效。

  • 團隊中沒有擅長文本型程式設計的人
  • 專案規模小(原型、短時間、以演出為主)

此外,在 學習和教育的上下文 中,它也具備極大的價值。
非工程師能獲得「構建邏輯的體驗」,這是一個難得的切入點,
正因為具備這一特性,才能讓多樣化的人參與創作。

在這樣的環境中,視覺化腳本是最強大的工具。
理解這一點將是推進專案順利進行的關鍵。

總結

在過去五年間,我強烈感受到以下兩點。

  1. 視覺化腳本是一項接受「認知多樣性」的發明
  2. 不過「規模」上有明確的限制

當程式設計師與創作者協同工作時,
我認為應該時刻意識到「自己擅長的形式不一定是對方的最佳選擇」這一點。

結語

如果你是一位程式設計師,
並覺得「視覺化腳本太低效」,那麼,
請務必花一天的時間真正嘗試一下這個工具。

如果你能稍微理解那些不擅長文本的人所處的視角,
那麼,與創作者的合作將變得更加容易。

附註:站在 AI 時代的再一次分岔點

這樣來看,視覺化腳本開創了「人人皆可創作的時代」。
但最近 AI 支援程式設計 的出現,使得這一情況再次改變。

現在可以通過對話形式生成程式碼,並構建小型互動內容。
這正是視覺化腳本所擅長的領域。

不過,目前 AI 所應對的幾乎都是 文本型程式設計
幾乎沒有針對視覺化腳本的 AI 存在。

只要這一趨勢持續,為了利用 AI,必須學習文本型的程式設計。
結果是,在大型項目中,不僅限於小型開發,文本型的編程也漸漸佔據了優勢。

考慮到這一趨勢,我感覺視覺思考者們在選擇工具時,進入了一個判斷更困難的時代。

[^1]: 在 VRChat 中後來出現了 UdonSharp 這個類似 C# 的文本程式設計環境。
[^2]: 虛幻引擎的 藍圖 是視覺化腳本中完成度特別高的一個,具有抽象化、重用及封裝的機制,較其他工具更加功能完善,也部分支援中型開發。


原文出處:https://qiita.com/segur/items/9b62c7976bb21e822c72


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝13   💬4   ❤️4
434
🥈
我愛JS
📝1   💬3   ❤️2
46
🥉
酷豪
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付