2D像素遊戲的換裝是如何製作的?
我現在對2D遊戲動畫的了解,就是兩種製作方法:逐幀動畫和骨骼動畫
但是就像素畫風 能換裝的遊戲來說(比如star bound , 泰拉瑞亞, stardew valley)來說,逐幀來畫每種組合的動畫,那工作量太大了,我覺得這些遊戲肯定不是用這種方法。 骨骼動畫(比如用spine)的話,似乎不適合來做像素,至少我在網上幾乎沒見過像素骨骼動畫的例子 或者教程和討論有沒有高手能解釋一下像上面提到的這些遊戲有可能是用什麼樣的方法實現的像素換裝呢?
就我目前的工作經驗來說,可以斷言2D像素遊戲超過80%都是用的逐幀作圖這種「工作量太大」的方法。
2D換裝的歷史其實還蠻久的,這種一般被稱為avatar,或者「紙娃娃」系統,舉兩個比較經典的例子吧。
先說DNF。(去截圖才發現每個號都有時裝……當年我究竟在這破遊戲上花了多少錢orz)
DNF是一個典型的2D像素風格遊戲,裡面的換裝主要是武器、跟收費的各種時裝。即使是同樣的武器,在不同職業的手裡揮動的樣子也是不一樣的。時裝就更別提了,除了每個職業,時裝還分各種詳細的部位,每個部位都會有一套對應的圖片。如果對DNF的模型修改器稍有研究就會對這一點理解更深。貌似現在DNF EX貌似不好使了?圖是網上找的。所有的角色在製作的時候都會有套沒有衣服的素體,就是遊戲中的 xxx_avatar_skin.NPK文件。然後每個可改變外形的部件都是像這樣一套對應的全套動作圖片。素體+衣服疊加成一個角色,然後替換相應的部位的圖達到換裝的效果。
然後說下暗黑2。
暗黑2,以及後續無數的暗黑like類遊戲,換裝的原理跟DNF基本一般無二,都是將換裝按照部位、動作全部生成一套圖,然後切換圖片達到換裝的效果。但是這一系列基本都是3D模型轉化為2D圖片的,所以在精度、效果上要好不少。但是因為生成的數量多(例如暗黑2就得7職業*每職業8方向的圖),所以工作量其實也是非常大的。不過這種做法隨著機器性能的增加,基本已經被直接使用模型的3D遊戲替代了。正是因為這種做法費時費力,所以在實際製作中有很多討巧(偷懶)的做法。
最典型的就是DNF的技能,既然每次添加時裝都需要一整套的動作,那麼在設計技能時最好的做法就是——加特效啊!其實仔細觀察DNF就不難發現,同一角色的很多技能,角色的動作都是一樣的,只是依靠各種特效包裝出不同的感覺。畢竟一來特效好做且搶眼,二來作為一個需要頻繁更新的網路遊戲,用更省時省力的方法來實現差不多的功能對開發來說可以放更多的精力在其他地方,何樂而不為呢。當然,這2個遊戲都屬於比較老的了,隨著技術的發展2D的紙娃娃系統也是在進化的。
因為基礎原理的不同,所以在骨骼動畫為主的2D遊戲里換裝基本已經從逐幀替換變成了僅替換部件切片。而像spine這種甚至有3D的Mesh概念的工具里切片的替換就更靈活了。但是你在主題里提到的像素風遊戲是否用這種方式又是兩說。
確實骨骼動畫跟像素、或者說幀動畫差異還是很大的,因為2D的骨骼動畫有很多非常難表現的東西,例如形變、轉向等,當然其中也有做的非常出色的比如香草社,但是下的功夫不見得就比直接上幀動畫來的少。因此,如果遊戲本身使用的是幀動畫,那麼基於骨骼動畫帶來的一系列換裝上的便利就不存在了。但是這並不一定就說明做逐幀的換裝會有太大的麻煩。你提的這些遊戲里,我玩過的有泰拉瑞亞跟星露谷,都是屬於比較「低像素」的遊戲,一來部件的拆分不可會像DNF這麼細緻,二來動作的幀數也有差別,因此雖然看上去製作逐幀的換裝工作量會挺大,但相比較而言,這樣的製作方式是在這種選擇下的最優解了。如果真的採取全套骨骼動畫,泰拉瑞亞還好,星露谷的4方向就夠製作組絞盡腦汁了……而且效果也未必會有現在的像素風好。因此,這些遊戲「基本」都是採用的逐幀的換裝。為什麼說「基本」,因為這兩個遊戲中的大部分工具(鋤頭什麼的)和武器的換裝用的就是切片替換。因為很多工具都只有一個旋轉的效果,在過程中並沒有產生視角、陰影等的改變。因此只需要定義每個工具圖片的旋轉點位置,再替換就行了,至於圖片旋轉是引擎自帶還是靠的骨骼就不知到了。我個人傾向於引擎自帶,畢竟只為了這一個效果專門做個骨骼系統太浪費。
最後,spine我記得是可以直接輸出成逐幀動畫的?有段時間沒用過有點忘了。感覺做完骨骼動畫,輸出為逐幀,再P成像素風可能減少工作量?但是這樣的做法實在不適合用在這類低像素遊戲上啊……都用spine了為啥不直接高精2D嘛,根據風格選擇合適的工具才是正道啊。謝邀。
當年中二的時候試做過pixel人物動畫,作為新手一套簡單的人物行走,大概有十幾幀圖片,花了我一整天。畢竟有遊戲開發者的工作就是做pixel art,看網上教程帶講解的三分鐘左右就能修改好一幀。最重要的是結構和動作的理解,然後只要運用好剪切旋轉收縮等技巧,一分鐘一幀估計毫無壓力。這樣看一個複雜點的像素動畫,原創也就是一個小時的事.。有Onion Skin功能的支持後就更簡單了(半透明顯示前一幀圖片),新手都可以快速上手。
除此之外,許多pixel動畫的動作換裝都是可以在原有素材上修改的。本來也就是橫豎幾十個網格,一套衣服就是幾十個像素,換裝也就是在原有基礎上複製粘貼旋轉再滑鼠塗幾下的事,工作量並不大。
比較專業的軟體是GraphicsGale,共享軟體,免費使用大多數功能,收費版可以直接存GIF。Animation Graphic Editor - GraphicsGale當然,用Photoshop做也很方便。謝邀,我不是程序,也沒看過starbound等遊戲的代碼。只能從「如果我來做會怎麼搞」這個角度答一下。我能想到的辦法是這樣的:首先肯定是骨骼動畫,把一件裝備拆成零件跟著人物一起動。人物的動畫只做一套。某些部位不存在旋轉遮擋關係的,直接通過代碼旋轉解決,比如大臂,小臂,大腿小腿某些部位想做一些遮擋關係和旋轉的(比如肩膀)),將這個部位單拆出來,畫出幾種常見的狀態。然後在人物的動畫幀上加參數來標記這個部件當前是哪種狀態,以及和其他部件的遮擋關係是什麼。目前感覺只需要兩個參數即可。
這個工作量並不大,因為角色動畫只有一套,每個動作需要加的參數加一遍就好了。
這樣每件成型的衣服,其實都是由很多更零散的組件拼裝而成。一件衣服的信息只需要記錄組件編號即可。針對starbound這樣的遊戲,我感覺按照以上方法做就可以滿足需求了。基本沒有什麼別的辦法就逐幀畫效果最好。
如果按動作,分塊給圖然後替換,那麼對美術動作設計的要求就比較高,很多(例如換面,轉身)的動作很難表現。並且還需要考慮手擼一個完整的換裝資源匹配邏輯。
個人比較推薦美術少畫幾幀,多畫幾個序列。相比之下比拆圖好操作得到的效果損失也比較小。
更正2點:
2D幀動畫的工作量不算大,而且工具完善。
2D骨骼動畫製作不簡單,尤其是優秀的骨骼動畫,像火柴人這種。
個人建議走幀動畫,找外包也方便。我認為這個問題得根據需求分類討論。如果你做的像素遊戲人物動畫是幀動畫,那麼一般情況下也是最簡單最暴力的方法,就是一幀一幀的重畫給人物換裝。這樣是最穩定的方法。如果你做的人物動畫主要是骨骼動畫,那麼換裝通過spine等軟體應該很容易實現,現在好像已經有免費的替代品了。如果使用 unity,那麼自帶的animate工具可以實現簡單的動畫的換裝,詳情官網有視頻。PS:我記得以前用冒險島(網遊)紙娃娃的時候發現冒險島的人物動畫是把人體,頭髮,武器,眼睛,等重要部位的動畫分開做的,然後在同一坐標系下重疊起來,當然在這種情況下,每個部件必須遵循一個標準才能使其通用,所以這種方式只適用於遊戲中人物大小一樣的情況,否則工作量巨大。實現方法應該不難,做像素動畫的時候分層,每個部件一層,分別導出成幀動畫,然後放到引擎里直接組合成一個節點,換裝時就將這個節點的內容替換一下。
換一個問法,有沒有什麼方式能夠通過較少素材生成2D像素遊戲適用的序列幀。就像3D動畫通過網格x骨骼蒙皮x紋理那樣,用有限種素材組合出非常多的表現。其實渲染部分無論用CPU或GPU都好說,物理模擬才是主要考驗吧。
想到的有目前幾種做法:1,骨骼動畫。最省資源,裝備,服飾都是一個可控制的元件,可通過代碼簡易更替。(spine,egret的龍骨動畫)
2,序列幀動畫,出多套圖。(3dsmax三渲二)
3,多層幀動畫疊加。多用於武器更換。人物一層圖,武器一層圖(武器的動畫幀數等同於人物的動作幀數),疊加渲染到屏幕上。如果要換武器了,就把武器那層替換新的素材。(需要較多代碼控制,以前頁游多用此種做法)樓上說的3D渲染完通過放大縮小的方法沒有試過,我最近比較常使用龍骨,龍骨通過節點換裝還是可行的,如果使用了網格液化,服裝大小有改變,就可能需要調點,還是比較麻煩的(像素用到的可能性不大)。樓主不喜歡使用骨骼,是因為傳統像素美術的情懷嗎? 我大學同學也很迷畫像素,我也挺喜歡的。但是我覺得工作是工作,以需求和效率為上~
作為像素遊戲開發者,我有同樣的疑惑並且邀請了好多人,目前還沒有滿意的。關於製作像素換裝,目前我的解決方法有兩種,但是感覺都不是很高效。一種是使用絕對位置,所有的圖片大小相同,只需要程序替換,但是這樣會使得工程量陡增。二是使用spine、unity 骨骼插件或者龍骨,來製作skin,和骨骼動畫一樣,但是使用骨骼,對於我這樣的傳統像素美術角度上來講,不能苟同。所以還期待有更好的解決方案!
像素遊戲本來每幀的圖就極小,所以顯然最佳方法還是用逐幀動畫來做最好。至於題主你覺得動畫太多工作量太大的問題………可以考慮使用一些批量處理的方式呢?比如3d建模調動畫,然後渲成2d動畫幀,再批量壓圖,比如1024壓到32大小,只要足夠小,放大後就成像素畫了,而且總體畫風統一任務也輕很多,換裝沒工作量,動作還是一套動作,換了裝再渲一次就行,都是機器在跑。只是提供一種思路。
推薦閱讀:
※為什麼使用了SSE2的Matrix乘法速度比沒有使用SSE2的代碼慢?
※有哪些好用的輕量級3D遊戲引擎?
※Windows 支持 DirectX 和 OpenGL,為什麼大多數 PC 遊戲還是 DirectX 開發?
※遊戲的漢化過程是怎樣的?
※如何評價虛擬搖桿在手游中的廣泛運用?