Unreal Engine 4 基於什麼考慮把 UnrealScript 替換掉而改用 C++ 開發遊戲邏輯?


Tim Sweeney解釋為何Unreal Engine 4全面轉向C++

翻譯:

前三代Unreal引擎都包含了一個腳本沙盒語言——UnrealScript,他提供了一個簡單的GamePlay編程方式,從而避免用戶使用複雜的c++語言。

對於新手程序員們,使用腳本編程的方式是好的。但是最終腳本成了引擎發展的阻礙。Unreal引擎在不斷發展,我們也在不斷的使用,實踐。直到2011年,我們決定使用純C++架構,這樣做原因大致如下:

1.作為一個引擎,隨著社區不斷的成長,將原生C++功能導出為腳本功能的需求越來越大,如果要做出一個完整的沙盒功能的腳本,最終導致整個引擎變得很複雜,龐大。

2.實現C++與腳本之間的通信,需要一個多語言的介面以調用函數及封送(marshal)數據。隨著腳本介面的不斷擴展,這層互操作性(interop)層的維護成本和複雜性像指數般增長。互操作性對於一些高級數據類型(如容器)也是非常棘手的,因為腳本語言的慣用法與對應的 C++ 模板,無論在表示方式和語意都有很大差異。

3.開發者希望發揮原始的C++特性的優勢,最終導致他們在腳本世界和代碼世界切來切去,浪費了大量的時間,簡直是地獄。

4.開發者需要整體的駕馭代碼行為,但是很快發現,腳本調試工具和C++調試工具是獨立的和不兼容的。他們發現,如果不跟蹤C++程序,發現腳本的錯誤有時沒有意義,反之也是這樣。

正是這些原因,Epic最終決定使用純C++。這樣的話帶來很多方便的地方,UnrealEngine4作為一個統一的可調試的引擎,可以讓開發者從C++與腳本交互的地獄中解脫出來,並且讓程序員可以學習,修改和擴展。這樣還帶來一個好處,讓遊戲的效率提高,並且可以容易的集成其他c++中間件。

並不是說C++是一個很理想的遊戲編程語言。比起UnrealScript,C#,JavaScript,它有很多的複雜性,危險性。但反過來換一種方式說,C++更加強大。

通過小心使用c++複雜的地方,你的編寫遊戲程序時將感覺幾乎沒有限制。你可以調試整個底層代碼,修改他們,甚至和操作系統層,高級第三方庫進行打交道。


unreal4這麼做肯定能列舉100個理由,但不認同的人也能100個理由不喜歡, 但至少有一個理由讓我很喜歡,就是沒有負擔的搭載任何我喜歡的腳本層了,比如lua,不用被強迫使用unrealscript.


其實,讓更多人能夠以更方便的方式來完成邏輯的搭建是一個很重要的事情,這也是Blueprint出現的一個重要理由,合適的工具能夠給用戶帶來更大的自由度


UnrealScript和c++代碼之間的互相訪問使得開發代價指數級增長,最終不堪重負。也就是匿名用戶所說的,嫌麻煩,他們受不了啦。

unrealScript太老了。


之前UnrealScript所實現的,無非就是反射,序列化,自動編輯器這些,代碼還是需要程序員寫,策劃根本寫不了

現在那些特性全部用C++實現了,藍圖還可以丟給策劃寫,就醬


這是Tim Sweeney解釋的原因。就不翻譯了。

Why C++ for Unreal 4?


嫌麻煩


推薦閱讀:

在三年內如何通過自學Unity3d找到工作?
unity3d書籍及免費教程推薦?
類似傳送門的效果怎麼在引擎內實現?如下圖所示,通過一個門可以看到另一個空間?
怎麼理解遊戲開發中的「Data-Driven Design」?
聚爆的扭曲刀光是怎麼實現的?

TAG:遊戲開發 | C | 虛幻引擎 |