150 likes | 306 Views
Unity при побудові 3D ігор для Windows 8 та Windows Phone. Олег Прiдюк Технічний євангеліст, Unity Technologies. Oleg Pridiuk Technical Evangelist. Multi platform Perfect support Ultimate flexibility. Why people choose Unity?. Unity is multi-platform. Windows Windows 8, RT, WSA
E N D
Unity припобудові 3D ігордля Windows 8 та Windows Phone ОлегПрiдюк Технічний євангеліст, Unity Technologies
Multi platformPerfect supportUltimate flexibility Why people choose Unity?
Unity is multi-platform • Windows • Windows 8, RT, WSA • Mac • Web • Flash, Google NaCL, Facebook, Unity plugin • Ubuntu Linux • Mobiles • BlackBerry 10, Android, iOS,Windows Phone 8 • Consoles • PS Vita, PS4, PS3, Xbox 360, Nintendo Wii U • Union • More to come!
What does it take to port a Unity game? • Define a “game” in this context? • Core gameplay – game logic, scenes, assets • Wrappers – monetization, social, plugins • Addons, process to update and patch • Assuming “to port” means • Core gameplay launches on a new platform • Unity takes care of what it can control • Texture compression, sounds, scripts, scene setup (physics, light probes, lightmaps, navigation, occlusion, etc) • Cross platform plugins, if applicable • Performance?
Windows 8/RT Device Capabilities • Windows 8 & RT devices scale in performance from phone-equivalent all the way to high-end multi-GPU gaming desktop • But most devices are mobile or have mobile GPUs • Touch is a first-class citizen • Minimum device resolution is 1024x768 • Windows RT has a minimum DirectX feature level of 9_1 • May not have 4k texture support • May not have simultaneous render targets
Get familiar with the platform • Unique features & behaviors of Windows 8/RT and Unity for WSA • Application design • Hardware: touch, battery, x86, ARM, x64 • Always on approach for devices • Changesto the runtime APIs for Windows Store Apps and WP8 • Many new Windows devices have a trackpad and touchscreen that can be used simultaneously • Understand performancehotspots and optimizationtechniques – both hardware and software
Unity for WSA and WP8 • Unity’s Windows Store runtime is built on .NET • Unity generates a tweakable Visual Studio project • C# debugging in Visual Studio • Simplifies native code plugin integration • Your ported code pretty much ‘just works’ on Windows Phone 8 • WSA can only consume WinRT Components (no unmanaged DLLS) • Boo, JavaScript not fully implemented • GameObject.SendMessage lacks type conversion • Network classes not supported (WWWworks) • Cloth not supported
Unity for WSA and WP8 • Interop in Unity for Windows Store Apps is expensive • Minimize the Unity APIs you call each frame, including Component references public class example : MonoBehaviour { void Update() { transform.Translate(0, 0, 5); } } public class example : MonoBehaviour { private TransformmyTransform; void Awake() {myTransform = transform; } void Update() {myTransform.Translate(0, 0, 5); }}
Disallowed Windows APIs • HashTable - use a Dictionary • Better performance for value types • Not necessarily thread-safe • Type-constrained • ArrayList - Use a Dictionary or a List<T> • Possibly a small loss of performance • System.Xml.XmlDocument- don’t use XML • But if you have to… use System.Xml.Linq • Better is to use JSON or YAML • System.Threading.Thread • Use ThreadPools - system.threading.threadpool • And a few thousand Win32 functions • http://msdn.microsoft.com/en-us/library/windows/apps/hh464945.aspx • SuspendThread, GetThreadContext, SetUnhandledExceptionFilter, Winsock2, CreateThread, HeapCreate, Sleep, etc.
Plugins in Windows Store Apps Windows Store Apps can only consume WinRT Components • Unmanaged legacy native code DLLs aren’t allowed • http://msdn.microsoft.com/en-us/library/windows/apps/hh441569.aspx The Unity Editor is still based on Mono • Make sure your WinRT Component can also be built as a legacy native code DLL (Windows Store functionality can be stubbed out)
Optimizing performance • Instantiating and Destroying GameObjectsis expensive • Reuse when possible! • Don’t Use • Desktop shaders • Terrains • Realtime shadows • Dense particles • Use structs instead of classes • Classes are stored on the heap, structs on the stack. • We have more on this in docs…
Demo time! Small overview of Unity tools
Test against the zooRun the WACK oftenParticipate in the beta! In order to ship to Windows 8 ecosystem well…