多分支的遊戲劇情是怎麼儲存為資料的?

時間 2021-06-02 14:01:58

1樓:野龍

鑑於題主很可能還沒搞清楚這個問題,首先先說明一下,儲存分為物理結構與邏輯結構。物理結構就是具體的檔案格式,邏輯結構則是抽象的資料之間的連線關係。

然後,如果是物理結構的話,一般不會存在資料庫系統中,除非是網遊存檔。畢竟,單個存檔的資料量實在太少了,資料庫系統太大了,用資料庫系統會是大炮打蚊子。

而剩下的檔案格式,json是乙個不錯的選擇,畢竟方便訪問。除此之外,沒那麼複雜的遊戲也可能用更簡單的INI,或者純粹的冒號分隔檔案。資料量大的遊戲通常會有自己的格式,例如Minecraft用的NBT格式(其他格式的詳細規範不容易找,所以只有這個例子了)。

但是物理結構不是特別重要,畢竟可以隨便選的。稍微麻煩一點的就是邏輯結構了。目測簡單的遊戲通常是用乙個dictionary,儲存一堆flag但是不分級,在需要的時候直接讀取對應的flag就行了。

至於要知道當前劇情分支在具體位置,可以單獨用乙個變數來存,然後到需要的時候可以查詢當前劇情位置所在的分支,也可以查詢每個分支flag的選項。

如果你問分支flag出現矛盾怎麼辦,很多遊戲通常是不處理的,Undertale是少有的會給出特殊的錯誤資訊的遊戲之一(例如開頭你是不可能又打死了羊媽又沒打死過羊媽,於是這種情況下遊戲就會直接報錯不讓你繼續玩,可能我記得不對但是只是舉個例子)。因此,分支flag可能矛盾不影響遊戲繼續這麼儲存分支資料。

如果遊戲特別複雜,也可能會用樹形結構來儲存,但是貌似可能性不大,最多是所有分支flag同屬乙個樹形結構下的分支。(當然,這和檔案具體是用線性結構、樹狀結構還是雜湊結構來儲存無關,這些都是物理結構的範疇,或者算是一級邏輯結構吧,但是到了使用的時候會被進一步抽象為字典或者物件。)

當然,也不排除有遊戲直接用乙個陣列來儲存每次分支時選擇的分支的編號。這麼做的問題是,如果遊戲很大,要知道確切哪個分支會很麻煩,而且如果分支結構有變更,整個存檔都要更新。至於圖,圖並不是用來儲存當前所在分支的,最多是用來儲存分支之間的連線順序,也就是說,是遊戲檔案的一部分,而不是存檔的一部分。

但是考慮到很多遊戲都是非線性的,圖是用不了的,或者說,邏輯上成的圖非常的複雜,反倒不如用其他方式描述,畢竟非線性遊戲的分支之間的連線關係並不是絕對的。

有哪些很扯淡的遊戲劇情?

林夢駒 The Plutonia Experiment攻略Map01 Congo 嗶哩嗶哩 乾杯 bilibili 六魂名言 沒錯,這就是plutonia的劇情,有跟沒有,是沒什麼太大區別的。 蘇格拉沒有底 質量效應2,我記得是支線任務,薛伯德去調查什麼事,遇到兩方在爭吵。這遊戲主角有紅藍狀態,表示...

有哪些讓你感動的遊戲劇情?

安然 當然是仙劍98柔情版,李逍遙救靈兒,看見林月如被大石頭砸死的那一刻,記得那是上小學半夜偷玩電腦 恨不得起身去寫一篇作文 Captain Ahab 刺客信條埃齊歐三部曲 首先,這三部刺客與其他刺客信條與眾不同的是,這三部部完整的描寫了這位刺客的一生,年少時的輕狂,到年老成熟穩重的姿態,無論是情人...

最令你有感觸的遊戲劇情是什麼?

太陽滴血 記得當初玩甲甲的時候,指揮官從大土豆裡被抱出來和甲甲把戰爭搞斷的時候挺有感觸的,再者就是逆水寒中的乙個小支線也是讓我感動了好久。可能有人已經猜到 就是一生一世一雙人這個劇情,檀沁和長風就像牛郎和織女,最後檀沁追隨長風的時候真的太催淚了,不說了,先哭一會。 慕風 說來還是感覺挺耍賴的,但是我...