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

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

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

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

原文正文

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

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

= 崗位系統(tǒng) =

在本文開(kāi)始前,我想要先談?wù)勎覀冇脕?lái)指派NPC移動(dòng)位置的崗位系統(tǒng)
這個(gè)系統(tǒng)的核心邏輯不是我負(fù)責(zé)的,我寫(xiě)的是使用這個(gè)系統(tǒng)的客戶端程式

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

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

= 伙伴跟隨 =

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

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

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

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

= 伙伴帶領(lǐng) =

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

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

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

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

= 伙伴掩體共用 =

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

The Last of Us中的Joel伸手跨過(guò)Ellie和Tess按在掩體上
看起來(lái)很自然,因?yàn)榛锇榈纳硇投急韧婕覌尚?br/>但是同樣的動(dòng)作就不適合身型差不多的Nate、Sam、Sully、和Elena
而且Uncharted 4的游戲節(jié)奏較快
讓Nate伸手去按掩體只會(huì)讓動(dòng)作流暢性打折扣
所以我們決定就單純讓伙伴靠緊掩體,玩家稍微繞彎避開(kāi)伙伴

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

= 救星戰(zhàn)友 =

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

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

= 隱蔽草叢 =

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

有了這個(gè)額外的標(biāo)記
我們也可以用這個(gè)資訊來(lái)為隱蔽崗位評(píng)分

= 感知 =

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

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

= 調(diào)查 =

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

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

為了讓雙人調(diào)查看起來(lái)更自然
我使用了時(shí)域錯(cuò)位的技巧,讓兩人的行動(dòng)和威脅標(biāo)示時(shí)間點(diǎn)錯(cuò)開(kāi)
否則兩個(gè)人的行為完全同步,看起來(lái)非常機(jī)械式、很不自然

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

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

= 對(duì)話動(dòng)作 =

這也是我負(fù)責(zé)的最后幾個(gè)功能之一

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

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

= 維持吉普車動(dòng)量 =

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

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

= 載具死亡 =

可駕駛的載具是首次在Uncharted 4登場(chǎng)
在這之前,所有的載具都是NPC駕駛、沿著固定軌道行進(jìn)
我負(fù)責(zé)載具死亡的部分

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

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

當(dāng)玩家開(kāi)吉普車撞飛敵方機(jī)車的時(shí)候
我使用機(jī)車在XZ平面上投影的bounding box和碰撞點(diǎn)
來(lái)判斷要使用四個(gè)撞飛死亡動(dòng)畫(huà)中的哪一個(gè)

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

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

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

= 混色用的貝爾矩陣 =

我們想要消除攝影機(jī)切入看穿物體的瑕疵,特別是游戲中的各種植物
于是我們決定要讓靠近攝影機(jī)的像素淡出
使用半透明像素并不是個(gè)好主意,因?yàn)榉浅O男?br/>我們使用的技巧,是所謂的混色(dithering)
https://en.wikipedia.org/wiki/Dither

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

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

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

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

= 爆炸聲延遲 =

這個(gè)部份我其實(shí)沒(méi)有什麼大貢獻(xiàn),但是我還是覺(jué)得值得一提

在2015年E3展示中,Nate和Sully同時(shí)接收到高塔傳過(guò)來(lái)的爆炸聲和爆炸畫(huà)面
這是不合理的,因?yàn)楦咚嚯x非常遠(yuǎn),爆炸聲應(yīng)該會(huì)晚一點(diǎn)才被接收到
我在開(kāi)展前幾週指出這點(diǎn),美術(shù)團(tuán)隊(duì)后來(lái)就在爆炸聲之前加上一小段延遲了

= 繁體中文在地化 =

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

= 結(jié)束 =

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

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

網(wǎng)友點(diǎn)評(píng)
發(fā)表評(píng)論

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

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

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

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