SlideShare a Scribd company logo
1 of 36
Ottawa Unity User
Group
Jon Keon – Karman Interactive
http://karmaninteractive.com
@jonkeon @KarmanLtd
Feb 13, 2015
Format
• Share Tips, Tricks, Experiences with Unity over
the last 3 years.
•  = Good things
•  = Bad things
• These are not laws, many ways to do things,
this is what has worked for us. Challenge it,
question it, we’re happy to discuss.
Format
• About Us
• Tips/Tricks/Experiences
• Asset Store Plugins
• Q&A
About Us
About Us
- Based in Ottawa and Toronto
- Small company (2 full time + small team of highly
trusted contractors)
- Mobile and Web, games and experiences
- Love to play with experimental and obscure
technologies
- Experiment driven, Client supported
- Experiments keep us ahead of the curve
- Client work keeps us sharp and pays the bills
Tips/Tricks/Experiences
Library Switching
– Big project with tons of textures?
 iOS/Android importer takes FOREVER.
 Don’t have the Asset Server license
– Check out this one simple trick
Library Switching
Library Switching
– Close Unity
– Rename Library folder
– Open Unity again to create a new Library folder
for the new Platform (happens once) or rename
previous Library folders back to just Library.
– Asset imported only imports the Deltas.
 Much faster than regular switch platforms
Custom Tools - Nudge
– Designer gives you a PSD to match.
– You need to pixel perfect match it.
 Dragging is inaccurate, manually entering x and y
coordinates is tedious.
Custom Tools - Nudge
Custom Tools - Nudge
– Invest in writing a custom editor tool.
– For us, H, U, J, K are keyboard shortcuts for
nudging any Transform or Transforms by a
configurable amount of units.
– Y is a keyboard shortcut to toggle whether a
GameObject or GameObjects are visible.
 Matching comps is now a 5 second process.
Asset Management
– Difference between Author Time and Run Time
Author Time Run Time
Need to visually layout assets
in a Prefab or Scene
Only want the assets needed
for the specific platform and
specific size.
Need to switch between 1X,
2X and 4X assets to ensure
consistency
Build size is limited! (50mb
Google Play, 100mb iOS)
Need to update
assets/prefabs/scenes
frequently
Need all assets locally
Asset Management
– Prefabs
• Create a different prefab for each permutation?
• iOS 1X, Android 2X, etc.
• Solves pretty much all the issues but…
 Makes your life hell. Change a button in one of them,
now you need to make the exact same change in all the
rest.
Asset Management
– Prefabs
• Have just one prefab and dynamically swap the assets?
• Getting closer, but…
 All of those assets are now referenced by the prefab so they
get included in the build.
 You’re going to have two sets of assets in most of your builds
with one set you never use.
Asset Management
– Prefabs
• Invest in custom editor tool?
Asset Management
– Karman Asset Pipeline (1/3)
• Build Prefabs with assets normally. (Author Prefabs)
• Anytime you hit play, save the scene or save the
project, our script runs.
• Detects all Author Prefabs with a different hash (to
detect changes).
• Duplicates all Author Prefabs and stores them in a
different folder. (Runtime Prefabs) Removes all
references to the assets on those prefabs and instead
writes a metadata script to the GameObject instead.
Asset Management
– Karman Asset Pipeline (2/3)
• Assets that changed are built to Asset Bundles for each
platform and each size automatically. (iOS 1X, 2X, 4X,
Android 1X, 2X, 4X etc)
• New Runtime Prefabs are included in the build. Old
Author Prefabs are not included, so no assets are
included.
• Asset Bundles can be specified to be External or
Internal so that you can fill up as much of the
50MB(Android) or 100MB(iOS) limit as you want and let
the rest be downloaded from a Server.
Asset Management
– Karman Asset Pipeline (3/3)
• At Runtime, Asset Manager checks platform and
screens-size.
• Downloads required Asset Bundles if we don’t have
them already.
• Whenever a Runtime Prefab is Instantiated, metadata
script pulls the correct asset from the bundle and sets
it. Runtime Prefab now looks exactly the same as the
Author Prefab but with the correct size of Assets.
Asset Management
– Author Prefab on left, Runtime Prefab on right
Asset Management
– Karman Asset Pipeline Post Mortem
• Large initial investment to build.
• Return in robustness and workflow worth it.
– Benefits
 Never forget, automatically happens during a Save or
when pressing Play in the editor.
 Build in the editor with the actual assets. (Like you’d
expect to)
 Have full control over all permutations of assets and
whether they are internal or external.
WWW Class
 The WWW class has limitations. Basically allows
for sending simple GET or POST requests.
 Consider writing a wrapper to handle retries,
timeouts, cache-busting etc.
– Headers
 Look to List of HTTP header fields (Wikipedia) for what
headers can be sent and received.
 Access by passing request headers to WWW
constructor and check WWW.responseHeaders when
it returns.
WWW Class
– Example:
• Grabs the Status Code being returned. Far more useful
for debugging than looking just at the WWW.error
property.
Launch From Any Scene
– You have a Main Scene that starts your game. You
press play and the game loads normally and you play.
– You’re now working in the Level 6 scene. You make
some changes and press play and everything errors
because it can’t find the player etc.
– That’s because the Player gets set in the Main scene
and you just skipped all that.
 You have to save your Level 6 scene, switch to Main
scene, play and the switch back.
Launch From Any Scene
– Create a script that lives in every scene. When it
starts, it destroys everything else in the scene and
loads the Main Scene.
Launch From Any Scene
– But the scene I launched from threw a bunch of
errors to the console before we launched the
Main Scene!
Launch From Any Scene
– Now you can work in any scene and press play to
go to your main scene.
– You guarantee consistency in the launch flow so
there are less bugs.
– When you’re done testing, you go right back to
the scene you were working in.
 Time saved.
Asset Store Plugins
Asset Store Plugins
– 2D Toolkit
• http://2dtoolkit.com/
 Sprite Atlas creation is easy and has great features like:
– Custom Anchor points per sprite
– Ability to dice your sprite into smaller images so they take up
less space
– Remove duplicates (works really well with dicing)
 Handles 9-sliced sprites nicely
 Operates in 3D space so easy to merge 2D and 3D
content.
Asset Store Plugins
– Text Mesh Pro
• http://digitalnativestudios.com/
 Bitmap Fonts work well for one size and can be large
textures depending on how many characters.
 Text Mesh Pro uses Signed Distance Fields to render the text
crisply at any size. Textures are often smaller too.
 Also has many other features for auto-sizing text, formatting
etc. If you build anything multi-lingual this plugin is a
necessity.
Asset Store Plugins
– DOTween
• http://dotween.demigiant.com/
 Successor to HOTween.
 Handles making things move… nicely.
 Even in beta, it’s the best tween engine we’ve seen for
features, performance and API.
Conclusions
– Spend the money to explore Asset Store plugins.
• Odds are high that the cost to purchase is far lower
than the time it would take you to create it.
• It will also have been bug tested and used by many
others in live projects.
– If an Asset Store Plugin doesn’t exist, invest the
time to create your own tools.
• Pick your biggest pain point and solve that first.
• Test on a live project to find the pitfalls and actual use-
cases. Give yourself time.
• Concerns and Comments are also acceptable
and encouraged.
Questions?
THANKS!

More Related Content

What's hot

Unite2013-gavilan-pdf
Unite2013-gavilan-pdfUnite2013-gavilan-pdf
Unite2013-gavilan-pdf
David Gavilan
 

What's hot (19)

Confrontation Pipeline and SCons
Confrontation Pipeline and SConsConfrontation Pipeline and SCons
Confrontation Pipeline and SCons
 
West Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - IntroductionWest Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
West Coast DevCon 2014: The Slate UI Framework (Part 1) - Introduction
 
A preview of Feathers 2.2 and the Feathers SDK
A preview of Feathers 2.2 and the Feathers SDKA preview of Feathers 2.2 and the Feathers SDK
A preview of Feathers 2.2 and the Feathers SDK
 
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
【Unite Tokyo 2018】実践的なパフォーマンス分析と最適化
 
Combining the strength of erlang and Ruby
Combining the strength of erlang and RubyCombining the strength of erlang and Ruby
Combining the strength of erlang and Ruby
 
Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"Erlang factory SF 2011 "Erlang and the big switch in social games"
Erlang factory SF 2011 "Erlang and the big switch in social games"
 
Unite2013-gavilan-pdf
Unite2013-gavilan-pdfUnite2013-gavilan-pdf
Unite2013-gavilan-pdf
 
Game Programming 10 - Localization
Game Programming 10 - LocalizationGame Programming 10 - Localization
Game Programming 10 - Localization
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
 
Infrastructure as Code - Getting Started, Concepts & Tools
Infrastructure as Code - Getting Started, Concepts & ToolsInfrastructure as Code - Getting Started, Concepts & Tools
Infrastructure as Code - Getting Started, Concepts & Tools
 
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten HaitzlerEFL (Tizen Native Display Layer – Architecture & Usage)  - Carsten Haitzler
EFL (Tizen Native Display Layer – Architecture & Usage) - Carsten Haitzler
 
Basic Optimization and Unity Tips & Tricks by Yogie Aditya
Basic Optimization and Unity Tips & Tricks by Yogie AdityaBasic Optimization and Unity Tips & Tricks by Yogie Aditya
Basic Optimization and Unity Tips & Tricks by Yogie Aditya
 
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & InfrastructureWest Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
West Coast DevCon 2014: Build Automation - Epic’s Build Tools & Infrastructure
 
Amazon EC2 in der Praxis
Amazon EC2 in der PraxisAmazon EC2 in der Praxis
Amazon EC2 in der Praxis
 
Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)Get On The Audiobus (CocoaConf Atlanta, November 2013)
Get On The Audiobus (CocoaConf Atlanta, November 2013)
 
FunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang EcosystemFunctionalConf '16 Robert Virding Erlang Ecosystem
FunctionalConf '16 Robert Virding Erlang Ecosystem
 
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
 
MYSQL Patterns in Amazon - Make the Cloud Work For You
MYSQL Patterns in Amazon - Make the Cloud Work For YouMYSQL Patterns in Amazon - Make the Cloud Work For You
MYSQL Patterns in Amazon - Make the Cloud Work For You
 

Similar to Ottawa unity user_group_feb13_2015

Similar to Ottawa unity user_group_feb13_2015 (20)

Supersize Your Production Pipe
Supersize Your Production PipeSupersize Your Production Pipe
Supersize Your Production Pipe
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.
 
React Conf 17 Recap
React Conf 17 RecapReact Conf 17 Recap
React Conf 17 Recap
 
Connect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience NecessaryConnect 2014 SHOW102: XPages Still No Experience Necessary
Connect 2014 SHOW102: XPages Still No Experience Necessary
 
Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)Matt Franklin - Apache Software (Geekfest)
Matt Franklin - Apache Software (Geekfest)
 
Using wikto
Using wiktoUsing wikto
Using wikto
 
Game Development Using HTML 5
Game Development Using HTML 5Game Development Using HTML 5
Game Development Using HTML 5
 
Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...
 
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
SHOW102 XPages: Still No Experience Necessary IBM Connect 2014
 
Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)Online game server on Akka.NET (NDC2016)
Online game server on Akka.NET (NDC2016)
 
Adventures in cross platform ConnectJS / TiConnect 2014
Adventures in cross platform ConnectJS / TiConnect 2014Adventures in cross platform ConnectJS / TiConnect 2014
Adventures in cross platform ConnectJS / TiConnect 2014
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
XPages: No Experience Needed
XPages: No Experience NeededXPages: No Experience Needed
XPages: No Experience Needed
 
Vulnerability, exploit to metasploit
Vulnerability, exploit to metasploitVulnerability, exploit to metasploit
Vulnerability, exploit to metasploit
 
Puppet Development Workflow
Puppet Development WorkflowPuppet Development Workflow
Puppet Development Workflow
 
Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)Inside the IT Territory game server / Mark Lokshin (IT Territory)
Inside the IT Territory game server / Mark Lokshin (IT Territory)
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 days
 
Scaling Django Apps using AWS Elastic Beanstalk
Scaling Django Apps using AWS Elastic BeanstalkScaling Django Apps using AWS Elastic Beanstalk
Scaling Django Apps using AWS Elastic Beanstalk
 
DevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sgDevOps: Building by feature with immutable infrastructure at Serv.sg
DevOps: Building by feature with immutable infrastructure at Serv.sg
 
Adobe AIR for mobile games
Adobe AIR for mobile gamesAdobe AIR for mobile games
Adobe AIR for mobile games
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Ottawa unity user_group_feb13_2015

  • 1. Ottawa Unity User Group Jon Keon – Karman Interactive http://karmaninteractive.com @jonkeon @KarmanLtd Feb 13, 2015
  • 2. Format • Share Tips, Tricks, Experiences with Unity over the last 3 years. •  = Good things •  = Bad things • These are not laws, many ways to do things, this is what has worked for us. Challenge it, question it, we’re happy to discuss.
  • 3. Format • About Us • Tips/Tricks/Experiences • Asset Store Plugins • Q&A
  • 5. About Us - Based in Ottawa and Toronto - Small company (2 full time + small team of highly trusted contractors) - Mobile and Web, games and experiences - Love to play with experimental and obscure technologies - Experiment driven, Client supported - Experiments keep us ahead of the curve - Client work keeps us sharp and pays the bills
  • 6.
  • 7.
  • 8.
  • 10. Library Switching – Big project with tons of textures?  iOS/Android importer takes FOREVER.  Don’t have the Asset Server license – Check out this one simple trick
  • 12. Library Switching – Close Unity – Rename Library folder – Open Unity again to create a new Library folder for the new Platform (happens once) or rename previous Library folders back to just Library. – Asset imported only imports the Deltas.  Much faster than regular switch platforms
  • 13. Custom Tools - Nudge – Designer gives you a PSD to match. – You need to pixel perfect match it.  Dragging is inaccurate, manually entering x and y coordinates is tedious.
  • 14. Custom Tools - Nudge
  • 15. Custom Tools - Nudge – Invest in writing a custom editor tool. – For us, H, U, J, K are keyboard shortcuts for nudging any Transform or Transforms by a configurable amount of units. – Y is a keyboard shortcut to toggle whether a GameObject or GameObjects are visible.  Matching comps is now a 5 second process.
  • 16. Asset Management – Difference between Author Time and Run Time Author Time Run Time Need to visually layout assets in a Prefab or Scene Only want the assets needed for the specific platform and specific size. Need to switch between 1X, 2X and 4X assets to ensure consistency Build size is limited! (50mb Google Play, 100mb iOS) Need to update assets/prefabs/scenes frequently Need all assets locally
  • 17. Asset Management – Prefabs • Create a different prefab for each permutation? • iOS 1X, Android 2X, etc. • Solves pretty much all the issues but…  Makes your life hell. Change a button in one of them, now you need to make the exact same change in all the rest.
  • 18. Asset Management – Prefabs • Have just one prefab and dynamically swap the assets? • Getting closer, but…  All of those assets are now referenced by the prefab so they get included in the build.  You’re going to have two sets of assets in most of your builds with one set you never use.
  • 19. Asset Management – Prefabs • Invest in custom editor tool?
  • 20. Asset Management – Karman Asset Pipeline (1/3) • Build Prefabs with assets normally. (Author Prefabs) • Anytime you hit play, save the scene or save the project, our script runs. • Detects all Author Prefabs with a different hash (to detect changes). • Duplicates all Author Prefabs and stores them in a different folder. (Runtime Prefabs) Removes all references to the assets on those prefabs and instead writes a metadata script to the GameObject instead.
  • 21. Asset Management – Karman Asset Pipeline (2/3) • Assets that changed are built to Asset Bundles for each platform and each size automatically. (iOS 1X, 2X, 4X, Android 1X, 2X, 4X etc) • New Runtime Prefabs are included in the build. Old Author Prefabs are not included, so no assets are included. • Asset Bundles can be specified to be External or Internal so that you can fill up as much of the 50MB(Android) or 100MB(iOS) limit as you want and let the rest be downloaded from a Server.
  • 22. Asset Management – Karman Asset Pipeline (3/3) • At Runtime, Asset Manager checks platform and screens-size. • Downloads required Asset Bundles if we don’t have them already. • Whenever a Runtime Prefab is Instantiated, metadata script pulls the correct asset from the bundle and sets it. Runtime Prefab now looks exactly the same as the Author Prefab but with the correct size of Assets.
  • 23. Asset Management – Author Prefab on left, Runtime Prefab on right
  • 24. Asset Management – Karman Asset Pipeline Post Mortem • Large initial investment to build. • Return in robustness and workflow worth it. – Benefits  Never forget, automatically happens during a Save or when pressing Play in the editor.  Build in the editor with the actual assets. (Like you’d expect to)  Have full control over all permutations of assets and whether they are internal or external.
  • 25. WWW Class  The WWW class has limitations. Basically allows for sending simple GET or POST requests.  Consider writing a wrapper to handle retries, timeouts, cache-busting etc. – Headers  Look to List of HTTP header fields (Wikipedia) for what headers can be sent and received.  Access by passing request headers to WWW constructor and check WWW.responseHeaders when it returns.
  • 26. WWW Class – Example: • Grabs the Status Code being returned. Far more useful for debugging than looking just at the WWW.error property.
  • 27. Launch From Any Scene – You have a Main Scene that starts your game. You press play and the game loads normally and you play. – You’re now working in the Level 6 scene. You make some changes and press play and everything errors because it can’t find the player etc. – That’s because the Player gets set in the Main scene and you just skipped all that.  You have to save your Level 6 scene, switch to Main scene, play and the switch back.
  • 28. Launch From Any Scene – Create a script that lives in every scene. When it starts, it destroys everything else in the scene and loads the Main Scene.
  • 29. Launch From Any Scene – But the scene I launched from threw a bunch of errors to the console before we launched the Main Scene!
  • 30. Launch From Any Scene – Now you can work in any scene and press play to go to your main scene. – You guarantee consistency in the launch flow so there are less bugs. – When you’re done testing, you go right back to the scene you were working in.  Time saved.
  • 32. Asset Store Plugins – 2D Toolkit • http://2dtoolkit.com/  Sprite Atlas creation is easy and has great features like: – Custom Anchor points per sprite – Ability to dice your sprite into smaller images so they take up less space – Remove duplicates (works really well with dicing)  Handles 9-sliced sprites nicely  Operates in 3D space so easy to merge 2D and 3D content.
  • 33. Asset Store Plugins – Text Mesh Pro • http://digitalnativestudios.com/  Bitmap Fonts work well for one size and can be large textures depending on how many characters.  Text Mesh Pro uses Signed Distance Fields to render the text crisply at any size. Textures are often smaller too.  Also has many other features for auto-sizing text, formatting etc. If you build anything multi-lingual this plugin is a necessity.
  • 34. Asset Store Plugins – DOTween • http://dotween.demigiant.com/  Successor to HOTween.  Handles making things move… nicely.  Even in beta, it’s the best tween engine we’ve seen for features, performance and API.
  • 35. Conclusions – Spend the money to explore Asset Store plugins. • Odds are high that the cost to purchase is far lower than the time it would take you to create it. • It will also have been bug tested and used by many others in live projects. – If an Asset Store Plugin doesn’t exist, invest the time to create your own tools. • Pick your biggest pain point and solve that first. • Test on a live project to find the pitfalls and actual use- cases. Give yourself time.
  • 36. • Concerns and Comments are also acceptable and encouraged. Questions? THANKS!

Editor's Notes

  1. We may replace with Unity’s new UI system. Still evaluating at this point.