miércoles, 29 de agosto de 2012

Reporte de la Semana 3

Para esta semana, los milestones a cumplir fueron:
  • Selección de la Temática
  • Investigación sobre la Creación de personajes
  • Investigación sobre la Creación de Mapas
  • Inicio de Uso de Blender
Todo esto por 10 puntos.

Selección de la Temática 

En cuanto a selección de género nos referimos más que nada al tema principal del juego, o sobre que se desarrollaría la historia. No tenemos pensado realizar una historia muy profunda, con dialogos y demás, debido a que eso requeriría mucho tiempo, o más personas, cosa que no tenemos, al ser un equipo reducido(los estudios generalmente cuentan con escritores que se encargan de escribir las historias de los juegos). Por lo tanto, la temática será lo que dirigira la mayoría de la historia del juego.

Dicha temática, a decisión del equipo, será ambientada en un mundo post-apocalíptico, en un estilo de supervivencia. Dicho ésto, los enemigos principales serían zombies, y quizás otros supervivientes. Esto nos da libertad de omitir la mayoría de la historia, por lo menos por ahora, debido a que al decir esto damos solamente un motivo al jugador, sobrevivir. Claro, esto no debería afectar la jugabilidad.

Investigación Sobre la Creación de Personajes

Para el uso de Blender, la principal fuente de información sobre su uso y tips en general son videos de youtube. Investigando sobre la creación de personajes, encontramos que es posible utilizar una imágen de fondo como plantilla para construir alrededor de ella los modelos 3D.


Entonces, si desearamos por ejemplo modelar el cuerpo humano, para los diferentes personajes del videojuego, podemos utilizar una plantilla como la siguiente:


A partir de esa plantilla, construiramos el modelo utilizando figuras geométricas. El uso de plantills es una ventaja muy grande, porque gracias a esto podríamos crear personajes utilizando nuestras propias plantillas hechas a mano, o con algún programa.

En el video el modelo parte desde cubos debido a que es bastante fácil extenderlos de distintas formas, y haciendolo de la forma correcta, es posible hacer hasta un modelo de un cuerpo sin una forma cúbica real, como el de un humano. El modelo hecho de polígonos suele verse algo así (sin agregar texturas y demás):



Investigación Sobre la Creación de Mapas

Cuando hablamos de mapas, nos referimos a localizaciones donde el juego tomara lugar. Por lo tanto, es importante saber como poder hacer esto en blender. Si bien no tenemos planeado que el juego sea 3D, tener el fondo, aunque sea estático, con gráficos 3D, sería un buen añadido al juego.


El mismo autor del video anterior, tiene en su canal un video tutorial muy bueno de como crear terrenos en blender. El terreno es una parte importante del mapa, refleja la localización de una forma parcial, ya que puedes darte cuenta facilmente si estas en un campo, en una ciudad, en el mar, en una montaña, etc.



Básicamente lo que se hace para crear terrenos, es crear una figura plana, un cuadro, y dividirlo en partes muy pequeñas, cientos de pequeños cuadros. Después para crear altibajos en el terreno, simplemente se estiran vértices de éstos pequeños cuadros.

Inicio con Blender

Para comenzar a acostumbrarnos al uso de Blender, algunos de nosotros comenzamos a hacer pequeños modelos de objetos sencillos, como es el caso de una copa, que hizo Emmanuel basado en un excelente tutorial de un video

Básicamente lo que se hizo fue utilizar un background como plantilla, en este caso esta simple imágen de un dibujo de una copa de vino:
Entonces, usando esta imágen de plantilla, a partir de un circulo inicial en la base, se iba construyendo parte a parte la copa, estirando dicho círculo verticalmente, y acomodandolo en los demás ejes para que quedara también de forma proporcional en 3D, como se puede ver en la siguiente imágen:


Creando el contorno, lo siguiente era añadir una capa más, para darle un grosor a lo que sería el interior de la copa, un detalle muy interesante que se explica muy bien en el tutorial(link incluido más abajo). Con esto podemos darle al modelo la apariencia de tener un fondo interior, como una copa real.


    



Enlaces:

miércoles, 22 de agosto de 2012

Reporte de la Semana 2

Para ésta semana los objetivos a cumplir fueron:
  • Selección de género del juego
  • Elección - Instalación de herramientas
Selección de Género

Realizamos una votación en el grupo de Facebook, para poder decidir que tipo de juego escogeríamos.
Inicialmente teníamos contemplado elegir entre un fighter 1 vs 1, o un beat 'em up, como se puede ver en el post pasado, pero surgió la idea de un juego tipo brawler, como el famoso Super Smash Bros. Brawl, aunque aún así la idea triunfante fue el género Beat 'em up.


Cada uno de nosotros buscó un juego de este género para poder tomar ideas de dichos juegos, aquí a continuación están los videos de los juegos que encontró cada persona:
IntegranteJuego Video
EmmanuelScott Pillgrim vs The World
Roberto RafaelDouble Dragon
VictorMighty Morphin Power Rangers
RaúlRenegade



Elección - Instalación de Herramientas
  • Python
    • Como lenguaje de programación, elegímos Python por su simplicidad de uso, además de que es un lenguaje muy versátil con el que podemos disponer de múltiples módulos para todo tipo de cosas que nos ayudarian en el proyecto.
    • Para instalar Python, hicimos lo siguiente:
        • Fedora, Ubuntu: Python ya viene incluido en estos sistemas operativos por lo cual solo actualizamos a la versión 2.7.3, descargandola de aquí, y descromprimiendo para luego ejecutar los comandos: ./configure, make, make install, en ese orden.
        • Mac: Python igualmente ya viene incluido en Mac OS X, pero también es necesario actualizarlo a la versión 2.7.3, para esto es posible descargar el instalador, y correrlo. El instalador se puede descargar de aquí: http://www.python.org/getit/.
        • Windows: Para Windows, solo es necesario descargar y correr el instalador respectivo, disponible en el mismo link.
  • Pygame
    • Pygame es un conjunto de módulos del lenguaje de programación Python que permiten la creación de videojuegos en dos dimensiones de una manera sencilla. Funciona como interfaz de las bibliotecas SDL, y está orientado al manejo de sprites. Dada la simplicidad de Python, se pueden crear prototipos y desarrollar rápidamente. 
    • Para agregar el módulo Pygame a python, se hizo lo siguiente:
      • Fedora: Para Fedora, simplemente desde una terminal se debe ejecutar el comando: sudo yum install python-pygame.
      • Ubuntu: En Ubuntu, igualmente es posible instalar pygame con un simple comando de terminal, en este caso: sudo apt-get install python-pygame.
      • Windows y Mac: Aquí también es posible descargar los instaladores directamente desde la siguiente página: http://www.pygame.org/download.shtml.
  • Blender
    • Blender es un programa informático multiplataforma, dedicado especialmente al modelado, animación y creación de gráficos tridimensionales. En nuestro caso, que desarrollaremos un juego 2D, el uso que le daremos a Blender será crear un objeto (personaje, item) y modelarlo de forma 3D, dandole diferentes animaciones. Dichas animaciones entonces las exportaremos como PNGs, que después GIMP se encargará de convertir en sprites que usaremos en Pygame.
    • Para la instalación de blender, se realizó lo siguiente:
      • Fedora, Ubuntu, Mac: Es posible descargar el source de blender para Linux del siguiente link: http://www.blender.org/download/get-blender/. De ahí, solo es necesario movernos a la carpeta, y correr el ejecutable blender.
      • Windows: Windows cuenta con su propio ejecutable para poder instalar blender, por lo que simplemente debemos bajarlo de la misma página, y seguir los pasos para instalarlo.
  • GIMP
    • Para la creación de los personajes y los mapas(en forma gráfica), encontramos que mediante GIMP y el uso de capas, es posible convertir una sucesión de imágenes PNG en un sprite con movimiento, mediante el uso del plugin Sprite Sheet.
    • Para instalar GIMP se realizó lo siguiente:
      • Fedora: Con un simple comando en una terminal: sudo yum install gimp.
      • Ubuntu: Igualmente con un comando: sudo apt-get install gimp.
      • Mac: Para instalar GIMP en Mac, debemos descargar y correr el instalador descargable de la siguiente página: http://www.gimp.org/macintosh/.
      • Windows: Igualmente, solo es necesario descargar y correr el instalador, que se puede conseguir aquí: http://www.gimp.org/windows/.

miércoles, 15 de agosto de 2012

Reporte Inicial

 Proyecto: Puddi Fighters
Gerente del Proyecto: Víctor Briones

Descripción: 
Juego de Peleas en 2D diseñado en python ya sea el género Beat ‘em up, o un clásico juego de 2 peleadores 1 Vs 1 a la vez.



Scott Pilligrim Vs. The World, ejemplo de videojuego Beat 'em Up.





Marvel Vs Capcom, clásico juego de peleas


Metodología

Scrum es un marco de trabajo para la gestión y desarrollo de software basada en un proceso iterativo e incremental utilizado comúnmente en entornos basados en el desarrollo ágil de software:

  • Requerimiento
  • Análisis
  • Diseño
  • Evolución
  • Entrega

Éste método nos sería útil debido a que se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al  proyecto. Scrum está especialmente indicado para proyectos en entornos complejos, como el desarrollo de videojuegos,, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales.


La desventaja que encontramos es el hecho de tener que separar al equipo de desarrollo para las reuniones necesarias, pero debido a que no es un proyecto de tiempo completo, esto podría no ser necesario, habiendo otras formas de contactarnos, agregando que hay una persona que sería asignada directamente para realizar las pruebas.

El product backlog es un documento de alto nivel para todo el proyecto. Contiene descripciones genéricas de todos los requerimientos, funcionalidades deseables, etc. priorizadas según su retorno sobre la inversión. En el caso de desarrollo de videojuegos, esta parte es muy importante es que un documento de diseño del juego, no es necesario debido a que el backlog lo reemplaza.

Éste documento es un documento de diseño vivo, debido a que se va editando frecuentemente en el diseño de un video juego. Lo que incluiriamos sería texto, imágenes, diagramas y otros conceptos u otros medios útiles para ilustrar mejor las decisiones de diseño, como los mapas, interfaz y personajes.

Roles del Equipo:


Definimos las áreas en las que cada persona participará para aportar el proyecto. Concordamos en que cada persona debe participar por lo menos en un par de ellas, pero estar informado del progreso de las demás, sobre todo si está relacionadas a lo suyo, para poder más fácilmente incorporar todo junto cuando sea necesario.
  • Victor (Product Owner): Física del Juego, Interfaz-Menú, Cálculos Matemáticos(Golpes, barras de vida, etc),  Pruebas
  • Emmanuel (Scrum Master): Movimiento-Incorporación de Personajes, Inteligencia Artificial, Física del Juego
  • Raúl: Cálculos Matemáticos(Golpes, barras de vida, etc),Creación de Personajes, Documentación
    • Roberto: Creación de Mapas, Creación de Personajes
    Descripción de las áreas:

    • Movimiento-Incorporación de Personajes 

    En ésta área el objetivo será agregar personajes ya creados o definidos (sprites) a un ventana, y poder darle los movimientos básicos(caminar, golpear, brincar) en una ventana en la computadora, esto incluye tanto personajes jugables como posibles NPCs o enemigos.
    • Inteligencia Artificial 
    El área se refiere a la creación de enemigos “inteligentes” que puedan jugar por sí solos para combatir contra el jugador. En sí, lo que se espera es que los movimientos ya programados para los enemigos sean realizados en respuesta a los movimientos el jugador, agregando dificultad variable al juego.
    • Física del Juego
    Ésta área se encargará de todo lo relacionado con física involucrado en el juego. Esto sería los brincos, golpes(y contacto necesario para ellos), caídas, y demás.
    Interfaz-Menú: Creación de los menús, y retroalimentación visual del juego. Esto incluye desde los menús introductorios, la selección de personajes y opciones hasta el HUD (head-up-display) con la vida, puntos, tiempo y otras cosas.  

    • Creación de Personajes 
    Involucra la creación de personajes como sprites, ya sean enemigos o amigos. Estos sprites seran imágenes de los personajes en todas las posiciones posibles que puedan tomar, golpeando, pateando, brincando, etc.
    • Creación de mapas 
    Creación de los mapas en los que se moverán los personajes. Está relacionada con la física del juego, ya que pueden tener diferentes formas y texturas que afectan al personaje.
    • Cálculos matemáticos  
    Todos los cálculos necesarios para la interacción del personaje con objetos. Aumento de puntos, disminución-incremento de la barra de vida, llenado de una barra de combos o algo similar, etc.

    Milestones


    Los objetivos a cumplir, son los siguientes:
    MilestoneFechaPuntaje
    Definición del Proyecto
    Definición de herramientas
    Reparto de roles
    16 Agosto10
    Selección de género del juego
    Instalación de herramientas
    23 Agosto5
    Selección de la temática del juego
    Creación de un personaje(Investigación)
    Creación de un mapa (Investigación)
    30 Agosto10
    Creación de Prototipo de Personaje
    Creación de Prototipo de Mapa
    Investigación sobre pyGame y Sprites
    13 Septiembre10
    Animación de Personaje(Básica)
    Creación de Objetos Estáticos (Prototipos)
    Incorporación de Objetos a Pygame
    27 Septiembre10
    Movimientos del Personaje
    Interacción del Personaje con Objetos
    4 Octubre10
    Creación-Animación de Personaje Enemigo
    Adición de Vida a Personajes
    Contacto con Enemigo
    Puntaje del Personaje
    18 Octubre10
    Adición de Inteligencia Artificial Al enemigo(básica)
    Adición de diferentes enemigos
    7 Noviembre10
    Interfaz del juego y Sonido(Básico)14 Noviembre5
    Prototipo 21 Noviembre20
    Total -100


    Como Prototipo Final, llamaremos a lo siguiente. El juego de peleas terminado, con por lo menos un mapa jugable en su totalidad, interacción con el personaje jugable y los enemigos con una inteligencia artificial aceptable. Con interacción referimos a la capacidad de realizar golpes al enemigo, reducir la vida de el mismo(y la del jugador si es golpeado) incrementar puntos, manejar un número de vidas limitado en caso de perder toda barra de vida, y otros factores más.
    En pocas palabras, deseamos tener un demo-beta de un videojuego.

    Bitácora semanal

    Semanalmente reportaremos los avances del proyecto, y cuales milestones se cumplieron, o que cambios se hicieron a éstos mismos, debido a que al ser un juego, pensamos que debemos de tener la libertad de realizar cambios en algunos puntos para mejorar el mismo.

    La semana actual, el equipo definió los roles en los cuales cada uno aportaría al proyecto, para lo cual acordamos que cada uno seleccionaría por lo menos dos áreas de trabajo en las cuales ayudar a construir el proyecto.

    Planeamos hablar semanalmente todo el equipo para poder discutir los avances personales, y dar opiniones sobre posibles cambios o adiciones que se pueden hacer o sugieren que se haga en otras áreas en las que no se participa.

    También se definieron los objetivos o milestones que deseamos cumplir paso a paso, hasta llegar al prototipo que se entregara al finalizar este semestre. También definimos como es que deseamos que funcione este prototipo, para saber cual sería entonces el "producto completo" (por lo menos hasta el final de Proyecto Integrador 1).