2. Making it a great Windows Store game
• Live tiles & notifications
• Splash Image
• Contracts
– Settings, Share, Play To
• Snap
• In App purchase
• Ads
• Cloud storage
3. What are they?
• Draw call issued to the graphics API to draw object (DirectX)
• Think of it as an artist changing a paintbrush
– Except drawing images (textures)
• Each model has at least one draw call
– Unless they share a material
• Draw calls affect CPU
• On mobile, target about 50 for best device coverage
– Latest devices can handle more
• Reducing draw calls is key
4. Atlases
• Take multiple images and add to one larger one
– Textures, sprites, fonts, etc
• Essentially used as a paint brush of images
• Can draw different objects in one draw call
• Unity will auto-atlas UI elements (4.6 GUI)
• Unity has a sprite packer to create atlas
– Needs to be enabled and set a packing tag
5. How to reduce draw calls
• Enable static batching (Pro) to help
– Requires object to not move and checked ‘static
– Combines geometry
• Dynamic batching (free) works automatically
– Share same material, < 900 vertices, no real time shadows
• Atlas everything you can
– Textures, Sprites (UI atlases automatically)
• Avoid the old GUI system
– New one introduced in 4.6 - uGui
6. Compressing Textures
• Can compress per platform
– Figure out target device, mobile can be optimized
– Experiment with compression settings
• Universal Apps don’t yet support compression per platform
– Windows, iOS (iphone, ipad), Android
– Form factors include phones, tablets, laptops
– OwlChemy Labs Multiplatform Toolkit
7. Compressing Audio
• Compress longer files, stream from disk
• Unity will compress per platform
• Longer tracks go to ogg
• Smaller effects stay uncompressed
• Audio clips are either
– Loaded into memory
– Streamed from disk
• Saves load time, addresses storage a lot more on mobile
8. General Rules
• Cache references
– Managed to Native calls hurt performance
– GameObject.Find() and other references
– Component references if used a lot
– Cache via Editor reference
– Avoid lookups in loops
• Object pooling
– Instantiating() objects is expensive, Destroy() is expensive
– Reuse objects
– https://github.com/prime31/RecyclerKit
9. Neither are very efficient
• Unity terrain creates many draw calls
• Experiment with built in settings
• Third party tools
– T4M
– Topogun
• KGFSkyBox
– Can reduce for skyboxes (1 vs 6 draws)
10. Polygons & Triangles
• Polygons are drawn using triangles
• Unity uses triangles
• Graphics cards draw triangles
• A quad is two triangles
• Even 2D images use triangles
• Reduce triangles
11. Tools and techniques to reduce tris
• Cruncher
• Mixamo’s Decimator
• Blender’s Decimate
• simplygon.com
• Draw a separate low poly model for mobile
– Manually or use tools like Topogun
• Level of Detail
– Uses lower quality models when further away
– Pro only, but can be done manually via scripts
12. Visible Meta Files
• This should be required.
• Version control without is
possible, but difficult
13. How are indies doing it?
• More than just luck
– There is a science behind which apps succeed, and which fail
• Stand out from your competition
– Can’t clone to succeed
• It’s not about money!
– More budget doesn’t automatically mean better marketing
14. App Store Optimization
• Don’t neglect app store presence.
• Users will find you one of three ways:
– Rank
– Recommendations
– Search
15. App Store Optimization
• Icon
– You have 1.5 seconds
– Compare to competition
• Screenshots
– Have to be honest
– Show gameplay
• Description
– Hook and convince
– Call to action
16. How will they find you?
• Description text matters!
– Optimize for people and robots
• Keywords and keyphrases
– Use in title and description
– Reference competition
• Don’t assume, study
– What does your competition do?
– What should they be doing?
17. Outmaneuver your competition
Rank could possibly be judged by:
• Downloads
• Active Installs
• Velocity
• Ratings (Number and/or Quality)
• Usage
*Maybe?
18. Outmaneuver your competition
• Brute force is costly
• Think creatively
– Prevent uninstalls
– Cross Promote
– Acquire users intelligently
– Stack marketing
19. Outmaneuver your competition
• Encourage beneficial behavior
– Only ask users likely to rate 5 stars to review
• Use social when it makes sense
– Provide value!
• Have an outlet for bugs/problems/feedback
– Better to deal with emails than bad ratings!
20. Be remarkable, literally
• Make yourself easy to talk about
– Presence on social media
– Website
– Build a press kit
• Communicate with your audience
– Build a community
– Tell your story
– Playtest in public
21. Be remarkable, literally
• Become a lightning rod
– Plan for both success and failure
– Don’t just be a developer
– Treat yourself seriously
• Post release content
– Users always want more, keep them coming back
– Show that you care
22. Apps are a service
• Make lots of games
– Rovio made 51 games before Angry Bird.
• Don’t expect instant success!
– Antichamber took 7 years to make.
• Everything is a skill
– Start doodling!
23. What is a .DLL?
Dynamic Link library - a collection of code
and/or data, which may be used by several
applications (or other libraries/modules).
Common methods to process files, work
with GUI components etc. are made
available in libraries so several applications
may use the same functionality.
25. Building .DLLs
First grabs all of the .DLLs within
the Assets/Plugins folder.
Then does another pass.
Is there is a platform-specific folder
containing plugins?
26. Live tiles
• Give the user info (ex weather, stocks)
• Show progress, entice the user to come back
27. How to
• Use a tile template
– Predefined tile sizes
– All available in Tile Template Catalog (aka.ms/TileTemplates)
• Local tile
– Image included in project
• Remote tile
– Can download from net
28. Privacy Policy
• Is required if your app sends any data to a third party
• 4. Windows Store apps put the customer in control
– 4.1 Your app must comply with the following privacy-related
requirements:
• 4.1.1 Your app must have a privacy statement if it is network-capable
– If your app has the technical ability to transmit data to you or a third party, you must
maintain a privacy policy. You must provide access to your privacy policy in the Description
page of your app, as well as in the app’s settings as displayed in the Windows Settings
charm.
• Privacy policy url is required during submission and in game
• Can display policy in game or redirect to website
29. Pausing
• What happens when user
– switches away?
– wants a break?
– gets a phone call?
• Pausing can be done 100% in Unity code
Editor's Notes
Optimization- Create Hi Res terrain in Unity, then use the “Export to Obj” script that is freely available. Take the hirez obj and import into a program like “Topogun” and manually retopologize keeping in mind the polygon / tris count. More Polys for detailed areas, less polys for the flat terrain areas. Allows more flexibility on getting a a faux hi quality look using low quality models. Reimport your new terrain into Unity after retopoligizing in Topogun and run the T4M- Terrain for Mobile Plugin on the model. You can now paint blended shaders on the model for nice terrain texture blends.
Check out our colleague’s blog post for some great info
http://indiedevspot.azurewebsites.net/2014/03/12/optimizing-mobile-games-in-unity/#
Manual lod http://answers.unity3d.com/questions/216698/how-to-implement-lod-in-unity.html