最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

雜談——語涵編譯器是什么?

2023-08-05 16:09 作者:遠行的泥土  | 我要投稿


語涵編譯器是一個輔助視覺小說制作的程序,閱讀本文前需要您對視覺小說或者說文字類冒險游戲有所了解,推薦至少游玩過一篇作品。


您可能對該項目有如下問題:

  • 為什么要做語涵編譯器,這個項目要解決什么問題?

  • 為什么要再創(chuàng)造一種劇本格式?

  • 現(xiàn)在不是已經(jīng)有從 Excel 生成 RenPy 劇本的程序了嗎?和其他程序比,語涵編譯器有什么區(qū)別?

  • 語涵編譯器的名稱是怎么來的?

  • 語涵編譯器項目后續(xù)有什么計劃?

希望本文能夠解答這些疑問。

背景

視覺小說引擎是什么?

視覺小說引擎(如 RenPy)是視覺小說游戲可以共用的程序框架。打個比方,各個視覺小說游戲就像一輛滿載的貨車,這一輛貨車拉的是木材,那一輛貨車拉的是快遞。雖然他們是不同的貨車,但是如果我們把貨物卸下,去掉各異的車身噴漆,可能會發(fā)現(xiàn)他們有相同的貨車車型。貨物就相對于各個游戲的劇本和素材,貨車車型相對于引擎。就比如要增運貨物時不需要從頭設(shè)計貨車,而是使用現(xiàn)成的貨車,加上貨物就可以運貨,游戲制作者可以使用現(xiàn)有的游戲引擎,加上自己的素材和內(nèi)容之后就可以做游戲。


引擎腳本是什么?什么是錄入?

程序員通常使用“腳本”來指代“寫給程序的代碼片段”,不是寫給人看的、寫給另一個程序去執(zhí)行的統(tǒng)統(tǒng)叫腳本。視覺小說引擎的腳本就是游戲制作者寫給引擎的“說明書”,在游戲運行時,引擎會根據(jù)這個“說明書”里的內(nèi)容將文字和素材呈現(xiàn)給玩家。

制作者準備素材和劇情時,這些內(nèi)容的格式必須滿足引擎的要求才能正常運行。引擎腳本也需要按照引擎的要求(或者說“語法”)來編寫。這實際上對腳本編寫者有編程能力上的要求。

由于劇情需要寫到引擎腳本里面,我們把劇情從原來的劇本改寫為引擎腳本的形式這一步叫做錄入。


讓我們進入正題——

1. 為什么要做語涵編譯器?

2019年時,筆者游玩了國產(chǎn) GalGame 《某一種青春》(以下簡稱《某青》),當時正好碰上心情低谷,深受感動,從此入坑國G。筆者找到了《某青》作者長水老師在奶牛關(guān)上寫的制作歷程的文章,注意到當時作者在將劇本錄入到游戲引擎(面包引擎)時沒有使用程序,而是完全手動,整個過程費時費力,所以計算機背景的筆者決定利用空閑和摸魚時間做一個程序?qū)⑦@類劇本錄入工作自動化。

語涵編譯器是這個項目的第三版設(shè)計,第一版2019年10月做了一個月之后就做不下去了,第二版2019年11月開始,做到2021年年中時宣告失敗。這個第三版是2021年10月、11月開始的,“語涵編譯器”這個名字是2022年年底才起的。隨著設(shè)計不斷更迭、功能不斷完善,想“順帶”解決的問題也越來越多,不過不管功能、設(shè)計怎么改,將劇本錄入自動化這個初心一直在。


2. 這個項目解決什么問題?為什么值得去做?

語涵編譯器項目有以下愿景:

  1. 一次編寫、跨引擎執(zhí)行:提供從劇本到不同引擎腳本的自動錄入的實現(xiàn)。語涵編譯器未來會支持更多的引擎,希望能在劇本編寫上實現(xiàn)像編程那樣的一次編寫、多平臺執(zhí)行。

  2. 現(xiàn)代化工具鏈:通過語涵編譯器這個步驟,(1)將更多能夠切實提升生產(chǎn)力的功能帶給制作者并普及,(2)對接現(xiàn)代化的開發(fā)流程或設(shè)施(如云文檔等)

語涵編譯器的架構(gòu)是按照正統(tǒng)編譯器的設(shè)計思路,支持第一個引擎時的開發(fā)工作遠大于相同定位的劇情錄入程序,但是支持第二個或更多引擎時,開發(fā)負擔和用戶體驗遠比同類劇情錄入程序好。筆者相信,未來一定是需要一個統(tǒng)一的編譯器架構(gòu)來支持現(xiàn)在這些各異的引擎的,但是制作組和從業(yè)人員沒有動機去脫離自己的生產(chǎn)環(huán)境,從一個第三視角去花大力氣做只會給自己組零提升的程序,所以必須要像筆者這樣不屬于任何制作組的“閑人”去做這樣一件事。我們希望完善后的語涵編譯器能帶給開發(fā)者更大的在引擎選擇上自由度,甚至是將“劇本編寫”和“引擎選擇”完全脫鉤,縮短工期和引擎變更成本。對引擎的編寫者來說,對接一個通用的編譯器也能方便測試,添加對自己引擎的支持后可以使用現(xiàn)有的劇本進行測試。


采用編譯器的設(shè)計帶來的一大優(yōu)點是可以通過類似傳統(tǒng)編譯器中的分析、優(yōu)化的方式接入其他功能,提高生產(chǎn)力,比如語法檢查甚至是進階的自動演出。這些分析、優(yōu)化只要編寫一次,之后不管新加了什么引擎的支持、怎么改劇本的表示形式,這些代碼都不用改,直接可以復(fù)用。現(xiàn)階段(2023-08-05)的長句分句是這樣的功能的原型,證明語涵編譯器的架構(gòu)可以使用這種形式加功能。這將是一個支持將人們現(xiàn)有的制作經(jīng)驗轉(zhuǎn)化為程序、幫助后人自動發(fā)現(xiàn)或改正已知問題的平臺,減少重復(fù)踩坑。在項目開始之初,AIGC、大語言模型還沒有如今的發(fā)展,當時規(guī)劃的分析、優(yōu)化主要是接入當時現(xiàn)有的文檔語法檢查服務(wù)等。今后語涵編譯器也會嘗試與這些人工智能的服務(wù)對接,方便這些技術(shù)在更多的制作組落地、投入使用。


在今年早些時候,語涵編譯器還有另一篇專欄文章,不過當時為了避免“畫大餅”的觀感,“解決什么問題”部分寫得相對保守;那些立項之初的目標已經(jīng)越來越近,可以開始向前看了。


3. 為什么不采用純文本輸入、要重新摸索新的劇本形式?

對于以上兩個主要愿景來說,采用文檔、富文本輸入(而不是像傳統(tǒng)的編程那樣使用純文本)并不是最穩(wěn)妥的決定,處理文檔中的額外信息(比如格式、文字樣式、內(nèi)嵌資源等)和思考如何使用這些信息將會拖累語涵編譯器的開發(fā)進度。最終決定采用文檔是因為如下原因:

  1. 目前采用純文本輸入的視覺小說劇本形式(用程序員的話說就是“語法”)已經(jīng)多如牛毛,一個新的形式會加劇這個形式碎片化的進程,并且可能沒有足夠的競爭力與現(xiàn)有的形式(語法)競爭。但是,現(xiàn)有的格式無法滿足語涵編譯器對易用性和可拓展性的要求。

  2. Word 文檔是門檻最低的劇本輸入形式,部分開發(fā)者仍然使用 Word 文檔來編寫劇本。如果想有一個相對統(tǒng)一的劇本形式的話,降低輸入劇本形式的門檻是必須的。

  3. 云文檔產(chǎn)品已經(jīng)成熟,選擇文檔形式輸入可以與這些現(xiàn)有產(chǎn)品對接,未來可以實現(xiàn)全流程上云。這對設(shè)備受限(比如只有手機)或者有多人協(xié)同需求的制作者來說可能會具有吸引力。

因此,語涵編譯器會嘗試摸索一個基于 Word 文檔及其類似格式文檔的、相對統(tǒng)一的劇本形式(語法)。語涵編譯器不以追求統(tǒng)一的劇本形式為主(這有可能是無法做到的,可能每個作者都想有自己的一些小改動),但是當這些劇本能被(可能加了插件的)語涵編譯器讀取、進入這個體系之后,我們希望能對這些劇本使用語涵編譯器內(nèi)的所有功能,包括對所有支持的引擎的輸出。


4. 和其他自動錄入程序相比,語涵編譯器有哪些區(qū)別?

項目過程中,我們已知有其他自動錄入程序可以讀取 (1) 純文本的劇本,或是 (2) Excel 表格中的劇本。這些程序只生成特定引擎的劇本。在書寫這篇文章時,語涵編譯器只支持 RenPy,發(fā)言信息可以導(dǎo)出至 GameCreator 但是功能不像 RenPy 那樣全。如果不考慮引擎的支持情況、假設(shè)用戶不需要多引擎支持的話:

如果劇本可以寫成 Excel 表格的形式,那么現(xiàn)有的讀取 Excel 的自動錄入程序能比語涵編譯器更好地滿足用戶需要,這類程序可以以較低的開發(fā)成本充分挖掘所支持引擎的特性。與此類程序相比,除了劇本格式外(語涵編譯器可以通過插件讀取這些劇本),語涵編譯器可以提供分析、優(yōu)化功能(在原型中已經(jīng)做的可能也用處有限),代價是更高的開發(fā)成本。

如果劇本是純文本,除了發(fā)言信息外不包含(或是很少包含)演出細節(jié),目前語涵編譯器所支持的劇本形式應(yīng)該能夠勝過已有的讀取純文本的錄入程序。

我們相信,隨著語涵編譯器的不斷完善和拓展,一定會有將這些劇本錄入程序統(tǒng)一的時候。屆時,通過插件自行定制語涵編譯器一定會完勝于從頭寫一個錄入程序。


5. 語涵編譯器和看板娘蘇語涵的名字是怎么來的?

先聊英文名(preppipe)怎么來的,中文名是2022年底才以此定的。

2019年10月開坑時使用的名字是 "supp",意為 "small universal preprocessor pipeline"(又小又通用的預(yù)處理器流水線),一個充滿了狂氣的名字,上來就要干一票大的,然后做了一個月就涼了。第二版設(shè)計把"又小又通用"給去掉了,名字改成了"preppipe" (preprocessor pipeline)設(shè)計保守了很多,但是目標功能和第一版沒太大變化,路線錯誤,所以到2021年又推倒重來。但是2020年的時候已經(jīng)把域名給買好了,域名都買好了結(jié)果坑沒填完,就覺得很丟人,所以第三版程序還是沿用第二版的名字"preppipe"。"preppipe"是對第一、二版大致設(shè)計的合適描述,但是其實與第三版的設(shè)計關(guān)系不大了。。。

名字“語涵”中,“語”和“預(yù)處理器”的“預(yù)”讀音相近,又能代表劇本中的“語言”意象?!昂笔枪P者覺得既提到了“流水線”、“管線”(因為有個詞叫“涵道”)又能與前一個字組合得很好的字??窗迥锏摹疤K”姓就從之前去掉的"su"變來。


6. 除了完善程序和文檔外,語涵編譯器項目有什么后續(xù)的計劃?

原型發(fā)布后,除了修理 Bug、編寫文檔外,筆者希望能夠找到足夠多的感興趣、有經(jīng)驗的制作者,一同商討解決以下問題:

  1. (對用戶) 如果需要有個適合 Word 文檔的、相對統(tǒng)一的視覺小說劇本表示方式(程序員口中的“語法”),這個表示方式應(yīng)該是什么樣的。語涵編譯器項目希望能摸索出這個合適的表示方式。

  2. 對程序員) 如果需要給適用于視覺小說的編譯器定義 IR (編譯器概念,Intermediate Representation),這個 IR 應(yīng)該是什么樣的。這個 IR 設(shè)計得合理與否將決定語涵編譯器在支持更多的引擎、更多的分析優(yōu)化功能時能否完美支持其功能,能否高效、便于調(diào)試。目前語涵編譯器的經(jīng)驗只表明 “目前的設(shè)計可以做 IR”,而不是“目前的 IR 設(shè)計已經(jīng)是最好的”,如果能在早期發(fā)現(xiàn)潛在問題并進行更正的話,后續(xù)增加功能時能夠更有效率。

有足夠的人愿意花時間思考這些問題后,我會將目前語涵編譯器的劇本表示方式(語法)和 IR 設(shè)計整理成文并收集反饋。在這之前,我也會從各種渠道收集一些劇本,找愿意提供幫助的人參與設(shè)計。如果您對這感興趣的話,歡迎來嘗試語涵編譯器并提供自己的見解!


一些追加說明

語涵編譯器永遠會開源免費,感謝免費國G《某一種青春》那年給我?guī)淼母袆印?/p>

如果有計算機專業(yè)的同學(xué)大四要做畢業(yè)設(shè)計可以自選項目,如果做與語涵編譯器有關(guān)的項目的話,筆者非常愿意提供支持!


雜談——語涵編譯器是什么?的評論 (共 條)

分享到微博請遵守國家法律
夏邑县| 枝江市| 建德市| 蒙城县| 萨嘎县| 安龙县| 深水埗区| 宜春市| 临沧市| 榆中县| 德钦县| 通榆县| 信丰县| 秭归县| 宝鸡市| 梅河口市| 太康县| 集安市| 望谟县| 崇左市| 宽甸| 通渭县| 光山县| 黔东| 玉树县| 榆中县| 彭泽县| 新和县| 乐业县| 鞍山市| 雷波县| 敦煌市| 玉门市| 西盟| 沈阳市| 天长市| 达日县| 温泉县| 淮北市| 张家界市| 涿州市|