5月11日-12日,由Unity主辦的行業開發者大會Unite Shanghai 2019在上海國際會議中心召開。會上,疊紙遊戲公司技術總監張霽和美術總監柳叢以“閃耀暖暖技術分享:2D到3D的進化與創造之路”為主題進行了演講,闡述了他們在開發3D手遊《閃耀暖暖》過程中所發現的問題與解決的困難。
以下為遊戲陀螺演講整理內容:
大家好,很榮幸在Unity2019中分享《閃耀暖暖》的思路與收穫。這次分享是由兩個人共同完成,我叫張霽,從事遊戲行業8年了,2016年初加入疊紙,參與《閃耀暖暖》的研發,今天我會給大家分享一些引擎自定義和工作流的內容。
另一位演講者是柳叢,他有十幾年的開發經驗,之前參與過多款次世代遊戲的美術研發,今天他將帶來一些美術效果的研發心得。
技術總監張霽:引擎自定義和工作流的內容
關於《閃耀暖暖》,這是疊紙的第二款Unity項目,我們用的引擎版本最初是Unity5,去年升級到了Unity2018。《閃耀暖暖》是暖暖系列的第四代產品,也是疊紙的首款3D手遊。
卡通渲染陷入瓶頸期:很難做到期望的品質
項目開發前期,我們經歷了一些技術和風格上的迭代,起初它甚至並不是一款3D遊戲。初期的嘗試方向是基於spine來做360度旋轉,後面很快轉向3D方向。這個時期我們更多考慮的是如何用卡通渲染還原2D暖暖,如何還原2D暖暖的線條,讓3D線條有顏色粗細虛實的變化,這是當時做到的效果。
在2016年下半年的時候,對卡通渲染的研究進入了一個瓶頸期,因為想做到期望的品質,要求非常的高,對移動平臺壓力過大。同時3D線條的效果與2D暖暖仍然有較大差距。即使這個差距可以繼續縮小,卡通渲染導致的畫面過於相似也會讓新作缺少獨特的吸引力。
這迫使我們回到原點思考問題,換裝遊戲的根本究竟是什麼?我們的答案是漂亮的衣服和多樣的穿搭體驗。我們將其拆分成幾個技術點:衣服的極致細節、穿搭的自由度,以及藝術的傳承和創新,這也是我們這次分享的目錄。
使用多層UV和多層貼圖拼合 實現精度的最大化
首先是細節,暖暖系列的基石。3D遊戲要想達到足夠高的精度,制定合理的美術規格是重要的基礎。我們發現模型面數對性能的影響並不是很大,
影響較高的是貼圖的分辨率。這是使用1024和2048貼圖的表現效果,以及相應的AB佔用和渲染耗時。可以看到即使2048在鏡頭拉近的時候仍然無法達到我們希望的精度,而隨著分辨率的增加,包體內存壓力迅速增加,也不利於持續更新。
為了解決這個問題,我們使用多層UV和多層貼圖拼合,這是達到的效果。精度有了顯著的提升,相當於4096的貼圖。這個例子裡使用了四層UV,四層貼圖,總的佔用比1024的單張貼圖還要小。《閃耀暖暖》的包體目在是二點幾G,有一半是3D的容量,其中一半是貼圖。如果把這部分全按4K重置,包體會達到十幾G。接近一款3A遊戲了。同時加載多張4K貼圖更會直接撐爆手機內存。使用多UV其實也有巨大的代價,渲染耗時從6.85毫秒到8.67毫秒,增加了26%。
我們對UV的優缺點做了總結,除了精度和包體優勢,還有一個好處,就是在製作完成後,有較大的後期調整空間。缺點方面,除了pixel shader負荷增加較多,多UV會導致貼圖數較高。Unity默認採樣器的數量等於貼圖的數量,這樣就要求控制單個材質中貼圖的使用,不能超過16張。
除了硬件和性能上的問題,多UV對於製作也有較大影響。設計時需要考慮圖案規劃,而製作時需要根據情況對UV進行調整和拆解。例如這個比較簡單的裙子,它的UV是這樣的。從另外一個方面,UV拆分過於靈活,也會導致這個流程難以推廣和流程化。
針對這個問題,我們制定了一套工作流來進行標準化,首先是色塊填充構成底色,平鋪布紋,接下來印花,最後是風格化處理。對於複雜的服裝,可以靈活變通,實現精度的最大化。
通過程序化方式進行細節補充 如何程序化閃點
對於一些用貼圖也達不到預期精度,我們會通過程序化方式進行細節補充,比如珍珠和寶石等。作為例子,分享一下程序化閃點的實現方式。
首先,這個是我們期望閃點能夠做到的內容,其實就是一些隨機分佈的點,點與點之間有一些表現顏色和大小的隨機性差異。美術希望能有方便直觀的控制方式,比如用密度貼圖控制哪些地方需要有更多的點。同時,點的大小分佈也能以類似的方式進行控制。其次希望有穩定可靠的閃爍,類似高光的表現。
閃點算法的基礎其實很簡單,其實就是在UV空間上生成棋盤格,這其實是一個2D的問題,我們可以轉化成平面進行考慮。每格的索引就是隨機數種子,使用這個隨機數種子,可以生成偏移量、縮放和顏色和相位。接下來是填充格,可以直接填滿就是方塊。或者柔化處理成菱形或者圓。接下來是根據相位和預設的密度閾值進行剔除,達到密度控制。
處理偏移的時候,會出現越界的問題,就會出現截斷的情況,看起來比較奇怪。處理越界閃點的方式,就是隨著點隨機縮小,把偏移量限制在格內。但是這樣過於規律,幾乎看不出什麼變化。後來我們發現只要限制點的中心在格里就可以了,這樣一共是自己加周圍8個鄰居,共9次閃點相關的計算。可以利用一些情況來合併計算。由於點的中心不能出框,左鄰居只會影響當前格左半邊的像素,右鄰居只會影響當前格右半邊像素,左右兩半邊可以合併計算。同理,上下兩鄰居也可以合批計算,四個對角也可以合併計算。上下左右加邊角加自己,只需要計算4次閃點相關計算。
此外,還可以利用GPU的向量計算能力進一步減少計算量。對於偏移等float2計算,可以兩兩合併為一個float4;對於縮放等矢量計算,可以四組合並,這樣最終的開銷略小於兩次完整的閃點計算。
最後是閃爍處理,我們的處理方式是利用剛才隨機生成的相位值調整nh,進行高光計算。同時用一個統一的閃點光滑度控制閃爍程度。
如何管理shader材質?
由於我們使用了多UV,加上剛才各種材質特性,還需要實現不同光照模型,這樣就會導致我們的shader變成一個龐大的uber shader家族,如何管理shader材質是一個重要的問題。
在工作流方面,一個自定義的材質面板是非常好用的工具,它可以在同一組shader中進行切換。同時可以開關feature,根據特性集來動態調整面板,還可以結合自己的工具進行性能分析、監控和預警。在發佈和runtime方面,海量變種對編譯速度非常敏感,我們去年把引擎版本從5.6升級到2018,因為2018修復了5.6的重複編譯bug,同時大大提升了shader的編譯速度。
光照系統:希望有更豐富的光照變化
接下來介紹一下光照系統,由三部分組成,預烘焙的環境光、主燈以及輪廓光。希望有更豐富的光照變化,單LightProbe的效果太單調,沒有場景,只能烘焙一個預設的Cubemap。我們的解決方法是沿豎直方向增加LightProbe採樣點,讓美術增加點光源和方向光作為額外光源,將其直接關照和Cubemap一起合併到環境SH,運行時根據世界座標的高度在vs中進行插值計算環境光。
如何處理輪廓光?
輪廓光方面,可以強調角色輪廓,增強體積感。使用輪廓光的時候,發現很多衣服存在漏光的問題,這是因為輪廓光沒有ShadowMap計算。注意到漏光區域主要是局部形體,我們可以對Mesh靜態結構進行預計算。
在模型導入在T-pose下後計算網格每個頂點的遮擋信息。對於每個頂點,在其球面上發射若干條陰影光線,進行碰撞測試。對於每條陰影光線,將其轉化到對應頂點的切空間,並將陰影測試的結果累計入2階SH中。最終結果是4個浮點數,可以把結果存到頂點色中。運行時把輪廓光轉換到切空間採樣SH進行遮擋判斷。
這個是做到的結果,左側是有輪廓光的,中間是輪廓光+遮擋,可以看到漏光形象大為緩解。因為SH近似存儲所有遮擋信息,動態情況下也可以工作,即使增加輪廓光,也可以用這個方案進行統一解決,性能開銷不會顯著增加。
如何處理陰影?
下面是陰影處理,由於Unity5的陰影不支持半透明物件投影和受影的,我們自定義了shadow pass。同時根據相機與人物的關係可以提升ShadowMap的利用率。我們把人物的包圍體按豎直方向細分,根據相機和每個小段的相交結果,調整的投影矩陣。
下面是Shadow Map的情況,右側是關閉自適應陰影,左側是開啟,可以看到陰影質量得到了相應的提升。
角色的面部是一個重點關注區域,頭髮尤其是劉海處的投影如果用不透明方式處理會顯得過於生硬。我們的處理方式是使用Screendoor Depth,每4×4像素為一個tile,每像素根據透明度值來順序丟棄寫深度操作。可以看到最後得到的ShadowMap,頭髮末端有一個點陣的狀態。再用一個單獨的四分之一大小RT,對皮膚做屏幕陰影蒙版,再進行模糊處理,以獲得半透明的陰影效果。
這是最後實現的效果,我專門挑了幾個在劉海部分模型非常接近的頭髮,僅有貼圖差異較大,可以看到左邊一個,它的半透過渡比較柔和,所以它的陰影也就會淡一些。而右邊的實體區域比較多,所以陰影比較銳利。
對於正常投影難以表達的微小部件,或者程序化生成的模型,我們會調整bias,以達到強化陰影的效果。
穿搭組合的自由度:在基礎骨架上編輯人物的碰撞體配置
第二個重要的點是穿搭組合的自由度,也是換裝遊戲可玩性的支持。由於暖暖系列中衣服版型設計多種多樣。我們的綁定設計分為基礎骨架和擴展骨架兩個部分。
基礎骨架確定以後,可以在其基礎上編輯人物的碰撞體配置,而擴展骨架則需要設置其物理參數。兩部分數據合在一起,在運行時,由物理系統計算其動態效率。
由於移動平臺性能有限,暖暖系列衣服複雜度又比較高,即使是PC平臺也無法完全使用布料系統來做到我們想要的效果。
我們的物理系統是一個鏈式迭代的質點系統,粒子之間可以添加彈簧,用這種方式可以做到簡單的布料模擬。
如何進行碰撞處理?
關於碰撞處理,粒子和彈簧都可以作為碰撞處理對象。我們的碰撞體有兩類,第一類由跟隨基礎骨架,包括平面碰撞體和膠囊碰撞體。膠囊碰撞體可以調整兩端的大小,讓它更貼合人的形體。
在處理腿與裙子的碰撞時,當腿的移動範圍較小的時候,能夠正確往外推裙子。而腿移動量較大時,腿反而會向內壓裙子。我們的解決方法是用彈簧方向和粒子鏈方向的叉乘向量,作為彈簧的碰撞主方向,當彈簧與膠囊體發生碰撞時,優先朝主方向那一側推。這樣效果更為穩定。
第二類碰撞體跟隨擴展骨架,根據服裝的骨骼鏈和鄰居結構可以構建出虛擬的網格碰撞體。這個藍色的點是當前的物理粒子,線是物理骨骼鏈和鄰居結構。我們可以將其轉換成黃色所示的虛擬網格。在運行時,可以查找粒子所最接近的虛擬網格中的三角形,用這個三角形作為平面碰撞。我們使用八叉樹管理網格碰撞體中的所有三角形,方便運行時快速查找。網格碰撞體的三角形比較大,過渡比較劇烈,在某些情況下可能會抖動,我們允許在運行時動態取最近的四個三角形,根據距離權重插值進行平滑處理。
網格碰撞體的另一個作用是可以處理部件間的碰撞,我們為每類部件可以取一個別名,粒子設置它與哪個別名進行碰撞。如圖我們設置頭髮與“裙子”進行碰撞,接下來我們切裙子的時候,只要通過別名,就可以動態尋找到當前所穿的究竟是哪個裙子,這個裙子針對的網格碰撞體是怎樣的,可以實時調整頭髮與網格碰撞體的碰撞。
除了物理系統,《閃耀暖暖》中還有美術修正的方式,如圖中這個外套,形狀複雜且不規則,如果用物理和碰撞表現會非常差。我們對骨骼用關鍵幀rbf驅動。下面是四個關鍵幀,手臂不同朝向情況下,其他五個骨骼對應的位置與旋轉的關係。在運行時,可以根據手臂的實際朝向,在這些關鍵幀中線性插值。
另一個例子是掛點系統,經歷多輪迭代以後,現在的方式是逐部件組合進行調整,可以控制不同組合的掛點對象、位置以及旋轉。
媒體對張霽的採訪
提問:為什麼從2D到3D,做這樣一個產品的嘗試?
張霽(疊紙遊戲技術總監):我們發現很多玩家在接觸2D的時候,他對裡面的一些服飾細節和圖案非常感興趣,會自己通過微博或者其它官方的渠道上放出的大圖去欣賞上面的細節,我們一開始就希望能夠在新作中把細節的表現做的更好,在遊戲裡面就可以看到所有的細節。
還有就是很多玩家在2D中看到的服飾是一個正面視角的形象,而他其實是很希望能夠知道側面看起來如何,背後看起來又是怎樣的設計。因此我們希望通過3D的表現形式,讓玩家自由觀賞到人物和服飾的每一面,可以呈現出更加鮮活的視覺效果,能給玩家帶來更好的體驗。
提問:從2D到3D的轉變,其實對技術來說都是一個很大的挑戰,在轉變的過程當中有遇到哪些挑戰,也有哪些突破?
張霽:講到技術挑戰這一部分,其實還有蠻多內容,包括我們對於細節不斷打磨的過程,還有就是因為3D展示會更全面,3D的時候不僅要考慮到穿著的問題,還要考慮一些髮飾與頭髮的交互關係,一些部件之間的關係,還有褲形和靴子之間的關係,這部分也會做比較多的技術調整。讓同一個髮飾配合不同的髮型會有不同的佩戴關係和方式,在同時穿喇叭褲和靴子時,褲腿會自動塞進靴子裡,這些都是我們會遇到的挑戰和突破。
提問:在做完這樣的一款產品以後,對你們團隊來說,有什麼樣的提升?
張霽: 《閃耀暖暖》是疊紙的首款3D遊戲,在這之前其實疊紙沒有3D開發的相關經驗,也沒有3D開發相應的團隊。在《閃耀暖暖》的開發過程中,我們打造出來這樣一支有執行力,能夠達到我們目標和製作要求的團隊,積攢經驗以後,就可以挑戰更高的目標。
提問:能進一步分享一下《閃耀暖暖》在人物、布料等渲染方面你們都做了哪些嘗試?
張霽:關於你剛才提到的材質問題,其實這中間涉及比較多的是兩類,一個是《閃耀暖暖》本身相關的,包括角色的皮膚、頭髮,還有眼睛。我們不僅要考慮暖暖系列與《閃耀暖暖》中間的傳承,同時也要保證3D的表現效果,需要在卡通風格和寫實中間取得一個比較好的平衡。
比如說眼睛,我們裡面有寫實的內容,像視差和邊緣的透光效果,同時也會有暖暖系列所特有的傳承,像瞳孔的貼圖風格、眼睛裡的高光這些東西,是有一個傳承關係在裡面的。
提問:你剛才提到的你們打磨了很多細節上的做法,打造細節的方法有沒有一定的思路在裡面?
張霽:關於打造思路,就是我剛才所說的,我們希望大家在《閃耀暖暖》裡面就能夠看清楚所有的細節,相當於一開始就是奔著這個目標去的。我們剛開始會做基準測試來測定什麼樣的面數、什麼樣的分辨率能夠達到我們的要求。分辨率達不到我們的要求的時候,我們是自己開發了一套流程來幫助我們達到這樣的要求。在服飾搭配的問題上也是一樣的,不同的服裝搭配希望能夠儘可能多的兼容,也希望服飾動起來能夠有流暢自然的物理動效,不要看起來那麼的僵硬死板。
提問:Unity對《閃耀暖暖》開發的實現有哪些功能或者插件,你覺得對你們來說幫助是比較大的?
張霽:Unity特別靈活,我們用的是Unity5進行開發,那個時候還沒有SRP,但Unity5的接口仍然可以做到很多事情。所以,我們的光照和陰影、材質這部分都是我們自定義的。Unity的材質部分也非常豐富,它能夠有效地支持各種視覺效果的研發。
此外,Unity的自定義編輯工具特別方便,我們就用它開發很多遊戲裡面用到的工具,這些工具是我們開發流程中重要的組成部分。
疊紙遊戲美術總監柳叢:美術上的傳承與創新
很高興今天能來這裡為大家分享,今天我為大家介紹下開發過程中的一些重點開發內容,我的標題是“傳承與創新”。今天會講到《閃耀暖暖》比較重點的地方,就是布料的材質效果開發,還有2D風格的表現。
通過認知創新來突破高度,通過流程創新來進行自我革新。這張紋理看上去非常簡單,但其實並不簡單,我給大家講講。
首先,做一件事情的時候肯定要進入一個比較好的狀態,我當時的狀態是幾乎是走火入魔了。經常會蹦出一句:“這材質很PBR!”有時候陪我老婆逛街看到衣服就想摸一摸,搓一搓,拍一拍照。但這個相片很明顯是擺拍。
那段時間,我手機裡幾乎都是這樣的狀態。因為我覺得很多東西需要基於真實去進行考量,基於真實對它進行美化和改良。藝術畢竟是源於生活而高於生活的存在。在網上我們可以蒐集很多自己需要的資料,但是網上什麼資料都有,有好的有壞的。所以要做出高品質的東西就要掌握高品質的信息來源,畢竟眼界決定境界。
那麼收集這麼多資料幹嘛呢?總不能是佔內存的。所以要把資料變成有價值的信息。我會對以上我收集的資料進行一些提取,先會做一些分類,然後做簡化信息,然後做一些重點提取。
我把一些資料按照自己的分析提取,最終把它彙集成了一個二維編織圖。我認為編織這塊是組成紋理的非常重要的部分。
大家可以看一下,根據不同的編制方式,紋理效果差距是非常大的,我們可以先不要看這個圖片上的顏色的變化。其實這樣編的方式有非常多種,可能我現在研究到的程度,也就不到百分之二三十。一些重要信息已經整理出來,拿就要先試試看,剛開始我選擇的是一個比較快捷的方法,因為用建模製作紋理,比較直觀,得到的貼圖精度也很好,但是也存在很明顯的短板。
這是一個法線貼圖的效果,問題很明顯。製作成本非常大,後面的持續修改成本也是非常大的。但是有問題是件好事情,證明還有很大的優化空間,所以要在現在的流程上做一些明顯的改變。
程序紋理:通過線性的方式對材質進行管理
我有幾個方式,一個是從繁到簡,一個是從慢到快,一個是從難到易。可以看到旁邊的瑞士軍刀,看上去非常臃腫的感覺。畢竟工欲善其事,必先利其器,所以我們要做工具上的優化,這時候有一個叫程序紋理的方式進入了我的視野中。
當時嘗試了下這個叫Substance Designer軟件,來做程序紋理。這裡舉個比較簡單的例子說明下,這個軟件是通過線性的方式對材質進行管理,我可以在這個線性的流程做刪除和添加調整來改變結果,但是這樣就需要一個很好的規範。所以在製作的時候需要分區,這樣修改起來會更方便,在動一個區域的內容就不會影響到其他區域。
遊戲隨著遊戲行業內各類自動化流程的到來,使用這樣的流程,未來可以更快的融入自動化的工作流,加速項目的開發效率。
這裡大致給大家做了一個簡單的範例,我當時做這個紋理的時候分了三層,一個基礎層,一個隨機層,還做了一個細節層。這是完成效果的渲染圖。
這是我當時做的第一層,做了一個簡單的編織效果,這是這一層渲染的效果。
再通過一張隨機的機理,針對上面的紋理,做了一些隨機性變化。可以理解成,這個布在使用一段時間以後會產生磨損,導致它有一些類似於這樣,有些地方層次比較深,有些地方層次比較淺的隨機感。
最終我在這裡,我加了一些線頭的效果,加什麼東西都不重要,主要是順序關係。
這是剛才看到的渲染圖的效果。這裡還做了一些其他紋理的效果,做這些紋理的時候,我只針對第一層的紋理層,做了紋理圖案的修改,後面兩層我沒有做任何的修改。
試錯在研發過程中是非常重要的一個環節,試錯需要很多手段去做,比如說測試環境,需要結果去論證。當時我使用了這樣一塊布料檢查我的布紋效果。其實我們只需要其中一部分,我們需要幾個特質,一個是近景,一個是中景,一個遠景。在不同空間下,不同的紋理朝向,就會在這個載體上很清晰的顯示出來,這樣我們就知道紋理效果的好壞了。同樣對這種效果我們也需要用更多的可能性對它進行驗證。
比如這裡,我弄了一個黑灰白的布料,還有粗糙的光滑的,來驗證它的結果,是否符合我們的要求。
如果需要更多的驗證結果,可以嘗試這樣的色塊變化,但是這樣的結果會比較累。
再介紹一下我們材質編輯思路,ABCD各代表每個材質模塊。通過不同的組合,也就只有11種變化。但是我們在每個材質功能下做做了很多的編輯模式,所以如果是這樣的話,那我們的變化就有600多種。我們在Unity裡開發了一套自由度非常高的材質編輯工具,是這樣的,相當自由。
這些系統開發,我們會編輯出非常多種類的材質。現在我們裡面的材質數量已經極其龐大了,而且我們還在一直擴充材質的類型。
風格傳承:選擇暖暖系列獨有的筆觸感
這裡再講一下我們的風格問題,風格的話需要一個最具有代表性的特徵,我們當時在選風格的時候選擇了筆觸效果,這也是暖暖系列獨有的風格。大屏幕可能有一點曝,可以看到3D的這個效果,胸口類似於筆觸的變化。
這裡是一個成品的效果,我們做了一層類似於AO的方式,在上面繪製了我們的筆觸效果,然後添加到其他的貼圖在上面。
突破:貼圖精度、特殊材質表現、開發工具
突破的話,我們做了很多特別的突破,比如說貼圖精度,剛才張霽也介紹了貼圖的精度方法。還有特殊材質的表現,在開發工具上我們也進行了革新。
這裡可以看一下,這是我們目前的京劇衣服的細節表現。現在我們這個精度,幾乎可以放在真人高度的顯示器上面去,讓玩家可以直接觀看。這邊我們做了比較特殊的材質,比如鐳射的材質效果,為了研究特殊材質,我也在蒐集很多類似的資料。
我們近期也加入了3D掃描這樣的流程,可能3D掃描最早源於工業行業,會用它做逆向工程。在遊戲行業,現在也開始被越來越多的人關注,通過掃描實物,獲得一個模擬的3D模型。
掃描對我們來說,意義就是兩點,一個是還原真實,一個是高效產出。我們操作的時候,發現掃描模型幾乎不可能直接使用,很多東西需要修改,但是掃描出來的東西有一個符合真實的外輪廓,這個東西,很多美術製作人員在製作的時候很難抓準。但是對我們來說這個不是最重要的,產出對我們來說才是非常重要的,我發現投入製作後效率提升了700%,不僅提高製作效率,也降低了反饋成本。
這是我們使用3D掃描儀的實錄,非常快就可以得到所掃描物體的高模模型數據。
遊戲媒體對柳叢的採訪
提問:在提高效率方面有什麼建議嗎?
柳叢:效率的話,其實現在遊戲行業的開發軟件以及一些新的工作流程,在這兩年更新的非常快。我覺得大家應該多瞭解一些行業中新興的東西,再想辦法把新興的東西和好的工具融入到自己的工作流程裡面,這樣能幫助我們有效的提高工作效率,我們現在在這塊也做了很多的探索和努力。
提問:你好,產品系列有很多不一樣的部分,那麼對不同風格的把控,你有什麼樣的偏向?比如說之前做調研,你可能更喜歡哪個風格往這個方面偏向?
柳叢:這個問題並不存在,我們做這個遊戲的時候考慮到它應該是一個包羅萬象的產品,我們想要去呈現3D極致百變的風格,不可能只針對玩家喜好去做一些迎合,比如說玩家喜歡什麼我們就多做什麼,這是不存在的。並且暖暖系列遊戲有它自己的世界觀設定,遊戲裡的奇蹟大陸有七大國紀,每個國紀都有自己獨特的服飾風格,所以在《閃耀暖暖》裡你能看到不同風格的服飾,像古風、科幻、個性化的,也有日常的。
玩家喜歡的東西是很多元的,我們要做的是在遊戲裡給玩家帶來更多的展現,讓他們可以在這裡能找到屬於自己的那一份滿足。我們不會去限制這些東西,反而我們會想去做更多來滿足玩家,我們也有去做一些符合當下時尚潮流的設計,滿足玩家對當前潮流的需求。
閱讀更多 遊戲陀螺 的文章