Post on 14-Aug-2015
Trucos de Unity que nadie te cuenta
Miguel Company
II PAD Congress
Barcelona, 22-23 de Junio de 2015
DRAKHAR STUDIO• Fundada en Diciembre 2011
• PlayStation awards: nominados al mejor arte
• 20 personas
• Powered by (and always learning) Unity 3D
EXPERIMENTOS
The First Challenge: Juego 3D multijugador.
Todavía activo en Kongregate.
Entorno virtual de socialización corporativa.
Un paso adelante en plataformas de e-learning
FRANTIC FLIGHT
En App-Store desde Marzo 2012
Salta y rueda en vista lateral Esquiva a izda y dcha en vista trasera
Modo supervivencia infinito Modo historia con múltiples niveles
Tres protagonistas a elegir
GRUMPY REAPER• Grumpy Reaper es un juego arcade (tipo Pacman) que incorpora
elementos de puzzles, habilidad y diversos modos de juego.
• El juego está diseñado inicialmente para poder ser explotado en un modelo ‘free to play’ basado en ingresos por la compra de mejoras funcionales, elementos estéticos para personalizar los enemigos y posibles packs de niveles.
• Género: Puzzle + Arcade
• Modelo: In-App purchasing
• Plataforma: IOS, Android
• Tecnología: Motor Unity 3D
CTO: SIEMPRE APRENDIENDO
• Ingeniero en Informática
• Programo videojuegos– Amateur desde 1998– Profesional desde 2010
• CTO y co-fundador de Drakhar Studio
• La labor del CTO es la de asegurar que el equipo dispone de la tecnología necesaria para el desarrollo de proyecto
• Esto implica que hay que estar al día de los avances en los diferentes motores, y que a veces hay que desarrollar herramientas
• ¡Y aprender trucos para enseñárselos a los demás!
Algunas fuentes muy útiles:unity3d.com/es/learn/tutorialsunityready.comwww.wincarsracer.com/es/content/5-consejos-para-sacar-el-maximo-de-unity-3des.slideshare.net/tarasleskiv/unity3d-tips-and-tricks-or-you-are-do
Batching, batching, batching
Dynamic batching:• Comparte materiales siempre que sea posible• Junta varias texturas en un ‘atlas’• Mantén bajo 300 el número de vértices• Quita el flag ‘receive shadows’
Static batching:• Si no vas a moverlo, rotarlo o escalarlo, marca el flag ‘static’• Es imprescindible además para generar los ‘lightmaps’
Lo que te cuentan
Batching, batching, batching
A veces compensa dynamic:• Cuando un objeto se repite infinidad de veces (aunque no se mueva)• El static batching crea copias de la geometría (más uso de memoria)• Procedimiento: marcar static -> calcular lightmap -> quitar static
Puedes hacer ‘static batching’ de forma dinámica:• Con la función StaticBatchingUtility.Combine• ¿Un ejemplo? ¡Dentro código!
Lo que descubres
Batching, batching, batching
LAYERS, LAYERS, LAYERSLo que te cuentan
CullingRaycastingCollisions
LAYERS, LAYERS, LAYERSLo que descubres
Efectos visuales:• Objetos que sólo se ven con un powerup• Cámara para mostrar el mapa
Optimización de rendimiento:• Físicas más optimas• OnTriggerXXX y OnCollisionXXX más eficientes
Producción:• Retrasar decisiones de diseño para después de pruebas• Colliders que se ven en la escena pero no en el juego
Básicamente … ¡que valen para todo!
LAYERS, LAYERS, LAYERS
LAYERS, LAYERS, LAYERSOptimizando la producción I
¿Los enemigos abren puertas?
¡SI!
¡NO!
Vaaaale. A/B test, ¿no?
LAYERS, LAYERS, LAYERSOptimizando la producción II
LAYERS, LAYERS, LAYERSAlgunos consejos
Haz que la capa ‘Default’ no colisione con nada:• Fuerzas a tu equipo a asignar la capa adecuada
Cada vez que creas una capa nueva:• Revisa la matriz de colisiones (Project settings->Physics)• Si es para efectos puramente visuales, ninguna colisión
No abuses creando capas:• Hay un límite de 32
Herramientas de EditorOptimizando la producción III
Clases: Editor, EditorWindow,
PropertyDrawer
Métodos: OnInspectorGUI,
OnGUI, OnHierarchyChange,
OnProjectChange,
OnSelectionChange
Otros: SerializedProperty,
ScriptableObject, HideFlags
Utiliza un control de versiones
Optimizando la producciónConsejos básicos
Organiza el acceso a las escenas
Optimizando la producciónLos poderes ocultos de .NET
Herencia (Inheritance):• Enemy: MonoBehaviour• Zombie: Enemy
Librerías:• SQLite, I18N, …• Editor\Data\Mono\lib\mono\2.0
Métodos de extensión (Extension methods):• Añaden funcionalidad sin heredar• Se definen en una clase marcada como ‘static’
static public MyExtensionMethod (this MyExtendedClass myInstance)
EXTENSION METHODS
¡ESO ES TODO AMIGOS!
Gracias por su atención
mcompany@drakharstudio.com
@DrakharStudio
www.facebook.com/DrakharStudio
¡ Seguid la cadena !
¡ Mandadnos vuestros trucos !