Internal Beeper


Colisión: Los cuadrados
julio 20, 2005, 2:04 am
Filed under: Informtica variada

Algo muy importante en los juegos, especialmente cuando hablamos de antiguos juegos 2D (y vital en los de plataformas), eran las colisiones.

La máquina debía detectar cuando el personaje (no sólo el protagonista, sino todos los personajes móviles) colisionaba con las paredes, con el suelo de las plataformas, los enemigos o las balas.

Ahora hay métodos mucho más complejos, sobretodo cuando extrapolamos esto en el entorno de las 3D, pero entonces se utilizaba la simple técnica del cuadrado. Al personaje se le adjudicaba un “cuadrado” compuesto por unas coordenadas relativas a su posición. Generalmente coincidía con el cuadrado formado por su imagen, para evitar ocupar más memoria con información extra para cada elemento de la pantalla pero, cuando se disponían de suficientes recursos, se procuraba que el cuadrado fuera tan ajustado a la superficie dibujada como fuera posible, a veces utilizando más de un cuadrado asociado al personaje, si este tenía una forma demasiado poco rectangular.

colision.gif

La solución es simple, si dos de estos cuadrados se superponen, hay colisión, y se dispara el efecto adecuado.

Con el escenario, el suelo, plataformas, etc, pasa algo parecido. En realidad existe un doble mapeado, uno que tiene los gráficos que se muestran y otro, generalmente solo de dos colores, que separa las zonas colisionables de las que no. Cuando la zona de colisión toca la zona inferior del personaje, este deja de caer. De la misma forma, el personaje no atravesará paredes ni techos.

Lo más curioso es que muchos de los bugs que se pueden encontrar con los juegos antiguos son debido al mal uso de las zonas de colisión. Cuando un enemigo nos mataba al acercarse mucho, aún sin habernos tocado realmente, era debido a una área de colisión demasiado grande. Cuando no nos mataban a pesar de tocarnos claramente, era debido a una área de colisión demasiado pequeña.

La colisión también podía provocar esos típicos cuelgues al quedar el personaje “atrapado” en el suelo o en una pared. Eso era debido a que el ordenador no había detectado la colisión a tiempo, y el personaje había entrado en la pared. Entonces, por más que nos moviéramos, como detectaba constantemente colisión, no podíamos despegarnos.

cauldron.jpg

Hay un efecto muy curioso en el juego Cauldron, al menos en CPC. Podíamos ponernos en el límite de las plataformas. Hasta el punto en que nos aguantábamos en el aire sólo contactando con la plataforma con la parte trasera de nuestra túnica. Pero, el cuadrado de colisión no estaba centrado en el personaje (era más largo atrás que adelante) por lo que, si nos girábamos para volver al centro de la plataforma, nos caíamos. En mi época del CPC me mataron unas cuantas veces, por haber aterrizado al límite de la plataforma y no poder volver al centro, sin saber que todo esto era culpa de un cuadrado de colisión descentrado.

Otro día os explicaré más cosas de la colisión, esta vez aplicado a los juegos de lucha.

Un par de anotaciones:

La primera es que la imagen del marcianito colisionando con el cohete la he sacado de un tutorial de programación de videojuegos en java muy bueno. Os lo recomiendo si teneis pensado aprender java.

La segunda es que, si os ha gustado el artículo técnico, y considerais que la página vale la pena, votadme en el concurso. Sólo son un par de clics.

Anuncios

2 comentarios so far
Deja un comentario

Uis, esto de las colisiones lo aprendí con el “Game Maker” (Programa, antes freeware, orientado a la creación de videojuegos basados en objetos). Me tiré meses con el programita, lástima que ahora no tenga tanto tiempo… (O tal vez es que soy un vaog =P)

Comentario por Koopa

Bueno, también está la técnica de la máscara (usada en algunos juegos de NES) y la pixel-perfect.

Comentario por Anoninato




Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s



A %d blogueros les gusta esto: