2010/09/12

UDK到底能不能開發MMO遊戲 (一)

去年,筆者有幸參加了一場秘密會議。一家大型軟體公司的研究機構,做了近年遊戲趨勢的研究。得到以下幾年結論:
  1. 互動性遊戲越來越重要。靠手勢的或是靠觸控式的硬體,提供新的遊戲玩法。
  2. 市場上遊戲年齡分布更廣了!各種類型的遊戲都有,動作、家庭、運動、射擊、競賽類遊戲等等。
  3. 遊戲公司商業模式:a. 微獲利,每套遊戲的價格很低,或是靠遊戲來賺錢的毛利很低 b. 廣告,在遊戲裡面放置廣告,也是一種遊戲的獲利方式 c. 獨立的開發工作室越來越多 d. 遊戲會以數位的方式發行,越來越不靠實體通路來販售。
而說到未來的遊戲會如何發展,該公司做出以下預測:
  1. Social Games 社群遊戲越來越重要
  2. Crowd Sourcing 群體運算,比方說利用大家電腦來計算科學研究,蛋白質結構。未來遊戲所需運算會不會靠玩家的多台電腦串連計算呢?
  3. Augment Reality 擴增實境,把遊戲跟真實世界做結合的遊戲。例如Geocaching 這類結合智慧手機與GPS的遊戲。
  4. Collaboration 合作類型的遊戲。
遊戲開發商在面對市場,所要了解的就是客戶心理。新世代的小孩,他們出生在每個人都有一個手機的時代,甚至是每個人都有一個智慧手機的時代。這樣的世代,『互動性』對他們來說是最重要的,應該是說,因為科技的進步,他們不了解『等待』是什麼東西,因此現在有些遊戲。並不需要下載遊戲才能玩,你只要線上點擊遊戲,可以立即玩,而在背景慢慢把完整的遊戲下載完畢。

互動性又代表了所有遊戲元件都有互動,會有立即的反應,例如:real time shadow即時陰影,即時的物理計算、即時影像、即時的滑鼠手勢。遊戲最好不要lag!.

遊戲的演進是有歷史潮流的,很快地各家公司都面對經營上面的瓶頸。大家都在面對一樣的問題,研發者能夠了解消費者與了解市場趨勢的確是很重要的課題。

以下翻譯了Epic論壇上面的一個有趣的討論帖,作者CrystalCore發起了這篇討論串來問UDK的MMO的遊戲開發。其他的網友名稱我就省略,留下精簡的討論串。

---以下為翻譯---


如何利用UDK製作MMO遊戲?

本欄的目的是要解答所有在這論壇問過的問題---『如何利用UDK製作MMO遊戲?』我想要把這個大哉問! 一次解決吧,我們不需要版上有人一問再問,引發版上的仇恨,這裡應該是幫大家解決問題的地方。
我可以利用UDK開發MMO遊戲嗎?

簡答
不行,因為UDK官方每個伺服器只支援最多64位玩家。

詳答
可以。如果你願意進行以下步驟,基本上,要以UDK建立MMO的方法如下:

1. 你要建立新的server/client結構,支援超過64位玩家,而且如果每個伺服器同時上線的玩家如果沒有達到2,000人,就不可以算是MMO!

2. 利用UnrealEditor開發一整個地圖,但是UDK的編輯器其實不是針對MMO開發所設計,例如地形系統並不適合MMO所需要的尺度。

3.建立大量的遊戲內容。讓我想像一下,要達到『魔獸世界』那樣的角色密度,每個地方你大概會需要50-100個NPC,而這些基本上只是quest givers,這些人還需要對話、尋路、而每個還帶有自己的材質、或是一組材質與動畫等等。這些只是NPC,現在,想想你會有多少個玩家需要客製化他的裝備?!

4. 銀彈。你需要很多經費,不只是要養團隊而已,你還需要大量的人願意花好幾個小時來玩你的遊戲。遊戲上市的第一天就要有台伺服器,不便宜,實際營運你可能需要十台以上的伺服器,這樣你的遊戲才能正常營運。

5. 時間。MMO遊戲要花幾年的時間,超過百人計薪的團隊。如果你的團隊只有20人而且不給薪水的話,那你要花多久時間開發遊戲呢?大概十五年吧。你還要確保開發人員待的夠久能等到遊戲真正上市,呵,祝你好運!


6.計費 這大概是最簡單的部份了吧 你需要開立銀行帳號 建立某種線上交易機制 持續更新法律相關資料 要不然就準備上法院吧

7. 客服 如果你有做到這個階段 我要向你致敬 但是還還需要大量的客服來幫你做臭蟲修正 遊戲糾紛 抱怨等等其他要用電話申訴的瑣碎小事 這些也要花錢的 而且這些人是要在遊戲上市之前就要先雇用了

這裡只提出幾個要素,但是清單應該還可以列出更多,我想我就先到這。

請不要會錯意,這個趨勢可套用在所有的遊戲開發,我只是想要說你可以只有2-3人花幾個越的時間做個小遊戲會有更多趣味,然後再來去思考MMO。如果像Funcom這樣的公司都要與Age of Conan競爭,你也不會有太大機會。

如果你還是堅持要用UDK做MMO,祝你好運!我希望你靠MMO賺大錢,同時也會讓Epic更有錢。

我們大約有五人在做MMO,雖然大部分都很有經驗『知道』要怎樣達到這個目標。

你可能還是會認為這很不實際,事實上不是,沒有人說你必須要重建整個遊戲世界。

當然還要看你是要做怎樣的MMO, 隨然要做魔獸世界那樣的遊戲很大,你也可以做規模小一點的遊戲。

你不一定要做10000000x10000000平方里的大地圖,你也不需要有50個種族上百個物件在場景中,也不需要200的任務。MMO有趣的地方還是跟玩法設計有關,別無他,不要把心思只擺在好的畫面、與上百萬里的大地圖。如果你的遊戲不好玩,你也不可能留住玩家!

沒錯,有很多是在營運相關的工作、網頁、支援、計費、GM等等。雖然現在伺服器算便宜的,我家裡有60mbit光纖,每個月花我美金75元而且沒有使用上限。

我們的花費會是當需要伺服器的時候,當然也跟遊戲的軟體有關,不一定要便宜。但是還是需要不斷電系統、資料庫備份、硬碟、防火牆等等東西。

如果你還有預先販售的活動,你就會大致知道實際營運的時候需要買多少硬體。

雖然不是很容易,如果之前完全沒有營運經驗的話,就沒辦法做MMO遊戲,光是壓力就會把你給殺了 !

但是如果你能把這些雜七雜八的東西處理好,別因為別人跟你說不可能你就不做!

我真的很希望你能做出MMO的遊戲,會很棒。但是我看過很多不同論壇,包含:gamedev、moddb、udk的MMO討論帖,Epic都沒有做很好的支援。認真的,我很難相信你能成功,除非你有很多錢外加夢幻團隊。我現在能想到開發MMO的獨立工作室大概就只有Planeshift 和Minions of Mirth這兩家而已。

如果你真的要開發MMO,那就不要用UDK。這只會讓你的開發時程遇到更多問題罷了!勸你還是使用原本就有好的MMO架構的引擎,例如Planeshift引擎或是Torque Game Engine。UDK根本就沒有針對MMO做調校!

我們有幾套Torque3D,我們也知道UDK對MMO遊戲並不友善,但是Torque3D其實也不友善,但是我們相信如果用UDK遇到了很重大的問題,Epic的人會幫我們處理,要不然我們就要自己想解決之道。最大的問題就是『網路傳輸的大量使用』。

根據伺服器寫的程式碼,或是客戶端的程式碼都已經寫好了,可以用在每個伺服器2-3000位玩家,我們也對Esenthel做了初步測試。

目前還沒遇到任何問題,或是其他通常會遇到的問題

是真的,如果有人問 UDK遊戲引擎能拿來做MMO遊戲嗎?答案是可行的,但是對問的人來說可能達不到,過去沒有經驗,我很難相信他們能完成使命。

因為做MMO遊戲需要處理很多東西,我們當然不會把任何遊戲相關的東西貼上來,直到達成以下目標:
1. 100%的可玩性
2. 能夠處理工作量、網站管理、媒體、社群等等。

任何東西都有可能耗費掉你的研發時間。
例如有個MMO伺服器有100.000個玩家在線上,我很想要在有生之年看到這個目標。

即便是魔獸世界,每個伺服器也大約只有3500-5000個玩家而已!

我個人認為,每個伺服器有超過五百個玩家就可以算是MMO了!
操!就算是一千個人活在同一個地方我們還是只認定它是一個小鎮而已。

真棒的討論帖,獨立遊戲工作室能夠開發MMO遊戲是一個夢想,前面提到的兩家MMO工作室,其實過去都有推出遊戲片的經驗,也對遊戲開發很老練,平均來說也有經驗。我知道就Minions of Mirth案子是這樣,我看到很多人提到Minions of Mirth當做MMO的成功案例。但是你要知道Minions of Mirth是特例 !幾乎百分之99.999999%的獨立遊戲開發工作室開發MMO都失敗了!

前面提到的工作,大概代表了你要開發MMO遊戲的5%工作內容。獨立工作室想要開發MMO 就跟工地工人說去蓋一棟帝國大廈一樣好笑!問題就在於大家看到魔獸世界這樣的遊戲並不了解魔獸世界本身有多巨大。

當你在玩魔獸世界的時候,請記得有22,000台遊戲伺服器、超過5,000位技術團隊在背後支撐。所以問題在於,遊戲引擎能否開發MMO遊戲,這根本就是問錯了問題!應該要這樣問,你有沒有資金、人力、技術來做這件事。如果你有這三項,那麼開發MMO遊戲這件事,跟引擎本身沒有太大關係。

說到這裡,我不想把各位的夢想幻滅。沒有什麼事情是不可能的,但是你必須要先了解狀況再跳進去!

好帖!

如果研發團隊真的有能力來開發MMO,它就有能力開發,不管是不是使用UDK。 開發MMO會遇到的問題很多種,很多都跟對非MMO遊戲開發者的經驗無關。

換句話說,UDK可不可以拿來開發MMO遊戲?這個問題是無意義的!你會問這個問題主要是因為你過去沒有開發過MMO遊戲的經驗才會這樣問。

不管,如果有人有經費、有時間用UDK來開發MMO遊戲,我認為他們該研究一下Atlas。 Atlas的功能就是要用來處理伺服器與聊天、戰鬥系統的問題,它也可以用來創建RPG元素,例如Quests & Vendors那樣,我是還沒用過這套啦 ,所以你要自己研究。

我還是建議各位一開始的時候不要開發MMO遊戲。即使用Atlas也會遇到很多問題,目前我們有18人的研發團隊,但是還沒開發到我們預期的狀態,聽到論壇上面有人說他們工作室有2-5人,就想要用UDK來開發MMO,我真的替他們感到悲哀!

相信我!MMO遊戲是你最不想開發的遊戲類型,它會扼殺創意,除非你有百人團隊來開發。

MMO遊戲?我呸!這種遊戲不過就是一群不認識的玩家,玩遊戲,五人在工會裡。

UDK已經提供你很好的多玩家體驗,如果我記得沒錯,『戰爭機器Gears of War』裡面就有合作模式,玩起來有很有趣。為什麼不開發任務型的、合作模式的遊戲,來取代MMO的開發呢?

我意思是,操!當你玩像是魔獸世界的遊戲,你真的是在跟上千個玩家玩遊戲嗎? 不,當然沒有。你只是在跟一群玩家,在遊戲的世界裡面以起解決、找尋問題。這個其實用UDK就能達成,不一定要是刻板印象中的MMO類型的遊戲。

怎樣才能讓MMO遊戲好玩,其實是根據你的角色。玩家都喜歡客製化角色,為什麼不添加這種功能呢?開發一套單一玩家的遊戲, 讓他有自己的的裝甲與武器,提供合作模式的玩法。

現在,我知道寫程式會有多難,但是上述作法會比較容易達成、花費更少,你甚至可以用虛擬網路來進行LAN連線。

我同意用免費版的UDK很難達到,但是如果付費版的UE3具有source code,要開發MMO應該不是問題!

天堂II完全就是用unreal引擎做出來的,因此是可行的!

你可以用一台不錯的PC當做1000 到 2000玩家的伺服器,而天堂II很多的私服都是這樣做的。

一位GM應該就夠了,因為你是開發MMO的人,你自己應該會知道遊戲會出現哪些問題。

這跟你問的問題有關嗎?如果你是這樣問,我能用免費版的UDK來處理Blizzard 與 NCsoft那樣的遊戲嗎?

我認為你只是想要告誡那些想要靠『魔獸世界』之類的遊戲成為百萬富翁的人,因為他們笨到以為可以達到這樣目標,事實上大部分的人要用免費的UDK開發MMO的話,並不需要成千上萬的玩家來玩遊戲,他們只要開發出遊戲讓大家能夠了解遊戲的概念玩法就夠了!

我會建議想要開發MMO遊戲的人,看看『天堂II』的私服,你會學到很多開發MMO遊戲需要的背後秘密!

我玩過魔獸世界,我不認為這是讓玩家喜歡MMO的原因,遊戲裡面其實很多只是個符號而起。其實大部分的時間,並沒有這麼多玩家,在一台伺服器上面有超過三千位玩家似乎是浪費資源,當你只有約5-10人的團體在你周圍時。

只需要一點點小創意,你就能開發像魔獸世界那樣的MMO的感覺,而不需要上述那些困難的需求。

待續…

---翻譯完畢---

[相關文章]

2010/08/23

Chaos Group Phoenix FD煙霧火焰模擬外掛

全新的格點計算模擬軟體!可以模擬火焰、煙霧等特效。

Choas Group的Phoenix其實也好幾年了, 曾經風迷一時的火焰外掛. 原本已經停止開發 被FumeFX打到趴的軟體 現在又如浴火鳳凰般地重生, 要來個絕地大反攻, 一下子煙霧 流體 火焰 液體通通都支援 還狹支援自家軟體的VRay的全局照明功能. 向Chaos Group這家公司的研發團隊致敬!

---以下為翻譯---
Phoenix Fluid Dynamics (FD)正式推出了!
Phoenix Fluid Dynamics是Chaos Software公司最新推出的產品,這套軟體完美地結合了以格點為基礎的流體模擬,還提供了傑出的算圖能力。除了常見的流體行為,Phoenix FD還能模擬許多特效,例如壓力的衰減、熱能冷卻、與質量溫度平衡等物理參數。流體物質會持續地變形,例如流體、氣體、岩漿等。Phoenix FD讓你在3ds Max裡面模擬這些現象,這些資料會除存在細分的3D格點裡面,每個細分都具有流體的屬性。這些屬性包含溫度、質量、與速度。再用Phoenix模擬的期間,它會轉移格子之間的資訊,根據速度與時間的函數,這些都是根據物理定律來模擬的,最後的結果可以用來算圖出來。

2010/08/14

UDK八月版新增功能

八月版的UDK(Unreal Engine)新增以下功能:

以下是新功能的完整說明:
Scaleform GFx
  • Scaleform GFx 3.3.85現在合併到UDK八月版(Aug)裡面了,所以現在UDK所有的使用者介面都是用GFx寫的了!
  • 改善了許多Scaleform的錯誤與工作流程
點光源計算陰影(Point Light Shadows)
現在點光源支援整個場景的陰影計算, 更詳細的說明文請點這裡

預先計算場景的可視度(Visibility)
預先計算可視度讓你的遊戲在不支援硬體occlusion的遊戲機也能控制可視度。

動態模糊
大大地改善了動態模糊的品質 但是不影響效能

新的細節光照顯示模式(Detail Lighting View Mode), 更詳細的說明文請點這裡
  • 取代diffuse與specular的資訊,但是維持材質其他的參數,例如normal map、opacity mask、雙面等等屬性。
  • 這對於查看場景的照明,而不被diffuse的效果所分心很有用。
  • 而舊有的只顯示照明(Lighting-only)的模式還是很有用,你可以用來查看lightmap的品質。
角色間接照明
添加了新的角色間接照明的控制,讓你可以即時地微調間接光設定,你可以控制照明與陰影。詳細的參數介面請點這裡

頭髮的照明
  • 現在新增了一個新的參數,就是用來計算透明度(translucency lighting)的單一pass的技術。
  • 之前的技術是透過多次pass來計算,這會造成多層的物件,例如頭髮,產生過亮的問題。
  • 單一pass的技術跟多次pass照明相比只會用到一半的shader指令(instructions) 因此效能會更好。詳細的說明文請點這裡
舊版的UDK計算出來的頭髮有過亮的問題

Single-pass的頭髮計算效果

Normal Maps、間接照明與Lightmaps
Normal maps現在也會影響間接光照,這是利用簡單的lightmaps來計算。
舊版UDK的效果

新的功能的效果

其他新增功能:
  • 現在你可以在Content Browser按下右鍵選單就可以直接重新編譯材質
  • 新的材質串流系統可以節省記憶體,也更有效率地優先化材質
  • 部分支援非2的倍數材質的支援(譯者註: 之前輸入貼圖必須是要2的倍數,例如1024X1024,因此253X243這樣的解析度就不合法),但是MIP maps不能用非2的倍數,而DXT壓縮必須能被4整除。
  • 現在你輸出OBJ檔案,Vertex normals能被正確的儲存。
  • Terrain輸出現在支援有洞的Terrain。
  • 新的資產內容比較功能(ContentComparison)指令,幫助裡最佳化遊戲資產
  • 現在預設定Lightmass靜態陰影支援texture space filtering,這樣可以把反鋸齒柔化
  • 材質編輯器的Undo 與Redo變個更快了!
  • 添加了多個攝影機對粒子的偏移支援,與攝影機對mesh emitters偏移的支援
  • 在bone/socket 產生的粒子,現在支援了旋轉的mesh particles 跟bone/socket的朝向能夠正確對應了

新的說明文件:

MoveTexture的教學文, 請點這裡

FaceFX口形同步模組的使用說明文, 請點這裡


使用橫向捲軸攝影機的說明文, 請點這裡

[相關資訊]


2010/08/08

Unreal Engine功能介紹: 動態計算陰影透明度

Unreal Engine 3現在新增動態計算陰影透明度(dynamically shadowed translucency),可以用在以下兩種狀況

1)透明度的照明,是在場景中具有dominant lights 投射在可以接收動態光影的環境上。簡單的說,角色的頭髮現在可以在環境裡面計算陰影。


上圖中,並沒有開啟這個功能。因此,頭髮的透明度計算不正確;而下圖是有開啟透明度的功能。


在材質裡面如果要開啟這個功能是
bTranslucencyReceiveDominantShadowsFromStatic. 而在燈光環境裡面也有這個設定,你可以把頭髮開啟陰影的選項,或是就採用動態陰影 bAllowDynamicShadowsOnTranslucency,這個屬性預設是關閉的,因此如果你想要看到效果請務必把這個選項開啟。

效能的問題
開啟這個效果,在Xbox 360裡面每個角色會損耗大約.2ms的計算時間,這個功能還會增加四個材質lookups,且會增加某些ALU instructions到頭髮的shader上面,大概也會花費少量的GPU計算時間,大約.02ms。因為其實角色佔畫面的面積其實很小的。

限制
這種陰影只會投射在靜態的環境上,頭髮無法接受其他角色的陰影,也不能處理自身陰影(self-shadowing)。

2)透明度可以繼承dominant shadows,投射在不透面的表面上,這表示透明度可以使用動態陰影,投射在半透明後面的不透明的pixel上面。這個功能的目的是要讓地面mesh的動態陰影,當採用半透明混合模式時(translucent blend mode)與深度偏差alpha(depth biased alpha),能夠隱藏幾何體的縫隙。

如果沒有上述功能,半透明的mesh放在地上就會看起來像這樣:

如果有把功能啟動,看起來會像這樣:


要把材質啟動陰影計算的參數是bTranslucencyInheritDominantShadowsFromOpaque。請注意啟動這個功能會降低效能,因此你只針對地面的mesh做設定,而不是把所有的半透明材質都把這個選項打開。

效能的考量
如果是在Xbox 360 ,會有持續的.27ms計算開銷,如果還有添加材質的話還會增加.1ms,如果半透明地面mesh暫了畫面很大一部分的話。

限制
這個功能只對場景中打的是dominant lights光源有效,所以採用modulated shadows會沒有效果。

這個功能目前在PC平台上只對dominant directional lights有效;但是在遊戲機平台上面對所有類型的dominant light都有效!

透明度會使用在其後面的不透明物件的動態陰影,你可以在以下的遊戲截圖看到階梯陰影效果,但是如果半透明mesh背後的不透明mesh之間沒有對位很好就會出現計算錯誤。


[相關文章]
40 個你不能錯過的UDK (Unreal Engine)網站

2010/08/05

UDK新增功能:針對頭髮只計算一次pass


之前UE3在計算透明度的時候,只能計算多個pass。很不幸地,燈光的透明度,在多個passes的時候會在同一個mesh,多個圖層的位置產生照明過亮的錯誤!(如上圖)

八月份的UE3及將具有只計算一次pass的照明方式,讓頭髮的混合(blending)結果是正常的(如下圖)。

在SkeletalMeshCinematicActor裡,新的一次pass照明預設是開啟的,因此把SkeletalMeshCinematicActor放在場景你就可以預覽出效果。
你必須要把bUseOnePassLightingOnTranslucency這個參數在gameplay pawns裡面的script設定為true,才能得到這個效果,為了要讓照明計算一次pass,除了dominant light(或是在cinematics裡面的non-rim light)以外的燈光都會由單一個unshadowed SH light來計算逼近,但是在大部分的狀況差異並不明顯。感謝這樣的逼近計算,單一pass的照明大概只花了多pass照明的指令的一半而已,因此能更快速地計算頭髮!

[更多文章]