7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

什麼,7 句話就讓 AI 給我生成了一個小遊戲?還是“極簡版”塞爾達這樣的經典冒險遊戲,不僅能撿金幣、躲怪,地圖也不重複的那種。這是一位名叫
Andrew Mayne 的小哥的真實經歷,整個過程中,他甚至一行代碼都沒寫!把 AI 生成的遊戲和遊戲代碼 po
到網上后,短短數小時就收穫了上千熱度:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

趕來圍觀的網友試玩了他搞出來的遊戲,直呼“Mind blowing”。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

所以,Andrew Mayne 到底是怎麼做到的?原來,他用來做遊戲的 AI,是 OpenAI 最新版本的 Codex。

這個版本的 Codex,除了能直接生成、修改和編輯代碼以外,連處理的文本長度也翻倍,從 2048 個 token 提升到了 4000 個,簡直像是“解開一層封印”。

起初,Andrew Mayne 只是好奇這版 Codex 的創造力極限在哪裡,想做個實驗,看看它能否根據文本直接生成小遊戲。沒想到,這一試簡直讓他停不下來。

7 句話生成冒險遊戲

第一次嘗試便是被他命名為“極簡塞爾達”的遊戲。別看畫面抽象,整個遊戲包括隨機生成地圖、玩家用鍵盤控制角色移動、有敵人會攻擊玩家、收集金幣加分等遊戲核心要素。走到地圖邊緣還能生成一張新地圖,這樣就能一直玩下去…… 總之是一個 2D 冒險遊戲原型的樣子。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

所有這些規則只用英語寫了七句話,AI 則用 Javascript 寫出了 190 行代碼。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

由於小哥本人不是專業遊戲設計師,描述用詞不是很精確,但 AI 總是能產生自己的理解。比如描述怪物的部分,描述里只有“一個紅色的怪物,玩家移動時它也移動,試圖接近玩家,如果玩家被碰到就減一分”。AI 則根據上下文生生成了 50 多行完整的怪物生成、移動、判定分數的邏輯。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

只需把色塊替換成簡單貼圖,和真正的塞爾達原型是不是就很像了?

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

△被曝光的初代塞爾達原型程序

第二個小遊戲,他打算考驗 AI 對邏輯的理解,生成一個簡化版猜詞遊戲 Wordle。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

這次只用了 5 段話描述規則。謎底詞從一個列表裡隨機選擇,每次選擇一個放到控制台。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

描述字母輸入框的樣式,包括寬高、文字居中對齊、每個輸入框有獨立 ID;輸入時自動大寫;再加一個確認按鈕。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

分四種情況討論如何判定輸入結果。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

後面他又進行了更多嘗試,調用第三方庫生成 3D 迷宮、能與玩家對戰的井字棋,以及給照片加濾鏡的小程序等,全都沒手寫一行代碼。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

其中比較有意思的是生成《黑客帝國》字符雨視覺特效,幾乎是只告訴 AI“創建一個畫布,加一個黑客帝國雨特效”,沒有任何額外解釋,AI 就做出來了:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

最後他總結出幾條經驗,介紹如何寫文字描述能讓 AI 更容易理解需求:

先描述邏輯部分。然後創建 UI 元素時候調用前面生成的邏輯函數。

給描述編號。這樣更容易看明白 AI 正在處理哪條描述。

多讓 AI 創建函數。如果直接讓 AI 生成 100 項的數組,AI 可能真的每一項每一項寫出來,如果告訴 AI 創建一個生成數組的函數,AI 就會用循環語句來完成了。

如果一次不理想,多試幾次。把 temperature 參數設為 0.5,有一定隨機性可能會產生更好結果。

看起來有點產品經理總結如何與程序員溝通對接的味了。

背後的 Codex“再進化”

所以話說回來,這個最新版的 Codex 到底有多好用?除了 Andrew Mayne 最感興趣的 token 上限翻倍以外,新增加的插入和編輯兩大功能也挺有意思。

先來看看 Codex 的編輯功能,像優化代碼性能就能用一句話搞定:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

或是換個編程語言實現代碼:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

還有“單行代碼編程”(One Liner),一句命令就能實現:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

有了這一功能,調整代碼的難度就會降低不少。使用 Codex 的時候,甚至可以像甲方一樣,無需手動調整代碼,只需要對着這位“AI 程序員”發號施令,就能讓它生成你想要的東西。

再來看看 Codex 的插入功能。不僅能主動生成註釋,提醒這段代碼的作用:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

還能根據上下文理解這段函數,主動幫你插入它的定義:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

無論是開發框架、還是寫小軟件,都不需要再擔心“一條路走到黑”,可以根據需求再從中間進行調整。

當然,這些功能放到 GPT-3 上也類似。無論是換人稱、改格式這種小技巧:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

還是隨着上下文修改並插入語句,都不在話下。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

除了這兩個功能以外,還有一些細節上的更新,例如 UI 變得更加簡潔等等。

事實上,這一系列新功能,都是為了讓 Codex 和 GPT-3 變得更容易上手。據 OpenAI 的科學家表示,他們希望通過這次更新,讓更多“非職業選手”也玩上 GPT-3 和 Codex。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

這也確實吸引了不少感興趣的網友動手嘗試。像搞出“7 句話讓 AI 給我做遊戲”的 Andrew Mayne,原本只是一位驚悚小說家。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

△還戴着頂 SpaceX 的帽子,要素過多

除了他以外,包括《連線》編輯 Clive Thompson 等人也在嘗試用 Codex 給自己寫代碼。Clive 表示,Codex 掌握的知識量比他們這些“業餘選手”豐富不少,能選出最合適的函數和庫來完成需求。例如在接到與 PDF 有關的需求時,調用 PyPDF 庫。

還有網友表示,自己拿 Codex 做了個《太空侵略者》(space invaders)小遊戲,同樣成功了。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

看到這些成果,有網友感嘆,當 AI 真的學會寫代碼后,留給人類做的可能就剩下兩件事情:寫更好的 AI,或是想想能用 AI 生成什麼。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

不過,更加謹慎的網友則認為,AI 生成代碼容易讓人對它產生依賴性,從而忽視代碼本身的問題。例如這位作者用 Codex 寫的圖像處理代碼,就存在一些不正確的地方:

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

還有網友預測,用 AI 寫代碼的話,最後還是要讓工程師來調整它,本質上還是殊途同歸。

7句話讓Codex給我做了個小遊戲:極簡版塞爾達,一玩簡直停不下來

你會用 AI 來寫工具、或是做遊戲嗎?

參考鏈接:

[1]https://andrewmayneblog.wordpress.com/2022/03/17/building-games-and-apps-entirely-through-natural-language-using-openais-davinci-code-model/

[2]https://twitter.com/AndrewMayne/status/1504612428432125970

[3]https://beta.openai.com/docs/engines/codex-series-private-beta

[4]https://news.ycombinator.com/item?id=30717773

[5]https://www.wired.com/story/openai-copilot-autocomplete-for-code/

[6]https://www.facebook.com/andrewmayne?_rdr

(0)
上一篇 2022-03-20 16:02
下一篇 2022-03-20 16:03

相关推荐