當前位置:
首頁 > 新聞 > 《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

你真的可以在《城市:天際線》遊戲中構建一個4位加法器(4-bit adder)。

《城市:天際線》是一款城市模擬遊戲,其複雜的遊戲機制甚至允許玩家在當中建起通用邏輯門(universal logic gates )。以通用邏輯門為基礎,我們可以進一步打造出包括圖靈完整機在內的任意電路。但是,利用這些簡單的門構建一台完全成熟的計算機極為困難,因此在這裡,我只簡單演示一個4位加法器的製作方式。順帶一提,整個實驗只需遊戲原始版本即可完成,無需任何額外mod或者附加組件。

Tips:所謂4位加法器,指的是能實現四位二進位數全加的數字電路模塊。加法器是數字系統中的基本邏輯器件,例如:為了節省資源,減法器和硬體乘法器都可由加法器來構成。但寬位加法器的設計是很耗費資源的,因此在實際的設計和相關係統的開發中,需要注意資源的利用率和進位速度等方面的問題。多位加法器的構成有兩種方式:並行進位和串列進位方式。並行進位加法器設有並行進位產生邏輯,運算速度快;串列進位方式是將全加器級聯構成多位加法器。通常,並行加法器比串列級聯加法器佔用更多的資源,並且隨著位數的增加,相同位數的並行加法器比串列加法器的資源佔用差距也會越來越大。

與其它城市建設遊戲一樣,《城市:天際線》要求玩家管理城市中的電力與水資源。發電廠負責發電,而城市既需要凈水也需要汗水。水塔能夠供應凈水資源,污水管道則將廢物排出城市之外——二者的運行都需要電力的加持。污水管道與凈水塔之間的二元性關係,意味著我們可以藉此構建與門(AND gates)和或門(OR gates)。

Tips:與門(AND gate)又稱「與電路」。是執行「與」運算的基本邏輯門電路。有多個輸入端,一個輸出端。當所有的輸入同時為高電平時,輸出才為高電平,否則輸出為低電平。

Tips:或門(Or gate)又稱「或電路」。如果幾個條件中,只要有一個條件得到滿足,某事件就會發生,這種關係叫做「或」邏輯關係。具有「或」邏輯關係的電路叫做或門。或門有多個輸入端,一個輸出端,多輸入或門可由多個2輸入或門構成。只要輸入中有一個為高電平時,輸出就為高電平;只有當所有的輸入全為低電平時,輸出才為低電平。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:本次實驗中的幾位主角,由左至右分別為:燃油發電廠、水塔、污水管道。大家還能在背景中看到風輪機的身影。

下圖所示為我們構建起的與門。2個輸入端分別為通向水塔(頂部)與污水管道(底部)的電力線路。輸出則為連接至發電廠的電力線路。儘管屏幕截圖所示的輸入值為零——即沒有水及廢物需要管理,發電廠仍在持續發電,但一段時間後會自行關閉。各建築物之間相距很遠,這是為了避免電力在各位主角之間自由流動。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:常規地圖上的與門、電力以及水流的分層示意圖。

我們還需要另一個具有完整功能的組件:逆變器,或者說非門。為此,我們需要利用遊戲中的液體力學模擬機制。濫用水壩、運河或者污水管道會導致建築物慘遭淹沒。被淹沒的電廠將不再發電。利用這一遊戲設計特性,我們即可構建起非門,如下圖所示。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:非門電力層,污水管道會先關閉、而後開啟。

根據下圖中的模式,我們可以使用9個混合門構建出1位加法器。將4個加法器鏈接起來,我們就實現了本次實驗的目標——創建4位加法器。我把各個門放在網格結構當中,以反映其在地圖上的布局。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:帶進位1位加法器的布局。

為了讓工作更輕鬆,我決定在地圖編輯器當中使用無限金錢與自定義地圖。您可以在地圖編輯器當中導入PNG圖像以載入高度圖。我創建了一個地塊,並在其中放置各個門——實際操作起來就像是在設計一塊PCB!下圖為設計完成的地圖,你可以在圖片中的2 x 2網格當中找到4個重複的1位加法器。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:這裡出現了鋸齒狀的線條,這是因為遊戲引擎無法對銳利的邊緣進行抗鋸齒處理。

構建電路的過程非常繁瑣,我也因為計算錯誤而不得不多次從頭來過。我遇到的第一個難題是交叉電路,幸運的是只要有足夠的高度差,電源線即可相互交叉而又互不相交。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:1位加法器。我將4個加法器互連起來。

最後,我需要在附近建造一座城市以產生充足的污水,從而同時淹沒8個風力輪機。沒錯,這個加法器是用生活污水驅動的。當然,這並不算什麼環保解決方案,因為每個門都配備一座燃油發電廠,因此污染其實非常嚴重。調試過程相當困難,有時候我的電力線路會被風暴和閃電所破壞——這就像是突如其來的宇宙射線,總之相當煩人。

《城市:天際線》中的圖靈機:用水電管道做一個四位加法器

▲ 圖:密密麻麻的電源線通向4位輸入之一。

我製作了視頻,以表明這套系統確實能夠有效運行。在第一段視頻中(https://youtu.be/dD7Bi25IPaA),我將電線接入始終開啟的電網(相當於IC電源)以設置輸入。在左側,我設置了1001(十進位的9),中間為1110(十進位的14)。輸入設置完成後,我加快遊戲速度,並發現右側5條線路的輸出全部跳轉為1。經過很長一段時間後,最終值穩定在10111(十進位的23)。成功了!

在第二段視頻中(https://youtu.be/Oa2otcfXCtY),我主要關注其中一個加法器。大家可以看到組件的狀態隨時間變化,直到出現最終輸出結果(總和為0,進位為1)。

寫在後面:這台計算機的處理速度非常緩慢,進行一次4位加法運算需要用掉遊戲中大約15個月的時間——相當於現實生活中的20分鐘左右。另外,尺寸也存在問題。為了在遊戲中體現電力供應過程,各個門組件需要彼此相距很遠,否則電力會在各門之間瞬間流動。4位加法器佔據了正常遊戲中全部9個可用區塊的大部分面積,當然我也承認其中還有進一步優化的空間。如果使用mod,可用區塊可以增加至25個。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技行者 的精彩文章:

中本聰的「繼承者」們——人們為何覬覦比特幣締造者這一王座?
你可能不知道每棟建築都會漏水,而AI正在解決這一問題

TAG:科技行者 |