PDF de programación - Diseño de un Videojuego - Java2D

Imágen de pdf Diseño de un Videojuego - Java2D

Diseño de un Videojuego - Java2Dgráfica de visualizaciones

Publicado el 9 de Marzo del 2019
2.208 visualizaciones desde el 9 de Marzo del 2019
2,2 MB
30 paginas
Creado hace 14a (16/04/2010)
Diseño de Videojuegos

Java2D
2009-2010
Sistemas Multimedia

E.T.S.E
Jorge Belenguer Beltrán
Ingeniería Informática

1

Índice



Presentación



Objetivos

¿Qué es Java2D?

Conceptos Previos

.................................

.................................

Conceptos generales de diseño de videojuegos

.................................

Página



4

4

5

7

.................................

.................................

13

.................................

.................................

.................................

.................................

17

23

28

29

Historia de los game engines

Decisiones de desarrollo

Desarrollo

La API Java2D

Diseño

Conclusiones

Resultado

Ampliaciones Futuras

Documentación

Bibliografía consultada

.................................

30

2

3

I – OBJETIVOS

• Objetivo del trabajo

Para la asignatura Sistemas Multimedia, optativa de cuarto curso de
Ingeniería Informática, vamos a realizar un estudio de la API Java2D aplicada al
desarrollo de videojuegos.

El objetivo de este trabajo es llegar a comprender como utilizando el
lenguaje de programación Java y con la ayuda de Java2D, se puede llegar a
desarrollar un pequeño videojuego sin demasiada dificultad. Se pretende además
familiarizarse con la API, sus clases y métodos, así como comprobar que al
combinarlos se pueden obtener resultados realmente sorprendentes en
relativamente poco tiempo.

Por ende se profundizará en los conceptos fundamentales del desarrollo
de videojuegos, así como en los conceptos teóricos que puedan servir para la
realización del software de ejemplo.

• ¿Qué es Java2D?

Una API o Interfaz de Programación de Aplicaciones (application
programming interface), es un conjunto predefinido de funciones, clases,
métodos o procedimientos diseñados de forma genérica para facilitar el
desarrollo de aplicaciones. Utilizando una API no es necesario que el
programador implemente a demasiado bajo nivel ciertas características del
software que ya están implementadas en la propia API.

Concretamente esta API, Java2D, ofrece una serie de clases y métodos
que facilitan sobremanera el trabajar con gráficos en 2D tanto sobre un
dispositivo gráfico (como puede ser un monitor), como directamente en
memoria (sin que se llegue a dibujar nada).

Java2D extiende el lenguaje Java, sin
necesitar instalar nada aparte del propio JDK (Java
Development Kit). Solamente será necesario
importar a nuestro proyecto las librerías necesarias,
la mayor parte de las cuales forman parte del AWT
(Abstract Window Toolkit) o de Swing. Java es un
lenguaje de alto nivel, imperativo y operacional, que

4

está a medio camino entre lenguaje compilado e interpretado debido a su sistema
de bytecodes1.

Sin embargo, este sistema implica una ejecución interpretada de los
bytecodes lo que reduce en general el rendimiento. Los videojuegos son
aplicaciones críticas desde el punto de vista del rendimiento, lo que nos lleva a
preguntarnos por qué seleccionar Java para el desarrollo de un juego. La
respuesta es simple, su mayor debilidad es también su mayor ventaja, este
sistema ofrece portabilidad. Los bytecodes son interpretados por la JVM (Java
Virtual Machine) en tiempo real, por lo que mientras una arquitectura tenga una
máquina virtual de Java será capaz, en teoría, de ejecutar el software. Por contra
nos veremos obligados a depurar el código para garantizar el nivel de
rendimiento mínimo para que el juego sea fluido.

Java compila el código fuente generando un código intermedio (Java bytecode) en lugar del código máquina.

1
Este bytecode es ejecutado en la máquina virtual (JVM) específica de cada arquitectura, que interpreta y ejecuta el
código JIT (Just In Time). Aunque hay una etapa explícita de compilación, el bytecode es interpretado en tiempo real.

5

II – CONCEPTOS PREVIOS

• Conceptos generales de diseño de juegos

Hace algunos años, los videojuegos eran considerados por muchos, como
una banalidad propia de niños. De un tiempo a esta parte, la industria del
videojuego ha crecido de forma considerable de la mano de la tecnología. Hoy
los juegos se han convertido en una de las principales opciones de ocio para
todas las edades. Fruto de esto, la inversión en entretenimiento digital no hace
sino incrementarse de forma importante, y gracias a ello, hoy los videojuegos
tienen una mejor valoración social y son utilizados incluso para el desarrollo de
capacidades psico-motrices en ciertos colectivos.

Como ya hemos dicho anteriormente, los juegos son un área de la
informática que requiere cierta criticidad de recursos hardware. Esto es debido a
que es necesario asegurar una fluidez en los gráficos para que la experiencia del
jugador sea lo mejor posible. De hecho, más adelante veremos como un método
muy utilizado para realizar test de hardware consiste en intentar que una
máquina ejecute el motor gráfico de un cierto juego a la mayor cantidad de FPS
(frames por segundo) posible.

o Partes de un videojuego

Empezaremos viendo cuales son las partes o módulos
fundamentales en un videojuego. El diseño de videojuegos se ha tornado
mucho más metódico y modular que antaño, y se le aplican los mismos
principios de Ingeniería que a cualquier otro producto de software. Para
facilitar la reutilización de código, los videojuegos actuales están
compuestos de varios módulos independientes.

Principalmente, un videojuego está compuesto por2:

2 Apuntes IV Máster en Diseño y Programación de Videojuego – Prof. José Carlos Cortizo Pérez

Universidad Europea de Madrid

6

El motor gráfico o de render es el que proporciona funciones de
renderizado 2D, 3D y de sprites. Se suele apoyar en librerías o API's
gráficas como OpenGL o DirectX. Define una capa de abstracción entre
el hardware/software y el juego en sí. Además, se encarga de trabajar con
lo que es visible y lo que no, del mapeado, del antialiasing, de la gestión
de mallas 3D, etc...

El grafo de escena es una parte muy importante de un motor de
juegos. Ésta es una estructura de datos muy utilizada en editores gráficos
basados en vectores y en videojuegos. Se encarga de ordenar la
representación lógica y, también a veces, espacial de una escena gráfica.
Cada nodo puede tener muchos hijos, pero, un nodo sólo suele tener un
padre. El efecto de algo sobre un padre es visible por todos sus hijos. Así,
una operación sobre un grupo se propaga hacia todos sus nodos hijo. Esto
permite manejar (escalar/mover/rotar/etc.) grupos de objetos como si
fueran uno solo. En los juegos, cada nodo suele representar un objeto en
la escena.

El motor de físicas es software que simula modelos de física
utilizando variables del tipo velocidad, masa, etc. Su objetivo es simular
y predecir los efectos bajo diversas situaciones de lo que ocurre en la
vida real o en un mundo de fantasía. En los juegos se utilizan cada vez
más, sobre todo en los de carreras donde factores como la fuerza
centrífuga o derrapes necesitan de ecuaciones físicas para aportar
realismo.

El detector de colisiones es un algoritmo empleado para detectar
cuándo dos o más objetos colisionan. Se suelen realizar mediante el
cálculo de la intersección de volúmenes simples (Bounding Volumes). Se
pueden utilizar distintos volúmenes para envolver el objeto y así detectar
mejor las colisiones, como cubos o esferas. Se puede tomar como un
componente independiente, aunque tiene mucho que ver con el grafo de
escena y el motor de físicas.

El motor de inteligencia artificial es el encargado de dotar a
ciertos elementos del juego un comportamiento pseudo-inteligente. Por
regla general, lo que se aplica en los juegos son técnicas muy simples de
inteligencia artificial como máquinas de estados o algoritmos de
búsquedas. Sin embargo, cada vez más se utilizan nuevas técnicas para
conseguir una inteligencia más “realista” como redes neuronales o
algoritmos genéticos.

El motor de sonido es el encargado de reproducir la banda sonora
del juego y los efectos de sonido, como disparos o explosiones, en
sincronía con la acción del juego.

La gestión de redes está alcanzando una progresiva mayor
importancia. Hoy por hoy, casi todos los juegos tienen una componente
de red. Existen juegos exclusivamente online, de los cuales, la mayoría
ofrece partidas multijugador a través de red. Es importante tener un

7

componente que aglutine todas las utilidades de red, de forma que, el
hecho de que se juegue de una forma u otra sea, en cierta medida,
“transparente” para el desarrollador del juego.

Todas las partes que componen un motor de juegos tienen su
importancia, pero lo más básico e imprescindible de un motor de juegos
es el motor gráfico, ya que es con quien interactúa el usuario. El resto de
componentes son más prescindibles y no aparecen en todos los motores,
y cuando lo hacen, pueden aparecer como plugins. La elección de un
motor u otro es algo fundamental, sobre todo si necesitamos alguno de
estos componentes.

• Game Engines

Hasta ahora, hemos estado hablando de motores, pero este concepto,
como hemos visto, es bastante abstracto. Un motor hace referencia a una serie de
rutinas de programación que permiten el diseño, la creación y la representación
del juego.

La analogía con el motor de un automóvil es bastante ilustrat
  • Links de descarga
http://lwp-l.com/pdf15462

Comentarios de: Diseño de un Videojuego - Java2D (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad