2016年8月2日 星期二

50 common game camera mistakes -- and how to fix them by John Nesky : 50個常見遊戲攝影機的錯誤 -- 並如何改善by John Nesky _part 1


"Cameras are most noticeable when they fail."

- Thatgamecompany engineer John Nesky.
What's the last game you played that had a really great camera system? For that matter, what does it even mean to design a "great" camera?
你最近玩的遊戲,有很棒的攝影機系統嗎? 關於這問題,那什麼才算是設計優良的攝影機?
At GDC 2014, Thatgamecompany "Feel Engineer" John Nesky spoke passionately about the importance of good camera design in games, and what he learned about how to make a great camera in his time working on Journey, where he had to figure it out as he went along.
在GDC2014,Thatgamecompany(公司名) "感受工程師"John Nesky 熱情演說有關,在遊戲中,攝影機設計的重要性。以及他從Journey的工作中,學到如何製作一個出色的攝影機,這邊他將這些經驗歸納出來。
He went on to take the audience on a tour of all the poor game camera design decisions he and other designers have made in recent years, offering thoughtful advice on how to sidestep or solve each of them.
It was a heartfelt, insightful talk about a topic that's too rarely talked about in detail, and if you missed it in person you can now watch Nesky's whole talk for free over on the official GDC YouTube channel.

這是種感受,精闢講解這很少深度討論的主題,如果你錯過,可以在watch Nesky's whole talk for free over on the official GDC YouTube channel.這看到。

PPT Below :

Camera Divert Attention 攝影機轉移注意力
  • The purpose of camera is to focus attention on something else. 
  • They're most noticeable when they fail.
  • So Let's talk about failure
Journey  風之旅人
  •  I'm a "Feel Engineer" at thatgamecompany.

  • Given responsibility of Journey's camera system.
  • Had to have a third - person camera.
  • Had to figure it out as I went along.
  • Made lots of mistakes.

Beyond Cinematography 在戲劇攝影之前的準備

  • Players need to make spatial judgments. 玩家需要空間判斷。(攝影機要判斷玩家的狀況)
  • Can't predict situations, so the software choose angles instead of designers. 不能預測的情況,讓程式代替設計者,去選擇角度。
  • Learn and formalize cinematography to teach it to the software. That's called "gamatography"!學習並規格化戲劇攝影,並寫入軟體。
Camera Distance 攝影機距離
  • Fixed - angle third person 左一
          固定角度第3人稱 (攝影機不會轉)
  • Dynamic third-person 中間
          動態第三人稱  (會轉)
  • First-person 右一
  •           第一人稱 
#地雷1 : Using a dynamic camera when another approach would work. 其他條件達成,就使用動態攝影機
  • No shame in focuing on other features. 沒有甚麼需要遮醜的項目
  • Fixed-angle cameras are great! 固定視角比較好 ,作者認為動態攝影機沒有讓遊戲自動變好,反而變得更糟。左邊馬力歐就是悲劇 右邊是固定攝影機better,推薦使用比較簡單的攝影機風格,第一人稱或是固定視角。
  • Given limited resources, cameras are low priority. 限制條件,攝影機較後處理。

  • #地雷2 : Designing levels and camera behaviors that don't match 設計關卡和攝影機行為不相符合
  • Camera work with the level design to aid navigation.攝影機與關卡設計合作,協助引導方向。
  • Reveal information that's relevant to player decisions.顯示訊息,有關玩家所做的決定。
  • The camera design should be prepared to react to frequently encountered situations.
  • 攝影機設計應該事前預備,反應經常遇到的情況。(攝影機預先準備好,讓玩家準備)
  • #地雷3 : Using global coordinates or quaternions to persist the camera state. 使用世界座標或4軸固定攝影機位置
  • unlike first-person cameras, never pivot in place 非第一人稱攝影機,絕不要放在同一地方轉動。
  • Represent camera as an orbit around the avatar .將攝影機視為軌道,圍繞著角色
  • Players think in Euler angles, not quaternions。玩家認為攝影機是歐拉角,而非四元數
  • still need to be aware of gimbal lock. 但還是需要注意,方向節被鎖定。
  • A camera is 7 numbers : 攝影機有7項要點
  1. yaw, pitch, and optionally roll.
  2. distance from pivot. 遠離支點
  3. lateral and vertical offsets for framing. 橫向與縱向水平移動畫面
  4. field-of-view.視野
  • #地雷4: Using a default camera distance that's likely to break line-of-sight. 使用預設攝影機距離,可能會中斷視覺動線。
  • The smaller the danger zone, the easier it is to avoid.  過小的區域最危險,容易發生!
  • Line-of-sight must be small enough to fit through levels.視覺動線的最短距離,要能通過整個關卡,盡量讓你的視覺乾淨。
  • Looming obstacles can intersect from the side, from behind, from ahead, or from below.迫在眉睫的障礙物,攝影機可以從旁邊,從後面,從前面,或下面。 

  • #地雷5:Allowing obstacles to break line-of-sight from the side. 允許障礙物從旁邊切斷視覺動線。
  • Detect obstacles earlier with "whisker "raycasts. 用Whisker raycasts提早偵測障礙物,就可以繞過。
  • Reuse results from the previous frame to reduce load.重複利用先前的結果,減少讀寫。
  • Swing away from obstacles to avoid them.旋繞離開障礙物,達到避開他們。
  • #地雷6:Pushing away from an obstacle while the player is trying to swing towards it.玩家試著靠近障礙物,但卻被推離障礙物。
  • Never ignore player intent.不要忽視玩家意圖,(玩家想看甚麼,就給他們看,但我們讓攝影機比較接近角色!)
  • When avoidance and intent conflict, intent wins. 迴避與意圖有衝突時,意圖會勝出。

  • #地雷7:Letting the player push the camera inside an obstacle. 玩家把攝影機推到障礙物裡面。
  • Line-of-sight is forced to swing towards an obstacle? 視覺動線被強迫旋入障礙物?
  • Only one way to get past it : shrink the line-of-sight.有一個方式可以避開:縮短視覺動線
  • Whisker indicate how much space is available.可以用Whisker測出有多少空間可用。

  • #地雷8:Letting independent forces compete to push the camera.單獨外力抗衡推動攝影機
  • The camera is controlled by many rules.由許多規則控制攝影機。
  • But there are only 7 axes to adjust.只有7個軸項可以調整。
  • Rules often push in opposite directions.規則總是反方向推動
  • Organize forces by degree-of-freedom,prioritizing forces for each axis.藉由自由角度整合力量,對每個軸向優先的力量。(建議從7 axes和degree-of-freedom去調整攝影機)

  • #地雷9:Keeping narrow columns from breaking line-of-sight. 保持狹窄柱子,避開中斷視覺動線
  • obsessively preserving line-of-sight results in doing gymnastics to keep a twig from passing in front of avatar. 強迫保留視覺動線結果,如做體操,保持平衡木,遠離角色。
  • Tag obstacles that are allowed to break line-of-sight.標記允許中斷視覺動線的障礙物。
  • Whisker ignore tagged obstacles.Whisker要忽略這些被標記的障礙物。

  • #地雷10:Letting the camera intersect narrow columns. 攝影機與狹窄的柱子交叉
  • Breaking line-of-sight may be okay.中斷視覺動態或許還行
  • Smashing the camera isn't.撞向攝影機就不妥
  • Try simple sphere collision detection for camera. 攝影機試著以球體碰撞偵測。

  • #地雷11:Interpreting a hill as a wall to be avoided. 避免把山丘解讀為牆
  • Hill also count as false positive. 山丘也算是誤判
  • Rise above hills instead of swinging away.以上升越過山丘,替代繞過它。
  • In Journey,whisker raycasts skip sand dunes.在風之旅人,使用whisker raycasts 避開沙丘
  • Try checking the normal angle where the whisker hits. 試著檢查Whisker碰撞處的法線角度。

  • #地雷12:Swinging sideways when occluders come from behind.來自後方的阻擋,繞到側邊。
  • Avatar collision protects line-of-sight from the front. Avatar碰撞保護從前方的視覺動線
  • But we need a new rule to catch obstacles from the back before whiskers catch them.在whiskers碰到障礙物之前,我們需要一個新規則從後方抓到它們。
  • Resolve the occlusion by pulling camera forward.攝影機推前進,解決阻擋。(可以用swing 或提高攝影機)

  • #地雷13:Letting the camera's near-clipping-plane intersect the avatar. 讓攝影機的near-clipping-plane切到角色(在畫面留下一個大洞)
  • In emergencies, the camera may need to squeeze between avatars and walls.在緊急狀況,攝影機可能會在角色和牆壁被擠壓。
  • Can't get closer than near-clipping-plane distance. 不要比 near-clipping-plane 的距離還近。
  • Need a gap between avatar model and collision radius for quaranteed camera space 角色模型和碰撞範圍之間需要一個間距,確保攝影機的空間
  • Alternatively, fade out the avatar.不然就是,淡出角色。

  • #地雷14 : Using the same camera distance for all angles.(對所有角度,皆使用同樣攝影機距離)

  • Worm's-eye view leaves very little camera space. 視角所留的攝影機空間非常小。
  • Use a smooth curve to gracefully transition into a closeup.使用平順的曲線,優雅的轉變成特寫。
  • Bird's eye view reduces visibility, hiding horizon.鳥瞰視角,減少可看範圍,隱藏地平線。
  • Reduce claustrophobia by pulling back slightly.當角色往下看,將攝影機往後微拉,減少幽閉恐懼症發作。

  • #地雷15: Using the same field-of-view for worm's eye angles and standard angles.在仰視與標準角度使用同樣視距。
  • The sky is really, really big.天空要非常非常大。
  • Human take it all in with peripheral vision.人類會用周邊視力看完全部
  • Imitate peripheral vision by expanding field-of-view. 藉由視距,模仿周邊視力。(想像自己就是角色,並且製造出當時所看到的範圍。)

  • #地雷16: Shifting pitch, distance, and field-of-view independently.獨自轉換間距,距離和視距。
  •  It feels laggy when linked variables must play catch-up.連結變數必須同時進行,不然會感覺延遲。
  • Distance and field-of-view both affect avatar screen size. Moving them independently make avatar appear to change size. Moving them together can preserve size.                                    距離與視距兩者會影響玩家畫面尺寸。如果單獨移動,玩家尺寸會被改變。同時移動,才能保持尺寸。
  • Distance and field-of-view should be instantly derived from pitch, shifting together like gears.距離與視距應立刻衍生出最高點,如同齒輪換檔,同時進行。
  • Additional rules can be applied as offsets to the derived base values.額外規則可以利用偏移去衍生基本數值。