遊戲資訊
城市天際線 Cities:Skylines
  • 發售: 2015-03-10 (PC)
  • 發行: Paradox Interactive
  • 開發: Colossal Order
  • 平台: PC PS4 XboxONE
  • 類型: 模擬經營
  • 語言: 簡中 英文
《城市:天際線(Cities: Skylines)》是由Colossal Order製作,Paradox Interactive發行的一款模擬經營類遊戲,遊戲引入了全新的遊戲玩法元素,讓玩家切身體會到創造和維持一座真正城市的興奮和艱辛,同時擴展了城市建設體驗中的一些經久不衰的主題。 遊戲特色: 多層級且極具挑戰性的模擬: 從頭開始建造您的城市學起來容易,但掌握起來難。在遊戲中,作為城市的市長,您將面對平衡各種必要需求的難題,例如教育、水力發電、警察、消防、醫療等等諸多問題,以及您的城市真正的經濟體系。您的城市中的居民嚴肅靈活地對眾多遊戲場景做出回應,真實感極強。 廣泛的當地交通模擬: 充分利用 Colossal Orders 在開發《都市運輸》系列時積累的豐富經驗,打造出精致詳實、精心設計的交通體系。 地區及政策: 您不僅僅是市政廳的行政長官。將城市的部分區域指定為地區,使政策得以實施,從而使您出人頭地,榮登您自創城市的市長寶座。 利用晝夜的更替: 城市隨著一天中的不同時間而變化,影響著市民的日程安排。夜間,車流量明顯放緩,一些劃定的區域未滿負荷運行。本擴展包將使您得以掌控晝夜更替的不同方面。 廣泛的改造支持: 塑造或改進現有的地圖和結構。隨後您可將之導入遊戲,在 Steam 工作室中與他人分享它們,並下載其他城市建設者的傑作。

城市:天際線 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+,所以大家不用擔心人多了顯卡“畫”不動

獲得更多的電玩狂人最新消息
按讚加入粉絲團