《Physics in Games: A New Gameplay Frontier》:遊戲中的物理學,遊戲性的新疆界

armadillo-run-screenshot
(圖片來源:www.codinghorror.com)

原文出處:Physics in Games: A New Gameplay Frontier

截至目前為止,在猴子靈藥中從未探討過與遊戲物理學相關的課題,主要原因是我以前從未接觸過任何物理引擎或物理面向的應用程式,所以相當缺乏對於遊戲物理學的概念與知識。讀完這篇文章以後,我總算是開了眼界,對物理學有了一番新的體悟,也開始能夠想像如何在遊戲中的運用各種物理學的觀念。所以我希望藉由分享原作者所寫的這篇文章,讓大家都能認識並且開始思考遊戲物理學的設計應用。

如許多老玩家所知,在遊戲中使用物理學,並不是什麼新鮮的事情。事實上在許多年代久遠的老遊戲,譬如《Lunar Lander》《Marble Madness》中,已經充滿許多與「重力」這項物理特性互動的遊戲性。隨著時代的推移演進,今日我們所擁有的嶄新技術方案,使遊戲開發者能夠將更進階而且更新穎的物理學特性運用於遊戲之中。

物理學處理程序對電腦運算能力的要求非常高,所幸拜核心數目越來越多的中央處理器,以及專門的硬體加速卡誕生所賜,身為遊戲開發者,現在我們可以真正深入考量如何在遊戲中緊密結合物理學的使用。而真正的問題所在,是我們該利用這些新的資源來做些什麼事情?直到目前為止,遊戲中所使用的物理學大多侷限於裝飾性的效果,雖然這些效果能帶給玩家很重要的沈浸感受,但卻無法真正改變現有的遊戲性。

當我們瞭解物理學在遊戲性中各種應用的可能性以後,我們又該如何提供給玩家與物理學相關的全新體驗?本文的目的就是為了回答這些問題,同時作者也分享了他從設計多人連線地圖模組 CTF-Tornado 中所學習到的經驗。(CTF-Tornado 是在《Unreal Tournament 3》中,被設計來充分發揮 Ageia 物理加速卡優勢的地圖。)

首先讓我們從一些物理學的基礎定義開始吧。物理學的範疇並非僅侷限於模擬重力或者物體與物體間的碰撞行為,實際上物理學也包含了以下這些應用:

  • 流體力學,包括液態與氣態。
  • 扭曲形變,包括柔軟物體或者剛硬物體。
  • 摩擦力與黏力的行為模擬。
  • 改變物質的狀態,例如水由液態變成固態的過程。
  • 材質的破壞。

由此可知,物理學涵蓋了相當廣泛的內容,而其中有些理論仍未實際被應用於遊戲之中。因此我們可以預期,物理學的發展潛力非常龐大,但遊戲開發者所面臨的各項議題也十分具有挑戰性。隨著開發者在遊戲中使用物理學而產生出來的難題,主要可以分為以下四個項目:

  • 對電腦運算能力的需求。
  • 更多物理學以外的處理程序。
  • 多人連線遊戲中的挑戰。
  • 在既存劇本與物理學混沌本質間的不相容性。

讓我們更進一步仔細地檢視每一個項目。

對電腦運算能力的需求

首先必須具備的認知是,處理物理學需要龐大的運算能力。由此可知,儘管市場上已經有像 Havok 這樣非常優秀的物理引擎存在好幾年了,但物理學仍沒有被廣泛應用於遊戲中,並不是個令人意外的結果。

在目前的遊戲作品中,只有非常少量的 CPU 能力,約佔單個核心的 10% 至 25% 左右,是分配給物理學處理程序使用的運算資源;但就現實面來說,處理物理學的邏輯需要相當可觀的運算資源。讓我們來看個最簡單的碰撞處理範例:

每一個動態物件的移動行為,都是被許多參數(移動方向、速度以及多軸向旋轉等)所控制,必須要在每一張畫面顯示之前被重新計算出來。而除了動態物體本身的參數之外,這些動態物件之間的互動行為也必須被計算出來。假設有 10 個動態物件需要處理,就需要進行 55 次的檢測處理程序,20 個動態物件需要 210 次檢測程序,而 30 個動態物件則需要 465 次檢測程序!

我們有兩個技術方案可以解決這個問題:

  • 多核心 CPU 世代的來臨,將帶給我們非常大量的運算能力。雖然雙核心 CPU 仍不足以產生顯著的影響力,不過從四核心開始,將會開始帶來物理學應用所需要的運算能力。但是四核心的 CPU 是否真的足夠?我們無法確定。因為遊戲引擎與繪圖引擎對於硬體能力的需求,同樣也在不斷地增長當中。
  • 第二個方法是使用專門的物理加速卡,例如由 Ageia 公司製造的產品。(註:Ageia 已於 2008 年 2 月被 NVIDIA 公司收購)
physx-by-nvidia
(圖片來源:www.shbear.com)

更多物理學以外的處理程序

使用物理學使得遊戲關卡中所需的路徑搜尋演算法更加複雜。事實上,這個演算法必須要能夠適應不斷發生變化的環境:如果一個巨大的石塊掉下來擋在路中間,遊戲中的人工智慧必須將這項突如其來的環境變動納入邏輯思考程序,才有辦法使由 AI 控制的角色繞過這些物件或者使用它來當作掩蔽物。

另外,場景中的光源和影子也必須以動態的形式製作。因為如果物件會移動,或者牆壁會被摧毀,我們就無法使用預先計算完成的光影效果,因此動態光源的使用會變成遊戲的基本需求。或許我們可以選擇採用對比度較低的場景以避免光影失真的問題,但是地圖場景的繪圖品質也會因此而犧牲。

多人連線遊戲中的挑戰

從遊戲性的觀點來看,在多人遊戲中使用物理學,允許玩家們能夠動態變更遊戲場景的拓樸結構,將會帶來非常有意思的遊戲樂趣。然而與單人遊戲相比,多人連線遊戲會因為網路頻寬及延遲的因素產生限制。所以在多人連線遊戲中使用物理學的難題,就是在於必須同步化所有會對遊戲性產生直接影響的事件。

在大多數遊戲中,通常只會對玩家的位置以及它們的投射物體進行同步化程序。但如果物理學會對遊戲性產生影響的話,代表所有的物理事件,例如具物理屬性的物件、可能遮蔽玩家視線的粒子群,或者是損害區域等等都應該要被同步化。其中有些程式設計面向的技巧,可以用來解決部分網路延遲所產生的問題。因此,如果要在多人連線遊戲中加入物理學的功能,設計者就必須打從一開始就將這些限制因素納入考量,並且約束進行同步化程序的物件數量最大值。

在既存劇本與物理學混沌本質間的不相容性

所有遊戲作品的目標,都是為了提供給玩家最佳的感知娛樂體驗。但由於遊戲開發經費有限,多數遊戲提供的都是線性式的遊戲關卡設計,確保玩家在滿足某種條件後,會在某個特定的時間地點,看見某些特殊效果、過場動畫以及按腳本進行的戰鬥場面。線性化的關卡設計使遊戲開發者能夠良好地控制遊戲的節奏,能夠充分避免玩家隨處閒晃而開始覺得無趣。

在這樣的前提下,使用物理學可能會發生許多關卡設計者原先所沒有預測到的情形,這也就是所謂的「應變式遊戲性」(emergent gameplay)。這種類型的遊戲性,通常很受到玩家們的歡迎與喜愛,但如果玩家利用物理學的功能來改變關卡中的拓樸結構,藉此阻擋對手的移動路徑,也可能會因此擾亂了 AI 的運作程序,甚至使得原先安排好的過關道具消失不見等等,各種物理學的元素都會增加遊戲設計層面的複雜度與困難度

上述這些狀況同樣可能發生於多人連線的遊戲關卡中。因此,當作者在 CTF-Tornado 地圖中,設計了一個會阻礙玩家去路的「龍捲風」物體時,他們必須非常小心地考慮各種可能產生的問題。因為龍捲風的出現,不僅會破壞場景上的某些物體,也會直接妨礙玩家的行進路線,但同時也可以孕育出許多嶄新的戰略。為此他們決定增加地圖中的通道數量,並且讓玩家能夠使用 Impact Hammer 武器來擺脫移動路線中的阻礙物。

物理學除了可以提供主要的遊戲性機制以外,實際上最初是被拿來做為裝飾性的用途,像是遊戲物體爆裂飛散,或是遊戲角色受到衝擊力所做出的動作回饋反應等等。即使到了今日,仍然少有遊戲使用物理學來增進它們的遊戲性。因為大眾市場裡的一般遊戲,例如動作射擊類型的遊戲,對於電腦運算能力的需求已經非常高,所以如果在這些遊戲中使用物理學,將會對遊戲其他面向,譬如繪圖成像上的表現,造成強烈的衝擊。

當我們克服了上述四項難題之後,就可以大膽地說:「不論是哪一種類型的遊戲,現在都能夠更密集而且更深入地使用物理學了!」但問題是,我們該為了什麼目的使用物理學?大致上可以分成四類應用:

  • 給予玩家新的方法處理他所面臨的挑戰。
  • 創造機動式的遊戲環境。
  • 發展強而有力的學習機制。
  • 允許玩家建造自己的工具。

讓我們深入檢視這些應用項目。

給予玩家新的方法處理他所面臨的挑戰

對多數遊戲來說,遊戲性不外乎有兩項主要的出發點:第一,提供玩家一項需要克服的「挑戰」,像是擊倒一群敵人或通過關卡;第二,給予玩家一些「工具」,例如武器、動作或場景元素等,讓他們有機會獲得成功。而玩家玩遊戲的目的,就是學習如何精通這些工具,並且明智地使用它們來克服面前的挑戰。

如果從這個觀點來看,任何由遊戲設計者提供給玩家的新工具,都應該要使他們能夠達成這個目標。對物理學來說也是相同的道理,如果物理學無法提供新的方法讓玩家克服挑戰,那麼它將會在遊戲性的層面中完全失去意義。例如以動作類型的遊戲來說,主要的挑戰要素在於「戰鬥」以及「移動」。而物理學的應用,應該要提供給玩家新的工具,讓他們能夠達到以下這些目標:

  • 削弱或消滅對手。
  • 保護自己。
  • 開啟或關閉通道。
  • 偵測對手。
  • 閃避對手。

一旦瞭解玩家的目的之後,立即就可以想出幾個可於遊戲中應用物理學的實例:

  • 如果可以破壞場景中的元素,將使得玩家能夠佔據有利位置接近對手,建造掩蔽物以獲得保護,或是開啟新的通道與關閉現存的通路。
  • 如果能夠運用流體力學,無論是液態或氣態的形式,都能夠提供全新的遊戲廣度。它們可以使玩家點燃火焰,或者讓風把火焰吹到正確的方向。而由玩家的行動所產生出來的煙霧,也可以削弱對手的視線,因而產生出許多全新的戰略性機會。

創造機動式的遊戲環境

現今多數遊戲的遊戲關卡都是全然靜態的形式,真正賦予遊戲關卡生命力的是其中的敵人對手。假設我們能夠使「遊戲環境」變成一位對手,或至少提供某些變動的狀態,是不是能夠讓遊戲變得更加多樣化而充滿驚喜?物理學能夠允許遊戲環境發生變動,以及隨之而來的各種影響效果,像是物件掉落、失去平衡、根據坡度來決定物體是否容易移動等等。其他譬如火災、地震、潮汐波浪、炸彈爆炸、海嘯火者是重力改變等等,也都是遊戲開發者可以設想的應用情境。

事實上,這就是作者的團隊在 CTF-Tornado 地圖裡所做的事情。其中的「龍捲風」就像是第三組團隊,藉由阻擋或者開啟數個可變動的通路,龍捲風得以動態改變關卡地圖的狀態,也可能因為被撕裂的牆壁與屋頂而使防守態勢產生變化,甚至還能夠使玩家發射的子彈偏離原本的軌跡。

diablo3-havok-physics
(圖片來源:roleplayingpcgames.info)

發展強而有力的學習機制

遊戲本身就是一種學習過程。在動作射擊類型的遊戲中,藉由探索遊戲環境以及試驗各種不同的武器效果,我們學會如何在適當的時機選擇使用最合適的戰鬥方式。

物理學特別適合用於這種自學式的機制中,因為我們都知道它在真實世界中是如何地運作。我們出自本能地知道萬有引力與流體力學會影響潑灑出來的水,所以只要提供給玩家們仰賴物理學的遊戲機制,將能夠使他們學會如何找出複雜問題的答案。

允許玩家建造自己的工具

物理學的出現,使得扭曲破壞遊戲中的物件,例如裝甲、管線或橫樑變得可行。我們可以想像,如果玩家能夠依照自己的需求形塑出自己的武器、謎題的解答或者通過關卡的途徑,例如藉由扭曲某些金屬片,玩家可以建造出水渠或者球的通道等等,或許遊戲也可以變得更加有趣而多元化。

這種類型的物理學應用項目,或許只能夠運用在某些特別的遊戲,像是解謎類型的遊戲或者生存類型的遊戲中,而且操作介面也會有許多限制,但是遊戲潛在可能發展出來的樂趣非常龐大。如果可以讓玩家使用具有物理性質的磚瓦材料來建造東西,將能夠使玩家們建造出完全獨一無二的遊戲環境。

雖然在本篇文章中提到的某些想法,目前可能還沒有辦法達成,但是隨著可預期的科技發展與工具發明,未來將會賦予遊戲開發者全新的能力。從今以後,物理學不只可以運用在裝飾性的效果上,更能夠用來增進核心的遊戲性機制。而對於遊戲設計者與關卡設計者而言,也必須利用這些新技術帶給玩家更多新鮮有趣的娛樂體驗。物理學,使一切不可能變成可能。

自從 Ageia 被 NVIDIA 收購以後,「物理加速卡」就從消費市場上消失無蹤,改由效能突飛猛進的繪圖顯示卡提供物理引擎的硬體加速功能。當 ATI、NVIDIA 甚至 Intel 的顯示卡與顯示晶片,將物理引擎的硬體加速功能推向普羅大眾,成為每台電腦中的標準配備時,不論你是美術設計者、企畫設計者或程式設計者,我們都將會擁有全新的力量以及隨之而來的艱鉅挑戰。

以我在最近幾個月內玩過的幾款遊戲來說,我認為將物理學運用在主要的遊戲性機制上,並且得出十分出色成果的遊戲,包括之前提過《World of Goo》、用蠟筆畫出謎題解答的《Crayon Physics Deluxe》,以及使用 Flash 製作的物理解謎遊戲《Fantastic Contraption》。從這些遊戲中,讓我們見識到即使是以 2D 畫面形式呈現的遊戲,同樣能夠充分應用各種物理學的理論知識,而且遊戲性也完全不會輸給 3D 形式的遊戲。

前一陣子如果各位有注意《Diablo 3》的展示影片的話,應該不難發現,物理引擎的功能將會在這款萬眾矚目的遊戲中,扮演舉足輕重的遊戲性機制。就讓我們一起思考也一起期待,物理學在遊戲中的應用與發展吧!除了上面提到的這幾款遊戲以外,你有玩過什麼令你印象深刻的物理學遊戲嗎?或者是曾經見過將物理學特性運用的很出色的實例?非常歡迎各位一起提出來討論唷~ :D

33 Replies to “《Physics in Games: A New Gameplay Frontier》:遊戲中的物理學,遊戲性的新疆界”

  1. 總覺得文章作者想談的是「真實感」而非物理學,我覺得遊戲就是因為簡化真實世界複雜煩瑣的法則才好玩,一味擬真增加複雜度不會讓遊戲變得好玩
    文章裡說少有遊戲模擬真實世界是因為對電腦運算能力需求很高,其實我覺得是因為這樣做沒什麼用
    仔細看也可發現作者舉的題材侷限在FPS遊戲,可看出作者思路的狹隘

    既然提到「物理學」這三個字,還是舉幾個運用物理學的遊戲吧
    銀河瑪琍歐:天馬行空,不侷限在地面上的重力系統,例如站在一個星球上時,奮力一跳可以跳到鄰近的星球去
    任天堂明星大亂鬥:玩法是把對手打飛,而不是傳統的削減對手體力,這就要運用擊飛速率、方向、摩擦力等概念。不像格鬥遊戲往往有一些連段公式,因為每次對手飛的速度都不一樣,要隨機應變
    東方Project和一些模仿之作:安排子彈各自的軌跡讓它們展現整體的美感,除了運動學以外還有流體力學裡流場的概念(雖然作者製作時應該沒想到那麼多)
    這三個雖然運用物理學特性,卻都是非現實風格,擬真和運用物理學是兩回事

  2. 我的理解重點放在『發展強而有力的學習機制』

    要設計一個複雜的遊戲系統,第一個面臨的不是技術上的困難,而是怎麼『教育』玩家學會你的遊戲系統。又不致於在學習的過程中將熱情磨耗殆盡。

    物理系統可以讓玩家將現實中的經驗類比到遊戲中,並同時提供了豐富的元素供玩家探索。這是任何一種新類型遊戲都缺乏的優勢。

  3. @Percy:
    哈哈哈,我還是第一次看到這個影片,真是太驚人也太有趣啦! XD

    謝謝你提供的連結,我都忘了《Crysis》系列也是一個將物理學運用得非常出色的遊戲實例。

    @Hua:
    你是指《The Matrix Online》嗎? @_@

    我沒有玩過這個作品,不知道遊戲中有應用什麼特別的物理效果?

    @Shark:
    我也認為「真實感」未必能轉化成有趣的遊戲機制或為玩家帶來更多樂趣。如你所舉的《銀河瑪琍歐》和《任天堂明星大亂鬥》,都是將一些簡單的物理特性運用得很好的例子。

    這篇文章只是簡略地提出了幾種物理學的應用可能性。乍看之下,物理學好像只能為 FPS 類型的遊戲帶來更趨近現實的擬真樂趣,但是我想只要遊戲設計者能以 Gameplay 為出發點去設計相關的應用機制,而不是為了展示技術能力才去使用物理學功能,應該可以得出更令人拍手叫好的成果。

    「使遊戲達到更高的真實感」與「妥善運用物理學增進遊戲性」,確實是兩種不同的目標。

    @R2D2:
    OMG, this one is freakingly hilarious! XD

    @solibizi:
    你好,

    我很同意物理學的概念,有助於讓玩家更易於瞭解遊戲機制。

    像是在《World of Goo》裡,打從一開始,那些長得像焦油的小咕球,大致上就可以讓玩家猜到它們具有「黏性」與「延展性」的特質,而在遊戲關卡中,玩家更可以藉由我們已經非常熟悉的「重力」、「浮力」、「支點」與「動態平衡」等等物理特性,很快地學會如何運用不同的咕球類型通過關卡的謎題,可說是在「發展強而有力的學習機制」面向上的一個優良範例。

    謝謝各位的迴響。 ^^

  4. 好像離題了– 我想像的是Matrix裡的母體般虛擬的真實感, 讓人分不清真偽的體驗. 我想它的物理引擎應該做得相當棒 XD

  5. Valve’s Portal,因為它超越了「真實」的物理,而且關卡故事也做得很好。

    文中提及 n 個物件需要 n(n-1)/2 次檢測,但如果說是碰撞檢測,每個物件是很難和其他 n-1 個物件同時碰撞的,利用空間分割及sweep-and-prune等方法,一般是可以接近 O(n)的。

    我一年前開始想做的遊戲實驗也是和物理有關的,可惜一年後還是進展緩慢……

  6. Shark~
    我想你忽略了文化差異的問題。西方國家喜歡的遊戲類型、常接觸的遊戲內容跟我們是天差地別的。(關於這點,看一下Gamasutra上的US chart和Japan Chart就知道。很可惜沒有Taiwan Chart,不過日本的圖表倒是或多或少有代表性。)而且作者文章的重點並不是”遊戲中如何運用物理性質”,而是”未來遊戲如何更進一步運用物理引擎”,我覺得本來就不必舉太多例子,否則只會模糊焦點。這樣就說作者思想狹隘,太過偏頗。

    為什麼使遊戲具有更趨近現實的物理特性不能視為讓遊戲更好玩的一環呢?從你的文中我覺得你並不喜歡、也沒有嘗試過很多這類遊戲。但你仍不能忽視已在這方向獲得的成功的遊戲,如Crysis、Half-life 2、Oblivion等。Starcraft2也將運用更好的物理引擎達到更好的場景互動,隨之誕生的戰略變化令人無比期盼。因為有更擬真物理表現而更好玩的遊戲,只會更多。

    Milo~
    如果故意設計場景物件都能用bounding volume很好的趨近、加上夠好的場景管理系統,是可以讓所需偵測的物件變少。不過以我個人經驗,其實真正難的往往不是碰撞偵測(當然這也可以很難…不過遊戲中通常不會用太複雜的方式),而是碰撞反饋(collision response)。

    Portal真是不能不推~整個創意太棒了!

  7. @Hua:
    哈哈,《駭客任務》電影中架構出來的虛擬世界的確非常驚人。如果有一天,遊戲的科技發揮到極致,讓人分不清楚何謂真實何謂虛擬世界時,應該就差不多是這樣吧?雖然如此,但我還是不想要在後腦杓插管子…… = =+

    @Milo:
    《Portal》也是個很有意思的實例!之後會翻譯一篇關於《Portal》遊戲開發流程的文章與各位分享。 ^^

    關於碰撞檢測的部分,的確作者只有提到入門的基礎作法,而沒有詳細討論相關的優化方法。如果我們使用一些空間切割的方法,應該可以減少相關的計算量。不過我比較好奇的是,不知道在一般的物理引擎運算過程中,是否會自動幫使用者進行空間切割的處理程序?或者需要由使用者的介入操作才能達成?

    @southp:
    說得很好~ 我認為誠如作者所言,目前我們所見的遊戲作品,都只發揮了物理引擎一小部分的威力而已。藉由深入瞭解物理引擎的功能與特徵,我們才能夠挖掘出更多將物理學應用於遊戲性的可能性。我想不論是擬真化或者幻想式的遊戲類型,可以預見的是,物理學在未來的遊戲開發程序中必將佔有一席之地。

    感謝你的分享~ :)

  8. @半路:
    應該大部份都會有。通常應該會使用sweep-and-prune吧。ODE 則有 Hash space 和 Quad-tree,要用不同的 API:
    http://www.ode.org/ode-latest-userguide.html#sec_10_6_0

    @southp:
    在剛體動力學引擎裡,collision response 也是一種 constraint,ODE 談及它實現的兩個 solver 移除每個 Degree of Freedom (DOF) 所需要的理論時間:
    http://www.ode.org/ode-latest-userguide.html#sec_8_0_0
    如果用 iterative 的方法,還是可以維持 O(n)。

  9. @Milo:
    看起來 ODE 是個很不錯的初學者入門物理引擎,有時間的話我很想學學玩玩看~

    感謝你的補充。 ^^

    @R2D2:
    《Toribash》 真是將 Ragdoll 的特性運用到了極致的境界!真是款暴力美學滿點的遊戲! XD

  10. 這篇文章真的很棒!對我最近的困惑提供很多的方向。

    我不覺得這篇文章有任何狹隘的思想,

    反而覺得,批評的人才是真的狹隘,

    這也難怪,台灣的人工智慧遊戲才會那麼少。

    我也是個很喜歡電腦遊戲的人,不過看到的遊戲,都是以短期利益為取向。

    而我真正想玩的,就是像這些比較需要思考的遊戲。

    希望在台灣,這類的遊戲能愈來愈多。不要到處充斥一些表面虛華的遊戲…

  11. @殺人鯨:
    我也是比較喜歡有深度的遊戲,如果遊戲作者只是為了誇示技術力而用某種技術,而沒對遊戲性有助益,那就只能做出表面虛華的遊戲
    所以看到一項新技術時別急,先想想是不是真的有那個需要。像本篇主題「用物理引擎增加真實感」被誤用的可能性就很大,要小心
    大家都在強調高深技術的時候,真正需要思考的遊戲像聖火降魔錄並沒有用到高深的技術,這是值得好好借鏡的
    見不賢而內自省,看到別人犯錯我們不要跟著犯

    台灣少有有深度的遊戲我認為是市場因素,現在想要爽快和刺激,而不想費心解決問題的玩家應該比較多,廠商為了生存下去也只好迎合他們的喜好

  12. To Shark:

    不用”新技術”也可以做出好遊戲, 不等於用了這種”新技術”做不出更好的遊戲.
    Wii的新操作介面(新技術), 讓遊戲開發廠商”有機會”做出更好玩的遊戲, 倘若Wii上的遊戲你認為不好玩, 是遊戲開發商的問題(被誤用?), 還是Wii的新操作介面沒有用呢?

  13. @殺人鯨:
    我認為「遊戲」是包容性很大的一種娛樂媒介,可以接納各種不同面向不同角度的展現形式。目前台灣比較少有這樣的遊戲,除了市場因素的限制以外,另外一項要素其實也與技術能力有關,而且在短期內可能也不會有什麼太大的改變。

    如果真的想做的話,不如從獨立遊戲開發或者同人遊戲製作著手吧!

    @Shark:
    在「技術」與「遊戲性」之間,存在著微妙的平衡點,如果破壞了兩者的平衡而向著一端傾斜,便會使得遊戲中原有的樂趣崩毀,而成為一款失敗的作品。我想這的確是身為遊戲開發者的人,必須要時時謹記於心的分寸與原則。不過以我所見的現況來說,經常是「技術」端投入的不足,而「遊戲性」端也同樣沒有花費太多心力,結果最後全都傾斜於「專案時程」上了。

    《聖火降魔錄》系列也是我非常喜歡的經典戰略 RPG 遊戲~

    @Hua:
    隨著新的技術問世,往往可以為我們遊戲開發者帶來許多原有應用的延伸,甚至是前所未見的表現方式。我認為 Wii 主機,就是一個真正以輕量玩家的立場設身處地著想,所實作出來的一項非常成功的新技術。

    謝謝三位的迴響。 :)

  14. @R2D2:
    感謝提供影片連結!

    我很喜歡《Trine》的美術風格和繪圖畫面~ 但老實說,我覺得遊戲中對於物理學應用只能算是普通而已,沒有令我感到特別驚奇的地方。另外,看完這段影片,倒是讓我想起《LittleBigPlanet》哩,真有趣。 XD

  15. 同意~ 不過Trine的物理應用從影片上看來好像是為co-op模式量身定做, 而LittleBigPlanet的物理應用在單人和co-op模式並好像沒有太大的差別(這點我不太確定, 有誤請指正).. 目前市場上物理應用在co-op模式的遊戲還是不多, 所以看到時覺得蠻新奇的~

    很好奇怎麽沒有人提到Garry’s Mod和Boom Blox呢? :)

  16. @R2D2:
    我找了《Trine》的試玩版,稍微玩了幾十分鐘。試玩後覺得很可惜,這款遊戲有很棒的畫面呈現,以及不錯的物理引擎,可惜未能充分發揮在遊戲性的要素上。可以參考看看 IndieGames 的這篇評論,我認為相當中肯。

    沒人提到《Garry’s Mod》《Boom Blox》,我想可能是因為這兩款遊戲在國內比較不為人所知吧!(我也沒有玩過哩~ XD)

  17. 原來如此, 不平衡的角色特性破壞了遊戲樂趣, 更換角色變成只有在解迷才派得上用場, 太可惜了

  18. @R2D2:
    不過往優點看,《Trine》的視覺表現相當出色,可說是 Indie Game 中少見的精緻美術風格作品。

  19. 半路大您好!!
    不好意思挖古文了,最近才經由老師推薦您的部落格。
    很多見解讓我受益良多,雖然程度不太跟得上就是了。

    這篇您提到關於遊戲應用物理學,個人是非常贊同的,再遊戲中引入物理學不僅可以增加遊戲的真實度,也可以讓遊戲變得更耐人尋味、更有樂趣。

    但是物理學的方面,像是流體力學、摩擦力…等等之類的物理知識,在資訊相關的科系卻是沒有的。
    而應用這些物理學也必須要有很多數學基礎,像是您提到的拓樸學、或者分析學,而拓樸學內又應用了很多高等微積分領域的東西。
    這些皆是資訊相關科系不會去學到的東西,如果想要去學這些東西……或者說,想進入遊戲產業所必須具備的數學、物理知識,這範圍究竟該定義在哪兒呢?
    其實……只是想問這些大學沒辦法學到的東西,若要自學,該從何著手,學到哪兒該停呢??
    曾去各大學的數學系、物理系查詢他們所修習之課程,約略為 :

    離散、線代、微積分(資訊相關科系有)
    高等微積分、幾何學、拓樸學、機率學、分析學、統計學、群論…等 (資訊相關科系無)
    電磁學、(流體)力學、光學、熱學 (在遊戲應用最多的學論)
    量子物理…等

    當然知道所謂學無止境,但是若以短期內衝刺,該以怎樣的順序去學習這些知識呢?
    想請半路大詳剖,謝謝!!

  20. 我可以解釋物理學的部分,我大學學工程,做遊戲的技術是自修而來。

    跟有些遊戲裡的前置專長、技能一樣,基本的學過之後才能學進階的。

    力學部分靜力學、動力學是基本,學的是力和物體運動,先從這個學起,需求是微積分和向量。
    往上一級是材料力學,研究的是物體的形變,如果要做打中物體後物體變形的效果可能會用到,需求是靜力、動力。
    再來是流體力學,除了空氣和水的運動以外,彈幕其實也有流場的概念,這個需要向量場、偏微分方程。
    材力和流力有概念就好,不像工程系需要熟練每個公式。遊戲裡通常只要做到看起來OK即可,甚至為了遊戲性讓物理法則不符合現實,太真實反而會讓遊戲不好玩。

    熱、電、近代物理就應該不會用到,不過可以用在劇情裡融入一些知識,例如東方Project有個符卡叫波與粒的境界。
    總之先學基礎的靜力學、動力學,其他有時間有能力再學。

    數學上面提到的微積分和向量很重要,在遊戲裡想表現物體移動都會用到,3D更是大量使用向量。

  21. @Snake:
    除非你想深入鑽研如 Box2D、ODE、Havok 等物理引擎的原理與設計,或是想要製作出應用物理學原理的全新遊戲類型,否則我認為只要把大學課程中的「普通物理」學好就很足夠了。

    你列出來的那些課程中,我認為對於遊戲程式設計來說比較重要者為:線性代數、離散數學,以及機率與統計。

    @Shark:
    感謝回覆。

  22. Garry’s Mod的成功就是能應用Source的物理引擎(基於Havok)讓玩家設計各種機關,而且只要把選單中所有的工具玩過一遍,就能設計出各種千奇百怪的機關了~

  23. @考古來著:
    目前在各 App 平台上也可以見到許多採用簡化版物理系統的遊戲作品,足見物理系統對於遊戲玩家真的頗具吸引力。

  24. 半路大你好,小弟我有些事情想請教你。事情是這樣的,小弟大學主修物理,輔系資工,碩士繼續讀物理,到現在剛退伍都沒有再寫過程式。最近開始找工作,其實本來是想往科技相關產業發展,以為在我的物理基礎上加點程式設計能力可以為找工作加分,無奈科技業似乎並不需要這種人才,他們只要你會操作機台、跑跑商業模擬程式就好了,根本不需要會C++,再加上最近電子業不景氣,公司也很挑人,所以我開始想轉換跑道。

    我就想物理在程式上還有什麼可能的應用?結果想到遊戲領域,所以就在google搜尋到你的文章。看完你的文章之後,覺得或許對我來說是個機會,但是有幾個問題:第一,目前國內有幾家遊戲公司需要這方面的人才呢?第二:我並沒有實作遊戲的經驗,也有好長一段時間沒寫程式了,如果要去應徵的話,請問我該從哪裡準備呢?需不需要去補習班補個遊戲製作之類的課程?有沒有比較推薦的補習班呢?

    事實上我有在104找到一家遊戲公司正在應徵這類人才,不過我擔心自己程式基礎不夠,能不能請版大給些建議呢?謝謝。

  25. @Ya-Lun Li:
    如果你想要進遊戲業,擔任遊戲程式設計師的話,建議你要重新開始把程式語言學好,每天都要練習撰寫程式。如果你無法真心喜歡寫程式這件事的話,這條路不會走得長久。

    很可惜的是,物理學相關應用在台灣遊戲業很少見,反倒是在一些 App 遊戲上比較常見到有運用物理學概念的遊戲類型。

    不要害怕失敗或被拒絕,只要有機會就去嘗試看看吧!

  26. @半路:
    謝謝你的指教。其實我並不排斥寫程式,而且大學修課的時候作業也都自己寫,完全沒有抄別人的,一些基礎的演算法、資料結構呀都還有印象,用來寫教科書上的例題(例如解數獨程式)是沒問題的,但是怎麼樣從解數獨跳到遊戲,我還是沒有一個方向。

    我記得當時有一堂課叫軟體工程,期末作業是用java寫出一款線上遊戲,那時候對遊戲什麼都不懂,連java都不會,為了學分我硬著頭皮去修,同組幾個比較懂的就負責一些畫面呈現之類的,而我則負責tcp連線模組,最後總算做出可以幾台電腦連線對打的遊戲….。

    雖然做出來了,但其實我心裡覺得虛虛的,只知道這樣會work,但不知道背後是怎麼實作,而且物件導向好像就是這樣,幾個method 摳來摳去,接口對了就對了,其他人要丟什麼data給我是他們要負責的,我只要負責開出連線登錄會用到的class、method (應該是這樣說吧?) 給別人用……我的程度大概這樣,你覺得這樣我還要重頭學hello world嗎?還是我可以在做哪方面的加強,公司在面試我的時候會比較順利?

    謝謝

  27. @Ya-Lun Li:
    可以朝著寫遊戲程式的方向去學習,不論書籍或網路上的文章都是很好的來源。如果你想做 MMO 遊戲,要把 C/C++ 語言學好;如果你想做手機遊戲,可以學 Java 或 Objective-C 語言。

    面試時,若能拿出實際的作品集與程式碼,應該會比較有利。

Leave a Reply