城市:天際線 MOD製作教程 MOD源碼解析及開發指南
城市:天際線 MOD製作教程 MOD源碼解析及開發指南
一直想寫這篇文章,但是總覺得寫出來也沒幾個人人能看得懂,太過於小眾,就算看得懂,又能有幾個人耐得住性子去調代碼呢,所以就拖啊拖啊到現在。但是,中國人做的mod實在是太少了(當然整個工坊也就200來個=.=),咬咬牙還是寫吧,希望能多看到點國人做的mod,我也有個能交流的朋友是不。
本文主要闡述天際線AI類MOD開發的基礎,包括天際線概念框架體系、基本API、進階開發以及注意事項,希望能拋磚引玉,給有編程基礎的朋友一個入門的方向。更多的造化就看您的努力了。本文將以公交增容MOD的源碼為例進行講解。
需要閲讀者必須具備基本的面向對象基礎,可使用vs studio進行開發及調試。另外由於本人主要從事java開發工作,c#純屬自學,所以有關概念表述的不一定十分準確,各位看客要自行甄別。
如何搭建開發環境我在這裏就不再廢話了(我只提一句,是library類工程),如果你不知道怎麼搭建開發環境,基本也看不懂我這篇文章。對了,按照官方的説法,你只要把c#代碼寫好,扔到mod文件夾下面就好了,他們會編譯這些代碼。但是我沒有成功,我是在vs裏面直接build成dll後扔到mod裏的,效果一樣。
一、首先是天際線的基本概念體系,以及AI在其中所起的作用。
遊戲裏有很多的建築物、人、車等事物。這些東西都有自己的屬性,比如位置在哪?顏色?是生老病死,還是3級5級?移動速度?等等,描述的是物體的客觀狀態。還有一類,就是這些事物的行為方式:
例如小人是去買東西,還是去上班?出門是坐公交還是自己開車?公交車下一站往哪開?建築物是升級還是廢棄?這些基本都是由各個物件自己決定的,那麼這個決策部分,就稱之為AI,用面向對象來説,就是行為/方法(method)
比如市民,市民是一個類,名字、男女、年齡、教育程度、健康狀況、是否在開車等等,是屬性。但是市民有幾十萬,每一個市民都有自己不同的屬性,有幾十萬的對象,在內存裏都要佔用相應的位置,但是他們的AI是一致的,AI只有一個。修改了這個AI,所有市民的行為方式都會相應變化。
然後是天際線中跟AI相關的有如下常見類名後綴:
AI、Manager、Info(當然還有很多與UI相關的,我就不再列舉了,跟本文關係不大)
AI毫無疑問就是AI類的了,CitizenAI就是市民AI(這裏我簡單化了,後面我會詳細講到,這個CitizenAI其實不是“居民AI”)
Manager是所有相關對象引用的管理類,比如CitizenManager就是管理所有市民的管理器,無論是創建一個市民,還是查詢所有生病的市民,都要通過這個管理器
Info是一類對象的“模板”。這裏我用建築物來解釋。比如警察總局,就是一個BuildingInfo類的對象。裏面定義了這個物件的名稱叫“警察總局”,所有警察總局的屬性,比如造價、維護費用、佔地大小等等,都是在這裏的,警察總局的AI,也是在這裏有一個引用(AI是另外一個類)。不管你在遊戲中建幾個“警察總局”,這個BuildingInfo對象都會只有一個,但是不同位置的警察總局,會有多個不同的Building對象(其實是struct)來表達,比如具體的xz位置(y在天際線裏是高度軸),或者你給他改名叫“天下第一警察總局”,那麼名字也是存在這裏的。
接着,是跟AI相關的橫向概念。
天際線裏AI總共分4類:建築物(Building)、車輛(Vehicle)、市民(Citizen)、路網(Net)。
每類都會有一個上述英文名稱的struct來表達數據, 以及配套的前述3個類(AI、Manager、Info),和眾多的相關衍生類。
當然這也只是一個最基本的分類,最深的繼承關係可達7層,由於此圖是在是太大,所以我在下圖僅以市民AI舉例説明:
在天際線中,CitizenAI其實應該翻譯成是“生物AI”好點。它有2個子類:動物AI和人類AI。也就是説,你在遊戲中看到的鳥啊,寵物狗啊什麼的,其實都是算作是Citizen,都用Citizen這個struct來存儲數據的,佔用那104萬上限。動物AI就不説了。人類AI中又分為服務人員AI(就是消防隊那個滅火的小人、靈車抬屍體的小人等)、旅遊者AI和居民AI。這裏最多的就是居民了,104萬的上限,我看有人達到了101萬。
那麼,這所有的104萬的Citizen,全部都是由CitizenManager來管理的。CitizenManager中有創建市民的方法,銷燬的方法,查詢的方法等。當前市民數量、Citizen集合的引用等信息,都是這個類的變量,市民的總數上限啊、市民出行開車的概率啊、生孩子的概率啊、成為gay的概率啊等等常量,也都在這裏。這個CitizenManager是單例的,你不能顯式的去創建這個對象,調用單例的方法後面的代碼裏有。
另外還要提一句,市民上限是100萬多點,但是不代表所有的市民都會被顯卡“畫出來”,只有被實例化(Instance)的市民,才會交給frame,去具體的在界面上畫出來。Instance的上限,我記得是65000+,所以大家不用擔心人多了顯卡“畫”不動
-
Gta3-斯唐頓島:牙買加幫電話任務(1) GTA三部曲終極版攻略祕籍合集 俠盜獵車三部曲重製版圖文全攻略
電話任務(牙買加幫)牙買加幫想讓你幫忙競速,開一輛車去體育館等待。任務要訣不是競速,難度不大,關卡中有競速點,誰第一個衝過去就能得分,最後,得分最高的就會獲勝。這比單純的競速簡單多了,考驗的不是駕駛技巧,而是策略,如果競速點離你太遠,而離敵人很近的話,就不要過去了,等...
-
狼人篇:鶉園銀礦礦井 詭異西部攻略 全支線任務全收集攻略
狼人篇-鶉園銀礦礦井來到礦井之後,你需要先打敗這個區域內的夢巫敵人。狼人擁有自我恢復和提升防禦的光環技能,你可以利用這些技能保護自己並提升續航。在這裏可以找到一份尼普遺物。清理完這個區域後,進入地下礦井。在礦井內,你可以找到一名礦工,她會主動與你交談...
-
Gta3-波特蘭區:託尼任務1(2) GTA三部曲終極版攻略祕籍合集 俠盜獵車三部曲重製版圖文全攻略
大佬有請薩瓦託雷召集黑手黨的大佬們開會,而你作為司機,任務就是接送這些大佬。任務前半段比較簡單,駕駛加長轎車接三人,注意,路上小心點,儘量不要破壞轎車。等到託尼上車後,三合會的卡車來襲,不要下車戰鬥,直接駕駛轎車去薩瓦託雷的家,家門口被卡車堵住,直接撞過去就行。...
-
Gta3-斯唐頓/海岸之谷:明日香任務-地對空/贖金 GTA三部曲終極版攻略祕籍合集 俠盜獵車三部曲重製版圖文全攻略
地對空卡特琳娜的拍怕粉裝載到了飛機上,明日香希望你能在飛機降落之前將其摧毀,並且將包裹帶回。開車去碼頭,拾取火箭筒後上船。注意,到達信標後,開船上碼頭,速度不要太快,不然會失控。船上岸後,下去,步行。殺掉前面的敵人,最好用狙。然後將車搶走,往前開兩百米左右。站在...
相關文章
- 二、基本API解讀 城市:天際線,MOD製作教程 MOD源碼解析及開發指南
- 四:其他 城市:天際線,MOD製作教程 MOD源碼解析及開發指南
- 城市天際線mod放哪裏,mod超詳細安裝指南
- 輻射4MOD開發資源教程大全,MOD製作修改導出圖文教學
- 三、進階篇 城市:天際線,MOD製作教程 MOD源碼解析及開發指南
- 城市:天際線 建築MOD製作方法圖文教程 MOD怎麼製作
- MOD教程:MOD製作圖文教程 坎巴拉太空計劃詳細攻略教程 系統解析祕籍MOD大全
- 城市:天際線 地圖MOD 免費解鎖全部區域數量MOD
- 城市:天際線,破解版使用STEAM正版MOD方法圖文教程
- 城市:天際線 建築MOD 超大垃圾場MOD下載