第180章 地形起伏
東京1991遊戲製作新時代 作者:西園寺公長 投票推薦 加入書簽 留言反饋
《星際尖兵》的單人模式中,主角最初扮演的是一位應征入伍的新兵。
因為在訓練營中表現出色,被任命為一個五人新兵小隊的隊長。
遊戲的第一關開始,這個五人小隊奉命去一處據點接替輪換的友軍。
但到達據點後,發現這裏正在被進攻。
主角配合據點內的友軍擊退了第一波敵人。
此時任務轉換為從危險地區安全撤離。
和大多數的即時戰略遊戲類似。
這一關的作用是讓玩家熟悉遊戲的操作。
如何移動,如何選定進攻目標等等。
裏奇弗萊徹是個老即時戰略玩家了。
從《沙丘2》開始便接觸這類遊戲。
基礎的操作難不倒他。
但是他很快發現了這款遊戲的不同之處。
“作為蟲族的敵人會爬坡。”
而且並不隻是階梯和緩坡。
近乎絕壁的角度也能爬上來。
到了遊戲的第二關。
玩家可以操作載具的時候。這一點就更是明顯了。
遊戲中的不同載具,越野能力也不同。
有些坡度輪式車輛能通過。有些就非得是履帶車輛不可。
而且上坡下坡時,車輛的動作明顯和平地不同。
根據坡度不同,會有特定的傾斜角度。
“難道這是一款3d遊戲?”
裏奇好歹是遊戲廠商的員工。雖然是銷售方麵的職位。但是對遊戲的基本原理也算是有些了解。
從畫麵上看,遊戲中無論地形還是單位,都不像是3d即時演算的樣子。
九十年代的即時戰略遊戲。大多數都使用的是“瓦片地圖”。各種地圖元素拚合起來後,本質上還是一張2d圖片。
這張地圖上有時候會利用視覺錯覺製造出一些高低起伏的地形效果。
在一般的遊戲中,這種高低起伏的區域起著一種障礙物的作用。
雙方的戰鬥單位在這種有落差的地形上也許可以互相攻擊,但無法越過陡峭的坡度進行移動。
那麽《星際尖兵》這款遊戲的爬坡功能是如何實現的呢。
其實在這款遊戲開發的早期,東海軟件上海工作室曾經“瘋狂”的嚐試過製作一款全3d即時演算的rts遊戲。
甚至借助於虛幻引擎製作出了一個原型出來。
在遊戲的前幾個關卡當中。雙方總共出現的單位加起來隻有幾十個。
這個原型運行起來還算流暢。
至少,在高配置的電腦上運行還算流暢。
但到了後麵的關卡。以九十年代的電腦配置就實在吃不消了。
遊戲進入中期以後,玩家控製的主角因為戰功晉升為指揮官。
要完成一係列基地守衛,星球空降突擊之類的任務。
人類陣營這邊的情況還好。
為了符合遊戲設定。蟲族單位在相同難度下是要比人類數量多的。
當一局遊戲中雙方總人口加在一起超過二百個以後。
就算是九十年代頂級配置的家用電腦也已經吃不消了。
這還隻是遊戲中期。
考慮到遊戲後期的大場麵。還必須留出更大的冗餘來。
當然,造成這種情況的原因也不全是電腦機能的限製。
作為一款遊戲原型。
需要優化的地方還很多。
比如說遊戲中細小的蟲族單位,因為建模時隻是等比例縮小。
在遊戲運行中占用的多邊形數量過於浪費。
這種事情其實是可以通過後期優化改善的。
但就算是改善。也改變不了全3d化之後高配置需求這個問題。
最後,上海工作室放棄了這個激進方案。
回到了2d畫麵的原點。
但是2d歸2d。
八足或者六足移動的蟲族如果會被一個小土坡擋住,這也實在有些可笑。
更不要說遊戲的過場畫麵當中,就拍攝了漫山遍野的蟲族順著陡峭山壁衝擊的場景。
由此可見,“爬坡”恐怕是這款遊戲的基本設定。
最後,解決這個問題的,還是齊東海作為獨立遊戲開發者的野路子思路。
齊東海給上海工作室提出的建議是。在2d地圖的基礎上,引入z軸這個概念。
一般2d遊戲的坐標係中,隻有表示縱橫兩個方向的x和y軸。
但在3d遊戲裏,有z軸這個概念。
當然,《星際尖兵》當中的z軸並不是真正的z軸。
而僅僅是一個表示高度的數值。
遊戲的地平麵被設定為100。低於這個數值的就是下凹的坑。高過這個數值的便是凸起。
為了減少計算量。並不是地圖信息中每個像素都有獨立的高度值。
而是借助瓦片地圖的“瓦片”這個單位。
每片瓦片元素有自己的高度值。
通過比較相鄰的兩個瓦片元素的高度差,就可以得到“坡度”這個數值。
遊戲中的不同單位有不同的爬坡能力。
通過坡度值可以判定相鄰的地圖塊是否可以通過、通過時要減速多少等等。
爬坡時人類載具的不同仰角,又或者是蟲類的不同動作。靠的也不是3d即時演算的結果。
而純粹是靠製作了各種角度的貼圖動畫而已。
至於地形信息的存儲。
與其使用不直觀的數組或結構體。齊東海提供了二十一世紀通用引擎中司空見慣的一種思路。
使用一張圖片文件來記錄高度值。
通過讀取圖片中特定像素點的顏色值,把顏色值轉換為數字。用以標示地形的高度值。
當然,實際使用時,為了節省運行內存。
這張標示了地形的圖片文件並不與遊戲地圖的像素一一對應。
而是每個像素表示一塊“瓦片”。
這樣做的好處是負責地圖編輯的策劃人員無需懂得代碼。
隻用繪圖軟件,像繪製等高線地圖一樣就可以標記出地圖的起伏。
實際上,每個《星際尖兵》的用戶,都可以得到一份地圖編輯器程序。
但是這款遊戲的地圖編輯器有兩種運行模式。
一種是傻瓜式的,隻需要編輯地圖塊和資源等內容即可。
另一種,則可以更細致的編輯地形。甚至通過簡單的腳本語言為地圖增加特定的事件。
編輯出一張有特殊規則或者故事性的地圖來。
既然網絡時代已經來臨。玩家社區的創造力不容忽視。
齊東海期待著玩家們用自己提供的工具搞出一些有趣的東西。
當然,如果玩家們實在自己想不出什麽也沒關係。
齊東海將來自己會搞。
因為在訓練營中表現出色,被任命為一個五人新兵小隊的隊長。
遊戲的第一關開始,這個五人小隊奉命去一處據點接替輪換的友軍。
但到達據點後,發現這裏正在被進攻。
主角配合據點內的友軍擊退了第一波敵人。
此時任務轉換為從危險地區安全撤離。
和大多數的即時戰略遊戲類似。
這一關的作用是讓玩家熟悉遊戲的操作。
如何移動,如何選定進攻目標等等。
裏奇弗萊徹是個老即時戰略玩家了。
從《沙丘2》開始便接觸這類遊戲。
基礎的操作難不倒他。
但是他很快發現了這款遊戲的不同之處。
“作為蟲族的敵人會爬坡。”
而且並不隻是階梯和緩坡。
近乎絕壁的角度也能爬上來。
到了遊戲的第二關。
玩家可以操作載具的時候。這一點就更是明顯了。
遊戲中的不同載具,越野能力也不同。
有些坡度輪式車輛能通過。有些就非得是履帶車輛不可。
而且上坡下坡時,車輛的動作明顯和平地不同。
根據坡度不同,會有特定的傾斜角度。
“難道這是一款3d遊戲?”
裏奇好歹是遊戲廠商的員工。雖然是銷售方麵的職位。但是對遊戲的基本原理也算是有些了解。
從畫麵上看,遊戲中無論地形還是單位,都不像是3d即時演算的樣子。
九十年代的即時戰略遊戲。大多數都使用的是“瓦片地圖”。各種地圖元素拚合起來後,本質上還是一張2d圖片。
這張地圖上有時候會利用視覺錯覺製造出一些高低起伏的地形效果。
在一般的遊戲中,這種高低起伏的區域起著一種障礙物的作用。
雙方的戰鬥單位在這種有落差的地形上也許可以互相攻擊,但無法越過陡峭的坡度進行移動。
那麽《星際尖兵》這款遊戲的爬坡功能是如何實現的呢。
其實在這款遊戲開發的早期,東海軟件上海工作室曾經“瘋狂”的嚐試過製作一款全3d即時演算的rts遊戲。
甚至借助於虛幻引擎製作出了一個原型出來。
在遊戲的前幾個關卡當中。雙方總共出現的單位加起來隻有幾十個。
這個原型運行起來還算流暢。
至少,在高配置的電腦上運行還算流暢。
但到了後麵的關卡。以九十年代的電腦配置就實在吃不消了。
遊戲進入中期以後,玩家控製的主角因為戰功晉升為指揮官。
要完成一係列基地守衛,星球空降突擊之類的任務。
人類陣營這邊的情況還好。
為了符合遊戲設定。蟲族單位在相同難度下是要比人類數量多的。
當一局遊戲中雙方總人口加在一起超過二百個以後。
就算是九十年代頂級配置的家用電腦也已經吃不消了。
這還隻是遊戲中期。
考慮到遊戲後期的大場麵。還必須留出更大的冗餘來。
當然,造成這種情況的原因也不全是電腦機能的限製。
作為一款遊戲原型。
需要優化的地方還很多。
比如說遊戲中細小的蟲族單位,因為建模時隻是等比例縮小。
在遊戲運行中占用的多邊形數量過於浪費。
這種事情其實是可以通過後期優化改善的。
但就算是改善。也改變不了全3d化之後高配置需求這個問題。
最後,上海工作室放棄了這個激進方案。
回到了2d畫麵的原點。
但是2d歸2d。
八足或者六足移動的蟲族如果會被一個小土坡擋住,這也實在有些可笑。
更不要說遊戲的過場畫麵當中,就拍攝了漫山遍野的蟲族順著陡峭山壁衝擊的場景。
由此可見,“爬坡”恐怕是這款遊戲的基本設定。
最後,解決這個問題的,還是齊東海作為獨立遊戲開發者的野路子思路。
齊東海給上海工作室提出的建議是。在2d地圖的基礎上,引入z軸這個概念。
一般2d遊戲的坐標係中,隻有表示縱橫兩個方向的x和y軸。
但在3d遊戲裏,有z軸這個概念。
當然,《星際尖兵》當中的z軸並不是真正的z軸。
而僅僅是一個表示高度的數值。
遊戲的地平麵被設定為100。低於這個數值的就是下凹的坑。高過這個數值的便是凸起。
為了減少計算量。並不是地圖信息中每個像素都有獨立的高度值。
而是借助瓦片地圖的“瓦片”這個單位。
每片瓦片元素有自己的高度值。
通過比較相鄰的兩個瓦片元素的高度差,就可以得到“坡度”這個數值。
遊戲中的不同單位有不同的爬坡能力。
通過坡度值可以判定相鄰的地圖塊是否可以通過、通過時要減速多少等等。
爬坡時人類載具的不同仰角,又或者是蟲類的不同動作。靠的也不是3d即時演算的結果。
而純粹是靠製作了各種角度的貼圖動畫而已。
至於地形信息的存儲。
與其使用不直觀的數組或結構體。齊東海提供了二十一世紀通用引擎中司空見慣的一種思路。
使用一張圖片文件來記錄高度值。
通過讀取圖片中特定像素點的顏色值,把顏色值轉換為數字。用以標示地形的高度值。
當然,實際使用時,為了節省運行內存。
這張標示了地形的圖片文件並不與遊戲地圖的像素一一對應。
而是每個像素表示一塊“瓦片”。
這樣做的好處是負責地圖編輯的策劃人員無需懂得代碼。
隻用繪圖軟件,像繪製等高線地圖一樣就可以標記出地圖的起伏。
實際上,每個《星際尖兵》的用戶,都可以得到一份地圖編輯器程序。
但是這款遊戲的地圖編輯器有兩種運行模式。
一種是傻瓜式的,隻需要編輯地圖塊和資源等內容即可。
另一種,則可以更細致的編輯地形。甚至通過簡單的腳本語言為地圖增加特定的事件。
編輯出一張有特殊規則或者故事性的地圖來。
既然網絡時代已經來臨。玩家社區的創造力不容忽視。
齊東海期待著玩家們用自己提供的工具搞出一些有趣的東西。
當然,如果玩家們實在自己想不出什麽也沒關係。
齊東海將來自己會搞。