000_Introduction 介紹
來自專欄 遊戲開發隨記
譯者注
Entitas CookBook是一本講述ECS的基本概念以及Entitas使用方法的說明書,其中很多內容都是對於剛剛接觸ECS的同學有幫助的。所以我決定將這手冊翻譯一下讓更多的人能了解ECS、Entitas。即使你不用Entitas,你也可以學習他的概念、實現方法。
介紹
Hi ??,
我是Maxim(CookBook作者),一個軟體工程師。2012年下半年在Wooga(一個柏林的悠閒遊戲工作室)工作時,我偶爾發現了 ECS(Entity Component System)和 Entitas (ECS的一種實現) 。自從那時候開始,我便幫助改良Entitas以及將其移植至其他語言。我自己也使用Entitas製作了一些遊戲以及應用。
老實說,寫著本書不是我的想法,Entitas交流論壇的好人們推了我一把並且承諾會幫助我一起完成。當我寫著第一個章節的時候,我依然非常希望獲得幫助 ??。
這書是幹嘛的?
這本書會覆蓋基礎的ECS 概念、這些概念如果在Entitas中實現的、我們構建的什麼工具可以讓Entitas獲得更好的體驗。以及使用Entitas來製作遊戲與應用的方法食譜。
如果你是ECS新手,並且想了解它是什麼?這本書是給你的。
如果你了解ECS,但想知道如何使用Entitas構建軟體?這本書是給你的。
如果你了解Entitas並希望瀏覽關於如何將其應用於不同用例的想法?這本書是給你的。
如果您已經對Entitas有所了解,並希望為其構建一些工具以使您的生活更輕鬆?這本書是給你的。
如果您想將Entitas移植到其他語言?這本書是給你的。
如果你認為Entitas是垃圾,你想實施自己的ECS框架?即使在這種情況下,這本書也適合你!
書本架構
此書共分為三個部分。
1. 原料(Ingredients)
本節將包含ECS概念及其在Entitas-CSharp中的實現。由於本書的思想源於Entitas-CSharp社區,代碼示例將使用C#。但是我可能會添加一些關於如何在Entitas家族的其他成員中實施相同概念的附註。
2. 器具 (Appliances)
器具是我們為了配合原料而實施的工具。我將介紹已經建立的工具;也會泄露一些可能很酷的東西的想法,但仍然處於早期開發階段;或者只是在過去5年以上的過程中聽說過的。也許其中一些會激勵你實施它們或者有另一個更酷的想法。
3. 配方(Recipes)
本節將介紹真實開發中的問題以及Entitas如何解決這些問題。在這裡,您將學習如何使用原料和器具製作可口的飯菜。本部分可能會有最高的章節數量,並將持續進行中的工作。我們還會為配方評分並定義這個配方的理念有多好。
我為什麼要使用ECS?
實體組件系統(Entity Component System)是一種簡單的模式,它具有單個核心主體:分離的狀態和行為。這個核心原則往往是人們稱之為面相數據設計(Data Oriented Design)的前奏。這導致了機制化思路(mechanical empathy)的想法,您需要擁有這些想法來執行高效的性能優化。
然而這不是五年前ECS吸引我的地方。我發現令人著迷的是組成事物(compose thins)的能力。在ECS中,您正在撰寫狀態(state),並且正在撰寫行為(behavior)。您的應用程序設計成為一套可以粘在一起的樂高件。如果缺少某些東西,您可以輕鬆創建專門的部分來縮小差距。這種方法可以幫助你即興創作。它使您能夠以「是的...並且...(Yes and...)」的方式實施軟體。 是的,這東西是一輛汽車 並且因為我們收集了一個特殊的能量,它可以飛行。 是的這個應用程序將所有數據存儲在光碟上,並且還可以與伺服器同步,實時顯示用戶界面的變化,而無需用戶點擊按鈕。
有句話是這樣說的:「除了死亡和交稅,沒有什麼是確定的」。我非常大膽地說,變化就像死亡和交稅一樣確定。特別是當涉及到軟體和遊戲開發時。我們需要能夠即興創作和嘗試,以獲得最佳的用戶體驗。這正是我發現ECS如此有用的原因。它可以幫助我建立生產工業級別的快速原型(rapid prototypes),並在工業化工程中依然保證簡單的原型製作(prototyping)。我也覺得它很有趣,系統思維如何幫助我以最簡單的方式對難題進行建模和解決,並將它們集成到現有解決方案之上。
推薦閱讀:
※深入淺出基於物理的渲染二
※美國玩家們是怎麼看待DLC和微交易的
※《說劍》Sunhead Games
※從《萌王》看國內CP 亂象
※Dice (EA) 工作室遊戲開發技術概覽