02 vdj egdc_luis villegas

80
Historias de Desarrollo Luis Villegas

Transcript of 02 vdj egdc_luis villegas

Historias de Desarrollo

Luis Villegas

• Esta presentación refleja la experiencia de un solo

ingeniero

• Decenas de personas trabajaron en los distintos juegos

hechos por Bungie

A d v e r t e n c i a s

A g e n d a

• Usted no sabe quien soy yo!

• Historia de Bungie

• Lecciones de Desarrollo

I n t r o d u c c i ó n

• Colombiano (Medellín)

• Ingeniero de Sistemas

• Gamer (Street Fighter, RPGs, Destiny)

I n t r o d u c c i ó n

I n t r o d u c c i ó n

I n t r o d u c c i ó n

I n t r o d u c c i ó n

M i n i B i o g r a f i a

• 2 años en Microsoft

• 1 año en Electronic Arts

• 11 años en Bungie

• Experiencia en desarrollo de Herramientas, Graficas,

Plataforma, Infraestructura, y mas recientemente de

tecnología en línea

B u n g i e

B u n g i e

• Fundada en 1991 por dos amigos (Alex Seropian y

Jason Jones)

• Comprada por Microsoft en el 2000

• Se convierte en compañía independiente de nuevo en el

2007

• Responsable por la creación de muchos juegos, pero

mas conocida por las franquicias de Halo y Destiny

B u n g i e : J u e g o s

B u n g i e : J u e g o s

B u n g i e : J u e g o s

B u n g i e : M a r a t h o n

B u n g i e : M y t h

B u n g i e : M y t h

B u n g i e : M y t h

B u n g i e : M y t h

B u n g i e : O n i

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

B u n g i e : H a l o

• Tiempo de transición

• Ya queríamos ser independientes y ser dueños de

nuestro propio Destino

• Comienza un nuevo capitulo para la compañía

D e s t i n y

D e s t i n y

• Juego de Acción en primera persona (First Person

Shooter)

• Enfocado en la experiencia Social

• Ofrece sistema de Inversión para mantener al jugador

interesado

D e s t i n y

• Proyecto a diez años

• Mundo cambiante (nuevas misiones, nuevo equipo y

armamento, etc)

• Contenido de Descarga, Expansiones, y mas en el

futuro

• Estudio con mas de 500 empleados

D e s t i n y

• El Viajero entra al sistema solar, y su llegada nos

permite florecer como civilización

• Empieza la edad de oro, y se colonizan otros planetas

• El Viajero es alcanzado por sus enemigos, los cuales

casi destruyen por completo nuestra civilización

• El jugador es la esperanza de el planeta tierra

D e s t i n y

A c t i v i d a d e s

• La idea era crear un juego con mayor accesibilidad

• El tipo de actividades están repartidas en distinto tipo de

inversiones de tiempo

• Los Patrols pueden tomar menos de 10 minutos

• Las misiones de la historia pueden tomar entre 30

minutos a mas de una hora

• Los Raids pueden tomar varias horas

S o c i a l

• Entorno basado en actividades sociales

• La gran mayoría de actividades están diseñadas para

ser disfrutadas tanto solo como en grupo

• El universo de Destiny siempre esta cambiando, y en el

camino se encuentran otros jugadores con distintos

niveles de progreso

D e s t i n y

B u n g i e : C u l t u r a

• “Dont make us kick your ass”

• Todo lo podemos hacer mejor nosotros

• Espíritu 100% independiente

• La mas importante es la gente, no la propiedad

intelectual

• La innovación puede ocurrir en cualquier nivel de la

compañía

B u n g i e : C u l t u r a

• La meta es crear los juegos que nosotros mismos

queremos jugar

• Ser los mas grandes críticos de nuestro trabajo

• Generar un entorno de colaboración y no de

competencia interna

• La calidad del juego es lo mas importante

R e t o s c u r i o s o s : M u l t i j u g a d o r

• Halo era un juego altamente competitivo

• Necesitábamos modelar de alguna forma la habilidad de

un jugador

• Investigamos distintos modelos

Sistema matemático interno

ELO (Ajedrez)

Glicko

R e t o s c u r i o s o s : M u l t i j u g a d o r

• También queríamos que los jugadores pudieran ver su

nivel de habilidad

• Utilizamos en Halo 2 un modelo basado en ELO

• Creo un problema muy curioso:

híper-competitividad + anonimato en línea + ansiedad de perder = presión emocional negativa

R e t o s c u r i o s o s : M u l t i j u g a d o r

• Empezamos a trabajar en una nueva forma de

determinación de habilidad con Microsoft y la

Universidad de Cambridge

• El nuevo sistema se llamaba “TruSkill”

R e t o s c u r i o s o s : M u l t i j u g a d o r

• También le dejábamos saber a los jugadores que tan

buenos eran en el mundo “leaderboards”

• Estos nos causo muchos dolores de cabeza

• Los jugadores se obsesionaron con su nivel y con el

numero de puesto

• Esto llevo a la creación de muchos grupos de hackers y

otros tramposos que solo querían ver su nombre como

numero 1

R e t o s c u r i o s o s : M u l t i j u g a d o r

• También creamos muchos sistemas de seguridad para

detectar a los tramposos

• Colección de datos con análisis post-mortem

• Todas los jugadores suben estadísticas como parte del

juego

R e t o s c u r i o s o s : M u l t i j u g a d o r

• Las lecciones mas grandes que aprendimos:

• Tener cuidado con los números que se presentan al jugador ya que pueden crear experiencia negativas

• Intentar aprovechar el sector académico para resolver problemas interesantes

D e s t i n y : D e s a r r o l l o d e M o t o r

M o t o r

M o t o r

• En el 2008 el Motor que teníamos (Blam) estaba

optimizado para el Xbox, y para procesadores

homogéneos

• Era claro que el futuro estaría lleno de procesadores

heterogéneos, y que el motor no estaba listo para esos

cambios

• Empezamos la evaluación de nuestras opciones

M o t o r

• Empezar desde cero?

• Comprar la licencia de un motor existente?

• Modificar el motor existente?

M o t o r

• Decidimos seguir desarrollando sobre el motor existente

(Blam)

• El Desarrollo estaba basado en estos principios:

- Multihilo, Multiplataforma

- Separacion de motor y lógica de juego

- Mantener todas la buena funcionalidad de Blam (Networking, AI, Sandbox, etc)

C a m b i o s e n u n a D é c a d a

Halo 2 (2004) Destiny (2014)

Peak Engineering Team 17 70

Peak Development Team 115 480

Source Files 3,624 25,290

Lines of Code 1.5M 5.7M

Final Executable Size 4.9MB 26MB

Source Content Data 70GB 2TB

Content Build Size 4.2GB 20GB

M o t o r

• Los retos y las soluciones

• El motor tenia que estar funcionando 100% del tiempo

• Cualquier problema de estabilidad nos costaría mucho tiempo y dinero

• Decidimos mantener los nuevos y viejos componentes al mismo tiempo

M o t o r

• Para los cambios mas grandes usamos un repositorio

aparte

• Era lo correcto pero fue un gran dolor de cabeza

• Cada integración entre repositorios tomaba días y a

veces semanas

M o t o r

• Lecciones

• Tener un buen plan de migración de código, mas que todo si el alcance del proyecto y el numero de ingenieros incrementa

• Utilizar buenas metodologías de producción y control de calidad para mantener el nivel de calidad del código lo mas alto posible pre y post integracion

M o t o r

• Para mas información técnica les recomiendo la

presentación de Chris Butcher en GDC 2015 “Destiny:

Six Years in the Making”

P r o d u c c i ó n

P r o d u c c i ó n

• Varios tipos de metodologías

• El programa primario de Desarrollo tenia metas cada 6 a

8 semanas

• Cada grupo de ingeniería manejaba su propio programa

dentro de esas 6 a 8 semanas

• Varias grupos usaron Scrum, otros un modelo mas

clásico de desarrollo en cascada

P r o d u c c i ó n

• No tomar ningún método de producción como Religión

• Probar varias metodologías y acomodarlas a las

necesidades del equipo

• En el grupo de Online teníamos metas cada 3 semanas,

cada meta requería un demo por ingeniero, y validación

de el grupo de control de calidad

P r o d u c c i ó n

• Les recomiendo que en cada paso de desarrollo tener

un producto con alto nivel de estabilidad

• A cada paso del proceso se debe tener la capacidad de

correr y validar el juego (o los sistemas de juego)

C o n t r o l d e C a l i d a d

C o n t r o l d e C a l i d a d

• Otra area no tan glamurosa del desarrollo de

videojuegos

• En mi opinión esta es la formula secreta de Bungie

• Existe una cultura de calidad entre todos los miembros

de Bungie

C o n t r o l d e C a l i d a d

• Este principio es aplicado en todos los niveles de

desarrollo

• Tiene un costo: velocidad de cambio, hay que hacer el

balance con cuidado

• Usamos muchos sistemas automatizados para reducir el

margen de error humano

E s t a b i l i d a d

• Sistemas automatizados:

• Continous build/Continous integration

• Unit tests: Pruebas unitarias creadas por los ingenieros para asegurarse que el código sea estable

• Gaunlet: sistema de validación liviano que se ejecuta antes de que el código se haga parte oficial del repositorio)

V e r i f i c a c i ó n e x h a u s t i v a

• Automation: Pruebas automatizadas del juego en las

que se verifican escenarios específicos (Torre, PvP,

Espacios Publicos, etc)

• BVTs: Build Verification Tests. Un grupo que se dedica

a hacer pruebas manuales y recomiendan versiones

especificas para desarrollo

D i s t i n t a s a u d i e n c i a s

• Pruebas internas para asegurarnos que la estabilidad y

el ritmo de juego sean positivos con varios jugadores

• Pruebas externas con distintas audiencia para hacer

pruebas de escala y diversión

• Friends and Family

• Alpha

• Beta

R e c o m e n d a c i o n e s

• Invertir en sistemas automatizados (Por lo menos

Continous Build)

• Asegurarse que los creadores de contenido nunca estén

bloqueados

• Utilizar todos los recursos posibles para crear criticas

constructivas del juego

L a I n d u s t r i a d e V i d e o j u e g o s

• Primer problema: Como aprendo a crear juegos?

• No existía ningún tipo de documento que describiera el

desarrollo de juegos profesionalmente

• Y todas las compañías mantenían un nivel muy alto de

confidencialidad

L a I n d u s t r i a d e V i d e o j u e g o s

• Segundo problema: Como entro a una compañía de

juegos?

• La industria con el problema de la gallina y el huevo

• Te piden experiencia en juegos para contratarte

• Como se gana experiencia si no te contratan?

B u s c a n d o E x p e r i e n c i a

• La creación de Demos, Juegos Independientes, y

contribuciones a proyectos de código abierto generan

esa experiencia

• Le recomiendo mucho a los que están empezando que

sigan con sus proyectos personales

• Se deben seleccionar los proyectos con cuidado y hay

que ser realistas en lo que se puede lograr

B u s c a n d o E x p e r i e n c i a

• Los primeros proyectos que quise hacer siempre tenían

alcances imposibles (Motor completo, nueva

arquitectura grafica, simulación física, editor, sistemas

de conexión sobre redes, etc.), esto nunca se

materializo

• Si fuese a empezar de nuevo escogería algo mas

pequeño (i.e. sistema de conexión sobre redes en un

juego existente)

U l t i m o c o n c e j o

• Generar ideas es fácil

• El truco esta en la ejecución

• Generar buenas ideas bajo las restricciones que vienen

con producción es donde se define si el juego va a ver la

luz del día

• Siempre hay que trabajar con limites

P r e g u n t a s ?