eva 2003 - adva1 ingeniería de software… ¿vale la pena en el desarrollo de juegos? por martín...
TRANSCRIPT
EVA 2003 - ADVA 1
Ingeniería de Software…
¿Vale la pena en el desarrollo de juegos?
por
Martín Massera (NGD studios)
EVA 2003 - ADVA 2
o…
Desarrollo de juegos en grandes
equipos
EVA 2003 - ADVA 3
¿Por qué esta charla?
ADVA: Transmitir la experiencia Para quienes quieren empezar un
proyecto Ingenieria de software, gralmente
poco conocida por programadores amateur
EVA 2003 - ADVA 4
Introducción a la ingeniería de software
Un poco de historia: la software crisis varios interrogantes:
¿Qué tienen que ver programar bien con buen software?
¿Cómo manejar un proyecto grande para…
que haga lo que tiene que hacer? que sea estable? Que sea terminado a tiempo?
EVA 2003 - ADVA 5
Historia de los videojuegos
Empezó más tarde que el resto de la industria, pero la historia se repite.
Pocas plataformas donde una persona sola puede terminar un juego.
EVA 2003 - ADVA 6
Diferencias entre videojuegos y “otro” software
Objetivo: divertir “Es un arte” El prototipo del desarrollador
Hay diferencias, pero no tanto a nivel de programación
EVA 2003 - ADVA 7
Qué es la I.S.?
Conjunto de teorías, métodos, herramientas, etc. para producir software con la calidad deseada.
Además, facilitan todo el ciclo de vida de un software.
EVA 2003 - ADVA 8
Ciclo de vida
Diseño / Desarrollo
Instalación
Operación
Retiro
EVA 2003 - ADVA 9
¿Por qué esta charla? bis
La I.S. proviene de la experiencia de otros desarrolladores (Best Practices)
“No silver bullet” Es necesario encontrar soluciones
para el desarrollo de videojuegos
EVA 2003 - ADVA 10
“Dicen que soy aburrido”
Supuestas contras: rigidez en el proceso quita creatividad Más proceso = menos desarrollo
EVA 2003 - ADVA 11
Sobre qué trata la I. S.
Análisis de requerimientos Manejo de riesgos Especificación Diseño / arquitectura Implementación Testing
EVA 2003 - ADVA 12
Y no nos olvidemos del…
Proceso de desarrollo!
EVA 2003 - ADVA 13
En juegos
Requerimientos: game design
Testing: mucho beta testing, muy poco del resto
“Otros”: Es importante manuales, cajas, promotoras en E3,
etc.
EVA 2003 - ADVA 14
En juegos
Especificacion: por qué no se hace? Tiempo de vida de los juegos Nivel académico requerido
Riesgos: muy importante en proyectos largos
Implementacion: esta parte es casi igual al resto del software
EVA 2003 - ADVA 15
Calidad del software “Hay que expresar la calidad
deseada para poder alcanzarla”
Una vez establecida la calidad deseada, la calidad final es producto directo de la calidad del proceso de desarrollo
Calidad vs tiempo vs presupuesto
EVA 2003 - ADVA 16
Distintos atributos de calidad
Internos vs externos Ej:
Performance (FPS) Estabilidad (cuelgues) Arquitectura “Amigabilidad” con el usuario Y… diversión!!! La gran diferencia
EVA 2003 - ADVA 17
Calidad, servicio y limpieza
La calidad depende de muchas cosas. Ejemplo: Target de usuario Tipo de juego.
No siempre hay que ser carmack
EVA 2003 - ADVA 18
Prueba y error Hay que planear para obtener la
calidad deseada.
Engines: dificil de optimizar si no se penso en la velocidad desde el principio
Prueba y error sirve en algunos casos (ej: balanceo de gameplay)
EVA 2003 - ADVA 19
Todo esto para alcanzar
El nirvana de los programadores de
juegos!
EVA 2003 - ADVA 20
Proceso de desarrollo
Cascada Iterativo
Milestones
Distintas formas de ir asegurando la calidad
EVA 2003 - ADVA 21
Cascada
Análisis de requerimientos Diseño Implementación Testing
Demasiado utópico: una fase puede cambiar cosas de las anteriores
EVA 2003 - ADVA 22
Iterativo Una sucesión de “cascadas”
Requerimientos 1 diseño 1 implementación 1 testing 1
Requerimientos 2 diseño 2 implementación 2 testing 2
Requerimientos 3 diseño 3 implementación 3 testing 3 etc
EVA 2003 - ADVA 23
Milestones Dividir la fase de implementación
en partes
El resultado de cada parte es un ejecutable estable (aunque con menos features)
Previenen la “avalancha de bugs”
EVA 2003 - ADVA 24
Equipo de desarrollo
Comunicación entre programadores Personalidades conflictivas Espíritu de equipo
Comunicación con artistas / game designers ”El papel es tu amigo”
Responsabilidades, no todos hacen todo
EVA 2003 - ADVA 25
Game design / requerimientos Game design: disciplina independiente
Análisis de requerimientos: Game design y no tanto, distintas clases de requerimientos mas cerca de la implementación o del game design
Un error en los requerimientos es muy dificil de corregir después (ej. No considerar multiplayer)
EVA 2003 - ADVA 26
Diseño / Arquitectura
Arquitectura: distintas vistas Módulos Ejecución Conceptual Etc
Más alto nivel Diseño: ya entrando en detalle
EVA 2003 - ADVA 27
Diseño / Arquitectura
Definen el esqueleto del programa Patrones “Estilos arquitectónicos” Otras clases de software parecidas:
Simulación Sistemas de tiempo real
Herramientas: UML
EVA 2003 - ADVA 28
Diseño / Arquitectura Diseñar para:
Velocidad Estabilidad Cambios (en el game design y segundas
partes) Desafío: Abstraer la tecnología de base No cambió el gameplay tanto como las
placas 3D Cohesión vs acoplamiento “No hardcodees mañana lo que puedes
diseñar hoy”
EVA 2003 - ADVA 29
Implementación
“Un pequeño pero importante detalle”
A esta altura, todo + o – definido
Los cambios a distintas etapas tiene que ser registrado (y no con comentarios en el código )
EVA 2003 - ADVA 30
Herramientas que ayudan IDE de desarrollo (Kdevelop, Visual studio) Compilación distribuida (IncrediBuild) Chequeo de memoria dinámica (Bounds
checker) Análisis de performance (Vtune) Control de versiones (CVS)
Reporte de bugs, TO-DO list, wiki, foro, feedback
EVA 2003 - ADVA 31
Errores
En gral los errores son faciles de corregir solo si se detectan en la misma fase en que se hacen
Hay que “testear” el game design
EVA 2003 - ADVA 32
Verificacion / Testing “El testing no puede demostrar la
correctitud de un programa, solo sus errores”
Viejo y querido beta testing
Otras cosas: Regresion Integracion Unidad
EVA 2003 - ADVA 33
Verificacion / Testing En general se deja de lado por
falta de tiempo Hay herramientas
“assert” cppunit
Los bugs pueden: Colgar el programa Arruinar la experiencia del jugador
EVA 2003 - ADVA 34
Problema del testing en videojuegos
Muchas veces resultados gráficos
Bugs difíciles de reproducir
La arquitectura tiene que estar pensada para corregir errores (logueo, saves, etc)
EVA 2003 - ADVA 35
Conclusiones
Vale la pena!!!
Aunque no todo es útil para juegos... Seleccionar las herramientas/métodos
EVA 2003 - ADVA 36
Conclusiones
excepciones:
Software de alcance muy cortito
plataformas donde no nos podemos dar el lujo de ciertas abstracciones por temas de eficiencia
EVA 2003 - ADVA 37
Bibliografía
“Fundamentals of Software Engineering” Ghezzi, Jazayeri y Mandrioli
“Game Architecture and Design” Andrew Rollings y Dave Morris