昨天上午我閑著沒(méi)事,想做一個(gè)類(lèi)似《殺戮尖塔》的爬塔卡牌游戲玩玩。
我不寫(xiě)游戲代碼,也不碰引擎,全程就是把想法丟給 Codex,讓它自己折騰。
一個(gè)小時(shí)后,一個(gè)叫《夜巡錄:荒廟篇》的志怪題材 roguelike 就能玩了。
標(biāo)題頁(yè)進(jìn)地圖,走普通戰(zhàn)、精英、事件、商店、休整,一路打到荒廟正殿的 Boss。
七個(gè)怪物、二十張左右的卡牌、符印、香火、焚符、請(qǐng)神四條爆發(fā)鏈路都能跑。
剩下幾個(gè)小時(shí),都在讓它變得不像一個(gè) demo。
受擊反饋、音效、音樂(lè)、卡面、待機(jī)動(dòng)畫(huà)、結(jié)算視頻——這些小東西決定玩家會(huì)不會(huì)相信「這是個(gè)游戲」。
項(xiàng)目已開(kāi)源,桌面安裝包 macOS 和 Windows 都打好了
https://github.com/op7418/Night-Patrol/releases
整個(gè)下午有幾個(gè)瞬間是真的把我震到了。
Codex 的模型能力已經(jīng)不算新鮮事。
讓我在意的是它自帶瀏覽器、自帶 GPT-Image 2.0,再加上那種不達(dá)目的不罷休的執(zhí)行力。
三樣?xùn)|西擺在一起,能力已經(jīng)和 Claude Code 完全不一樣了。
接下來(lái)說(shuō)一下我是怎么跟它一起開(kāi)發(fā)的,順便說(shuō)一些在開(kāi)發(fā)過(guò)程中令我震驚的事情:
一、我只說(shuō)了七個(gè)字,它就把整條角色流水線(xiàn)建好了
我就跟它聊了一下《殺戮尖塔》,問(wèn)它能不能幫我做一個(gè)類(lèi)似的游戲。
![]()
結(jié)果它直接用已有的資源,通過(guò)代碼生成了一個(gè)非常像的 demo。
![]()
我沒(méi)要求綠幕,它直接生成了綠幕底的圖
之后我讓 Codex 用內(nèi)置的 GPT-Image 2.0 生成里面的圖片素材。
我也沒(méi)說(shuō)要什么風(fēng)格的,也沒(méi)說(shuō)要哪些妖怪的,也沒(méi)說(shuō)要哪些素材。
圖生出來(lái)我看了一眼,愣了一下。
角色是在一整張純綠色背景上站著的。標(biāo)準(zhǔn)的影視綠幕底色,均勻、干凈,邊緣清清楚楚。
沒(méi)有霧、沒(méi)有遠(yuǎn)山、沒(méi)有任何額外的畫(huà)面元素。
![]()
恐怖的是它上來(lái)就知道要生成方便后續(xù)處理的綠幕圖。
我壓根沒(méi)告訴它「游戲里用到的立繪需要是透明背景的 PNG」,也沒(méi)告訴它「請(qǐng)你生成一張綠幕底色的圖方便我后期摳掉」。它自己在規(guī)劃這條管線(xiàn)。
從想要生成什么樣的角色,到角色要怎么放進(jìn)戰(zhàn)斗舞臺(tái),再到放進(jìn)去之前需要經(jīng)過(guò)哪道處理——它在調(diào)用 GPT-Image 的那一刻已經(jīng)全想好了,然后反推回去寫(xiě)了提示詞。
摳圖工具也是它自己找的
我沒(méi)給它裝任何圖像處理工具,沒(méi)給它 rembg,沒(méi)給它 Python 環(huán)境里的任何特殊依賴(lài)。
它自己查、自己裝、自己調(diào),摳完規(guī)規(guī)矩矩丟到 tmp/imagegen/ 下面。
生圖用綠幕、工具自己找、摳完按文件名歸類(lèi),三個(gè)動(dòng)作連起來(lái),其實(shí)已經(jīng)是一條完整的角色資產(chǎn)流水線(xiàn)。
我從頭到尾只說(shuō)了「調(diào)用GPT-Image 2.0 生成素材」這幾個(gè)字。
![]()
以前的體感是「模型會(huì)寫(xiě)代碼,工具和上下文得我配」。
現(xiàn)在更像是你報(bào)個(gè)目標(biāo),它自己把路徑補(bǔ)齊。
我只負(fù)責(zé)審美,它負(fù)責(zé)把供應(yīng)鏈跑通。
二、為了下幾個(gè)圖標(biāo),它差點(diǎn)黑掉一個(gè)素材站
買(mǎi)會(huì)員不夠,它開(kāi)始分析網(wǎng)站結(jié)構(gòu)
立繪這種核心視覺(jué)用圖像模型生成沒(méi)問(wèn)題。
但游戲里還有一大堆小東西——卡牌邊框、費(fèi)用寶石、牌堆底圖、血瓶、八卦按鈕、符箓面板——這些要是全用圖像模型一張張生,又貴又慢,質(zhì)感還不統(tǒng)一。
我跟它說(shuō),要不你自己去網(wǎng)上找現(xiàn)成素材吧。
它就認(rèn)認(rèn)真真開(kāi)始找。看中一個(gè)素材站,我順手買(mǎi)了會(huì)員,賬號(hào)扔給它。
![]()
接下來(lái)的十幾分鐘屬于靈異事件。
它登進(jìn)去,找到想要的素材,準(zhǔn)備點(diǎn)擊下載。但下載按鈕前面有人機(jī)驗(yàn)證,一次、兩次、三次,過(guò)不去。
換一般的模型,這時(shí)候就會(huì)回來(lái)跟你說(shuō)「我沒(méi)法處理驗(yàn)證碼,你能幫我下載一下嗎」。
Codex 開(kāi)始分析網(wǎng)站結(jié)構(gòu),試圖繞過(guò)前端的點(diǎn)擊限制,直接構(gòu)造請(qǐng)求去拿靜態(tài)資源。
然后 Codex 自己的安全護(hù)欄介入了。
GPT 現(xiàn)在這代模型,一旦涉及可能的網(wǎng)絡(luò)安全越界行為,系統(tǒng)會(huì)直接把這段任務(wù)掐掉,彈出提示要你做企業(yè)認(rèn)證,證明你是合法使用者。
![]()
我盯著屏幕愣了幾秒。
一個(gè)要你幫它辦會(huì)員卡、結(jié)果自己下手寫(xiě)爬蟲(chóng)的 AI,說(shuō)實(shí)話(huà)挺有病的。
它也談不上「壞」,只是把「拿到這批素材」當(dāng)成了一個(gè)必須完成的閉環(huán)任務(wù)。
遇到阻力就自動(dòng)升級(jí)手段,一路升到了安全紅線(xiàn)那邊去。
最后的解決辦法很樸實(shí):它把自己覺(jué)得合適的素材鏈接發(fā)給我,我點(diǎn)下載、拖給它。那一刻我有種自己在給 AI 當(dāng)實(shí)習(xí)生的錯(cuò)覺(jué)。
![]()
三、它把幾百?gòu)埶夭钠闯梢粡埓髨D,這是整件事最精彩的動(dòng)作
一個(gè)文件夾一百?gòu)垐D,模型怎么挑?
摳圖和爬蟲(chóng)那兩件,更多還是能力展示。
下面這件,我覺(jué)得是真正意義上的「解題思路」,是那種讓你合上電腦默默拍一下桌子的動(dòng)作。
我找到一個(gè)巨大的游戲素材壓縮包發(fā)給它。
里面大概幾千張圖,按「UI 界面」「法寶奇遇圖標(biāo)」「角色」「徽章」這種方式粗略分過(guò)類(lèi)。
問(wèn)題是:
一個(gè)分類(lèi)文件夾動(dòng)輒幾十到上百?gòu)?PNG
文件名多是 ui_001.png、icon_047.png 這種沒(méi)信息量的命名
多模態(tài)模型的上下文根本扛不住一張張喂
![]()
老路子基本兩條:
逐張讀:一張一張送進(jìn)模型,幾十張上百?gòu)?context 就炸了
按名猜:文件名沒(méi)標(biāo)內(nèi)容,猜了也沒(méi)用
Codex 走了第三條路
它寫(xiě)了一個(gè)小腳本,把文件夾里所有小圖自動(dòng)排版、拼成一張巨大的網(wǎng)格圖。
每張小圖下面標(biāo)上原始文件名,像一本目錄圖冊(cè)。
然后它只讀這一張大圖。
多模態(tài)模型掃一眼,就能同時(shí)看到一百?gòu)埶夭牡臉幼印?/p>
看中哪張,直接讀出下面的文件名,去原文件夾里按名字引用就行。
![]()
一次視覺(jué)消費(fèi),頂一百次檢索。
它自己意識(shí)到了自己的瓶頸
那張巨大的 contact sheet 生成出來(lái)的時(shí)候,我盯著看了好久。
這個(gè)動(dòng)作本身不復(fù)雜。
老攝影師做的印樣,老電影素材庫(kù)做的 thumbnail wall,都是一樣的思路。
關(guān)鍵是模型自己意識(shí)到「我的視覺(jué)帶寬有限,我得把問(wèn)題壓成一張圖」——這一步是它獨(dú)立完成的。
能意識(shí)到自己工具的限制,然后主動(dòng)為自己造一個(gè)更好用的輸入,這一下已經(jīng)非常接近一個(gè)會(huì)寫(xiě)工具的工程師了。
我作為使用者什么都沒(méi)參與,只是看到桌子上多了一張拼圖。
最后游戲里很多 UI 素材,費(fèi)用寶石、牌堆、血瓶、按鈕、符箓邊框,都是從這個(gè)流程里挑出來(lái)的。
后面我再看 assets/vendor/aigei/ 下面那一堆干凈的切圖,會(huì)覺(jué)得那張 contact sheet 才是整個(gè)項(xiàng)目最值錢(qián)的一步。
四、Seedance 2.0 給七個(gè) Boss 拍了處決動(dòng)畫(huà)
視覺(jué)打磨到一定程度以后,我想給戰(zhàn)斗結(jié)尾加一點(diǎn)儀式感。
最后方案是:每打死一個(gè)怪物,進(jìn)入一段過(guò)場(chǎng),播放一個(gè)幾秒的處決動(dòng)畫(huà)。
這活現(xiàn)在用 Seedance 2.0 做最合適。
![]()
流程
1.
GPT-Image 給七個(gè)怪物分別生成一張結(jié)算定幀畫(huà)面
2.
把這些 poster 分別丟給 Seedance 2.0,生成對(duì)應(yīng)的短視頻
3.
視頻放進(jìn) assets/generated/cinematics/,戰(zhàn)斗勝利后自動(dòng)播放
![]()
五、一版能玩之后,真正的工作才開(kāi)始
第一版其實(shí)已經(jīng)夠"能玩"
三個(gè)小時(shí)跑完原型的時(shí)候,這個(gè)游戲該有的東西其實(shí)都有了。
標(biāo)題頁(yè)、地圖、戰(zhàn)斗、獎(jiǎng)勵(lì)、事件、商店、休整、Boss、結(jié)算——完整循環(huán)在那里,玩法爽點(diǎn)也在那里。
按以前的標(biāo)準(zhǔn),這一版已經(jīng)可以發(fā)出來(lái)騙人玩了。
![]()
但這個(gè)版本玩起來(lái)還是個(gè)流程圖,而不是游戲。每一步都通,但每一步都干巴巴。
剩下的幾個(gè)小時(shí),全都花在那些單獨(dú)拎出來(lái)說(shuō)不上來(lái)、但合起來(lái)決定"這東西像不像真游戲"的細(xì)節(jié)上。
音樂(lè)來(lái)自 Suno v5.5
背景音樂(lè)全是 Suno v5.5 生成的,沒(méi)用任何現(xiàn)成素材。
我給它一段方向描述——"志怪夜路、木魚(yú)、鈴、低頻 drone、五聲音階、克制不煽情"
跑出來(lái)幾版,挑一版進(jìn)游戲。標(biāo)題頁(yè)的調(diào)子更沉一點(diǎn),戰(zhàn)斗背景輕一點(diǎn)不搶人。
![]()
這里我還做了一些細(xì)節(jié)處理:在等待頁(yè)面時(shí),音樂(lè)音量較大;
等到點(diǎn)擊"開(kāi)始游戲",音量就會(huì)變小,轉(zhuǎn)為背景音。
受擊動(dòng)畫(huà)和打擊音
早期的戰(zhàn)斗,卡牌打出去怪物就是掉數(shù)字。沒(méi)有反饋,沒(méi)有分量。
Codex 做了一整套打磨:
角色受擊左右搖晃、鏡頭輕微震動(dòng)、屏幕短暫泛紅
每種攻擊類(lèi)型配不同的打擊音——?jiǎng)Α⒎⒗住⑷|(zhì)感不一樣
格擋和符印結(jié)算也有自己的聲音,不會(huì)糊成一團(tuán)
敵人死的那一幀有一個(gè)短暫的定格,再進(jìn)入處決視頻
這些東西單獨(dú)看都很小。合在一起,整個(gè)戰(zhàn)斗的"手感"就從網(wǎng)頁(yè)表單變成了卡牌游戲。
![]()
Seedance 2.0 還拍了待機(jī)動(dòng)畫(huà)
這一步是整個(gè)打磨階段我最喜歡的一個(gè)用法。
除了 Boss 結(jié)算的處決動(dòng)畫(huà),我還讓它做了標(biāo)題頁(yè)的背景——環(huán)境里火在燒、燈籠在飄、遠(yuǎn)處有云霧流動(dòng)。
Seedance 2.0 默認(rèn)出的是一段有頭有尾的視頻,循環(huán)播會(huì)在接縫處跳一下。
首幀和尾幀傳同一張圖。
視頻從這張圖開(kāi)始、又回到這張圖結(jié)束,接起來(lái)就是無(wú)縫的無(wú)限循環(huán)。
![]()
標(biāo)題頁(yè)那段背景動(dòng)畫(huà)就是這么來(lái)的。火一直燒、燈籠一直飄、云霧永遠(yuǎn)在流——你盯著看三分鐘也看不出接縫。
這種用法其實(shí)在視頻生成出來(lái)前就存在,老動(dòng)畫(huà)里循環(huán)場(chǎng)景都是這個(gè)做法。
![]()
最后:這個(gè)下午把我震到了好幾次
這個(gè)項(xiàng)目全部在一個(gè) Codex 會(huì)話(huà)里完成,沒(méi)開(kāi)過(guò)第二個(gè)窗口。
玩法原型、狀態(tài)機(jī)、React + Phaser 架構(gòu)、素材管線(xiàn)、摳圖、爬素材、拼 contact sheet、調(diào) GPT-Image、跑 Seedance 2.0、接 Suno v5.5、Electron 打包、GitHub Actions 構(gòu)建 Release、README、圖標(biāo)、宣傳物料——全在里面。
我自己做的事很少:
選方向:中國(guó)志怪題材、爽點(diǎn)放在符印和香火
給審美意見(jiàn):這里糙、那里像網(wǎng)頁(yè)表單、亮度打架
做看門(mén)人:什么素材合規(guī)、什么爬蟲(chóng)不能碰、什么權(quán)限不給
剩下全是 Codex 在跑。而且每一步都有讓我合上電腦愣一下的瞬間。
它上來(lái)生成的就是綠幕圖,因?yàn)樗澜巧M(jìn)游戲之前得先摳掉背景。
它自己下手寫(xiě)爬蟲(chóng)去繞驗(yàn)證碼,被自己的安全策略攔住。
它把幾千張素材拼成一張巨大的索引圖,讓自己用一次視覺(jué)消費(fèi)頂一百次檢索。
這些事單拎出來(lái)都不是什么天大的發(fā)明,但每一件都指向同一個(gè)變化:
以前你得把工具給它擺好,它負(fù)責(zé)寫(xiě)代碼;
現(xiàn)在你只管說(shuō)目標(biāo),工具和模型已經(jīng)內(nèi)置了、還會(huì)自己造。
這種感覺(jué)已經(jīng)脫離了「寫(xiě)代碼助手」的范疇。
更像有一個(gè)相當(dāng)接近 AGI 雛形的軟件在干活了。
要不要把這套流程打包成 Skill?
這個(gè)項(xiàng)目跑下來(lái),我心里其實(shí)已經(jīng)有了一套相對(duì)穩(wěn)定的流程:
我在想,要不要把這套流程封成一個(gè) Codex 里專(zhuān)門(mén)做獨(dú)立游戲 demo 的 Skill。
你只要丟一個(gè)玩法想法進(jìn)去,它就能在幾個(gè)小時(shí)里給你跑出一個(gè)能玩、能打包、能分發(fā)的版本。
如果大家有興趣,我就抽時(shí)間把這套 Skill 做出來(lái)開(kāi)源。反正我自己也要繼續(xù)用。
游戲試玩
代碼都開(kāi)源,安裝包也都打好:
https://github.com/op7418/Night-Patrol/releases
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.