EVE遊戲程序的技術在哪個層面?

1.以前製作外掛的朋友:EVE內核比WOW至少領先三年,外掛做不了

2.遊戲製作官方CCP:這遊戲私服在技術上是不可實現的

3.我改動過很多遊戲,單機不用多說,網路遊戲比如LOL,DNF,CF,SD等等我都能改動遊戲模型、貼圖、BGM等等;但是改動EVE的客戶端就吃癟了

以上第一、二個事件的描述是真的嗎,以及為什麼

如果是真的請問

1.為何不能做外掛

2.為何EVE私服在技術上是不可實現

3.CCP這樣製作遊戲的理由

4.為什麼別的遊戲為什麼不設計成這樣

如果是假的請問

1.架設EVE私服有什麼困難,以至於現在沒有EVE的私服

2.在第三個事件中為什麼eve一旦換了哪怕一個BGM都會導致啟動器檢測遊戲損壞

eve音樂文件替換

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如果不知道請不要硬答

如果感覺對問題無語也還請不要抖機靈


關於4我也說點吧。

有聯機功能的遊戲(區域網也算)伺服器與客戶端的關係分為兩種:

完全同步:客戶端上傳玩家操作,並從伺服器端獲取操作結果。

絕大部分大型網遊都是這種機制,好處是信息保密性強,基本杜絕外掛;壞處則是表現受網路影響大,伺服器壓力大。

幀同步:客戶端分散式模擬遊戲進程,並從伺服器端獲取其它玩家操作與同步數據。

一些對響應速度要求高或是早起的聯機遊戲採用的是這種機制,例如格鬥遊戲,CS,War3之類。好處是受延遲影響低,壞處就是你可以從客戶端直接獲取所有的遊戲內信息。

拿網遊里常見的打怪掉寶做比方:完全同步是客戶端告訴伺服器,我要砍這個怪一刀;伺服器回復,這個怪被你砍死同時掉了個寶。幀同步則是客戶端告訴伺服器,我砍死了個怪還掉了個寶;伺服器回復:噢。

-------------------

eve毋庸置疑是完全同步的遊戲,也就意味著你通過分析客戶端只能最多解析出這個遊戲不到一半的內容。在服務端尚未泄露的現在,想要反向出一個和官方服務端功能幾乎一致的私服,幾乎也不可能。


一和二的描述基本是真.

1. EVE客戶端本質上只是個播放器, 播放伺服器處理完的指令而已, 所有的東西包括無人機每時每刻的坐標位置都是服務端傳來的. 在以往旗艦鐵騎無人機沒改之前, 每次大規模會戰都是上萬甚至數萬物品在時刻移動, 光是移動就很吃資源了. 另外各種傷害公式運算量也相當大, 各種浮點乘除法運算. 這些都是伺服器上運行的. 而且這只是其中一個極端星系而已, 現實是EVE里有8K個星系.

2. EVE在12年之前是使用Windows HPC 2008系列操作系統, 是屬於超算用的系統, (見微軟的case study http://download.microsoft.com/download/9/6/2/962a6c52-a7ba-4bf2-8464-cc8a6a8a7dc3/CCP_HPC.doc ,12年後由於微軟將該案例在官網上移除, 所以不清楚現在還是不是HPC),而EVE服務端本身也是屬於超算集群. 也只有這樣才能動態切換各個星系的負載水平. 所以沒有這麼多成本的話支撐起整個EVE宇宙的私服非常困難.

3和4. 這兩個以下開放討論.

另外關於改文件. CCP在啟動器上做了一些黑科技, 可以在十幾秒內將近10G的客戶端一次分析完並判斷出是否有被修改的痕迹, 如果發現有被修改的痕迹他會重新和伺服器的文件列表對照並修復.

這個還是比較容易繞過的.


最近 CCP 在官方的開發博客中記敘了一次寧靜伺服器(歐服)硬體更新換代的過程。從描述里可以看出 EVE 的伺服器集群非常之大,所以我認為開設一個能支持流暢遊戲的私服難度很大。世紀天成所運營的晨曦伺服器(國服)硬體規模想必不能與歐服相比,而且不時發生卡頓與不穩定現象,被玩家戲稱為「小霸王伺服器」。

現在 EVE 的客戶端使用名為「共享資源緩存」的方式來存儲大量的資源文件。EVE 的客戶端擁有幾萬個各式各樣的資源文件,例如模型、貼圖、音效等。它們被獨立保存,而無法從文件名上得知資源的類型和用途。

客戶端另有一份 .txt 文件,其中記錄了每一個資源文件的真實路徑和名稱(以便於客戶端調用)與它們的校驗值。在客戶端本體啟動後,每一個被用到的資源文件均會被校驗。如果校驗值不匹配(即資源文件被修改或損壞),客戶端會向伺服器請求一份正確的資源以替換掉校驗未通過的資源文件。校驗與按需下載的功能是被整合入客戶端本體的,所以繞過啟動器登錄遊戲也無法令被修改的資源文件生效。

那有人會問了,如果我直接篡改 .txt 文件中的校驗值記錄,豈不是就能騙過文件校驗了?然而這樣也無效。客戶端還有一個 manifest.dat 文件,這個文件中存儲了客戶端的 .dll, .pyd等基礎文件(包括上文提到的 .txt 文件)的校驗值。如果 .txt 被篡改,客戶端可以檢測到異常並中止遊戲載入,根本不能啟動。理論上來說可以通過修改 manifest.dat 來徹底騙過文件校驗機制,但我還沒有發現正確的方式...因為客戶端還會校驗 manifest.dat 的時間戳... CCP 的三層校驗真的好恐怖。


EVE私服是有的,只是非常不完善

詳見EVEMU


推薦閱讀:

怎樣快速製作一個圖形化的邏輯編輯器?
開發一款像素遊戲需要做哪些準備?
電子遊戲是否能稱之為一門藝術?你們怎麼看?
遊戲開發中,腳本語言(如Lua/Python)和底層語言(C/C++)的職責劃分是怎樣的?
為什麼要強調Texture2DArray在地形上的應用?

TAG:軟體開發 | 遊戲開發 | 星戰前夜EVEOnline | CCPGames |