用Python寫3A?Cygames的游戲引擎做得怎么樣

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

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

這個引擎的目標,是用“簡單的腳本語言寫3A游戲”。根據演講者的說法,這將是一個?“讓開發(fā)者的效率發(fā)揮到極限,最棒的游戲引擎”。

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

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

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

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

為了進一步優(yōu)化速度,他們還利用pybind11優(yōu)化了C語言庫調用。Python并行處理不行的弱點,他們也計劃用multiprocessing回避。

作為一個現代引擎, “熱重載”功能自然也是少不了的。CY引擎做到了隨時修改代碼、讓效果立即在游戲中呈現。

至于游戲菜單這種操作界面(GUI),則采用了Qt for Python(PySide2)。雖然QT庫的Python文檔不多,但C++?QT的文檔也能用。

總結起來,就是Python雖然很熱門,但是作為游戲開發(fā)語言,有速度上的不足。但這些問題,Cygames經過數年開發(fā)之后,都想出了辦法解決。
可以看到,以“不務正業(yè)”聞名的Cygames,拿到大家氪金的錢以后,除了發(fā)獎與做動畫,也在做對業(yè)界有益的長期準備。
本次報道就到這里。對CY游戲引擎,大家有什么期許或評價,歡迎留言討論。
另外,像《碧藍幻想》或《公主連結RE:DIVE》這些Cygames手游,也可以使用OurPlay加速喔。