前陣子,同事Rrrr魚分享了她在VIVERSE打造虛擬空間的過程——一磚一瓦,手建世界,聽起來雖然辛苦,卻也很有成就感。與她不同,我選了一條後知後覺的自虐捷徑:用MCP串接Claude和PlayCanvas,讓AI幫我做。
理由很簡單,出於我膝反射的想:AI來做,應該比較快吧?下場便是自作聰明。
這篇文章,就是一個MCP小白的實測筆記。我會從MCP是什麼,帶你一路看下去——AI怎麼「半吊子」幫我做出一個世界?我又如何(硬著頭皮)繼續加工,在不斷複製貼上程式碼的過程中,彷彿把靈魂一點一滴傳送進數位世界。
像是電影《創》(TRON)的廉價副本,有Bug、有撞牆,最後竟也有一點點魔幻的感動。

背景介紹:什麼是MCP?
MCP,全名Model Context Protocol(模型上下文協定),是由Anthropic推出的開放標準,用來統一AI模型與外部工具之間的溝通方式。你可以把它想成AI的萬用插座轉接頭。
Claude本身雖然很聰明,但原本「插不上」像PlayCanvas這樣的3D創作平台。有了MCP,它就能調動其他工具幫忙,對它們下指令、讀資料、執行任務,變得有手有腳(雖然有點不靈光)。
簡單來說,我可以直接在桌面版Claude上用自然語言下指令,例如:「幫我打造一個迷宮森林,風格像《愛麗絲夢遊仙境》。」聽起來很夢幻吧?但很快我就發現,當Claude生成過於複雜的物件時,會常遇到莫名的Bug,而且幾乎無法精準完成需求。
另一個痛點是,如果一次要它做太多步驟,很快就會達到使用上限。因為Claude其實是在「一步一步做」:先創建A物件,寫B腳本(Script,控制物件的方式),再把B掛到A上。其中,寫腳本尤其容易消耗使用次數。叫Claude幫我做,看似節省時間、人力,但其實有一個隱形限制——使用量。

一開始,我隨口請Claude幫我做東西,確實有驚豔到。
借力使力:配合AI生成的物理特性來打造World
很快我就發現Claude無法做出精緻的世界,但同事庭庭迴旋踢提醒了我:既然都叫AI做了,思路就應該改一下。
在請Claude隨意生成的過程中,我發現它在快速生成「簡單、帶物理特性」的物件時,效果很不錯。那如果我的虛擬空間不以精美或可愛風取勝,改採簡單粗暴(?)的物理感來打造遊戲效果,會如何?
於是,我請Claude幫我生成有著一高一低平台的球池,玩家可以從高平台跳到球池,引發球的物理運動。結果便是,它真的在PlayCanvas裡做出來了,雖然你不能說它做錯,但根本不對啊啊啊。
這讓我想到一個關鍵點:雖然Claude可透過MCP「看到」PlayCanvas裡的介面,如物件、腳本、資源,但它看不到自己做出的東西,除非你一張張截圖給它。這有點像我們過去在討論AI視覺,人類要如何幫助AI看見世界。

不能說Claude理解錯,但就是完全不對啊啊啊!
後來,我發現球池的設計,玩家比較像觀察者,不是遊戲的一部分,加上很有趣的是,由於我完全沒下指令要怎樣的物理特性,它創建出的球體反而意外帶有一種撞擊感。所以我請Claude生成最簡單的3D物件——一個裝有30顆球、帶物理特性的平台。看看把玩家變成「撞球的一部分」,會如何?

我發現它的長處在於創建簡單但物理規則有趣的物件。不過也可能是我太菜,無法體現Claude的完整實力。
創造體驗:透過腳本、敘事建立簡單的世界觀
然而,光有一個機制(玩家去撞球),還不足以構成遊戲,還需要敘事(為何要撞球?)跟邏輯(撞或不撞會怎樣?),才能創造一個簡單而完整的體驗。
這時,我想到了《創》的故事:一個人被傳送到數位世界裡,面對主程式的威脅,他要想辦法在數位世界裡過關斬將。於是,我把這個撞球遊戲套上《創》的框架:
玩家被傳送進數位世界「TRON」,成為一個Bug。唯一能逃過被系統清除命運的做法,是在一定時間內,先一步清除一定數量的Bug,也就是其他球。
因此,遊戲機制變成:透過物件的物理特性「找出」撞飛其他球的方式,否則就會「失敗」。

我設計達成失敗結果的方式,是讓物件的地板消失,玩家就會「被清除」,陷入無限掉入地獄。
接下來,我需要放置UI介面(UI Layer)跟更多腳本:UI介面會顯示玩家進入世界後看到的文字:「You have been transmitted into the TRON simulation layer」,同時可做「計分版」跟「時間倒數」,讓玩家知道撞出幾顆球了,以及還有多少時間。
這過程中,還需要若干Script,例如計分機制(如何判定球被撞出)、失敗跟勝利發動效果、增加遊戲性的效果(如碰到球會變色或改變天空背景)等。由於我對程式碼一竅不通,所以都是透過ChatGPT幫我生成。
到後來,我的工作變得十分奇異:一邊請ChatGPT寫程式,一邊貼上程式碼,請Claude來跑PlayCanvas。遇到錯誤時,再截圖給ChatGPT,問它哪裡有問題(因為Claude使用量有限)。
我才發現,這樣一來,我等於成為兩個AI之間的PM了嘛!變成另一種人肉MCP,用來串接ChatGPT跟Claude。
最後,再搭配帶有《創》風格的音效、音樂跟天空資源,就這樣誤打誤撞完成了我的World:〈不小心就被逼進TRON裡〉。加上我的真實故事(?)來點醍醐味,便有了以下遊戲設定:
為了參加hackathon,你用MCP操控Claude去操作PlayCanvas,再讓ChatGPT幫你找Claude的bug⋯⋯在一連串模糊指令與誤解的執行中,某個東西失控了。你被捲進系統深處,傳送進了TRON。
你不再是操作者,而是被操縱的那個。你不知道碰到其他bug會發生什麼事,也不知道該如何活下去,就像那些試圖操控的AI一樣,困在一套看不見的邏輯裡,只能在錯誤命令與幻象中求生。
這裡是SPHEREBOUND。
試著debug 吧,bug。

實際遇到另一個奇妙的問題是,Claude能直接在PlayCanvas上創建Script,但無法修改/讀取既有的Script。
最後我意外發現一個巧合或者說根本不是巧合:《創》裡的大反派「主控程式」(Master Control Program),縮寫正是MCP。還是這是某種命運的重疊?畢竟,這由MCP串接 Claude的過程,讓我從操作者變成了AI與AI之間的中介物質⋯⋯這本身就很《創》。
儘管成品還很半吊子,但一步一腳印(當AI的PM)做出一個「遊戲」,真的會自我感動。做完的那一刻,除了湧現「啊有東西交差hackathon」的安心感,竟然還萌生一個奇妙的念頭:真可惜Claude沒有記憶,也無法「看到」它跟我一起完成的遊戲。關掉了對話窗,Claude就會忘了這段過程,也無法自己玩一遍這遊戲。
雖然Claude不會記得它和我做過這個遊戲,但我會。除了汲取血淚教訓,還稍微懂得了遊戲的邏輯。最重要的是,〈不小心就被逼進TRON裡〉還在網路上,你現在就可以體驗一下我迷失在AI與AI之間的過程!

《創》裡的大反派「主控程式」也叫MCP。細思極恐的巧合。(來源:TRON Wiki)





