Tutorial c# y Video Juegos

15,941 views

Published on

Tutorial de video juegos

2 Comments
3 Likes
Statistics
Notes
No Downloads
Views
Total views
15,941
On SlideShare
0
From Embeds
0
Number of Embeds
117
Actions
Shares
0
Downloads
286
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide

Tutorial c# y Video Juegos

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

×