一個獨立遊戲製作人需要哪些知識?需要應用哪些工具?


需要的能力和知識:

  • 遊戲的哲學。比較抽象,說簡單一些就是遊戲為什麼有趣。有趣是遊戲價值的核心,如果你想做出遊戲給別人玩,這是最重要的一點。最好的了解方法是思考自己的遊戲經歷,從優秀的遊戲設計中獲得啟發。也可以讀一些這方面的書籍。多在紙上把自己的設計表達出來,自己評價一下,或者跟別人交流,它到底有不有趣?
  • 足夠的面向對象編程基礎。不管是從頭寫一個小遊戲,還是利用比較完善的第三方引擎,都會遇到需要寫代碼的時候。語言可能是C++,C#這類靜態語言,也可能是Lua,Ruby這類腳本語言。思想都是相連的,如果有C++或者Java面向對象編程的基礎,掌握起來會快很多。
  • 藝術創作能力。這直接決定了遊戲的表現力,涵蓋的範圍也非常廣,比如美術設計,3D建模,紋理繪製,音效編輯,動畫設計,劇本設計,分鏡等等。獨立遊戲製作者常常要一個人包攬全部這些工作,而一個人很難在全部方面都做到專業,所以大多數獨立遊戲在藝術風格上都傾向於簡單,風格化,凸顯個性。
  • 數學。遊戲是運動的,這種運動的控制往往需要精確的數學模型,比如一次平滑的鏡頭移動,一個富有彈性的界面動畫,或者更複雜的骨架動畫。這些都需要一定的數學能力,特別是數學分析、向量和矩陣算術。很多常見的效果都可以找到成熟的數學模型,但很多時候你還是需要用自己的數學知識去組合出理想的效果。
  • 對遊戲程序的理解。這是我覺得每個遊戲開發者都值得花時間去深入了解的。遊戲的每一幀每一個像素是如何渲染到屏幕的?遊戲程序的執行流程是怎樣的?顯卡的工作原理是什麼?著色器是什麼?什麼是DirectX和OpenGL?腳本是什麼,跟遊戲的關係怎樣?運行時遊戲的藝術資源是如何載入和卸載的?用戶的輸入如何影響遊戲的執行?AI與物理如何獨立開發和整合到遊戲中?這些很底層的東西是遊戲程序真正區別於一般程序的神秘之處,一個成熟的遊戲引擎往往已經將其中很多部分封裝起來,使之更加易用,但這些仍然值得學習。如果說前幾點是製作遊戲的能力,這一點就是駕馭遊戲的能力,不了解這些就去製作遊戲,就好比不了解圖像處理而去使用PS,儘管能做出些東西,但很難發揮引擎真正的威力,很多細節效果也無力企及。了解這些能讓你明白遊戲程序的精美之處,讓你在平衡自己的設計時多一份從容。

不必要但很有用的知識:

  • 工程和架構能力。遊戲程序通常有很高的代碼行數,而且會涉及到很多子系統,在後期製作中也經常需要代碼重構。如果沒有一定架構能力代碼會很難維護,遊戲也變得難以調整,性能低下。
  • 歷史知識。這點可能不容易感覺出來,但是當你開始確定遊戲背景和藝術設定的時候就會發現這特別有用。
  • 經濟學常識。在確定遊戲數值特性的時候特別有用。

可以利用的工具:

  • 遊戲引擎級別。UDK,CryEngine,Unity,這些都是足以開發行業水準遊戲的開放引擎,其中UDK和Unity的教程和社區資料都相對更豐富。但我個人並不建議從這些大型引擎開始獨立遊戲開發,不僅學習成本高,而且無法了解到很多基礎知識。我認為從一些簡單的2D遊戲引擎入手,或者根本不使用遊戲引擎開發遊戲是更好的選擇。
  • API級別。DirectX,OpenGL,XNA。這些都是用來支持遊戲開發的API,包含了遊戲開發所需的功能和服務。其中XNA使用C#開發,效率很高,初衷就是針對獨立遊戲開發者,社區資源也很豐富。DirectX相對更深層一些,需要比較強的C++功底,經過10.0和11.0兩個版本後易用性和靈活性明顯得到提升,相對好於OpenGL。OpenGL在精度和跨平台上強於DX,所以更多用在3D行業解決方案和蘋果平台中。
  • 開發工具級別。Mac上可以使用Xcode,Windows上比較統一採用Visual Studio,如果使用遊戲引擎的話一般都會自帶各種環境和工具。視情況可能還需要一個順手的腳本編輯器。
  • 書籍。書籍很重要,學習和實踐是種平衡,系統的學習能避免走彎路,實際的開發能真正掌握技術。

學習路線:

  • 起步階段。我建議從XNA或者SDL一類的API開始學習,能夠了解足夠深層的原理,同時又不會涉及太複雜的圖形學知識。可以自己嘗試做一些簡單的渲染程序了解顯卡的工作方式,然後再做一個小巧的遊戲引擎來輔助開發一些2D小遊戲甚至更複雜一些的遊戲。
  • 進階階段。足夠了解遊戲程序的工作方式以後可以嘗試用比較成熟的遊戲引擎開發遊戲,比較推薦Unity,其次是UDK。這階段可以多關注一下專業遊戲的開發方法,比如資源創作,關卡設計,編寫腳本,網路等等。
  • 高階階段。視興趣可以多了解一些GPU編程、圖形渲染的知識,還有行業中比較新的技術等等。對於愛好者這些可能都是過於高級,不太會用到的東西。但是如果今後想在行業中有所作為的話,這些都是有必要了解的。

關於經驗:

  • 經驗在任何領域都比較重要。遊戲開發中主要體現在對於遊戲設計(遊戲性),遊戲感官(手感,視覺效果等)的控制上,特別是對細節的控制和取捨。獨立遊戲開發者的精力很有限,必須把有限的開發能力集中在讓遊戲更有趣上,過分的重視或忽視細節都是不好的。

關於活動和社群:

  • IGF,獨立遊戲節
  • GDC,遊戲開發者大會(行業級)
  • http://GameDev.net

我知識有限,大家將就著看 : )


正在學習製作獨立遊戲,引擎採用的是孤島危機3所使用的CryEngine3.4,剛剛起步一個多月,肯定錯誤百出,希望可以拋磚引玉,畢竟大型擬真遊戲應該會是遊戲當中最複雜的一種。

先來談談遊戲基本要素(其實也是真實世界基本要素):

1.關卡場景 主要包括地形,植被,河流,道路,洞穴,海洋等等地貌,以及建築物等,主要特點是大範圍,不易改變。

2.生物,包括人和其他動物。

3.物品,多是遊戲當中可與環境交互,可破壞的較小物件。

以上三者可以構成一個不真實的世界。

若是想要模擬,我們需要:

1.環境烘托 加入真實日夜循環系統,設定真實天光,使用全局光照模擬真實光照,利用高質量的陰影,HDR,自體投影以及SSAO產生逼真的層次感和光暈,利用體積光來模擬光柱,利用延遲光照實現多光源的照明,利用景深模擬遠景虛化,運動還會產生模糊,利用粒子模擬火焰...總的來說,能令你從第一感覺上面認為這個場景是立體的。

另外還要合理設置材質貼圖,以令世界擁有合適外觀,主要在於定義物品如何同外界的光交互(反射,折射,吸收等等),本身擁有何種屬性(構成物是金屬,陶瓷,玻璃...也就是模擬相對應物體的真實屬性),以及通過多層貼圖展現細節部分(例如玻璃上的花紋,泥點),利用凹凸貼圖令物品產生立體感等等,材質決定質感,貼圖補充細節。

以上兩點可以保證世界觀感正常。

2.天候 沒有世界會是一成不變,一直艷陽高照不是長久之道,因此必須模擬氣候條件,例如颳風,打雷,下雨,起霧,飄雲,地震。並且要與世界進行交互,例如體積霧與體積雲可與光線進行交互,產生各種散射現象,風可吹皺一池春水,雨可浸濕布料...

3.滿足以上條件,看起來是很美,但是若要符合客觀規律,還要加入物理計算,最基本的要數碰撞檢測,另外還要模擬重力,風力,軟體(布料,頭髮),流體,關節(複雜機械)等等,為了逼真不可不提可破壞性,及其爆炸或者破壞後的粒子效果(煙霧,碎片)... 總的來說,物理計算決定了兩種不同物理性質對象相互間的作用效果。

4.聲效 沒聲音,再好的戲也出不來,聲效讓人感覺這是一個生機盎然的世界,聲音在於烘托氣氛方面非常有效,並且產生對白配音,為了模擬我們便會使用立體聲,HDR聲效,EAX....總之,聲效決定是否會產生代入感。

5.滿足以上條件只是建起一個自然環境,接下來還需要:遊戲邏輯以及AI:真實世界故事發展流程必然會是事件驅動,因此遊戲邏輯就是正常連接並且促動各個事件,因此涉及開關和促動器的運用(舉例來說,當你來到升降梯前,激活開關,促動上升下降),亦即達到某個條件,激活某項事件,遊戲技能大致可屬此類,發動技能,影響其他對象...AI意為人工智慧,會讓遊戲中的動物表現出與真實世界相同的行為,基礎的如尋路,編製陣營...會表現出諸如狼會捕殺兔子,遇到強敵,還會結隊對抗,敵人會躲在掩體後,會埋伏和包抄等等行為...,總之,遊戲邏輯可以促進劇情發展,AI能讓遊戲中的生物認識這個世界,隨著環境變遷,做出符合環境的行為來。

6.以上步驟完成之後如同上帝造人,伊甸園和規則已經建立,接下來便是動起來——動畫運用,沒有動畫車便不會移動,鳥也不會飛翔,人也沒有表情,整個世界失去靈魂,動畫分為角色動畫,過場動畫等等,過場動畫可能還要考慮鏡頭位置。

7.我的世界我作主,做遊戲呢,主要樂趣在於創建自我世界,光看可不行啊,因此還要加入UI,用來管理世界物品,回饋世界信息,調整自身或是物體屬性等等,若想和朋友來分享樂趣,那麼還要通過網路單元,聯網遊戲,共同開拓這個世界。最後要好進行性能優化,以免跑不起來,成為鏡花水月。

下面來看需求知識以及工具:

  • 一個合適遊戲引擎,目前SDK可免費使用的次世代遊戲引擎推薦Unreal3以及CryEngine3,後者更為先進一些,畢竟Crysis系列歷來都是顯卡殺手,但是文檔資源稀缺,沒有中文版本,不算技術剖析,本地化後共計429篇文章,字數預計不下60W單詞...自翻譯中,另外需要注意,免費SDK所製作的遊戲不可商業發布...

首先來看,引擎提供什麼,參照CryEngine文檔來看,引擎主要提供以下部分:

所見即所得的編輯視口,提供對象管理,可對物體執行移動,縮放,對齊等等基礎操作,可以編組,可組Prefabs,提供大量基礎物體類型或是對象原型(粒子對象,AI對象,聲音對象等等),地形,植被,河流,道路等等地貌創建工具,天氣系統,幾乎可以點點按鈕,生成一個自然環境,AI屬性設置以及調試,材質編輯器,流程圖編輯器,粒子及SFX,角色以及動畫,分鏡,聲效,Lua執行環境,載具編輯...

詳細細節可以參考百科:http://baike.baidu.com/view/2296216.htm

Ps:這是一個早期版本,如今已經完善DX11支持,功能變得更為強大。

概括來講,遊戲引擎集合了建模、動畫光影、粒子特效,物理系統、碰撞檢測以及文件管理、網路特性,設備支持還有專業的編輯工具(AI,材質等等)和插件(例如植被生成,大範圍的地形生成),也就是說引擎提供架構,我們填充細節。

  • 了解顯卡渲染過程,這個好處多多,例如攝像機鏡頭背面或是被遮擋的的東西,因為有z/stencil test不會渲染,所以細節不用製作。

  • 美術知識,遊戲原畫總要設定的吧,不過我是參考現實圖片建模以及設置場景,繪畫不給力啊,嗚嗚...,手繪推薦使用Photoshop。

  • 建模,概括的說,就是遊戲當中物體以及人體輪廓,引擎當中提供一些簡單建模工具,但是高模需要自己製作,推薦工具3ds Max,Zbrush。

  • 動畫工具,概括來講就是遊戲中的動作,引擎已經預置部分動畫,但是更精細的動畫需要自己製作,推薦Maya。

  • 貼圖製作,繪製物體外表,貼圖分很多種(高光,漫反射,凹凸,顏色等等),可以通過材質編輯器進行組合,實現更精細的效果,推薦工具Photoshop,Xnormal。

  • 聲音,分為聲效以及音樂兩種,聲效是世界中的聲音,音樂是烘托氣氛用的伴音,這個需要自己錄製或者利用沒版權的音庫...

  • 腳本語言,一個可執行Lua的環境和隨便一個IDE(甚至文本編輯器)就好。

  • 遊戲邏輯,這個自己發揮想像,推薦使用思維導圖軟體輔助策劃。

  • 劇本 就是寫故事咯

  • 界面 Flash即可

其實製作遊戲很像導演拍攝電影的說,吃完午飯坐在這裡啰嗦半天,思路非常亂呀,畢竟獨立製作遊戲實在是個大工程呀。我自己的目標就是兩年做個小的Demo...

隨著我的遊戲逐漸成型,接著補充修正好了,現在才有一個雛形,很多想法都很感性,謝謝閱讀。(不曉得有人讀不,笑)


如何成為一個優秀的技術美術? - 遊戲開發 只要你是一個優秀的TA(請看左邊鏈接)和一個優秀的策劃(請看右鏈接)如何在玩遊戲的過程中學習遊戲策劃? - 遊戲設計的混合物即可成為一個獨立遊戲製作人


看對獨立遊戲的定位是什麼了,愛玩遊戲的程序員或許都有夢想自己做出個遊戲吧,有的可以用現成的遊戲引擎,製作的效率也高,而且比較快捷,不過得受各種引擎的限制,比如資金投入等。樓上說的都是3D遊戲,用到主流的遊戲引擎,很不錯。再提供一個選擇,用Flash完全可以開發出獨立遊戲。好吧,這個是有點功能弱些。不過做2D遊戲還是比較方便的。有創意,有精美的畫面,做來玩玩夠用了~

Unity也是個絕對不錯的選擇,用途比較廣,效果也不差,現在越來越多的獨立開發者加入這個陣營。做卡通風格3D遊戲是個不錯的選擇。也可以做2D的。

Cryengine嘛,引擎本身要求很高,適合做大型FPS遊戲。


需要的知識:策劃,程序,美術;

工具:一款三維軟體,一款平面軟體,一款遊戲引擎

想學的話可以看下這個論壇http://www.lhgamer.com/forum.php各種視頻教程


來一個算是比較不著調的回答。

遊戲本身是個浩大的工程,很多遊戲能讓好幾百人吭哧吭哧趕上個四五年,從青蔥少年做到猥瑣大叔最後才磨出頭來,可想而知只有兩三個苦逼碼農美工的獨立製作人有多難。技術上肯定是有很多困難,CryEngine一個子模塊至少十萬行代碼,整個引擎代碼超過250萬行(3.0.1版本的時候統計的,現在已經到了3.4.x,肯定比這個數要多很多),可想而知這個事情有多複雜。一個虛擬現實方向的研究生最後畢業的時候能力的平均水平基本上也就是寫一個簡單的框架,做一些特效而已。

但是最大的困難不是你用了什麼引擎、使了什麼技術,而是你能否扛下來這麼長時間的投入?

剛看了一個紀念獨立製作遊戲的紀錄片[1],看完你就明白,想要做獨立遊戲是條尼瑪的不歸路啊。木有足夠長的時間投入,最後必然是一個半成品。如果你去搜索一下開源的遊戲項目,就會發現絕大部分項目都是不了了之的廢品。即使你最終完成了,最後的市場反響也是一個大大的問號。也許花了幾年的時間投入最終被玩家噴得想和他對罵,那趕腳是相當的鬱悶。

你是否真的對獨立遊戲有激情?

你做好當苦行僧的準備了么?

----

[1] http://inpla.net/thread-4837-1-1.html


推薦閱讀:

24歲了,該怎樣選擇接下來的編程之路?
你為什麼想打產品經理?
三年經驗的軟體工程師和十年經驗的軟體工程師有什麼本質的差別?
office安裝報錯,已用官方清理工具清理,但是仍然報錯是怎麼回事?

TAG:遊戲 | 遊戲設計 | 軟體開發 | 遊戲開發 |