August 29, 2012

Unite12 - Day 2

Tags: Technical, Unity

On the second day of Unite12 I slept in and missed the first talk in order to prepare for a long afternoon. It was a presentation by Brian Fargo on the successful Kickstarter campaign for Wasteland. A great deal has been said about using Kickstarter for games recently, and ConcealedIntent is unlikely to use the service soon (or at all). So I thought this could be safely missed.

Day 2 notes from the sessions I attended are below.

Day 1 notes here.
Day 3 notes here.

Unity, Networking Code and You:

  • There are four ways to do networking in Unity3D: the built-in system; sockets; WWW/form; and, external Javascript.
  • The built-in networking is a client server system.
    • Good for when you are not concerned how or what data is being sent. This could be a problem considering the previous Photon talk about networking cost being dominant - I doubt the default Unity networking is optimised for small message sizes.
    • Not mention of load-balancing, just straight client-server.
    • Speaker suggested built-in networking is good for small racing and FPS games - seems about right for me.
  • Sockets
    • Can use standard .Net networking code to build own system. Thus can define bespoke messages.
    • May have some security issues on the Unity webplayer, but can be overcome with cross domain security.
    • Most third party networking libraries use sockets. Harder, but more control.
  • WWW/Form
    • HTTP protocol calls can be used to load images and asset bundles or stream audio-visual assets.
    • HTTP POST calls can be made with the WWWForm class.
  • External Javascript
    • ExternalCall and ExternalEval can be used to make a call from a Unity client into an enclosing web page’s Javascript environment (which can then use the Javascript networking).

LIDAR & Oblique Imagery for City Scapes:

  • Using airborne lasers to scan cityscapes at an accuracy of 12 points per metre results in a point cloud containing tens of millions of points - too large to visualise in current tools.
  • Presenter described an automatic process of converting those points into meshes representing buildings.
  • The buildings are then aggregated/welded together to form Levels Of Detail (LOD). Textures are atlassed. Asset bundles load and unload resources as required.
  • Result is quite impressive.

GameDraw: Editor Customization Techniques and Challenges:

  • GameDraw is a tool that add the ability to edit models directly in Unity.
  • Presented some tips for modifying the Unity editor.
  • OnSceneGui() event can draw GUI in scene view.
  • use OnInspectorUpdate() rather than Update(). The former is called 10 times/second - much less than the latter.
  • Selection of objects can be supported with the OnSelectionChange() method.
  • Mesh is not serialisable in Unity (thus can be saved after editing), so they created their own serialisable class that contained all the Mesh information and converted back and forth between them.
  • The GL class can draw on the Unity view.

How to Benefit from Unity’s Substance Integration:

  • Allegorithmic produce tools to create textures procedurally. For example on brick substance and adjust the age, size, number and other parameters of the resulting texture.
  • Result can be sent as parameters and texture generated on client side (resulting in a much smaller download) or texture generated in advance.
  • Very impressive demo.

App Store Science and Roulette:

  • Biggest apps are Free-to-play games, their profit is made with in-app purchases.
  • Need to increase the value of in-app purchases and decrease the cost of acquisition of new players.
  • Paid advertising for new players/downloads currently runs at US$1 per install - hard to profit as an Indie at this level.
  • Try to makes your apps social so easy for people to discover them.
  • Record data on game and improve game experience from this data. Presenter has seen this work very well.

The Butterfly Effect: Bleeding Edge Rendering with Unity:

  • This talk was largely about the real-time movie produced to demonstrate the new version of Unity. It is an impressive work, but not particularly relevant to me.
  • That baked their static lighting and shadows in to the scene, but kept some lighting dynamic (can do both).
  • Unity produced a new physics shader for the movie. One shader can cover most materials. It sounds similar to the Blender system.

The Unity Rendering Pipeline:

  • I missed the start of this presentation.
  • Most of the talk was about shaders and beyond my understanding. Shaders seem very important in Unity - I should learn more.
  • There are three ways to render objects: Vertex Lit, simple with no shadows; Forward Rendering, more lights and more complex; and Deferred Lighting.
  • Shaders can include pragma debug and the generated shader will be written to a file.
  • Pragma multi-compile allows one shader file to become multiple generated shaders depending on a provided switch parameter.

Unity Awards:

  • Most of the nominees didn’t mean much to me. I’d only heard of one before - the big winner Total War Battles. There did seem to be a disproportionately large number of mobile titles.
  • I particularly liked the nominee in the serious game category on building site safety that included a well bearded guy saying “S%#*! This looks suss”. Must be from Australia.