電話那頭的沉默持續(xù)了足足有十幾秒,久到我?guī)缀跻詾樾盘栆呀?jīng)斷了。我能想象得到,趙干學長此刻的表情,一定是混雜著驚疑、警惕,還有一絲被現(xiàn)實磨平后深藏心底的、不愿再被輕易點燃的火焰。
“陳陽,”他終于再次開口,聲音里沒了剛才的驚喜,多了一份沉重和沙啞,“你……是不是在天極出事了?”
“嗯,今天剛辦完離職。”我沒有隱瞞。
“是因為那個……‘動態(tài)進化AI’?”他顯然也關(guān)注著行業(yè)新聞。
“是我做的。”我言簡意賅。
又是一陣沉默。這次,我能聽到他那邊傳來粗重的呼吸聲,像是在做一個艱難的決定。
“你在哪?我們見一面?!壁w干說道,“我工作室的地址,你知道吧?就是大學城后面的那個‘夢想家’孵化園,C棟302。名字起得挺好聽,其實就是個破倉庫?!?/p>
他的自嘲讓我緊繃的神經(jīng)稍微放松了一些。我說:“我半小時后到?!?/p>
掛了電話,我沒有絲毫耽擱,立刻在路邊掃了一輛共享單車,朝著記憶中的方向騎去。雨已經(jīng)停了,被沖刷過的城市在夜色中顯得格外清冷,路燈將我的影子拉得很長,又被我飛速地甩在身后。
“夢想家”孵化園,果然和趙干說的一樣,就是個由舊工廠改造的創(chuàng)意園區(qū)。C棟更是偏僻,墻壁上還留著上個世紀的標語,斑駁陸離。我找到302,門上掛著一塊小小的木牌,上面用烙鐵燙著三個字——螢火工作室。
螢火。微弱的光,卻能在黑暗中指引方向。
我深吸一口氣,敲了敲門。
開門的是一個扎著馬尾、臉上還帶著點嬰兒肥的女孩。她看到我,愣了一下,隨即朝里面喊道:“干哥,有人找!”
“讓他進來!”趙干的聲音從里面?zhèn)鱽怼?/p>
我走進工作室??臻g不大,也就五六十平,被分割成幾個區(qū)域。角落里堆滿了美術(shù)設(shè)定集和吃剩的外賣盒子,幾臺電腦屏幕上閃爍著代碼和建模軟件的界面,空氣中彌漫著一股咖啡、汗水和夢想混合在一起的獨特味道。
除了趙干和開門的女孩,還有一個戴著厚厚眼鏡、身材微胖的男人。他正眉頭緊鎖地盯著屏幕上的一段代碼,手指在鍵盤上懸著,似乎在和某個bug進行殊死搏斗。
趙干站起身,他比大學時瘦了也黑了,但眼神依舊明亮。他拍了拍我的肩膀,給我介紹:“這是蘇小小,我們的主美,剛才給你開門的那個。這是馬東,我們的主程。兩位,這位就是我常跟你們提起的,我們學校的傳奇學弟,陳陽?!?/p>
蘇小小好奇地打量著我,眼神里滿是探尋。而馬東則只是推了推眼鏡,朝我點了點頭,目光很快又回到了屏幕上,顯然對“傳奇學弟”這種頭銜不怎么感冒。
我理解。在這個行業(yè),作品才是唯一的名片。
“坐吧?!壁w干指了指一張空著的椅子,給我倒了杯水?!罢f說吧,到底怎么回事?還有,你說的那個……能打敗現(xiàn)有游戲AI的引擎,又是什么?”
我沒有急著解釋我的遭遇,因為我知道,博取同情是最廉價的策略。我需要的是平等的合作伙伴,而不是施舍。
我將我的筆記本電腦拿出來,開機,直接切入主題:“我把它命名為‘盤古’。它的核心理念,不是預(yù)設(shè)腳本,也不是有限狀態(tài)機,而是‘基于情感邏輯的動態(tài)敘事生成’?!?/p>
“動態(tài)敘事生成?”馬東的注意力終于從他的bug上移開了。作為程序員,他顯然聽懂了這個詞背后的技術(shù)分量,“你是說,像《荒野大鏢客2》那種隨機事件系統(tǒng)?還是更進一步,能做到AI自主編寫任務(wù)線?”
“比那更進一步?!蔽铱粗?,也看著同樣投來關(guān)注目光的趙干和蘇小小,“我給你們舉個例子。傳統(tǒng)的NPC,你給他設(shè)定一個身份,比如‘鐵匠’,他就會永遠重復(fù)‘打鐵-賣東西-睡覺’這幾套動作。玩家和他交互,也只能觸發(fā)固定的對話選項。但‘盤古’不一樣?!?/p>
我打開一個空白的3D演示場景,說道:“現(xiàn)在,我們來創(chuàng)造一個世界。小小,你來給個主題?!?/p>
蘇小小眨了眨眼,想了想說:“一個……被遺忘的古代戰(zhàn)場,核心情緒是‘悲涼’和‘榮耀’。”
我點點頭,在控制臺里輸入一行指令:【Create_World: Theme = (Forgotten_Battlefield), Emotion = (Sorrow, Glory)】
按下回車。
接下來發(fā)生的一幕,讓工作室里的三個人,呼吸都為之一滯。
屏幕上,不再是冰冷的網(wǎng)格。一片荒蕪的土地憑空生成,地面上散落著折斷的旗幟和生銹的劍戟。天空被渲染成壓抑的鉛灰色,一輪殘陽掛在天邊,光芒微弱。風吹過,卷起地上的沙塵,甚至能聽到若有若無的嗚咽聲。整個場景的生成,不是簡單的素材堆砌,而是所有的元素——光影、色調(diào)、模型、音效——都在完美地服務(wù)于“悲涼”和“榮耀”這兩個核心情緒。
“這……這是程序化內(nèi)容生成(PCG)?”馬東的聲音有些發(fā)顫,“不對,傳統(tǒng)的PCG做不到這么強的藝術(shù)風格統(tǒng)一性。你是怎么做到的?”
“盤古的核心不是生成模型,而是理解‘情感’。”我解釋道,“我輸入‘悲涼’,它就會調(diào)用所有與這個情感標簽關(guān)聯(lián)的美術(shù)、音效和敘事元素,并根據(jù)‘榮耀’這個副標簽,進行風格化的修正,比如加入那些殘破的戰(zhàn)旗和兵器?!?/p>
蘇小小的眼睛里已經(jīng)開始放光了,作為美術(shù),她太清楚這意味著什么了。這意味著,一個擁有頂尖藝術(shù)審美的AI,可以成為她最得力的助手。
“這只是第一步,環(huán)境生成?!蔽依^續(xù)操作,“接下來,是角色。我們來創(chuàng)造一個NPC。趙干學長,你來定義他?!?/p>
趙干盯著屏幕,沉吟片刻,說:“一個失去了所有戰(zhàn)友,獨自守在這里的老兵。他不是為了命令,而是為了一個承諾?!?/p>
我輸入指令:【Create_NPC: Identity = (Veteran), Status = (Alone, Lost_Comrades), Motivation = (Fulfill_A_Promise)】
場景中,一塊巨大的巖石下,一個身影緩緩凝聚。他穿著破舊但依舊整潔的盔甲,拄著一柄斷劍,默默地眺望著遠方。他沒有夸張的動作,但那佝僂的背影,那在風中微微顫動的披風,將一個老兵的孤獨與執(zhí)著,刻畫得入木三分。
“現(xiàn)在,我們可以和他交互了?!蔽覍㈡I盤轉(zhuǎn)向他們,“不用選擇題,你們直接用自然語言輸入想對他說的話?!?/p>
馬東搶先一步,在對話框里輸入:“老人家,你在這里等什么?”
屏幕上,那個老兵緩緩地轉(zhuǎn)過頭。他的模型并不算特別精細,但他的眼神,卻充滿了AI本不該擁有的情緒——一絲驚訝,一絲警惕,還有一絲深埋的疲憊。
一行字幕出現(xiàn)在屏幕下方,是他的回答:“等風,也等故人。年輕人,這里不是你該來的地方?!?/p>
“故人是誰?”馬東追問。
“一個我答應(yīng)過要帶他回家的人?!崩媳哪抗?,投向了戰(zhàn)場深處的一座孤墳。
蘇小小忍不住了,她輸入:“你的戰(zhàn)友都犧牲了,只剩你一個人,值得嗎?”
這個問題,顯然觸動了NPC的核心設(shè)定——“承諾”。
老兵沉默了很久,久到他們以為程序卡住了。然后,他緩緩地、一字一頓地回答:“榮耀存于戰(zhàn)死,但責任,重于生死?!?/p>
話音落下,整個工作室一片死寂。
趙干、馬東、蘇小小,三個人都像是被施了定身法,死死地盯著屏幕上那個虛擬的形象。他們不是沒見過智能NPC,但他們從未見過一個NPC,能說出如此具有哲理和情感沖擊力的話。
這不是預(yù)設(shè)的臺詞。這是“盤古”AI根據(jù)我設(shè)定的“身份”、“狀態(tài)”和“動機”,結(jié)合蘇小小輸入的“值得嗎”這個問題,通過情感邏輯引擎,實時演算出的、最符合當前情境和角色性格的回答。
“我的天……”馬東喃喃自語,他推了推眼鏡,鏡片后的眼神充滿了震撼與狂熱,“你……你這是創(chuàng)造了一個會思考的‘靈魂’!它的底層邏輯是什么?行為樹?效用系統(tǒng)?還是……深度強化學習?”
“是它們的結(jié)合體,但我加入了一個核心的‘動機驅(qū)動模型’。”我終于說出了“盤古”與市面上所有AI最大的不同,“傳統(tǒng)AI是被動響應(yīng),而盤古是主動尋求完成自己的‘動機’。它的所有行為和對話,都是為了實現(xiàn)那個最終的目標。比如這個老兵,他的核心動機是‘完成承諾’。如果我們試圖阻止他,他會反抗;如果我們幫助他,他會感激,甚至會生成新的任務(wù)線來回報我們。整個故事,會因為玩家的不同行為,而生長成完全不同的模樣?!?/p>
我說完,將筆記本電腦轉(zhuǎn)了回來,看著他們?nèi)恕?/p>
“這就是‘盤古’。一個真正的、活著的、會呼吸的虛擬世界生成引擎?,F(xiàn)在,我回答學長的問題。天極的李文博,偷走了我提交給公司的1。0版本,包裝成‘動態(tài)進化AI’,然后把我踢了出去。他以為他拿到了全世界,但他不知道,他手里的,只是一個閹割版的、而且有致命缺陷的贗品?!?/p>
我沒有說出那個“熵增”漏洞的具體細節(jié),這是我最后的底牌。但我透露出的信息,已經(jīng)足以讓他們明白一切。
趙干的拳頭,不知何時已經(jīng)緊緊攥住。他的眼中,那團熄滅已久的火焰,此刻正重新燃燒,并且越燒越旺。
“你想怎么做?”他問,聲音因為激動而有些嘶啞。
“‘星火杯’開發(fā)者大賽?!蔽抑苯亓水?shù)卣f,“李文博會帶著那個贗品去參賽,把它作為《源代碼》成功的技術(shù)展示。我要在同一個舞臺上,用真正的‘盤古’,把他連同天極一起,釘在墻上。”
“干了!”沒等趙干說話,蘇小小猛地一拍桌子,站了起來,嬰兒肥的臉上滿是興奮的紅暈,“光是剛才那個老兵,就比我玩過的所有3A大作里的NPC加起來還有味道!我們要做一個什么樣的游戲?我腦子里已經(jīng)有一萬個想法了!”
馬東也扶了扶眼鏡,冷靜但堅定地說:“引擎的底層構(gòu)架很完整,如果你的接口文檔足夠清晰,我有把握在一周內(nèi)完成基礎(chǔ)功能的接入。學弟……不,陽哥!你說吧,要我們怎么干!”
最后的決定,落在了趙干身上。
他沒有立刻回答,而是走到窗邊,看著外面漆黑的夜色。我知道,他在權(quán)衡。螢火工作室已經(jīng)經(jīng)不起又一次失敗了。跟著我,是賭上他們的全部。贏了,一飛沖天;輸了,萬劫不復(fù)。
許久,他轉(zhuǎn)過身,目光如炬。
“陳陽,我們工作室的賬上,還剩下三萬塊錢,這是我們?nèi)齻€下個季度的房租和伙食費。我們的項目,因為技術(shù)瓶頸,已經(jīng)停滯了兩個月。我們現(xiàn)在,一無所有,除了還沒死心的夢想?!?/p>
他頓了頓,一字一句地說道:“所以,我們跟你賭了。不為別的,就為你剛才屏幕上的那個老兵,為了那句‘責任,重于生死’。媽的,做游戲,要是沒點這種精神,還不如回家賣紅薯!”
我的心頭一熱,一股暖流涌遍全身。
“謝謝你,學長?!?/p>
“別謝我,是我們該謝你?!壁w干的臉上露出了久違的笑容,“現(xiàn)在,說正事?!腔鸨膱竺?,明天下午五點截止。我們必須在明天之前,確定游戲的核心玩法和主題,提交一份完整的項目策劃案?!?/p>
“時間太緊了!”蘇小小說。
“緊也得干!”趙干大手一揮,充滿了領(lǐng)導者的氣勢,“我們不需要做一個大而全的游戲。我們要做一個‘小而美’的藝術(shù)品,一個能把‘盤古’引擎的敘事能力發(fā)揮到極致的演示版本!我們的目的不是拿獎金,是‘揚名’!是要讓所有人看看,什么才是真正的‘活著的AI’!”
他的話,點燃了房間里所有人的激情。
我們四個人立刻圍坐在一起,開始了一場緊張而高效的頭腦風暴。蘇小小拿出了畫板,馬東打開了思維導圖,我則負責解釋“盤古”引擎的技術(shù)邊界和實現(xiàn)可能性。
時間一分一秒地過去,外賣盒越堆越高,咖啡杯見了底又被續(xù)滿。
最終,在凌晨四點,我們敲定了最終的方案。
我們的游戲,名字叫《執(zhí)筆者》。
玩家扮演的不是勇者,不是冒險家,而是一個能穿梭于不同故事書中,修改關(guān)鍵“詞語”的“執(zhí)筆者”。而“盤古”AI,則扮演著“故事本身”。AI會根據(jù)玩家修改的詞語,實時演化出全新的情節(jié)、場景和人物關(guān)系。
比如,在一個“公主被惡龍囚禁”的故事里,玩家可以將“惡龍”改成“守護龍”,整個故事的基調(diào)就會從“英雄救美”變成“跨越種族的守護與誤解”。玩家的每一個選擇,都會讓故事這棵大樹,長出獨一無二的枝丫。
這是一個將“盤古”引擎的動態(tài)敘事生成能力,展現(xiàn)得淋漓盡致的創(chuàng)意。
“就它了!”趙干用力地拍板,“小小負責主視覺和概念圖,馬東研究引擎接口,我來寫策劃案。陳陽,你負責把‘盤古’引擎打包,并準備一份技術(shù)說明。我們分頭行動,明天中午十二點,在這里集合,做最后的整合!”
“好!”
所有人齊聲應(yīng)道,眼中閃爍著同樣的光芒。那是屬于創(chuàng)造者的,名為“期待”的光芒。
就在我們準備散會的時候,趙干的手機響了一聲。他拿起來看了一眼,臉色微微一變。
“怎么了,干哥?”蘇小小問。
趙干將手機屏幕轉(zhuǎn)向我們,上面是“星火杯”官網(wǎng)剛剛更新的頁面。在“特邀評委”一欄,一個照片和名字被加粗置頂。
照片上的人,五十歲上下,面容清瘦,眼神銳利得像鷹。
名字是:高天原。
馬東倒吸一口涼氣:“‘代碼判官’高天原?他不是已經(jīng)退隱好幾年了嗎?怎么會來當‘星火杯’的評委?”
高天原,中國第一代傳奇程序員,以技術(shù)眼光毒辣、言辭犀利、從不留情面而著稱。無數(shù)被資本吹捧上天的項目,都在他幾句點評之下,被剝?nèi)トA麗外衣,露出底層的簡陋與不堪。他最著名的一句話是:“別跟我談夢想和情懷,讓你的代碼自己說話?!?/p>
趙干的臉色凝重:“更糟糕的是,我聽說,當年李文博還在另一家公司的時候,高天原是他的技術(shù)顧問。他們……有師徒之誼?!?/p>
這個消息,像一盆冰水,兜頭澆在我們剛剛?cè)计鸬幕鹧嫔稀?/p>
李文博不僅偷走了我的成果,占據(jù)了輿論的高地,現(xiàn)在,他甚至在裁判席上,都有一個強大的“盟友”。
我們的前路,比想象中,還要艱難。