跑跑車游戲網(wǎng) - 單機游戲下載基地網(wǎng)站首頁|單機游戲|蘋果游戲|安卓游戲|游戲攻略|游戲補丁|游戲圖片|游戲排行

主機頻道·新聞德軍總部新血脈地鐵逃離皇牌空戰(zhàn)7未知空域古劍奇譚三傳奇世界網(wǎng)頁版實況足球2018幻想三國志5極品飛車20復仇歐洲卡車模擬2中文版

網(wǎng)站首頁 -> 主機頻道 -> 電玩周邊 -> 神秘海域4開發(fā)者日志 帶你了解次世代最強游戲的開發(fā)過程 神秘海域4開發(fā)者日志 帶你了解次世代最強游戲的開發(fā)過程作者:About Allen Chou  來源:Ming-Lun   2016/5/12 10:34:22   我要評論0

本文轉(zhuǎn)載自,神秘海域4AI開發(fā)人員的工作日志,其中介紹了本作開發(fā)中的細節(jié),對于游戲背后的故事感興趣的朋友不要錯過哦。

原文正文

Uncharted 4已經(jīng)發(fā)售,終于可以分享我負責開發(fā)的部分了

我主要是負責單人模式的伙伴AI、多人模式的戰(zhàn)友AI、還有一些游戲邏輯
沒有收錄到最終游戲的部分和一些瑣碎的細工我就略過不提

= 崗位系統(tǒng) =

在本文開始前,我想要先談?wù)勎覀冇脕碇概蒒PC移動位置的崗位系統(tǒng)
這個系統(tǒng)的核心邏輯不是我負責的,我寫的是使用這個系統(tǒng)的客戶端程式

崗位是可行走空間中的離散位置
大部分是用工具自動生成的,也有一些是設(shè)計師手動擺置的

基于不同需求,我們設(shè)計不同的崗位平分系統(tǒng)
(e.g. 潛行崗位、戰(zhàn)斗崗位)
然后我們選擇評分最高的崗位,指派NPC移動過去

= 伙伴跟隨 =

伙伴跟隨系統(tǒng)是繼承自The Last of Us

基本概念就是,伙伴在玩家周圍找個跟隨點
這些可能的跟隨點從玩家位置扇狀分開
并且要滿足以下的路徑線段淨空條件:
– 玩家到跟隨點
– 跟隨點到前方投射點
– 前方投設(shè)點到玩家

攀爬是Uncharted 4的新功能,這是The Last of Us 沒有的
為了與現(xiàn)有的跟隨系統(tǒng)整合,我利用攀爬崗位讓伙伴可以跟著玩家一起攀爬

這個功能比我想像中的還要難搞
單純根據(jù)玩家的攀爬狀態(tài)來切換伙伴的攀爬狀態(tài),結(jié)果不甚理想
只要玩家快速在攀爬與非攀爬的狀態(tài)之間切換,伙伴就會在兩個狀態(tài)間快速跳換
于是我加入了遲滯現(xiàn)象(hysteresis)
只有在玩家切換了攀爬狀態(tài),并且保持此狀態(tài)移動一定距離之后,伙伴才跟進
廣泛來說,遲滯現(xiàn)象是個解決行為跳換的好方法

= 伙伴帶領(lǐng) =

游戲中的某些特定場景,我們要讓伙伴帶領(lǐng)玩家前進
我把The Last of Us的帶領(lǐng)系統(tǒng)移植過來
設(shè)計師使用spline曲線在關(guān)卡中標記他們想讓伙伴帶領(lǐng)玩家的大致路線

如果有多個帶領(lǐng)路線,設(shè)計師則會用腳本語言切換主要的帶領(lǐng)路線

玩家的位置投射到spline曲線上,再往前延伸設(shè)定為帶領(lǐng)參考點
當帶領(lǐng)參考點超越被標記為等待點的spline曲線控制點,伙伴會前往下個等待點
如果玩家走回頭路
伙伴只有在帶領(lǐng)參考點離此次推進至最遠的等待點一段距離,才會回頭
這也是利用遲滯現(xiàn)象來避免行為跳換

我也把動態(tài)移動速度調(diào)整的功能整合進帶領(lǐng)系統(tǒng)
根據(jù)伙伴和玩家之間的距離,一些”速度平面”沿著spline曲線放置
伙伴有三種移動模式: 走路、跑步、衝刺
根據(jù)玩家撞到的速度平面,伙伴會選擇不同的移動模式
另外,伙伴的行進動畫速度也會基于玩家距離做微調(diào)
目的是避免切換移動模式的時后,有太突然的移動速度變化

= 伙伴掩體共用 =

在The Last of Us中,玩家和伙伴可以在各不離開掩體的狀況下重疊
我們稱這個為掩體共用

The Last of Us中的Joel伸手跨過Ellie和Tess按在掩體上
看起來很自然,因為伙伴的身型都比玩家嬌小
但是同樣的動作就不適合身型差不多的Nate、Sam、Sully、和Elena
而且Uncharted 4的游戲節(jié)奏較快
讓Nate伸手去按掩體只會讓動作流暢性打折扣
所以我們決定就單純讓伙伴靠緊掩體,玩家稍微繞彎避開伙伴

我用的邏輯很簡單
如果玩家位置往移動方向投射的點,落在伙伴掩體周圍的一個方框內(nèi)
伙伴就會取消目前的掩體行為,并且快速靠緊掩體

= 救星戰(zhàn)友 =

我負責多人模式的戰(zhàn)友(sidekicks),而救星戰(zhàn)友是其中最特別的
單人模式中的NPC,沒有一個人的行為跟救星戰(zhàn)友一樣
他們會復甦被擊倒的同伴,也會複製玩家的掩蔽行為

救星戰(zhàn)友會嘗試複製玩家的掩蔽行為,并且盡量待在離玩家很近的地方
所以當玩家被擊倒的時候,他們就可以迅速跑過來復甦
如果玩家有裝備救星戰(zhàn)友的復甦包額外功能
他們會在採取復甦行動之前,朝被擊倒的復甦目標丟復甦包
復甦包丟擲基本上就是延用手榴彈的拋物線淨空測試和擲彈動作
只是我把手榴彈換成復甦包而已

= 隱蔽草叢 =

在隱蔽草叢中蹲行也是Uncharted 4才有的新功能
要實作這個功能,我們需要某種能夠標記場景的手段
游戲邏輯才可以判斷玩家是否身處隱蔽草叢中
我們一開始是讓美術(shù)人員在Maya中標記背景模型的表面
但美術(shù)人員和設(shè)計師之間的溝通時間太長,很難頻繁改進關(guān)卡
于是我們決定用另外一種方法標記隱蔽草叢
我在場景編輯器中的nav mesh增加了隱密草叢的額外tag
讓設(shè)計師可以直接在編輯器中精準標記隱蔽草叢

有了這個額外的標記
我們也可以用這個資訊來為隱蔽崗位評分

= 感知 =

Uncharted 4沒有像The Last of Us有聆聽模式
所以我們必須要找另外一種方法,讓玩家有辦法得知附近的敵人威脅
好讓玩家不會在未知的敵對環(huán)境中產(chǎn)生迷失感

我利用敵人的感知資料,加入了威脅標示
當敵人開始注意(白色)、起疑(黃色)、和發(fā)現(xiàn)(橘色)玩家
這些標示會適時地提醒玩家
另外,我在威脅標示開始累積的同時播放背景雜音,以製造張力
當玩家被發(fā)現(xiàn)的時候,則播放大聲的提示音效
這些音效的安排和做用跟The Last of Us類似

= 調(diào)查 =

這是在我們送廠壓片前,我負責的最后一個功能
我平常在Naughty Dog是不參加正式會議的
不過在送廠壓片的前幾個月,我們每週至少開一次會
由Bruce Straley或Neil Druckmann主持,專注在游戲的AI部分
幾乎每次開完會之后,調(diào)查系統(tǒng)都有需要更動的地方
前前后后總共經(jīng)歷了好幾次大改

會讓敵人起疑的因素有兩種: 玩家和尸體
當敵人起疑了(起疑者),他會抓最近的同伴來一起調(diào)查
離起疑點較近的人會成為調(diào)查者,另外一個人則是看守者
起疑者可能會視調(diào)查者,也有可能是看守者
我們總共有兩組不同的對話,適用于兩種不同的情況
(“那邊有異狀,我去看看” vs “那邊有異狀,你去看看”)

為了讓雙人調(diào)查看起來更自然
我使用了時域錯位的技巧,讓兩人的行動和威脅標示時間點錯開
否則兩個人的行為完全同步,看起來非常機械式、很不自然

如果調(diào)查者發(fā)現(xiàn)了尸體,他會通知全部的同伴開始搜索玩家
尸體也會被暫時標示,以讓玩家知道敵人為什麼進入警戒

在某些難度下,短時間內(nèi)連續(xù)觸發(fā)調(diào)查,會讓敵人的感應(yīng)力變敏銳
他們會更容易發(fā)現(xiàn)玩家,即使玩家躲在隱蔽草叢中也一樣
慘烈模式下,敵人永遠處于敏銳狀態(tài)

= 對話動作 =

這也是我負責的最后幾個功能之一

對話動作系統(tǒng)負責操控角色,在對話的時候做出一些小動作
像是轉(zhuǎn)頭看其他人和肢體動作

之前在The Last of Us
開發(fā)人員花好幾個月的時間,把整個游戲所有的對話腳本手動加注上對話動作
我們可不想再做一次這種苦工
在這個開發(fā)階段,已經(jīng)有部分對話腳本被手動加注好對話動作了
我們需要一個泛用型系統(tǒng),可以幫沒有加注對話動作的腳本自動產(chǎn)生對話動作
而我就是負責製作這個對話動作系統(tǒng)
動畫師可以調(diào)整參數(shù),改變轉(zhuǎn)頭速度、轉(zhuǎn)頭角度、注視時間、反覆時間等

= 維持吉普車動量 =

開發(fā)初期遇到的問題之一,就是馬達加斯加的吉普車駕駛關(guān)卡
當玩家開車撞到牆或者敵人的載具,玩家的車就會旋轉(zhuǎn)失速以致脫離車隊而關(guān)卡失敗

我使用的解決方法是,當玩家的車撞到牆或者敵方載具的時候
短暫地限制吉普車的最高角速度和線性速度的方向變量
這個簡單的方法相當有效,從此玩家就比較不容易旋轉(zhuǎn)失速而導致關(guān)卡失敗了

= 載具死亡 =

可駕駛的載具是首次在Uncharted 4登場
在這之前,所有的載具都是NPC駕駛、沿著固定軌道行進
我負責載具死亡的部分

摧毀載具有幾種方式:
解決駕駛、開槍射車、開車撞飛敵方機車、開車撞敵方吉普車導致旋轉(zhuǎn)失速

基于不同的死法,載具死亡系統(tǒng)會選擇載具和乘客的死亡動畫來播放
死亡動畫會漸漸混入物理引擎控制的ragdoll系統(tǒng)
所以死亡動畫會不著痕跡地轉(zhuǎn)換成物理模擬的翻車

當玩家開吉普車撞飛敵方機車的時候
我使用機車在XZ平面上投影的bounding box和碰撞點
來判斷要使用四個撞飛死亡動畫中的哪一個

至于衝撞使得敵方吉普車旋轉(zhuǎn)失速
我是拿敵方吉普車與預設(shè)行進方向之間的旋轉(zhuǎn)量差來比較旋轉(zhuǎn)失速判定閾值

載具播放死亡動畫的時候,有機會穿透牆壁
我使用球體投射,從預設(shè)位置投射向載具實際位置
如果投射結(jié)果是與牆壁碰撞,則把載具稍微往牆壁的法向量移動
不一次完全修正誤差,是為了避免太過劇烈的位移

我另外實作了一種特別的載具死亡類型,叫做載具死亡提示
這些死亡提示是動畫師和設(shè)計師在場景中擺置好的客製化死亡動畫
每個死亡提示在載具行進軌道上都有個進入范圍
當一個載具在死亡提示進入范圍中死亡,則會開始播放死亡提示的特殊死亡動畫
之所以開發(fā)這功能,一開始是為了2015年E3展的超帥氣吉普車死亡動畫

= 混色用的貝爾矩陣 =

我們想要消除攝影機切入看穿物體的瑕疵,特別是游戲中的各種植物
于是我們決定要讓靠近攝影機的像素淡出
使用半透明像素并不是個好主意,因為非常消耗效能
我們使用的技巧,是所謂的混色(dithering)
https://en.wikipedia.org/wiki/Dither

使用混色技巧搭配貝爾矩陣(Bayer matrix)
利用一個預先決定的點陣模板來決定哪些像素可以捨棄而不渲染
https://en.wikipedia.org/wiki/Ordered_dithering

結(jié)果就是產(chǎn)生半透明的錯覺

一開始使用的貝爾矩陣是個8×8矩陣,取自上述的Wikipedia頁面
我認為這個矩陣太小,會造成不美觀的帶狀瑕疵
我想要使用16×16的貝爾矩陣,但是網(wǎng)路上都找不到相關(guān)資料
于是我試著用逆向工程找出8×8貝爾矩陣的遞迴特性
光用目測法,我想我應(yīng)該可以直接解出16×16貝爾矩陣
但是我想要讓過程更有趣一點
我寫了一個工具,可以生成二的任何次方大小的貝爾矩陣

換到16×16貝爾具陣之后,可以明顯看到帶狀瑕疵的改善

= 爆炸聲延遲 =

這個部份我其實沒有什麼大貢獻,但是我還是覺得值得一提

在2015年E3展示中,Nate和Sully同時接收到高塔傳過來的爆炸聲和爆炸畫面
這是不合理的,因為高塔距離非常遠,爆炸聲應(yīng)該會晚一點才被接收到
我在開展前幾週指出這點,美術(shù)團隊后來就在爆炸聲之前加上一小段延遲了

= 繁體中文在地化 =

直到送廠壓片前幾週我才開始在游戲中改用繁體中文字幕,而我找到了許多錯誤
大部分的錯誤都是英文直譯中文,而變成四不像的用語
我認為我沒有足夠的時間可以單槍匹馬全破一次游戲又同時抓出翻譯錯誤
于是我請幾個QA部門的人分章節(jié)、用繁體中文模式游玩
然后我陸續(xù)瀏覽他們的游玩錄製影片
結(jié)果這個方法相當有效率
我成功地把我找到的翻譯錯誤建檔,而在地化小組也有足夠的時間修正翻譯

= 結(jié)束 =

以上就是我對Uncharted 4開發(fā)上值得一提的貢獻
希望大家讀得愉快

相關(guān)閱讀:神秘海域4不按劇本來獎杯入手條件http://0574fzl.cn/tv/99978.html神秘海域4僚機員獎杯獲得方法http://0574fzl.cn/tv/99976.html神秘海域4幀數(shù) 神秘海域4可以聯(lián)機嗎http://0574fzl.cn/tv/99906.htmlPS4神秘海域4漂亮上相獎杯獲得方法http://0574fzl.cn/tv/99896.html神秘海域4限定主機開箱圖賞 神海4同捆主機http://0574fzl.cn/tv/99888.html

網(wǎng)友點評
發(fā)表評論

最新新聞 賽博朋克2077PS4能玩嗎 賽博朋克2077PS4和P原神靖世九柱怎么完成 隱藏任務(wù)靖世九柱完成動物森友會魚類價格表 集合啦動物森友會全魚動物森友會魚類圖鑒大全 集合啦動物森友會全動物森友會蟲子捕捉時間地點表 集合啦動物森動物森友會蟲子價格表 集合啦動物森友會全昆動物森友會蟲子圖鑒大全 集合啦動物森友會全動物森友會生物捕捉時間地點表 集合啦動物森動物森友會生物圖鑒大全 集合啦動物森友會全NS動物之森鐵礦石怎么獲得 NS集合啦動物森友

熱門新聞 Switch動物之森攻略大全 switch集合啦動物之精靈寶可夢日月精靈修改方法 精靈寶可夢日月最后生還者2正式公布最終幻想15中文全劇情流程解說視頻精靈寶可夢日月全技能機入手方法PSN港服會免游戲2016年11月正式公開PS4 PRO正式確定 發(fā)售日正式公布PSN港服會免游戲2016年8月正式公開PSN港服會免游戲2016年7月正式公開XBOXONE天蝎正式公布 XBOXONE升級版主機正式

最新推薦游戲 PS3亞爾斯蘭戰(zhàn)記X無雙
大。15.63G / 語言:簡體《亞爾斯蘭戰(zhàn)記X無雙》日版,本座是由光榮旗下無雙系列制作組Omega Force開發(fā)的動作游戲,改編自《銀河英雄傳說》小說家田中芳樹原著、自1986年連載至今的架空歷史小說《亞爾斯蘭戰(zhàn)記》,采用《鋼之鍊金術(shù)師》漫畫家荒川弘執(zhí)筆之同名漫畫改編電視動畫版設(shè)定為基礎(chǔ),融合架空歷史劇情與大規(guī)模戰(zhàn)場戰(zhàn)斗。
XBOX360斬妖除魔地獄詛咒
大。1.95G / 語言:英文Nordic Games宣布要為PC玩家?guī)鞵ainKiller新作《斬妖除魔:地獄詛咒(Painkiller:Hell & Damnation)》。該作由波蘭游戲工作室Gliwice/Katowice負責開發(fā),首次將該系列升級至虛幻3引擎。
XBOX360猴子島的秘密2特別版
大小:957M / 語言:英文《猴子島的秘密2特別版》是Lucasfilm旗下的經(jīng)典解謎游戲《Monkey Island》系列的最新版,在新版中不僅僅是在畫面上重新進行了再次制作,連音樂、旁白都是全新的。可以說這是一款全新的《Monkey Island》也不為過。
XBOX360山姆和麥克斯拯救世界
大。460M / 語言:英文《山姆和麥克斯:拯救世界》是一系列逗趣得獎作品中的第一彈,這系列作品中每一季共有6集的內(nèi)容。在游戲中主角Sam以及他那活蹦亂跳的兔子伙伴Max這次遇到了棘手的謎題,他們身邊的人忽然全都受到了催眠。不但是童星們與熱門脫口秀的主持人個個精神不濟,就連美國總統(tǒng)都中了招!到底 Sam與Max能否在整個世界陷入昏迷之前找出整件陰謀的幕后元兇呢?
XBOX360卡坦島
大小:25.6M / 語言:英文卡坦島是一款比較不錯的思考策略游戲。游戲以大航海時代時航海家發(fā)現(xiàn)了一個資源豐富的島嶼為背景。該島嶼被喚作卡坦島?ㄌ箥u由平原、草原、森林、山丘及山脈組成。

精彩美圖 GTS1080P高清壁紙公布 快來舔屏吧!饑荒巨人的統(tǒng)治精美壁紙一覽黑暗之魂3壁紙及藝術(shù)概念圖欣賞飆酷車神狂野之旅無水印高清壁紙