前幾天花些時間忙著將環境架構好,開發最主要的工作就是把環境安排到位後,才能順利的展開,雖然是是這樣講,但環境也還是一直有些狀況,仍在修繕中。但除了一開始有提到要利用AI來開發一個console上運行的遊戲後,就沒有多做著墨,今天就用這篇幅來介紹這個app。
整個程式是以console app的形式呈現,主要是一個復古的地城遊戲,利用Terminal User Interface(TUI)進行呈現,並且可以隨時進入編輯模式。玩法並不會有什麼特別的,應該還是中規中矩的地城遊戲,畢竟只是要有一個明確的題材和所要研究的技術進行結合,針對技術的了解還是最主要的。
趁這次製作復古地城的機會,想實驗的是現今在.Net的環境裡如何加載、卸載reference以達成類似hot reload的機制。前後找到了一些方案(Entity Framework),但都隨著時間而慢慢地退流行、最後於微軟的官方件裡找到了AssemblyLoadContext,在網路上找了一些相關的資料,可以確定這是目前最適合加載、卸載的方案。因此會在這次的架構設計將其加入,並當做基底,以它為拓展其它功能的主要手段。
而現今的.Net開發都會搭配Dependency Injection(DI),因此會將Scrutor導入,讓加載進來的Reference能夠註冊到Cotnainer裡。這裡也會試用Pure.DI當做主要的DI,而不是直接用Microsoft.Extensions.DependencyInjection。或許會考慮架一層custom ms di以Pure.DI當基底,隨著專案的推進到時再評估看看。
而另一個想要放入的則是導入Agent進遊戲裡,這部份我也還不是很清楚。之前一知沒有怎麼接觸AI,直到最近在用AI時才想到目前有不少的AI客服的概念,若是將AI導入到遊戲裡,是否和Procedural Content Generation(PCG)有所比較,還是可以互相結合,剛好利用這個簡單的地城遊戲來做實驗。
最後則想要了解如何使用Terminal.Gui v2如何使用。這是目前.Net開發環境中最全面的TUI框架,對於地堿遊來說,雖然是執行在terminal裡,但也不想用純文字的方式表現,故選擇此TUI Library讓畫面有些選單可進行操作。
這就是此次利用鐵人賽的時間想要好好了解的部份,希望能在30天裡達成上述所說的技術學習和整合應用。也希望能理解要如何利用、配合現有的AI服務協助整個app的開發。