270 likes | 428 Views
Desarrollo de juegos de video Aprendiendo a programar en C# de manera divertida. edgar.sanchez@logicstudio.net. Agenda. Visión de esta serie de webcasts Prerrequisitos de esta sesión Acerca de DigiPen Institute of Technology Información de la industria de juegos
E N D
Desarrollo de juegos de videoAprendiendo a programar en C# de manera divertida edgar.sanchez@logicstudio.net
Agenda • Visión de esta serie de webcasts • Prerrequisitos de esta sesión • Acerca de DigiPen Institute of Technology • Información de la industria de juegos • Visión de los componentes de un juego • Demostración del flujo del juego
Objetivos de esta serie • Dar a los participantes una introducción a algunos de los conceptos fundamentales del desarrollo de juegos • Introducir la programación con Visual C# 2005 Express Edition, el nuevo IDE (ambiente de desarrollo integrado) de Microsoft para programadores principiantes
Visión de la serie • Ocho sesiones de nivel 100: • Visión del proceso de desarrollo de juegos • Conceptos básicos de programación e introducción a C# • Visión de los elementos de un juego • Introducción a los sprites y la animación • Transformación y colisión de sprites • Control de los sprites por parte del jugador • Música y efectos de sonido del juego • Creación de comportamiento de sprites
Resumen de las sesiones • Sesión 1 – Resumen del proceso de desarrollo de juegos • Presentación del juego de demo (este es el juego que vamos a construir) • ¿Qué son los “eventos concurrentes interactivos de tiempo real”? • Cómo escribir una aplicación con eventos concurrentes • Componentes de un juego • Demostración del flujo de un juego • Sesión 2 – Conceptos básicos de programación e introducción a C# • Resumen • Creación de la más simple aplicación de consola • El método Main • Los namespaces y la directiva using • Salida • Funciones, operadores y variables • Entrada y condicionales • Lazos y repetición • Arreglos • Estructuras y clases
Resumen de las sesiones • Sesión 3 – Visión de los elementos de un juego • Gráficos (2D, 3D, bitmap vs. vector) • Entrada (teclado, ratón, palanca) • Sonido (WAV, MIDI, MP3, Ogg Vorbis) • Red (multijugador, cliente/servidor, igual-a-igual) • Sesión 4 – Introducción a los sprites y la animación • Fondo • Viewports • Animaciones • Marcos • Sprites • Retraso de marcos • Transparencia • Alpha-blending • Implementación en el juego • Fondo • Sprites
Resumen de las sesiones • Sesión 5 – Transformación y colisión de sprites • Traslación • Escala • Rotación • Velocidad • Implementación en el juego • Movimiento del enemigo • Sesión 6 – Control de los sprites por parte del jugador • Entrada del teclado • Dirección del vector • Posición • Creación de sprites al momento de ejecución • Implementación en el juego • Movimiento del carácter principal (teclas de flechas) • Disparos (barra espaciadora)
Resumen de las sesiones • Sesión 7 – Música y efectos de sonido del juego • Efectos de sonido • Música • Texto • Implementación en el juego • Cuenta de disparos (balas) • Efectos de sonido (disparos y explosiones) • Música de fondo • Puntaje (despliegue en pantalla) • Sesión 8 – Creación de comportamiento de sprites • Comportamiento de sprites • Detección de colisiones • Implementación en el juego • Comportamiento del enemigo • Comportamiento de las balas
Prerrequisitos de la sesión • No se requiere experiencia previa en programación • Aunque no es obligatorio, los participantes que deseen probar los ejemplos de juego pueden bajar los archivos de http://www.microsoft.com/events/series/msdnvideodev.mspx • El resumen (en inglés) del contenido presentado en la sesión está también disponible en formato .PDF en http://www.microsoft.com/events/series/msdnvideodev.mspx
Acerca de DigiPen Institute of Technology • Desde 1.994, DigiPen ofrece programas dedicados para estudiantes que desean seguir una carrera en la industria de los juegos • Ubicado en Redmond, Washington, DigiPen ofrece los siguientes títulos: • Master of Science in Computer Science • Bachelor of Science in Real-time Interactive Simulation • Bachelor of Science in Computer Engineering • Bachelor of Fine Arts in Production Animation
Información de la industria del juegoGran negocio • Hechos del 2.004 sobre la industria del juego, publicado por la Entertainment Software Association*: • La industria de juegos de video generó casi $10.000 millones en ventas de hardware y software – las ventas de boletos de cine = $9.500 millones • Más de 240 millones de unidades de computadores (45 millones) y juegos de video (160 millones) se vendieron en los Estados Unidos • Las ventas de juegos portátiles excedieron los $1.000 millones por primera vez (42 millones de unidades) • Las ventas de juegos en línea superan los $1.000 millones (principalmente deportes y disparos) • Los consumidores de EE.UU. gastaron $723 millones en la renta de video juegos * The Entertainment Software Association (2004): ‘Essential Facts About the Computer and Video Industry’, disponible en http://www.theesa.com/files/EFBrochure.pdf
Información de la industria del juego • Hechos del 2.004 sobre la “audiencia de juegos” publicados por la Entertainment Software Association*: • El 50% de todos los estadounidenses de seis o más años juegan juegos de computador o video (edad promedio: 30 años) • Aproximadamente el 90% de los compradores de juegos son mayores de 18 años • El 39% de jugadores son mujeres • Ventas de juegos de computadora y videos por clasificación: Todos 54%, Adolescentes 33%, Adultos 12% • Los tres géneros más vendidos de consola de juegos: Acción 30%, Deportes 18%, Carreras 10% • Los tres géneros más vendidos de juegos de computadora: Estrategia 27%, Entrenimiento familiar/infantil 20%, Disparos 16% * The Entertainment Software Association (2004): ‘Essential Facts About the Computer and Video Industry’, disponible en http://www.theesa.com/files/EFBrochure.pdf
Información de la industria del juego“El círculo de la vida” • Los tres grupos principales: • Desarrollador: responsable de la creación del software del juego; bastante como un estudio de cine, este grupo de producción de múltiples facetas esta hecho de productores, directores, programadores, artistas, diseñadores, escritores, músicos, soporte de TI y soporte administrativo • Editorial: típicamente provee fondos a los desarrolladores (socio único, co-socio o tercero); maneja otros aspectos como la fabricación y el mercadeo • Distribuidor/minorista: entrega los productos al consumidor • Muchos desarrolladores dependen de las editoriales para los fondos -> las editoriales tienen que pronosticar lo que los consumidores querrán en 1-2 años y deben conseguir el compromiso de los minoristas -> Los minoristas observan a los desarrolladores para ver que es lo último y mejor
Información de la industria del juegoNegocio serio • Los juegos de hoy en día son piezas de software extremedamente sofisticadas que ofrecen • Ambientes 3D y caracteres increíbles • Modelos físicos reales • Capacidad de red • Tecnología de sonido ambiental total • Inteligencia artificial avanzada • Puede tomar más de dos años completar un juego, con 20-30+ personas involucradas. Esto puede equivaler a $8-$10+ millones para la producción. • Una producción de $8 millones a $40/unidad: 200k unidades solo para recuperar los costos • Relativamente pocos juegos pueden vender más de 100k unidades
Interacción concurrente en tiempo real • ¿Por qué concurrente? • Las balas, enemigos, efectos de sonido, música y otros elementos del juego existen y se mueven al mismo tiempo. • Lista de eventos coincidentes en este juego: • Scrolling del fondo • Revisar el teclado por si hubo teclas presionadas (flechas, etc.) • Calcular la nueva posición para la nave • Probar si la tecla de disparo ha sido tocada • Crear una bala y tocar el efecto de sonido de la bala • Calcular la nueva posición de la bala • Calcular la nueva posición de cada enemigo • Detectar colisiones entre la bala y cada enemigo • Tocar el efecto de sonido si la bala golpea a un enemigo • Presentar una animación si la bala golpea a un enemigo • Tocar la música de fondo • Actualizar los puntajes • Etc.
¿Por qué interactivo? • El jugador decide cuándo y dónde mover la nave • El jugador decide cuándo y dónde disparar una bala • La Inteligencia Artificial del juego decide cuando atacar • El número de balas se incrementa cada vez que se dispara una • El puntaje aumenta cada vez que se golpea a un enemigo • El enemigo explota cuando es tocado por una bala • Etc.
¿Por qué en tiempo real? • Cuando la nave se mueve, su nueva posición es calculada al momento de ejecución • La colisión entre la bala y el enemigo es detectada al momento de ejecución • La nueva posición de cada enemigo es calculada al momento de ejecución • Los textos son actualizados al momento de ejecución • Etc.
¿Cómo se escribe una aplicación con eventos concurrentes? • Se necesita ejecutar varias conjuntos de instrucciones al mismo tiempo • Sería bueno tener un CPU para cada evento • Pero usualmente tenemos un solo CPU para todos los eventos • Es necesario compartir el CPU entre todos los eventos • Hay que darle un poquito de tiempo de CPU a cada evento • El jugador tendrá la ilusión de que los eventos están ocurriendo simultáneamente • Esto es bastante similar a como funciona una película (por eso es que en inglés se llaman también “foto en movimiento”)
El lazo del juego • Se necesita repetir los pasos requeridos que hacen que el juego parezca “moverse” • ¿Con qué frecuencia se deben repetir estos pasos? • La duración del “lazo” afecta la velocidad del juego • Cada lazo o iteración del juego se denomina un marco o frame • La tasa de velocidad es conocida como el frame rate
Flujograma del lazo del juego Iniciar el juego Iniciar el tiempo de arranque Leer entradas del jugador/a ManejoCalcular la nueva posición de cada objeto basándose en: Comportamiento Colisión Física Inteligencia Artificial No DibujoGenerar la imagen de un objeto a la vez en un buffer ¿Es el tiempo transcurrido < 16,66 ms? Copiar el contenido del buffer a la memoria de video para que se despliegue el frame Si No hacer nada
Cómo agregar interacción con eventos concurrentes • Detectar entradas del usuario • Ejecutar el comportamiento de cada objeto • Actualizar la posición y el estado de cada objeto • Generar las imágenes de los objetos • Todas las actualizaciones y generaciones se hacen en cada frame • Por ejemplo, en un juego de 60 FPS, todos los objetos son actualizados y generados 60 veces por segundo • Esto es lo que esencialmente da la ilusión de concurrencia
Resumen de la sesión • Visión de la serie de webcasts • Prerrequisitos de la sesión • Acerca de DigiPen Institute of Technology • Información de la industria de juegos • Visión de los componentes de un juego • Demostración del flujo de un juego
¿Deseas aprender más? • DigiPen Institute of Technology ofrece una variedad de vías para explorar una carrera en el desarrollo de juegos de video: • La serie original de webcasts sobre desarrollo de juegos - Realizada en mayo del 2005. Se puede ver en http://www.microsoft.com/events/series/msdnvideodev.mspx • Talleres de verano – Series de clases introductorias en programación de juegos, producción de animaciones 3D y robótica. Más información en http://workshops.digipen.edu • ProjectFUN Distance Learning – DigiPen tiene cursos en línea impartidos por sus instructores. Más información en http://projectfun.digipen.edu
Preguntas y respuestas • Proponer preguntas usando el botón “Ask a Question” • No te olvides de llenar la encuesta • Para webcasts futuros y pasados (en inglés) http://www.microsoft.com/webcasts • Para webcasts futuros y pasados (en castellano) http://www.microsoft.com/spanish/msdn/latam/video • Este webcast fue presentado usando Microsoft Office LiveMeeting. Se puede obtener una prueba de 14 días gratuita en http://www.microsoft.com/presentlive
Conceptos básicos de programación e introducción a C# Nos vemos la próxima semana para…
¿Dónde se puede obtener MSDN? • Llenar la encuesta al final del webcast y pedir a un representante de Microsoft que le contacte • Convertirse en un suscriptor de los CDs/DVDs de MSDN en http://msdn.microsoft.com/subscriptions