2015年11月24日 星期二

Unity開放高階的多人連線網路層原始碼

作者:LÁRUS ÓLAFSSON 原文連結

開源的意義是甚麼?


Unity的多人連線功能可以分為高階和低階兩個階層,低階是用來傳輸層,大多時候是
過NetworkTransport 類別進行溝通。這一層功能在Unity引擎中是用C++寫的,主要目的是優化Socket接口的通訊傳輸。在這上面我們提供了用C#編寫以DLL形式存在的高階API。這些文件我們已經開放原始碼,開發者只需遵守MIT/X11協議,便可以根據自身需要修改成自己的。

兩個抽像層的使用介紹


DLL文件我們可以分為兩個部分:高階和低階。當使用NetworkClient 和 NetworkServer類別時,你可以在低階層手動建立連接,而使用NetworkManager和NetworkLobbyManager則可以對高階進行存取。將上述NetworkClient等組件加到游戲物件後,即可在游戲物件的inspector窗口獲得相應的鏈結選項以及預設的HUD組件。當然你也可以修改、延伸這些類別,自訂行為和功能。上述內容都是基於C/S架構以及伺服器授權模式實現。當你想了解和使用通訊層,或者去實現你自訂的高階API時,這些類別會是絕佳的參考資料。

注意事項


我們所提供的資源包含三個Visual Studio專案:分別針對Runtime、Editor以及Editor-Runtime。最後一個是在編輯器裡的Runtime模式,當在編輯器進入Playmode時,由於Unity引擎內部的Update方法是由Unity引擎內部觸發,所以必須讓它能呼叫到NetworkIdentity.UNetUpdate(),否則會無法正常執行。在編輯器中,我們還會即時進行一些程式編譯,這個工具叫做UNetWeaver,我們也正在討論是否將這部分內容開放源碼。這個工具負責分析NetworkBehavior並產生序列化程式碼,像是Command/ClientRPC程序或各種查詢表格。有些東西在擴展時必須注意保持名稱一致(如SyncVar、Command等..),以確保對應的功能正常。


現在,你可以從 這裡 下載這些原始碼

2015年11月16日 星期一

Web Player離線安裝包提供下載

由於各大瀏覽器廠商陸續宣佈將不再支持瀏覽器外掛程式(NPAPI),所以我們在10月宣佈了:從Unity5.4版本開始將不再支持WebPlayer(本文截稿時間時最新版是Unity 5.2)。
現在我們開始提供這些對應版本的離線Unity player,讓開發者可以放在玩家能夠下載到的地方,以利管理。

現在,我們將提供給開發者,對應版本的Web Player離線安裝包。

· Unity5.3 版本:將與5.3正式版一起發佈。

· Unity5.2版本

· Unity5.0-5.1.4 版本

· Unity3-Unity4.6.9版本


壓縮包中包含:

· UnityWebPlayerFull.exe:正常的player,可在Windows平臺下32位的Firefox和IE中運行。

· UnityWebPlayerDevelopment.exe:開發版player,可在Windows平臺下32位的Firefox和IE中運行。

· webplayer-x86_64.dmg: 正常的player,可在OS X平臺下的Firefox和Safari中運行。

以上player已經包含了庫,不需連網即可執行,需要注意不同版本難免出現相容性相關的問題,請測試完畢再更新。

如:已經安裝4.6.9版本的player只能使用Unity3.x-4.6.9製作的內容。無法執行Unity5.0以上版本的內容,需要重新下載對應的安裝包。


2015年11月12日 星期四

淺談THE BLACKSMITH製作流程:場景搭建、著色和光照


作者:SILVIA RASHEVA 原文連結

在本系列之前的文章中,我們介紹了The Blacksmith的創作團隊,與短片美感的製作流程。

由於打算用Unity5來開發這個專案,所以我們必須把更多的注意力轉移到技術問題上,在這篇文章中,我們將著重場景建設、著色和照明。

引擎版本和內部測試


The Blacksmith在很早版本的Unity alpha和 beta版本中進行開發,並在Unity 5.0.b22中最終穩定下來,並發佈。整個專案也跟著升級到了發佈時的Unity版本。

要知道使用一個研發中的引擎代表著會有許多不穩定因素,導致產品製作效率低下。所以我們每周都要面對兩難題,到底是要升級新版本更新?還是跳過一個版本避免打斷團隊現有的工作步調

此外,The Blacksmith中的動畫和鏡頭序列是基於Director系統的。它是Unity故事工具的一部分,而Unity故事工具在當時仍處在發展的早期階段(它的發佈日期迄今也沒有公佈)。

我們在專案進行到差不多一半時,為了添加故事工具功能,每次的Unity更新我們都得重新把系統集成到新版本。一直持續到我們最終發佈為止。

因為我們是Unity的內容製作團隊,我們會提出bug或功能需求給核心團隊,然後祈禱他們能快點搞定XD。假如他們搞不定,那我們就只好自己想辦法了:-(

事實上,我們提出的反饋會和廣大Unity用戶的需求放在一起被權衡,通常不會得到任何優先待遇。

場景搭建

在The Blacksmith的製片初期,我們便在Unity中利用白模搭建了一個場景。


我們從Asset Store找來了一些素材,比如Quantum Theory的Better Rocks and Cliffs,非常有助於原型的設計,同時這也能夠盡早開始視覺相關的開發工作。我們
很快做出了細節豐富的場景:


根據我們的故事情節,我們在前期製作過程中需要做的是,利用一組相機進行迭代,緩緩地接近所要拍攝的景象。在此基礎上,我們需要劃分好每一個鏡頭都需要的哪些資源。同時,角色的3D美術設計也正式開工。

對我們來說,盡可能地保留對每一個鏡頭中的藝術把控能力對我們而言非常重要。因此,我們基於Unity編輯器專門擴展了一個場景管理器,然後用它為每個鏡頭中的對象分組。

我們用它來啓用或禁用某些物件,或更改它們的屬性-地點,規模,材料等等-來求得一個特定的鏡頭,以獲得更好的構圖。同樣地,每一個鏡頭都可以擁有自己特定的光照設置,也多虧了實時全局光照系統,我們可以對鏡頭切換之間的光照做出即時改變。


著色


Unity基於物理的著色器使用和配置起來都相當容易上手。

我們對它的運用可謂貫穿了整個專案。這個專案中,我們並不打算開發一個專門的皮膚著色器,於是我們就直接採用了Standard Shader標準著色器:
挑戰者 - 從編輯器抓下來的圖

Unity 5中標準著色器最大的優勢之一就是:我們可以根據專案需求隨心所欲地擴展和修改它,因為它就是為此而生的。

標準著色器的源碼可以從這兒下載:http://unity3d.com/get-unity/download/archive(在對應平台的「下載」下拉選單中選擇「Built in Shaders」)。

有了源碼後,在此基礎上開發具有專案針對性的著色器是非常容易的,我們在The Blacksmith中做了很多這樣的工作。我們下面就來分享一些例子。

我們修改了標準著色器,使之能夠感知到我們已經在專案中添加的自定義著色器。我們對這種修改進行了兩個不同版本的運用:一個用在環境上(例如:讓它感知到我們的大氣散射)另一個更複雜一些的用在角色上(用來感知我們獨特的角色陰影和皺紋貼圖)。後者的界面用滑塊對鏡面貼圖選項做了小小的增強。




為了讓維京挑戰者的面部更加生動、擁有更多的細節,我們決定開發一個感知形狀融合的皺紋貼圖解決方案。基於判斷最為突出的形狀融合,我們在一個屏幕空間的預渲染通道內混合運算了法線和遮蔽紋理。

然後直接從這個屏幕空間將經過採樣和解包的法線和遮蔽數據輸入到一個標準的著色器變量中,從而取代了常規的材質。




標準著色器非常適用於絕大多數現實世界中存在的材質,可惜的是不包含頭髮。雖然頭髮的渲染從來都不是The Blacksmith的著重點,我們依然希望能做出各向異性的頭髮高亮,並使它們能正確地整合其他材質所用的物理的環境。
為了實現這一點,我們修改了一個標準著色器,使其在採用了一個不同的反射率分布模型的同時,保留了反射和光照探測的採樣。

頭髮著色器 - 一樣是從編輯器直接抓圖


我們希望鏡頭中有一些柔軟的植物,同時探索出在場景中繪制不同植物的簡單方法。這裡的解決方案是對Unity內置的植被功能分兩個階段進行擴展。

一個叫做PaintJob的小工具能生成一個臨時地形自動打包場景中的靜態幾何物件。加上一個簡單的打包規則控制,這使我們能夠圍繞地形和建築在地面網格上繪制植物地形。


渲染時,我們再將繪制好的數據放到一個自定義組件當中,這個組件專門用來處理視野依賴的排序、動態全局光照的採樣,管理遮擋關係和LOD層次。



光照

我們採用分層的方式來分離照明人物和環境,並為每個光源分別配置了各自的剔除遮罩。這樣一來,我們對人物和環境都有了更好的控制。這種方法常被運用在電影拍攝,會根據角色呈現的位置而設置特定的光照條件。

為了改進角色的外觀,我們使用了額外的局部光照來柔化他們面部的陰影部分(暗部)。




因為角色形象的呈現可謂是全片的重中之重,在DEMO中,我們有大量的特寫鏡頭,必須確保這些角色能夠以很高的分辨率接受陰影。為此,我們增加了一個獨立的陰影紋理,專門用來處理角色的陰影。




在鐵匠鋪中的光照被設定為是從牆壁和屋頂的鏤洞中透射進來的。這種效果是通過把一張恰當的圖案當成光打在場景來實現的。



對於海洋和海灘的淺窪,我們想要表現物體穿入水面的尖銳感表現,當其距離越深時所具有的散射效果就越強。

我們最終打造出了類似於水面反射的功能,採用了一個的深度感知的計算方式,來計算出一個變數給surface smoothness。最後輸出結果放入到一個標準的著色器,然後再用我們定制的反射紋理來替換反射的Cubemap(方塊貼圖)。




在The Blacksmith創作系列的下一篇文章中,我們將繼續探討DEMO團隊所做的一些接後期處理,包括動畫和音頻和視頻的製作方式。
所以欲知後事如何,請持續關心我們的The Blacksmith專案文章分享!

2015年11月10日 星期二

Unity引擎打造遊戲登陸APPLE TV

我們很高興在此分享一些在Apple TV上發佈採用Unity開發的遊戲!Unity正在與開發者緊密結合並全力支援tvOS的所有特性,包括On-Demand resources和全新的Siri Remote。非常感謝開發者給予了我們大量優質的回饋。以下是一些由Unity開發者所創造出的出色遊戲:

1.Breakneck
2.Crossy Road
3.Bruce Lee: Enter the Game – Unchained Edition
4.TanooJump
5.Beneath the Lighthouse
6.Spin Sports
7.Alto’s Adventure
8.Couch Heroes Vs The Dungeon
9.Evel Knievel
10.Tiny TrackZ
11. 想瞭解更多,請關注Madewith.Unity.com上的列表。


開發者們對於將Apple TV發展成為下一個大型的遊戲平臺抱有極大興趣。圖像的高保真度和A8晶片出色性能為大屏遊戲提供了優越的環境,使遊戲在實現優越畫質的同時,能保持類似Apple的App store那樣廣闊的分發模式。

一些開發者告訴我們,Apple TV上的Siri Remote,加上大面積的Touch Surface,讓他們的遊戲體驗比在任何主機式TV螢幕上的體驗更具代入感。當你添加MFI遊戲控制器或是將你的遊戲連接到已有的iOS設備上時(如同Crossy Road的開發者在早先Apple的秋季發佈會上演示的那樣),它會帶來在以往任何Apple設備上都無法實現的豐富的多人遊戲體驗。

當然,對於許多已經在iOS平臺上擁有遊戲,曾考慮進軍tvOS平臺的開發者來說,一旦Apple開放這一領域,他們就會準備全面投入其中。而Unity不僅正在努力使這些(擁有iOS遊戲的)開發者的願望成為可能,也將幫助其他白手起家的開發者創造出(適用於這一新平臺的)遊戲。

Beneath the Lighthouse


以下是開發者使用Unity開發Apple TV遊戲的建議:

  • 去真正地習慣並瞭解Siri Remote, 並好好地利用它設計你的遊戲。記住你能在觸控板上完成輕敲和點擊;)-Strange Flavour Ltd. – Tiny TrackZ
  • 不要認為觸控板能完全取代觸控式螢幕。Touch Surface要小很多,而當你看不到要觸摸的物件時,感覺會有不同。-Nitrome – Beneath the Lighthouse
  • 當前Apple TV上還不能植入廣告,所以仔細考慮你的貨幣化策略。-Nitrome – Beneath the Lighthouse
  • 我們建議儘早處理檔的大小(資源,音效,打包),即使在“小型專案”中,Apple規定的200Mb上限很快就會使大文件變成問題。On-Demand-Resources系統很棒,但需要經過實踐,花費一些時間來習慣它。-Polar Beard – TanooJump
  • 測試你的操控,一定要測試,還要跟其他人/朋友一起測試。儘早地測試遊戲的操控方式,因為使用Siri Remote來進行遊戲操作是一種全新的方式,它會為玩家帶來新穎有趣的操作能力,但也會產生新的問題與回饋。-Polar Beard – TanooJump
  • 放手去做!如果你覺得你的遊戲在Apple TV上會很好玩,就不要再猶豫了。Unity對這個平臺的支持非常棒,你可以非常順暢地進入這個新平臺。千萬別忘了Unity社區!他們會給你無盡的幫助,資源和啟發。你會瞬間克服所有障礙。-Mass Creation – Corridor Z
  • 為你自己節約一些寶貴的開發時間,去訪問Unity Asset Store吧。無論是使用者介面的工具,玩家操控繪製的程式或是人工智慧系統,你都能從Asset Store中眾多實用而且功能強大的資料庫中找到,然後應用到你的專案中,使你能專注于遊戲開發。-Hibernum Creations – Bruce Lee: Enter the Game – Unchained Edition
  • 確保在你的專案中使用Unity的Asset Bundles功能。這不僅是一個很好的實踐,而且它會促進Apple On-Demand Resources的實施,進而極大地幫助你在Apple TV上的發佈。-Hibernum Creations – Bruce Lee: Enter the Game – Unchained Edition
  • 注意iOS和tvOS之間的差異。不要認為你在iOS上使用每一款外掛程式和功能在tvOS上都同樣適用,在觸控式螢幕上適用的輸入範式也不能完全照搬到Touch Surface上。利用Unity節省的開發時間,為新的Apple TV平臺改進用戶交互,並且改善UI的功能表設計,可以分析並借鑒Apple自身的UI作為改進的範本。-Touchfactor – TouchFish
  • 當你把iOS的遊戲移植到tvOS時,仔細考慮你的UI結構,保證可靠的UI交互。確保它符合“Apple的人性化介面指導”。如果你認為需要使用On Demand Resources,儘早地著手實施,並將它併入你的工作流程中。-PikPok – Breakneck

以下是已擁有&即將發佈的支援Apple TV的功能列表:

1. Unity’s joystick API對Apple TV Siri Remote的支持
2. Unity 5.2.1版本中可通過Asset bundles實現的ODR
3. 將tvOS平臺作為一個單獨的構建目標進行部署
4. 分層圖像和tvOS Top Shelf支援
5. 改良版的Unity UI功能,支援TV控制器的導航交互
6. Bitcode支持


針對Apple TV的Unity功能將在11月底進行公測。如果你擁有Unity Pro,想更早地加入測試,請聯繫我們加入內測
Breakneck

著作人