• No se han encontrado resultados

DESARROLLO DE JUEGOS CON XNA

N/A
N/A
Protected

Academic year: 2021

Share "DESARROLLO DE JUEGOS CON XNA"

Copied!
15
0
0

Texto completo

(1)

DESARROLLO DE JUEGOS CON XNA

AUTOR: JAVIER DEL OLMO SÁNCHEZ

TUTOR: FERNANDO LLOPIS PASCUAL

DEPARTAMENTO: LSI

(2)

INDICE

Página

1. INTRODUCCIÓN 3

2. CONTENIDOS 3

3. CONCLUSIONES 14

(3)

1. INTRODUCCIÓN

El objetivo de este proyecto es realizar un juego en XNA, en el que nos centraremos en la inteligencia de los enemigos, en el que la dificultad de los niveles sea por la dificultad de los enemigos y no por la cantidad de enemigos que se encuentren en el escenario. Para ello se realizará unos escenarios en el que se situará al jugador como a los enemigos. También se realizarán distintos parámetros al héroe como fuerza y vida que irán evolucionando a lo largo del juego. Por último en cuanto a los enemigos se hará al finalizar cada nivel un monstruo más complejo en el que se enfrentará al héroe en uno contra uno.

2. CONTENIDOS

2.1 XNA

Vamos a definir la plataforma que vamos a manejar para orientar el diagrama de clases a la funcionalidad que ofrece XNA.

Definición

XNA no son el acrónimo de ningún nombre. Es el nombre que recibe la nueva tecnología para la programación multimedia de videojuegos basada en DirectX y

manejada por .Net.

Se trata de un API de programación que simplifica y hace más intuitivo el uso de las librerías nativas DirectX y, en consecuencia, simplifica de manera notable la programación de videojuegos.

Estructura

En esencia, XNA se compone de dos librerías de ensamblados (dll) para .Net 2.0 que manejan por debajo las librerías nativas del sistema de DirectX. Al situarse como una librería sobre el Runtime de .Net, se beneficia de todas las mejoras que .Net proporciona incluyendo el manejo de la memoria por el recolector de basuras, la posibilidad de trabajar con cualquier lenguaje .Net y la multiplataforma. Previamente a XNA existían las librerías de ensamblados Managed DirectX que, de manera similar a XNA, permitían el acceso desde lenguajes .Net a las librerías nativas de DirectX. En este caso, sin embargo, el acceso era mucho menos intuitivo y se componía, básicamente, de un calco de las funciones de DirectX para .Net. Las librerías Managed DirectX están en desuso y no se soportarán más en el futuro.

Modelo de programación orientado a videojuegos

El modelo de programación de XNA, al contrario que Managed DirectX, está orientado a la programación de videojuegos. Para ello se definen una buena cantidad de clases básicas de tipo matemático, necesarias para la programación gráfica, pero también una nueva API y metodología de programación sobre estas clases que simplifica el

(4)

El desarrollo de videojuegos con XNA está orientado a componentes. Los componentes son, básicamente, pequeños trozos de código que cumplen una funcionalidad concreta. Existen componentes gráficos como podría ser una bola rebotando por la pantalla, una nave espacial o el mismo escenario del videojuego. No obstante no todos los componentes tienen por qué ser gráficos. Podemos tener un manejador de eventos o estados del videojuego, un generador de lógica u otros tipos de componentes que no necesiten ser renderizados para usarse y cumplir su función. Todos estos elementos heredan de la clase GameComponent (para los elementos no gráficos) o de la clase DrawableGameComponente (para los elementos gráficos). Una clase central (Game) se encarga de manejar todos los GameComponents que han sido registrados. Así, un videojuego (Game) es igual a la suma de las funcionalidades de todos los GameComponents que lo componen. XNACommunity tiene como objetivo unir a los desarrolladores interesados en esta tecnología para poner en común los GameComponents que han desarrollado y ser capaces en el futuro de símplemente añadirlos a un videojuego y usarlos tal cual, simplificando enormemente la tarea de programar videojuegos.

Multilenguaje

En la actualidad, XNA utiliza un IDE de programación basado en el IDE de C# 2005 Express Edition, por lo tanto la mayoría de los programas basados en XNA están escritos en C#. Sin embargo, al tratarse de librerías de ensamblados totalmente compatibles con .Net, pueden utilizarse con cualquier otro lenguaje .Net del mismo modo que se utilizaría cualquier otra librería de ensamblados.

2.2. MÉTODOS A UTILIZAR

Una vez visto los componentes que podemos asignar en nuestro sistema hemos de tener en cuenta que utiliza XNA en todas las clases que interactúan en el sistema (escenarios, personajes, enemigos) en los que definimos:

Initialize(): Inicializa los componentes que contenga la clase, se efectuara al principio de la ejecución

LoadComponent(): Carga los componentes como texturas, sonidos en la clase Update(): Actualiza el estado del juego

(5)
(6)

A lo largo de la implementación del proyecto se vio necesario utilizar nuevas clases para llevar los objetivos que se definió en el análisis

CargarEscenario: Es la base de datos que utilizaremos para la carga de escenarios y enemigos, ya que todos los escenarios siguen un patrón y tienen los mismos atributos en esta clase será la asignación de componentes de los escenarios.

Escenario tenía un problema ya que al diseñar el escenario no se definió que podía ser no jugable. Para ello se ha hecho tres derivados de escenario que siguen la filosofía de escenario pero sin el personaje y enemigos.

EscenarioIntro: Este escenario cargará el texto de la historia y la irá dibujando en la pantalla

Escenarioanimacion: Cargará los integrantes del dialogo como el texto de este. EscenarioTienda: Contendrá datos del héroe para saber que ofrecer al héroe.

2.4. IMPLEMENTACIÓN DEL SISTEMA

En este punto explicaremos más detenidamente las clases usadas y como se ha implementando. También destacaremos algunas estrategias usadas para realizar el sistema

Game

Game será el encargado de comenzar el juego así de cómo crear al héroe.

Otra de las funciones será controlar en cada momento que tipo de escenario se encuentra en ejecución, esto lo hará en su función update y sabrá cuando acaba cada uno para dar comienzo a otro tipo de escenario.

Heroe

Para hacer el héroe se ha utilizado 3 clases :

a) Jugador

La clase principal del héroe, en esta clase se inicializa todas las componentes del héroe así como los movimientos que hace por pantalla, tiene diferentes métodos para controlar el scrolling en el escenario

b) Barra de vida

Controla los toques que le queda al héroe

c) Ataque a distancia

(7)

Escenarios

a) CargarEscenario

Es la “base de datos” de los distintos tipos de escenario que existen en el juego, para ello se utiliza un hashMap con las distintas variables ya que al inicializar cada escenario usarán estos datos, está hecho de manera genérica para mayor flexibilidad a la hora de añadir nuevos escenarios .

b) Escenario

La clase escenario en la que interactúan los diferentes enemigos y el héroe, aquí se controla los distintos movimientos del héroe con los distintos enemigos mediante el método update , también controla el estado de la partida(si hemos ganado el escenario o lo hemos perdido).

c) EscenarioAnimacion

Establece los valores que tiene las animaciones, carga los distintos diálogos que contienen.

d) EscenarioTienda:

Esta tienda está conectada con los datos del héroe de manera que cada vez que actualizamos sus datos sabremos que ofrecer al usuario

Enemigos

a) Enemigo

Para la construcción de los enemigos se ha utilizado una clase padre enemigo que maneja todos los datos de los distintos tipos de enemigos, de esta manera declararemos objetos de enemigos y poder interactuar con todos los hijos como si fueran iguales.

b) Clases Hijas

Estas clases determinan la inteligencia de los distintos enemigos que tenemos, de esta manera aquí controlaremos los métodos exclusivos de XNA como son el update, draw y la carga de contenidos.

Otros

a) MenuComponent

Aquí establecemos los distintos elementos que contiene el menú así como su estado b) Horizontallyscrolling

Controlamos el scrolling de los escenarios en los que está conectado con el héroe de manera que da la sensación que avanza por la pantalla.

(8)

2.5 MANUAL DE USUARIO

Objetivo:

El objetivo del juego es avanzar por diversos escenarios y derrotar a todos los enemigos para pasar de nivel.

Composición del juego:

El juego se compone de diferentes tipos de escenario que mencionaremos aquí.

Menú:

Aquí podremos elegir entre comenzar partida y salir. Seleccionaremos las opciones con los cursores arriba y abajo y ENTER para elegir la opción. Este también saldrá cuando nos pasemos el juego o nos maten todas las vidas para volver a jugar.

Secuencia Historia:

A lo largo del juego irán saliendo escenas que contarán la historia del juego, para ello podemos ver la historia y dejar que pase el tiempo o apretar el botón c que sale en la esquina inferior.

(9)

Secuencia Diálogos:

También encontraremos diálogos entre los personajes, aquí cuando leamos apretaremos botón c para continuar.

Tutorial:

Este escenario es un poco especial al resto ya que debemos matar los enemigos y aparte superar el tutorial que ira apareciendo mediante mensajes, para dar por leído el mensaje pulsar c.

(10)

Aquí podremos mejorar las habilidades del héroe en el que indicamos las teclas para cada objeto:

Tecla V: Recarga una vida al personaje Tecla E: Pone un corazón más al personaje

Tecla F: Sube la fuerza que teclas se usarán para comprarlo del personaje. Tecla R: Cura 1 corazón al personaje

Barra de estado:

Vemos que indica la cara del protagonista que cambiará dependiendo el movimiento · Los corazones indican el número de toques que tiene

· El numero de abajo el número de vidas

· La puntuación de la derecha el número de puntos

· La barra de la derecha el tiempo que tardará en lanzar la magia · La espada indicará la fuerza del héroe

Movimientos:

· Las teclas a pulsar son: · <--Mover izquierda · -->: Mover derecha · Flecha arriba: salto · SPACE: ataca

· Botón a: ataque mágico (este solo se podrá tirar cuando la barra este llena)

Escenarios:

Llegamos a la parte jugable del juego en el que deberemos derrotar a todos los enemigos de la pantalla para poder pasar de nivel, si recibimos un golpe estaremos invencible durante un tiempo. Si nos matan una vida volveremos al escenario. En caso de que nos quedemos sin vidas volveremos a comenzar. De aquí en adelante todos los escenarios jugables serán así. Si vencemos avanzaremos al siguiente escenario.

(11)

Escenario Jefe:

En estos escenarios habrá solo un enemigo el cual deberemos vencer al enemigo que tendrá una dificultad mayor que los enemigos normales.

También tienen la característica de cambiar de movimientos cuando le queda poco vida. Si vencemos avanzaremos al siguiente escenario.

Enemigos:

· Arquero: Es un guerrero cuya habilidad es la de disparar flechas para eliminar el oponente, siendo débil en combates cuerpo a cuerpo.

(12)

· Esqueleto: Este enemigo es el más poderoso y versátil tanto en ataque como en defensa. Además del ataque cuerpo a cuerpo, no le afectan los ataques a distancia lanzados por el héroe y puede resucitar en un 60% de probabilidad.

· Guerrero: Es el guerrero más básico, se lanza al ataque del héroe sin vacilar.

· Guerrero de Elite: Su capacidad de ataque es mayor que la del guerrero, ya que neutraliza los ataques a distancia lanzados por el héroe y le obliga a luchar cuerpo a cuerpo.

· Planta: Es una mala hierba crecida en lo más profundo del bosque, capaz de repeler y contraatacar cualquier ataque de meleé, pero vulnerable a los ataque a distancia.

· Lobo: Es un fiero animal que acecha a sus presas en la profundidad del bosque. Su velocidad le ayuda a cazar y atacar a sus presas.

Abeja: Enemigo volador que ataca cuando esta cerca de su enemigo.

Ninja: Guerrero rápido que puede teletransportarse cuando uno menos se lo espera, además si se le da la espalda puede atacar con cuchillos

(13)

Fantasma: Espíritu que vaga por las mazmorras, su cuerpo transparente le hace inmune a los ataques físicos

Zombi: Muerto viviente que es capaz de tirar ondas de viento, además de tener mal temperamento ya que si se le ataca mucho explota.

Pájaro: Guardián del bosque el cual sobrevuela la zona lanzado ataques de fuego, en caso de peligro llama a sus guerreros.

General: Jefe de las tropas de Golt, rápido y ágil ataca con poderosos ataques a distancia.

Dragón: Guardián de las mazmorras de golt , solo ataca cuando su presa esta cerca, además de atacar con ataques mágicos

(14)

3. CONCLUSIONES

Una vez realizado el juego se ha podido comprobar que con la herramienta XNA realizar un juego es más sencillo que hacerlo de cero ya que solo nos tenemos que preocupar de realizar la lógica del juego.

En este proyecto la complejidad inicial ha sido que empezamos de cero con lo que había que estudiar bien el análisis y diseño para la realización de los buenos cimientos del juego. Se ha conseguido establecer un escenario en el que el jugador interactúa mediante los controles y distintos enemigos para poder enfrentarse, de esta forma se ha conseguido hacer mediante una clase que añadir escenarios sea bastante fácil y añadir enemigos sea solo crear una hija de clase enemigo y desarrollar su inteligencia. Uno de los objetivos principales del proyecto que era la inteligencia se ha conseguido a lo largo de distintos niveles y cada nivel es un poco más complicado con el mismo número de enemigos y los jefes de cada nivel hacen movimientos más complejos cada nivel.

Cosas que se podrían mejorar en un futuro pues podría ser añadir nuevas habilidades de enemigo, ya que se podrían centrar fácilmente en ese tema por la estructura ya realizada de enemigo y solo tendría que ocuparse de realizar la lógica del enemigo. Otros temas que se podían enfocar es a nuevas características de juego como puede ser jugar 2 jugadores, realizar guardado de partida, intentar realizar movimiento vertical (aparte de moverse izquierda y derecha mover arriba y abajo) o crear diversos obstáculos en el escenario.

Puede que me deje algunos detalles de lo que se podía añadir al juego, pero no debería haber problema ya que el juego está bastante bien estructurado como para añadir funcionalidades sin tener que reconstruir el código.

(15)

4. BIBLIOGRAFÍA

Básicamente la bibliografía consta de direcciones:

http://www.spriters-resource.com/: Para utilización de sprites e imágenes del proyecto

http://www.fdi.ucm.es/profesor/fpeinado/courses/gamedesign/index_es.html: Para la realización análisis y diseño del proyecto

http://xna.animered.net: Para el aprendizaje con la plataforma

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)