為什麼單機遊戲的啟動時間一般都比較長?有沒有辦法進行縮短?

一般PC正版遊戲啟動時間包括:遊戲平台啟動+遊戲程序啟動+遊戲廠商的LOGO展示+檢測聯網+進入存檔。

那麼,在技術上有沒有可能實現「秒進」。也就是點擊遊戲圖標10秒內可以進行遊戲?


現在遊戲界流行的趨勢不外乎高清畫面,開放世界,無縫銜接。哪一個不都是對硬體載錄提高要求。

想載錄快可以,拿上述三個點開刀就行了。畫面剪成像素風,遊戲改成線性流程並且大幅度減慢主角運動速度,再來就是拆分成各種讀取場景。

哪個你都不願意,只能靠硬體水平的提升了。不過現階段民用遊戲硬碟最多也就SSD,效果提升有限。

比較討巧的辦法是在讀取界面時搞點事情,放個過場動畫,貼點遊戲tip,預告一下下集內容,甚至加個小遊戲,都是好辦法。


在steam上曾經跟幾個搞Unity開發的人聊過,他們說,場景一複雜,Unity會在事實上要求光照和其他信息保存在幾千個文件裡面,慢才是正常的(逃


現代遊戲容量太大了,你的硬碟如果是SSD的可能會好一些。

你試試DOS時代的遊戲,用現代電腦運行都是秒進。

可想而知用20年後的硬體運行現在的遊戲也是秒進。(不算LOGO之類的強制時間)


雙擊遊戲:

1.程序啟動,載入動態庫,各種管理類初始化,開始流程 (零點幾秒就可已完成)

2.表面上放個logo,後台線程們:媽蛋的,是誰把這些正常的模型,材質,貼圖搞成奇奇怪怪的格式,我丫的格式轉換回來要時間啊。還有啊,那個誰,你先載入吧,logo場景結束你就要登場啦,快快快。哎喲我去,還有你,這些遊戲啟動流程跑完了,你是第一個場景,你丫的貼圖,模型讀進來了沒,快點載入啊,還有啊,你材質里用的啥shader的,先告訴GPU君一下。什麼? 這都是高模,需要時間? 哎,行不行啊,不行的話,那邊流程我給條,讓他知道你需要多久才能載入好。(這個需要的時間主要是萬惡的策劃和美術決定的)


如果遊戲可以像一些電腦管家之類的程序一樣駐留在後台,玩家也不介意佔用一些內存資源的話,理論上可以做到即點即玩,免登陸,自動更新。


所以我說單機廠商完全不懂客戶需求,載入慢根本不是問題,問題是載入的時候讓玩家幹什麼去啊,不是盯著廠商的logo發獃,就是盯著進度條犯傻(進度條還不是勻速動的,逼死強迫症)。

你看看人家小米和樂視,就知道放段廣告幫客戶打發下時間,還能被動提升下客戶的審美需求。

所以不如寄希望TGP做大做強,每次載入都……


啟動時間長當然就是因為容量太大。

縮短是有辦法的,可以先讀一個很小的場景,然後一邊走一邊按需載入,這就是十年前廣為流行的無縫地圖技術。

也可以先讀低模,然後慢慢載入高模數據。


借用Yooka-Laylee載入界面的這句話,「如果現在還流行卡帶的話,這遊戲現在就該載入完成了」。

如果單機都做成PCI-E介面的卡帶,估計啟動時間肯定都飛快,倘若成本能降到白菜價,說不定未來PC單機這種形式反而會流行起來呢,機箱側面都會留個卡帶槽出來。


其實遊戲平台啟動和logo不應該算進去的。

遊戲平台啟動是為了互相保證並且啟動遊戲服務。而logo這個,pc的很多都能跳,知足吧,主機這邊logo你是要等他設定的時間過完的……

其實想要加速讀取嚴格來說也不是沒有辦法,就是全民的內存增加到50G以上超過現在的遊戲容量(玩cod的大概需要100G),那樣大部分廠商就可以把大部分的遊戲全都扔進內存里,那載入速度肯定如飛一般,再努努力全換成ddr5的內存,那傢伙。


在GBA、DS、FC、SFC之類平台上運行的遊戲從來沒有Loading過程

如果題主希望遊戲秒進,可以考慮使用與上述遊戲機架構類似的PC

不過這不現實


硬碟太大,內存太小


顯而易見,現代新遊戲,無論是PC單機網遊,還是主機掌機遊戲,容量都非常大,遊戲啟動時,需要載入大量數據。

當年的雅達利,FC,MD等,由於遊戲容量微小,遊戲卡帶本身就是高速存儲設備,開機秒開,是非常正常的。

凡事就怕認真,認真地比較一下,我們看幾個簡單的數據就會理解這些問題。

【1】遊戲容量對比。

當年的FC遊戲,容量256KB就已經非常大了,515KB已經頂破天了。現代的PS4遊戲,電腦遊戲,容量幾十個GB根本不稀奇。

FC《魂斗羅1代》日版,當年的大容量佳作,容量256KB。

PS4《COD:幽靈》,現今的大容量佳作,容量31.1GB。

後者相當於前者容量的12點74萬倍。

雖然遊戲啟動的時候,並非全部數據都載入內存,但都佔據各自的一定比例,這兩者載入數據的量,和遊戲本身的容量,必定呈現某種正相關。

【2】內存容量和內存主頻的對比。

FC主內存2KB,顯存2KB,加在一起算它4KB,8位。

PS4共享內存8GB,128位。

僅以字面上的容量來計,PS4約為FC的209點72萬倍。

但將位(bit)的因素算在內,還要再乘上(128除以8)PS4約為FC的3355多萬倍。

PS4內存主頻(1點4GHZ,等效32位的5點6GHZ,甚至等效8位的22.4GHZ)要遠遠超過FC(FC內存主頻最快也不可能超過其CPU主頻1點77MHZ,8位),相當於FC的1點3萬倍。

(在這裡我沒有查到FC內存主頻的參數,考慮到它不會超過CPU主頻,因此將FC的CPU主頻1點77MHZ近似地看作內存主頻。)

由於PS4相對FC,(內存主頻的倍數)跟不上(內存容量的倍數),實際上PS4顯示畫面的能力,相對FC的倍數就被拖慢,可以近似視作(內存容量的倍數)除以(內存主頻的倍數),

約等於3355萬除以1點3萬,約等於2581倍,0.2581萬倍。

可見單位時間內數據吞吐量,PS4雖然遠遠超過FC,但超過的程度已經不像遊戲容量的對比這麼誇張了。

而且,我們還不能單純地比內存容量,因為兩者對畫面解析度的要求不同,CPU主頻也不同。

由於遊戲數據容量巨大,PS4還有一個硬碟讀取數據的過程,這個過程要慢於從內存直接讀取數據。

在這裡,低速的硬碟會拖慢高速的內存,形成一個速度上的瓶頸。

我們可以認為,考慮到讀取硬碟數據的拖慢,PS4內存的效率比FC的2581倍還要少一些,但少的不多。

【3】CPU主頻對比。

FC,單核心的6502CPU,8位,主頻1點77MHZ。

PS4,APU內含的8核心CPU,由2個主頻1點6GHZ的4核心32位CPU組成,等效成8位的CPU,相當於32個8位CPU核心。

兩者的速度差異,不考慮位數,(1點6G)除以(1點7M)為963點76倍。

但因為多核心和位數不同,二者數據吞吐量不同,必然要考慮到位數,(963點76倍)再乘以(32個等效8位CPU核心)等於30840點47倍,PS4的CPU主頻等效為FC的3萬多倍。

再回到上述遊戲容量對比的例子,PS4大中型遊戲《COD:幽靈》,容量雖然為FC大中型遊戲的《魂斗羅1代日版》的12萬多倍,但CPU速度只快了3萬多倍,拖了後腿。

(12萬多)除以(3萬多),運行各自遊戲的速率,PS4比FC快了只有約4倍。

PS4的CPU主頻相對其所面對的大容量遊戲,顯然是較慢的,它並不比FC優越多少。

PS4在CPU主頻和數據吞吐量等方面的增加倍數,跟不上遊戲數據總容量的增加倍數,此外還有硬碟到內存的數據讀取時間拖後腿,PS4運行遊戲的效率並不比FC高多少。

為什麼會造成這種情況呢?現時代,CPU主頻的增加,會造成發熱量的急劇增大,因此在距今20年前的奔騰3,圖拉丁,以及奔騰4等CPU,主頻3GHZ到4GHZ左右,已經是目前CPU主頻的速率極限,再快也可以,發熱量會急劇增大,需要液氮等非常規手段進行冷卻才可以正常運行,否則現有超高速CPU會在常溫下因自身巨大發熱量而燒毀。

主頻無法進一步提升,就只能靠堆核心數量,增加單位時間內的數據吞吐量來變相地等效增加CPU速率了,但現代計算機CPU,主頻仍然無法進一步突破,在許多領域就拖了後腿,影響人們工作和遊戲的效率。

有沒有辦法進行縮短?

辦法是有的,有2種,積極辦法和消極辦法

【A1】積極辦法必須寄希望於未來科技提升。

比如現在一些科研團隊在研究的碳納米管CPU,主頻甚至可以達到500到1000GHZ,而且可以耐環境高溫,目前它們僅僅是理論產物及初步研究,這些東西今後量產以後,必定提升計算機運算速度,也能使得大容量遊戲,科學計算,設計軟體等,實現秒開秒關,無縫連接。

可以想像XBOXTEN,以及PS9,它們的運轉速度有多快,秒速開機,而且能夠在高溫礦井或非洲大陸夏天,不開空調也能玩得順暢。

不用硅 美國碳納米管3D晶元快了1000倍

【A2】消極辦法是逆向思維,開發容量小的遊戲在高性能主機或PC上玩。

現今幾乎沒有人會抱怨你的PC或主機無法正常運轉FC模擬器,因為它們的機能遠遠超過FC主機的千百倍,就像載重一百噸的重型卡車載一隻小麻雀那樣簡單。現有機器,開FC遊戲都是秒開的,MD,SFC,早期街機也一樣。

遊戲廠商和業餘遊戲開發者,也可逆向思維,專門開發容量小,但有趣的遊戲,甚至在21世紀的今天,開發容量很小的新FC,MD,SFC,街機等老主機上的遊戲,再放到新主機上玩(可以加上聯網互動及在線高分榜等輔助功能),由於機器機能相差千倍萬倍,高射炮打蚊子,想啟動得慢都難。

辦法總是有的,關鍵是要用腦子去想辦法,這樣才能拓寬思路,把事情辦好。


主要是因為遊戲資源文件成千上萬,全是一地零碎,大量時間花在了索引文件、磁碟尋道上了。

優化嘛,主要是把這塊時間省下來,資源文件打包成大文件,一口氣讀到內存里慢慢解析,代價是可能讀取很多沒用的資源文件,即使這樣現代遊戲動輒幾十GB,機械硬碟幾十上百MB/s的速度,讀一會也是正常的。

解決方案就是SSD——加快小文件索引速度、數據讀取速度。


並不只限於PC遊戲,主機遊戲,網路遊戲,甚至手機遊戲都一樣,十幾年前的遊戲由於數據量不大,幾乎都是秒讀。原因也很統一:當前硬體的數據帶寬的進步遠跟不上承載現代遊戲動輒上G的數據的秒讀要求。當然有些遊戲靠優化可以減少這個讀取時間,但這仍然是治標不治本。只要玩家還對更細膩的畫面更完美的建模還有更高要求,這個問題就只能期待技術進步來解決。


主要還是機能的問題。

另外還有存儲介質的問題。

舉例最新發售的獵魔女天使重製版,原版的PS3版是讀取藍光碟,關卡之間的載入時間挺長,所以設計了一個可以在關卡載入過程中練習出招表的功能。但是steam重製版在最新的電腦上已經基本是秒進了,沒玩過原版的人可能都不知道那一閃而過的畫面是什麼意思。。。


坦克世界: 辣雞cpu0

群星: 辣雞cpu0

我: 辣雞優化

wot是秒進的,但是每局都要load一次資源

lol也是秒進的,但是每局都要load一次資源

stellaris界面出來前已經預讀所有信息,不是秒進

你以為讀信息可以省略? 其實永遠要讀這麼多,遊戲貼圖又大又複雜,不卡的只有ssd,網遊換場景機械硬碟必然要卡一會的


裝ssd固態硬碟,然後把遊戲和系統裝固態上面,開機和遊戲啟動讀條就都無比的快了(′?`)σ


從技術上講,肯定可以縮短單機遊戲的啟動時間的。

why? 為什麼單機遊戲的啟動時間一般都比較長?

相比簡單軟體,單機遊戲在啟動時需要更多處理,比如讀取本地文件和演算法預處理。所以單機遊戲的啟動時間一般都比較長。

how? 那麼有沒有辦法縮短呢?

從遊戲軟體設計上來講,如果只是想要縮短啟動時間

1. 完全可以將這些處理放到遊戲運行中再做,但是這樣就影響了遊戲的體驗性。比如從一個場景切換到另一個場景時,遊戲軟體需要從本地讀取很大的數據文件,那麼切換場景的時間就會更長。

2. 像顧露 提到一樣,通過遊戲駐留後台來縮短啟動時間。

當然,還有辦法就是上SSD和高性能CPU。這樣可以提高讀取速度和計算能力。


我記得玩GTA3的時候機械硬碟都可以秒進呢(逃


作為一個長期單機遊戲愛好者來說,怎麼會久?英雄無敵3 三國11 盟軍系列。。。。


推薦閱讀:

python2.7.9 安裝錯誤 there is a problem with...該怎麼解決?
如何利用python讀取特定目錄下的特定文件的倒數兩行?
能不能寫出一個程序,通過自身的遞歸迭代,自己就產生了智能呢?
有哪些動漫作品是與編程有關的?
爬取中國亞馬遜網站遇到503怎麼解決?

TAG:遊戲 | 單機遊戲 | 程序 |