有句話叫「二流的遊戲公司做遊戲,一流的遊戲公司做平臺」。索尼、任天堂、微軟這些主機公司,除了推出第一方遊戲以外,當然也在維護自家的遊戲系統。

其實,以《公主連結RE:Dive》、《碧藍幻想》聞名的手遊公司Cygames,也有做3A遊戲引擎的野心。
前幾天,他們就在日本電子娛樂開發者大會(CEDEC 2020)上面,介紹了內部研發好幾年的遊戲引擎「Cyllista Game Engine」。

這個引擎的目標,是用「簡單的腳本語言寫3A遊戲」。根據演講者的說法,這將是一個「讓開發者的效率發揮到極限,最棒的遊戲引擎」。

然後實現這一目標,遊戲編寫過程就必須足夠簡單與快速,支持一邊編寫,一邊測試與迭代的高速開發方式。
同時,引擎用的語言,會用的開發者是越多就越好。於是他們,就把這幾年人氣最高,最為常見的Python作為程式語言了。

畢竟Python好學易懂,入門門檻低。這幾年人工智慧、機械學習的火爆,也帶來了一大批新入門的學習者。
接近自然語言的寫法,能夠大幅提高開發的速度。大量的第三方包,與Pycham這種成熟的IDE工具,也給用戶省下了「重複造輪子」的時間。

但Python還是有軟肋的——作為一門解釋型語言,Python的執行速度比較慢。所以在大型遊戲製作的工作當中,Python基本上只是輔助工具,幫助完成測試。
操作遊戲引擎的常見代碼,一般還是需要用C++、C#這種編譯型語言編寫。採用Python作為程式語言的遊戲引擎Pygame,主要服務的對象,也是對延遲要求不高的2D遊戲。

雖然還在內部測試階段,但「Cyllista Game Engine」裡面,從資源管理器,到關卡設計工具,幾乎所有的工具,都用Python寫成。
為了解決Python的執行效率問題,Cygames的做法,是引入「NumPy」這個數學庫,處理對延遲敏感的任務。

為了進一步優化速度,他們還利用pybind11優化了C語言庫調用。Python並行處理不行的弱點,他們也計劃用multiprocessing迴避。
作為一個現代引擎, 「熱重載」功能自然也是少不了的。CY引擎做到了隨時修改代碼、讓效果立即在遊戲中呈現。
至於遊戲菜單這種操作界面(GUI),則採用了Qt for Python(PySide2)。雖然QT庫的Python文檔不多,但C++ QT的文檔也能用。
總結起來,就是Python雖然很熱門,但是作為遊戲開發語言,有速度上的不足。但這些問題,Cygames經過數年開發之後,都想出了辦法解決。
可以看到,以「不務正業」聞名的Cygames,拿到大家氪金的錢以後,除了發獎與做動畫,也在做對業界有益的長期準備。
本次報導就到這裡。對CY遊戲引擎,大家有什麼期許或評價,歡迎留言討論。