Transcript
Page 1: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 2: Native Code is Dead AKA Cross Platform Development with Unity3D

Native Code is DeadAKACross Platform Development with Unity3D

Ralph BarbagalloFounder, FLARB LLC

Page 3: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 4: Native Code is Dead AKA Cross Platform Development with Unity3D

2001

Page 5: Native Code is Dead AKA Cross Platform Development with Unity3D

2007

Page 6: Native Code is Dead AKA Cross Platform Development with Unity3D

2008

Page 7: Native Code is Dead AKA Cross Platform Development with Unity3D

The Platform Problem

Page 8: Native Code is Dead AKA Cross Platform Development with Unity3D

20XX…

Page 9: Native Code is Dead AKA Cross Platform Development with Unity3D

Choosing A Solution• Most Platforms With Least Code

• Licensing Model That Won’t Eat Margins

• Broad Community Support

Page 10: Native Code is Dead AKA Cross Platform Development with Unity3D

HTML5• HTML5 Frameworks• PhoneGap• GameSalad• Game Closure, AppMobi, Ludei

• HTML5 Still Sucks• Horrible Performance• Gated by mobile browsers

Page 11: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 12: Native Code is Dead AKA Cross Platform Development with Unity3D

Cocos2d• Cocos2d-X• Straight C++ version of Cocos2d• Great 2D library, widely used• Amazing updates and support• No web support

Page 13: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 14: Native Code is Dead AKA Cross Platform Development with Unity3D

Flash / Adobe AIR• Flash isn’t dead!• Use Flash, FlashBuilder, etc.• AIR Native Extensions• Flash game engines• Starling

• Stage3D

Page 15: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 16: Native Code is Dead AKA Cross Platform Development with Unity3D

Unreal Developer’s Kit• Don’t need a Mac!• Top of the line renderer• 25% of revenue to Epic• Weak platform-specific support

Page 17: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 18: Native Code is Dead AKA Cross Platform Development with Unity3D

Other Options• Titanium Studio• Corona• GameMaker• Stencyl• Marmalade

Page 19: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 20: Native Code is Dead AKA Cross Platform Development with Unity3D
Page 21: Native Code is Dead AKA Cross Platform Development with Unity3D

Why I Chose Unity3D: Tech• Best support for critical platforms• Mobile (iOS, Android, etc.)• Web (NaCL, Web Player, Flash)• Desktop (Steam, Mac App Store,

Win8)• Console

Page 22: Native Code is Dead AKA Cross Platform Development with Unity3D

Tech• Native Plug-ins• Can support any platform-specific

functionality• Amazon App Store• Google Play Game Services• Write your own native plug-in

Page 23: Native Code is Dead AKA Cross Platform Development with Unity3D

Support• Awesome forums• Awesome feedback from support• Twitter!

Page 24: Native Code is Dead AKA Cross Platform Development with Unity3D

Asset Store

Page 25: Native Code is Dead AKA Cross Platform Development with Unity3D

Business Model• Flat fee per-seat (‘perpetual’)• Monthly Subscription• No rev-share

Page 26: Native Code is Dead AKA Cross Platform Development with Unity3D

Brick Buddies

Page 27: Native Code is Dead AKA Cross Platform Development with Unity3D

Camera Birds

Page 28: Native Code is Dead AKA Cross Platform Development with Unity3D

iOS to Android with Unity3D

Page 29: Native Code is Dead AKA Cross Platform Development with Unity3D

Plug-ins• Used mostly cross-platform plug-ins

• Access platform specific features (IAP, etc.)

Page 30: Native Code is Dead AKA Cross Platform Development with Unity3D

Platform Specific Code• Only spent a few days of re-factoring

• Swapped out iOS plug-ins for Android

• Runtime platform checks and #IF compiler directives

• AndroidJavaClass!

Page 31: Native Code is Dead AKA Cross Platform Development with Unity3D

AndroidJavaClassAndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic<AndroidJavaObject>("currentActivity”) mWindowManager = activity.Call<AndroidJavaObject>("getSystemService","window");

mConfig = activity.Call<AndroidJavaObject>("getResources").Call<AndroidJavaObject>("getConfiguration");

Page 32: Native Code is Dead AKA Cross Platform Development with Unity3D

Screen Sizes• iOS has 3 aspect ratios to deal with

• Made interface work in “safe zone”

• For Android’s common 16:10 ratio, scaled NGUI interface to fit

Page 33: Native Code is Dead AKA Cross Platform Development with Unity3D

Android Fragmentation

Page 34: Native Code is Dead AKA Cross Platform Development with Unity3D

Performance and Testing

Page 35: Native Code is Dead AKA Cross Platform Development with Unity3D

Cross Platform Export Tools• Per-Platform Asset Settings• Compression settings• Filtering

• Cache Server

• Multi-Platform Toolkit• Build-time asset changes

Page 36: Native Code is Dead AKA Cross Platform Development with Unity3D

In Summary• Best Business Model

• Widest Platform Support

• Best Community Support

• Dead Simple Porting Process

Page 37: Native Code is Dead AKA Cross Platform Development with Unity3D

?

Page 38: Native Code is Dead AKA Cross Platform Development with Unity3D

Thanks!Email: [email protected]

Twitter: @flarb

Blog: www.ralphbarbagallo.com

Site: www.flarb.com

WeChat: ralphbarbagallo


Top Related