Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
到網速對網游的影響,很多人玩游戲的人都會聯想到下面的情景:好容易等到機會來臨,舉槍射擊,以為革命大業就此可定,不料網速不穩,果斷卡住,等網速恢復,自己已是萬箭穿身。
因網絡不通暢帶給游戲者的煩惱其實遠不止如此,掉線、登錄時間過長甚至無法登錄等情況也時有發生。是什么原因造成了這樣的情況,我們又該如何去尋找補救措施呢?
其實,造成網速過慢的原因很多,其中最主要的是不同運營商之間跨網通訊的兼容性問題。電信、聯通、移動三大運營商之間的網絡相互訪問時,經常會出現延遲過高、丟包之類等情況。目前解決該問題的最有效的辦法是利用網游加速器進行加速。以NETPAS標準版為例。
安裝后啟動程序,在該界面中單擊“注冊”按鈕完成注冊并登錄,在“服務類型”項中選擇“游戲加速”,然后單擊“啟動加速”按鈕。
稍后會出現該界面,顯示當前分配的地址及連接時間、接收的數據等信息,說明加速開始。此后程序會在后臺全自動處理網絡數據,對游戲進行加速,期間根本無需我們手工參與。
那么,NETPAS的加速效果究竟如何呢?為了得到一個比較明確的答案,在某日的11:15~11:45,我們用兩臺配置相同的筆記本,對其進行了一個簡單測試。測試游戲為魔獸世界,測試環境為:聯通4MB ADSL、i5-2310 CPU、4GB內存,Windows 7 64位旗艦版操作系統,測試方法為將其中一臺直接接入寬帶,另一臺使用NETPAS加速器,每5分鐘記錄一次數據,最后得到的結果見圖3:
在網絡良好的環境中,NETAS加速效果對比
從中我們可以看出,使用加速器的延遲表現明顯要好于未使用時,這里尤其要說明的是,由于我們測試所處的網絡環境良好,這種差異還不算太大,如果在網絡環境不好的使用,效果會更為可觀。
小技巧:提高網速的其他方法匯總
別在網絡高峰期玩游戲,比如在晚上8~11點之間,或者是節假日等;
內網用戶,在玩網游時,應保證網內無人使用迅雷、快車或P2P之類的軟件傳輸文件(包括看視頻);
有些軟件會在后臺偷偷連接網絡并進行數據傳輸,可用360和金山衛士等防護軟件將其禁止。以360安全衛士為例:
右擊桌面上的“加速球”,選擇“看網速”,進入相應界面,右擊在后臺連網的程序,在出現的右鍵菜單中選擇“禁止訪問網絡”,即可禁止其訪問網絡。
收費or免費 網絡加速器的抉擇
面對網速過慢、延時過高、容易掉線以及登錄困難等問題很多人會選擇加速器,網游加速器的確可在一定程度上解決問題。不過,面對種類繁多的加速產品,我們到底該怎么選擇?
目前所有的網游加速器,都是通過花錢買節點,然后通過中轉服務來達到加速目的的。從這一意義上來說,各加速器的基礎加速效果并無多大差異。所以無論是免費的還是免費的,基本上都能滿足一般玩家的需要。知道了加速器的原理,那面臨是該選擇免費的還是收費的這個問題時,就不難決定了。
由于各大加速器是通過購買節點的方式進行加速的,這就意味著它們的付出需要得到回報。所以,盡管目前網上有不少打著免費旗號的網游加速器在誘導用戶下載,但實際上,它們的免費是有一定限制的,比如,只在某段時期內免費(可免費試用多長時間,通常為七7~10天),只在固定時段內免費(比如晚上11點到次日7時),或者只對指定的游戲免費(通常是一些較老的游戲,新游戲需要付費)。
有些所謂的免費只是針對一部分較老的游戲
目前真正免費的網游加速器只有一款,那就是網游快車。網游快車的營利方式不在于向用戶收費,而在于在界面中顯示盡可能多的廣告,所以比較適合那些對廣告不太反感的朋友使用。不過,為了安全起見里面顯示的廣告最好不要隨便去點擊,以免出現不必要的麻煩。
雖然完全免費,但網游快車中顯示的廣告的確讓人厭煩
盡管如此,骨灰級玩家因為在游戲中浸淫的時間過長,涉及到的游戲面廣,在選擇網游加速器方面,與一般玩家還是有區別。他們應該根據自己的實際情況,選擇真正適合的產品才行。選擇的標準,主要取決于網游加速器提供的特色功能、支持游戲的多寡和具體的收費情況。那么,我們就來看看幾大加速器的優劣和功能對比吧。
五大主流加速器整體優勢、特色功能及收費情況列表
小知識:國服玩家如何登錄外服?
國服玩家要想登錄外服,必須借助代理或VPN才行。除了上面介紹的部分加速器可以實現外,目前國內也有不少專門的免費VPN,比如“CoCoVPN”。該VPN目前已經穩定運營一年以上,線路也超過100條以上,延遲穩定低于50ms,有興趣的玩家不妨試一下。
頁游玩得爽 瀏覽器幫忙
新型的頁游以其小巧、精悍的特性受到很多游戲愛好者的喜愛。但是,要想玩的舒暢,似乎除了對網速有要求之外,對于瀏覽器的選擇也有著一門“學問”。
利用小號挖礦采集資源,讓大號升級得更快,是很多頁游愛好者的生存之道。不過,現在大部分頁游會通過Cookie限制用戶,只能同時只能登錄一個賬號。多個賬號如何同時登錄呢?而且隨著HTML5技術的發展,選擇適合的頁游瀏覽器也變得至關重要。那么,瀏覽器對Flash和HTML5的支持程度是否直接影響到網游的實際表現?哪些瀏覽器對Flash和HTML5的支持更好呢?
如果我們的目的只是要同時登錄多個小號,完全可以用“松果游戲瀏覽器”來解決。在瀏覽器中選擇自己所玩的游戲,并用大號登錄,單擊頁面收藏夾欄右側的“小號登錄”按鈕,在瀏覽器的標簽欄中,會出現一個名為“小號”的標簽。在該標簽中,已經登錄的游戲會處于未登錄狀態,用小號登錄即可。用類似的方法,可以同時開最多10個小號。
松果游戲瀏覽器最多可同時開啟10個小號
而對于瀏覽器對Flash和HTML5的支持性能方面,我們則可以通過Asteroids HTML5和GUIMark2平臺提供的兩個測試來說明。其中前者可檢測瀏覽器的HTML5游戲性能,后者則可檢測瀏覽器的Flash性能。顯然,在玩游戲(特別是大型游戲)的過程中,如果瀏覽器對這兩個方面支持不好,就會出現游戲很卡、運行不流暢、或者畫面質量下降等情況。
在這兩大測試中,都以得分最高的瀏覽器為優勝。
目前國內用戶是常用的五大瀏覽器在Asteroids HTML5測試中的得分情況
五大瀏覽器在GUIMark2測試中的得分情況
通過上兩個測試,我們不難看出,在Asteroids HTML5測試中,IE11及IE10的分數、幀數排名最為靠前,而在Flash測試方面,雖然其最終成績稍遜于Chrome,但僅僅1~4分的差距,在日常使用的過程中,實際上是很難感覺出其中差別的。所有就游戲性能來說,IE10和IE11表現不錯,是網頁游戲用戶的最好的選擇。
小知識:頁游如何避免惡意網站
對網頁游戲玩家來說,常見的惡意網種無非有三種,一是打著銷售武器裝備的幌子直接騙取買家錢財的,二是假冒游戲官方頁面,盜取用戶賬號密碼的,三是直接在游戲官方網站掛馬,以達到非法目的的。對于這幾種情況,我們都可通過瀏覽器提供的相應功能來進行識別。目前像360安全瀏覽器、Chrome、IE和Firefox等瀏覽器,都提供了網址安全功能,借助它,我們可很容易看出網站的安全性能。此外,像360和金山安全衛士等,也提供了游戲模式,會自動識別玩家進入的網站是否安全。只要善于利用,即可將惡意網站拒之門外。
游戲下載別盲目 設置當中有訣竅
現在的游戲客戶端越來越大,下載自然需要很長時間,有沒有較好的方法可以提高迅雷的下載速度,減少等待時間?我們是否可以通過一些手動設置,來提高迅雷的下載速度?
還別說,就拿迅雷來說,要想讓下載順利地高效運行,不進行一些設置還真不行。
首先,要保證一次下載的任務不要太多,一般以最多三個為宜。此外,就是限制上傳速度。不限制上傳速度將在很大程度上降低下載速度,這一現象,在BT下載時最為明顯。限制的方法為:在迅雷主界面中,單擊主菜單按鈕,選擇“配置中心”,打開“系統設置”對話框。
在左側的“基本設置”項下選擇“常規設置”子項,在右側勾選“自定義模式”,然后將“最大上傳速度”設置為最小值(默認是10KB/s),單擊“確定”按鈕。
其次,是讓迅雷的下載線程心可能地多些。出于穩定的原因,迅雷默認設置中作了保守的設置,而我們的機器和網絡環境都比較好,這時完全可以自行設置,使其全速前進。
在左側的“我的下載”項中選擇“任務默認屬性”子項,然后在右側,將“原始地址線程數”設置為10,然后選擇“下載加速”子項,將右側的三個選項全部選中,單擊“確定”按鈕。
第三,適時利用“暫?!薄伴_始”按鈕,也可加速下載進程。有時候,任務搜索到的資源超過100個,但是速度卻降低了,這時候,可以先暫停任務,再開始,讓服務器重新搜索資源,這時速度會明顯上升。
文件較大時,應盡量選擇在夜里11時到次日8點這一時段下載,因為此時是上網低峰期,可獲得最為理想的下載速度。通宵下載時,為了達到節能的目的,可以直接關閉顯示器,并啟用離開模式。
離開模式可以在關閉大部分設備的電源的同時,進行影音處理、文件下載、文件復制等操作。默認情況下,該模式并未啟用,我們需要通過修改注冊表來啟用它。
按下“Win+R”組合鍵,打開運行對話框,輸入Regedit,回車,打開注冊表編輯器窗口,右擊[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power]子鍵,選擇“新建→DWORD(32-位)值”,新建一個名為AwayModeEnabled的值。在右側窗格中雙擊該值,打開“編輯DWORD(32位值”對話框,將“數值數據”設置為1,單擊“確定”按鈕,重啟系統,離開模式即可被啟用。以后我們可以通過在“開始→關機”菜單中選擇“睡眠”命令,讓計算機處于離開模式
修改注冊表開啟系統的離開模式
小知識:下載時是否應該打開QOS服務
QoS(Quality of Service)即服務質量。它是網絡的一種安全機制, 用來解決網絡延遲和阻塞等問題。 正常情況下,如果我們訪問網絡的目的,只是用來瀏覽一下網頁或收發郵件,該機制并不會發揮作用,但如果我們要觀看在線視頻、欣賞在線音樂或下載文件時,該機制就十分必要了。因為它會在網絡傳輸量較大時,確保重要的數據不會延遲或丟棄,同時保證網絡能夠高效運行。所以我們此前常聽說的用關閉QOS服務來提高網速的做法,是殺雞取卵,得不償失的一種錯誤做法。
擴展閱讀:“殺手”出場 網速蹭蹭漲
對于一些高級游戲玩家來說,因為對網速的苛刻要求,往往會選購“殺手網卡”。你一定會問。殺手網卡的“殺手锏”是什么?為什么會受到游戲玩家的青睞呢?我們又該如何選擇?
殺手網卡實際上是一臺幫助電腦處理網絡信號的微型電腦,它不但具備NPU(網絡處理單元),還具備緩存、FLSH和LIUNX操作系統,甚至可以外掛防火墻軟件,P2P下載軟件等,類似于使用番茄固件的路由器。其主要是在網絡帶寬較大(比如局域網或100MB以上)、或網絡質量不好,經常丟包時,可減輕電腦CPU的負擔,讓CPU輕裝前進,從而達到更快地運行游戲地目的、二是它會繞過系統堆棧,直接處理大部分的TCP/IP處理任務,可以減少13毫秒的數據包延遲。所以,殺手網卡對于一些CS之類的射擊競技游戲聯網時效果不錯。此外,它對于用UDP協議傳輸數據的網絡游戲也有一定的優化作用。
么是CANVAS? 首先介紹下canvas, 前端的同學可能很熟悉,舉個很簡單的例子,
平常用的網頁截圖、H5游戲、前端動效、可視化圖表…,都有canvas 的應用場景, 官方的定義:
canvas是HTML5提供的一種新標簽,
ie9才開始支持的,canvas是一個矩形區域的畫布,可以用JS控制每一個像素在上面繪畫。canvas 標簽使用 JavaScript
在網頁上繪制圖像,本身不具備繪圖功能。canvas 擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。
看著很簡單,其實canvas這個標簽的加入,賦予了我們更多創建驚艷的前端效果的能力。但是你知道他也有性能問題??本篇文章就簡單談一談canvas的性能優化。
我們都知道瀏覽器上渲染動畫 每一秒高達60幀,也就是1秒鐘內我們完成60次圖像繪制, 也就是每一幀圖像的繪制時間其實就是(1000/ 60)。 如果在每一幀動畫的時間小于 16.7 ms 辣么就會出現卡頓、丟幀。而canvas 其實是一個指令式繪圖系統, 他通過繪圖指令來完成繪圖操作。
影響canvas兩個很關鍵的因素:
第一個渲染的圖形數量多,就是調用繪圖指令的次數比較多,
第二個渲染的圖形大,就是一次繪圖渲染的時間比較長
這句話怎么理解呢 , 假設你要在場景中畫正n變形,這是一個 很常見的需求可能你稍不注意寫下了下面這幾行代碼:
function drawAnyShape(points) {
for(let i=0; i<points.length; i++) {
const p1 = points[i]
const p2 = i=== points.length - 1 ? points[0] : points[i+1]
ctx.fillStyle = 'black'
ctx.beginPath();
ctx.moveTo(...p1)
ctx.lineTo(...p2)
ctx.closePath();
ctx.stroke()
}
}
points 對應的生成多邊形的點,代碼如下:
function generatePolygon(x,y,r, edges = 3) {
const points = []
const detla = 2* Math.PI / edges;
for(let i= 0;i<edges;i++) {
const theta = i * detla;
points.push([x+ r * Math.sin(theta), y + r * Math.cos(theta)])
}
return points
}
?
一看這fps低成這個樣子,很多人這時候說,你畫的圖形多,那我只要悄悄的改下代碼,就能讓fps 回歸正常
重寫了正多邊形的方法:
function drawAnyShape2(points) {
ctx.beginPath();
ctx.moveTo(...points[0]);
ctx.fillStyle = 'black'
for(let i=1; i<points.length; i++) {
ctx.lineTo(...points[i])
}
ctx.closePath();
ctx.stroke()
}
看了下fps 已經成功升到了30fps, 這是為什么呢, 第一段我們在循環中去做繪圖操作, 循環一次, stoke() 一次,這顯然是不合理的,第二個直接把stoke() ,放到循環外,其實就調用了一次,所以我們可以得出減少繪圖指令是可以提高canvas的性能的
為什么需要分層渲染, 在游戲中,假設人物的不停地在移動,但是呢背景可能加了很多花里呼哨的元素,但是我在每一次更新的時候,場景本身是不變的,變的只有人物不停的移動,如果每一幀再去重繪不就造成了性能浪費, 這時候分層canvas就出現了 我們先看下一張圖你可能就明白了。
我通過3個canvas疊在一起,通過設置每個canvas的 z-index 達到了3個畫布還是在同一層的錯覺,這樣我在requestAnimation中,只需要對 動的圖形去做重新繪制就好了,其余的依舊是保持不動 。
偽代碼
<canvas id="backgroundCanvas" />
<canvas id="peopleActionCanvas" />
const peopleActionCanvas = document.getElementById('peopleActionCanvas');
const backgroundCanvas = document.getElementById('backgroundCanvas');
?
function draw(){
drawPeopleAction(peopleActionCanvas);
if (needDrawBackground) {
drawBackground(backgroundCanvas);
}
requestAnimationFrame(draw);
}
一個背景層一個運動層, 在抽象一點,我們什么時候應該去做分層 ,如果畫布純是靜態的就沒有必要去做分層了, 如果當前有靜態有東動態的,你可以邏輯層放在最上面,然后展示層 放在最底下就可以實現所謂的 分層渲染了,但是最好保持在3-5個。
局部渲染的話其實就是調用canvas 的 clip方法。官方文檔MDN 對這個方法的使用
CanvasRenderingContext2D.clip() 是 Canvas 2D API 將當前創建的路徑設置為當前剪切路徑的方法
如何用canvas 畫一個1/4圓。
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'red'
ctx.arc(100, 100, 75, 0, Math.PI*2, false);
//ctx.clip();
ctx.fillRect(0, 0, 100,100);
這里填充的時候 沒有用clip 畫面上應該是一個矩形。
這時候我把clip注釋解開來, 矩形變成了一個半圓。 所以clip 這個 api 結合 fillRect 填充 就是實現填充任意圖形路徑。
canvas 中畫了1000 個圓形, 如果你只改一個顏色,那其他999都是不變的 這種浪費是肯定存在性能問題, 如果在做動畫效果可想而知,丟幀非常厲害。 這里就可以使用我們上面的api
正確的做法其實就是我們要做局部刷新:
確定改變的元素的包圍盒(是否存在相交)
畫出路徑 然后 clip
最后重新繪制繪制改變的圖形
clip() 確定繪制的的裁剪區域,區域之外的圖形不能繪制,詳情查看 CanvasRenderingContext2D.clip() clearRect(x, y, width, height) 擦除指定矩形內的顏色,查看 CanvasRenderingContext2D.clearRect()
包圍盒
用一個框去把圖形包圍住, 其實在幾何中我們叫包圍盒 或者是boundingBox。 可以用來快速檢測兩個圖形是否相交, 但是還是不夠準確。最好還是用圖形算法去解決。 或者游戲中的碰撞檢測,都有這個概念。這里討論的是2d的boudingbox, 還是比較簡單的。
虛線框其實就是boundingBox, 其實就是根據圖形的大小,算出一個矩形邊框。理論我們知道了,映射到代碼層次, 我們怎么去表達呢? 這里帶大家原生實現一下bound2d 類, 其實每個2d圖形,都可以去實現。 因為2d圖形都是由點組成的,所以只要獲得每一個圖形的離散點集合, 然后對這些點,去獲得一個2d空間的boundBox。
我們先說下 什么是離屏canvas???
OffscreenCanvas提供了一個可以脫離屏幕渲染的canvas對象。它在窗口環境和web worker環境均有效。
脫離屏幕渲染的canvas對象,這對我們實際寫動畫的時候真的有用嗎???
想象以下這個場景:如果發現自己在每個動畫幀上重復了一些相同的繪制操作,請考慮將其分流到屏幕外的畫布上。 然后,您可以根據需要頻繁地將屏幕外圖像渲染到主畫布上,而不必首先重復生成該圖像的步驟。由于瀏覽器是單線程,canvas的計算和渲染其實是在同一個線程的。這就會導致在動畫中(有時候很耗時)的計算操作將會導致App卡頓,降低用戶體驗。
幸運的是, OffscreenCanvas 離屏Canvas可以非常棒的解決這個麻煩!
到目前為止,canvas的繪制功能都與標簽綁定在一起,這意味著canvas API和DOM是耦合的。而OffscreenCanvas,正如它的名字一樣,通過將Canvas移出屏幕來解耦了DOM和canvas API。
由于這種解耦,OffscreenCanvas的渲染與DOM完全分離了開來,并且比普通canvas速度提升了一些,而這只是因為兩者(Canvas和DOM)之間沒有同步。但更重要的是,將兩者分離后,canvas將可以在Web Worker中使用,即使在Web Worker中沒有DOM。這給canvas提供了更多的可能性。
這就離屏canvas 為啥和webworker 這么配的緣故了。
如何創建離屏CANVAS?
創建離屏canvas有兩種方式:
一種是通過OffscreenCanvas的構造函數直接創建。比如下面的示例代碼:
// 離屏canvas
const offscreen = new OffscreenCanvas(200, 200);
第二種是使用canvas的transferControlToOffscreen函數獲取一個OffscreenCanvas對象,繪制該OffscreenCanvas對象,同時會繪制canvas對象。比如如下代碼:
const canvas = document.getElementById('canvas');
const offscreen = canvas.transferControlToOffscreen();
我寫了下面這個小demo 驗證下到底是不是可靠的
const canvas = document.getElementById('canvas');
// 離屏canvas
const offscreen1 = new OffscreenCanvas(200, 200);
const offscreen2 = canvas.transferControlToOffscreen();
console.error(offscreen1,offscreen2, '222')
離屏canvas怎么與主線程的canvas通信呢?
這時候引用另外一個api transferToImageBitmap
通過transferToImageBitmap函數可以從OffscreenCanvas對象的繪制內容創建一個ImageBitmap對象。該對象可以用于到其他canvas的繪制。
比如一個常見的使用是,把一個比較耗費時間的繪制放到web worker下的OffscreenCanvas對象上進行,繪制完成后,創建一個ImageBitmap對象,并把該對象傳遞給頁面端,在頁面端繪制ImageBitmap對象。
寫個小demo測試下:
優化前
我們畫 10000 * 10000 個矩形看看頁面的響應和時間,代碼如下:
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
function draw() {
for(let i = 0;i < 10000;i ++){
for(let j = 0;j < 1000;j ++){
ctx.fillRect(i*3,j*3,2,2);
}
}
}
draw()
ctx.arc(100,75,50,0,2*Math.PI);
ctx.stroke()
可以很明顯的感受到,在渲染出圖形前,瀏覽器是失去響應的,我們無法做認可操作。這樣的用戶體驗肯定是非常差的。
優化后
我們使用離屏canvas + webworker 進行優化,代碼如下:
我們先看下worker 的代碼:
let offscreen,ctx;
// 監聽主線程發的信息
onmessage = function (e) {
if(e.data.msg == 'init'){
init();
draw();
}
}
function init() {
offscreen = new OffscreenCanvas(512, 512);
ctx = offscreen.getContext("2d");
}
// 繪制圖形
function draw() {
ctx.clearRect(0,0,offscreen.width,offscreen.height);
for(var i = 0;i < 10000;i ++){
for(var j = 0;j < 1000;j ++){
ctx.fillRect(i*3,j*3,2,2);
}
}
const imageBitmap = offscreen.transferToImageBitmap();
// 傳送給主線程
postMessage({imageBitmap:imageBitmap},[imageBitmap]);
}
看下主線程的代碼:
const worker = new Worker('./worker.js')
worker.postMessage({msg:'init'});
worker.onmessage = function (e) {
// 這里就接受到work 傳來的離屏canvas位圖
ctx.drawImage(e.data.imageBitmap,0,0);
}
ctx.arc(100,75,50,0,2*Math.PI);
ctx.stroke()
對比兩個很明顯的變化, 畫多個矩形是個非常耗時的操作會影響其他圖形渲染,可以采用離屏canvas + webworker 來解決這種失去響應。
touchmove事件和滾動事件有時候是有沖突的,這樣在我們移動手指時回導致繪畫效果的卡頓,或者事件點位跳躍的情況發生,這時候我們只需要把滾動事件禁用既可以了
禁用方式是在標簽上加上或者微信小程序頁面加上"disableScroll": true,如果是uniapp在pages.json加上
“disableScroll”: true
<canvas :id="cid" disable-scroll="true" type="2d" ></canvas>
Waterworks!》是一款免費的卡牌策略游戲,由老牌獨立開發商Scriptwelder出品(該團隊曾以精品Flash游戲著稱)。該游戲的主題是為一個逐步發展的中世紀城市“Grudzi?dz”提供與發展度相適宜的水資源(好吧,我更愿意稱之為“五水共治模擬”)。
這游戲聽上去就很有教育意義——確實如此。當然,不僅如此,它還是個確實挺好玩,模擬經營部分做的挺完善的游戲(所以不僅僅是聽個噱頭)。
在《Waterworks!》中,玩家使用一副卡牌來建立新興的中世紀城市的基礎設施和資源(只涉及水相關)。在幾百年的時間里,這些基礎設施必須重新進行改造,擴大規模,才能讓一個大型的繁華城市在一個沒有什么天然淡水的地方茁壯成長。這是一個非常嚴謹的游戲,每張卡都有一個目的和適當的用途,通過手部管理使你能夠在城市人口供不應求之前有效地發展水利工程。
在游戲的最后,玩家會驚訝的發現自己建造了非常令人印象深刻的水力工程——而這確實在五六百年前的中世紀有可能發生。
《Waterworks!》可以在Itch.io上免費玩到,并且不用下載(這是一個發布于網頁端的html5小游戲),相信大家完了之后會對中世紀給排水(以及五水共治)有更深一步的理解??上]有中文,不過真的入手起來也不難。
說了這么多,到底什么是五水共治呢?其實很簡單,就是指“治污水、防洪水、排澇水、保供水、抓節水”。不得不說,我國的政策概括的都相當精準,如果《Waterworks!》想繼續深入挖掘,完全可以往這五個方向深耕(甚至小編都想去做一個真·五水共治的游戲了,希望到時候大家多多支持(逃……
*請認真填寫需求信息,我們會在24小時內與您取得聯系。