Unity Software (Shanghai) Co. Ltd.

Similar documents
PERFORMANCE. Rene Damm Kim Steen Riber COPYRIGHT UNITY TECHNOLOGIES

Game Design From Concepts To Implementation

Optimizing and Profiling Unity Games for Mobile Platforms. Angelo Theodorou Senior Software Engineer, MPG Gamelab 2014, 25 th -27 th June

NOTTORUS. Getting Started V1.00

Introduction to Unity. What is Unity? Games Made with Unity /666 Computer Game Programming Fall 2013 Evan Shimizu

8iUnityPlugin Documentation

Terrain. Unity s Terrain editor islands topographical landscapes Mountains And more

8iUnityPlugin Documentation

VEGETATION STUDIO FEATURES

Whiz-Bang Graphics and Media Performance for Java Platform, Micro Edition (JavaME)

Adding Advanced Shader Features and Handling Fragmentation

2-3. What is Unity? 4-5. Asset Store. Lighting & Rendering Performance. Scripting. Efficient Workflow Mecanim. Pathfinding.

Unity Tutorial. Fall /15-666

Squeezing Performance out of your Game with ATI Developer Performance Tools and Optimization Techniques

Terrain. Unity s Terrain editor islands topographical landscapes Mountains And more

IAT 445 Lab 10. Special Topics in Unity. Lanz Singbeil

Game Development for

Easy Decal Version Easy Decal. Operation Manual. &u - Assets

This allows you to choose convex or mesh colliders for you assets. Convex Collider true = Convex Collider. Convex Collider False = Mesh Collider.

Godot engine Documentation

Table of Contents. Questions or problems?

ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

Bonus Chapter 10: Working with External Resource Files and Devices

The Application Stage. The Game Loop, Resource Management and Renderer Design

Mobile Graphics Trends: Applications. Marco Agus, KAUST & CRS4

Unity Scripting 4. CS 491 / DES 400 Crea.ve Coding. Computer Science

PixelSurface a dynamic world of pixels for Unity

About the FBX Exporter package

Profiling and Debugging Games on Mobile Platforms

Understanding XNA Framework Performance. Shawn Hargreaves Software Development Engineer XNA Community Game Platform Microsoft

The Future of #GPU Rendering #GTC17 #Octane

Optimisation. CS7GV3 Real-time Rendering

Hardware Accelerated Graphics for High Performance JavaFX Mobile Applications

Mali Developer Resources. Kevin Ho ARM Taiwan FAE

Working with Metal Overview

The PowerVR Insider SDK. PowerVR Developer Technology

Managing and Optimising for numerous Android Devices

Developing the Roadmap - Director Next Survey

Memory Management: High-Level Overview

RSX Best Practices. Mark Cerny, Cerny Games David Simpson, Naughty Dog Jon Olick, Naughty Dog

Radeon ProRender and Radeon Rays in a Gaming Rendering Workflow. Takahiro Harada, AMD 2017/3

the gamedesigninitiative at cornell university Lecture 9 Memory Management

Copyright Khronos Group, Page Graphic Remedy. All Rights Reserved

Coding OpenGL ES 3.0 for Better Graphics Quality

Shaders : the sky is the limit Sébastien Dominé NVIDIA Richard Stenson SCEA

the gamedesigninitiative at cornell university Lecture 10 Memory Management

Could you make the XNA functions yourself?

GPU Memory Model Overview

Building scalable 3D applications. Ville Miettinen Hybrid Graphics

CS345/DIGM465: Computer Game Development: Understanding Torque

Metal for OpenGL Developers

Enabling immersive gaming experiences Intro to Ray Tracing

Adding a Trigger to a Unity Animation Method #2

Rendering Objects. Need to transform all geometry then

GPU Memory Model. Adapted from:

Another difference is that the kernel includes only the suspend to memory mechanism, and not the suspend to hard disk, which is used on PCs.

Optimizing for DirectX Graphics. Richard Huddy European Developer Relations Manager

Introduction to Mobile Development

INTRODUCTION 3 SYSTEM REQUIREMENTS 4 PACKAGE CONTENT 4 CHANGELOG 4 FAST GUIDE 8 PSD2UGUI IN DEPTH 12 PSD LAYERS STRUCTURES 14

Extract from NCTech Application Notes & Case Studies Download the complete booklet from nctechimaging.com/technotes

developer.nvidia.com The Source for GPU Programming

About Phoenix FD PLUGIN FOR 3DS MAX AND MAYA. SIMULATING AND RENDERING BOTH LIQUIDS AND FIRE/SMOKE. USED IN MOVIES, GAMES AND COMMERCIALS.

Parallel Programming on Larrabee. Tim Foley Intel Corp

Google SketchUp/Unity Tutorial Basics

Streaming Massive Environments From Zero to 200MPH

Engine Development & Support Team Lead for Korea UE4 Mobile Team Lead

Spell Casting Motion Pack 5/5/2017

LPGPU Workshop on Power-Efficient GPU and Many-core Computing (PEGPUM 2014)

NVIDIA Developer Toolkit. March 2005

Optimizing DirectX Graphics. Richard Huddy European Developer Relations Manager

Copyright Khronos Group Page 1

Achieving Console Quality Games on Mobile

COMP 4801 Final Year Project. Ray Tracing for Computer Graphics. Final Project Report FYP Runjing Liu. Advised by. Dr. L.Y.

is.centraldispatch Documentation

Tutorial: Using the UUCS Crowd Simulation Plug-in for Unity

Damian Nowakowski Senior Engine Programmer

General Purpose Computation (CAD/CAM/CAE) on the GPU (a.k.a. Topics in Manufacturing)

PowerVR: Getting Great Graphics Performance with the PowerVR Insider SDK. PowerVR Developer Technology

Optimizing Your Android Applications

3D Display and Gesture Technology For Scientific Programming

Viewport 2.0 API Porting Guide for Locators

Introduction to Shaders.

COMS W4172 : 3D User Interfaces Spring 2017 Prof. Steven Feiner Date out: January 26, 2017 Date due: January 31, 2017

Lecture 1 Introduction to Android. App Development for Mobile Devices. App Development for Mobile Devices. Announcement.

HTML5 Evolution and Development. Matt Spencer UI & Browser Marketing Manager

Real - Time Rendering. Pipeline optimization. Michal Červeňanský Juraj Starinský

Bringing AAA graphics to mobile platforms. Niklas Smedberg Senior Engine Programmer, Epic Games

NETDRONE STARTER KIT USER GUIDE

April 4-7, 2016 Silicon Valley

Direct Rendering of Trimmed NURBS Surfaces

IAP Manager. Easy IAP Workflow. Copyright all rights reserved. Digicrafts 2018 Document version Support

Memory Management: The Details

C# Programming in the.net Framework

UFO. Prof Alexiei Dingli

NSIGHT ECLIPSE EDITION

Using Opengl Es 2.0 For Android Development Develop And Design Pdf

Intel RealSense SDK 2014

Transforms Transform

Pump Up Your Pipeline

How to add new 3D Models to Machines Simulator 3 & Machines Simulator VR

Transcription:

Unity Software (Shanghai) Co. Ltd.

Main Topics Unity Runtime System Architecture Workflow How to consider optimization Graphics Physics Memory Usage Scripting Where to compare to other engine

Unity Editor Based on Runtime System Mono (MonoGenerated) Src Editor C/C++ AssetImporter/AssetDatabase.meta Metadata Cache AssetImporter Serialization Unity Editor Unity Player Unity Engine Runtime, Third Party

Unity Script C# Java Script Boo Mono Level WRT Unity Engine Level: Build Pipeline Asset/Cache Server Editor Asset Pipeline Version Control Profiler Multiplatforms Runtime Serialization Rendering Mecanim Input Physics AssetBundle Audio Plugins System Level: Windows, Mac OS, PS3/4, Xbox, Wii, DX, OpenGL, OpenGL ES

When start design the project, allocate the available budget Profiling at anytime (pay more attention at each development stage)

Graphics GPU Reduce Fill-rate no alpha test CPU Reduce Draw call Static & Dynamic Batching Culling LOD Shader Use mobile shader Texture Size, import settings, compress Lighting Light map, light probes, reflection probes (5.0)

Physics Prefer primitive colliders over meshes Avoid Mesh Collider Tweak Time.fixedDeltaTime

Memory usage in Unity Code Managed Heap Native Heap Profiling memory usage Scripts Library Mono memory managed heap Unity internal memory Native Heap GC.Collect GameObject pool

Memory management & optimization load/unload AssetBundle WWW(URL).assetbundle Memory Instantiated GameObjects: Meshes Textures Animations Audios Destroy will release this memory Resources.UnloadAsset(obj): - Release the given asset AssetBundle Files on Internet Instantiate Assets created by Load: Meshes Textures Animations Audios Resources.UnloadUnusedAssets() - Release all unused assets AssetBundle.Load WWW(File).assetbundle AssetBundle Memory AssetBundle Files on Hard Drive AssetBundle.CreateFromFile AssetBundle.Unload(false) will release this memory AssetBundle.Unload(true) will release this memory

Scripts Library Reduce lib size this will reduce the final build size In Player Settings Select.NET 2.0 Subset In Player Settings Select Use micro mscorlib Note: Handle crash (windows or devices) or compiling errors (Xcode) Some functions are not supported by Subset and micro (System.Xml)

Scripting Basic in Unity Languages Supported Mono / WRT JIT & AOT MonoBehaviour MonoDevelop Script as Component Create Script Script class hierarchy Namespaces: UnityEngine, UnityEditor, Hierarchy Object->ScriptableObject-> Object->GameObject-> Object->Component->Behaviour->MonoHehaviour->

Script performance optimization Avoid expensive API functions Ray casting Caching game object and components Low level code consideration Restrict dynamic typing Culling script execution Don not update if not necessary

Script performance optimization Profiler Find where is the major performance issue Profiler.BeginSample() / Profiler.EndSample() Avoid Expensive Functions GameObject.Find/FindWithTag Object.FindObjectOfType Update Efficiently DON T override Update, if don t need it DON T update every frame, if not necessary Low-Level Code String, Math,

Scripting Internal in Unity Mono WinRT (for wp8 and WSA) JIT & AOT Check compatibility: http://docs.unity3d.com/412/documentation/scriptreference/monocompatibility.html GC Exception Debugging Native Interop Example IL2CPP future in 5.0

String Use StringBuilder Simple Programming Practices

Simple Programming Practices Communication Center with loose connection How it work Subscribe a message function AddObserver (observer, name: String, sender) Send a notification function PostNotification (asender, aname: String, adata) Advantage - Disadvantage -

Simple Programming Practices Basic Performance Test Class vs. Struct definitions

The Future of Scripting In Unity IL2CPP What is IL2CPP? AOT VM Why IL2CPP? C# runtime performance still lags behind C/C++ The latest.net features are not supported in Unity s current version of Mono A large amount of effort is required for porting, maintaining, and feature parity between platforms Garbage collection can cause stuttering Benefits Resolve above issues What s NOT Such as System.Reflection.Emit

Comparison with others Compare Unity with UDK Pricing: Heating up Easy of use: Unity is easy to use Graphics: Unity keeps improving the rendering quality Physics: UDK has good cloth simulation Scripting: UDK visual editing, Unity will have it Platforms: UDK - on PC, Unity - on PC and Mac Importing: Unity is easy Asset management: Community & learning: UDK good tutorial, Unity larger community Games

Are there so many "pit" in Unity? The Largest PIT:Do not fully understand Unity

Q & A To win a Unity Pro License: bit.ly/laug0914