Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Modelo IV: Juegos de Carreras

Iniciado por Güarmigue, 25 de Junio de 2007, 10:14:44 AM

« anterior - próximo »

Güarmigue

Siguiendo con el estilo de hasta ahora voy a hablar de juegos de carreras 2D, por ahora estoy presentando modelos de juego que no requieran de un gran equipo o una gran inversión, para todos aquellos que estamos empezando.

Definición: Juegos de carreras son aquellos en los que varios jugadores compiten con un vehículo por llegar antes a la meta o dar antes un número de vueltas a un circuito. Sobre todo me centraré en el aspecto bidimensional, ya que el objetivo de estos articulillos es repasar mecánicas y no gráficos o programación de forma intensiva.

Jugabilidad: En este tipo de juego el gran aliciente es la competición, sobre todo con otros jugadores humanos. En los casos en los que el juego cuente con un gran nivel de simulación (marchas, física realista, daños en el vehículo, importancia de la meteorologías, elección de neumáticos, tipo de tracción, etc...) El reto de conducir al máximo y no morir en el intento puede resultar muy interesante, así como en los juegos más arcade pueden incluir elementos de ataque-defensa como armas, aceite o clavos (o plátanos ;)) para la carretera, o simplemente una física y mecánicas de juego que nos permitan darle un empellón al coche de al lado sin morir nosotros también. Dependiendo del tipo de juego que queramos construir potenciaremos una cosa u otra (no podemos poner metralletas en el moto GP porque el jugador ya está bastante entretenido con aprenderse el circuito, seguir la trazada y demás como para andar dando tiros, además de que no es lo que busca...) De la misma forma no podríamos complicar el Mario Kart con boxes, elección de neumáticos, daños realistas o cosas así, porque perdería toda la diversión.

Dificultades técnicas: Como se ha podido ver el apartado anterior, este tipo de juegos varía mucho dependiendo de si preferimos un arcade o un simulador. El primer caso se parece mucho a implementar un asteroids con una nave para cada jugador y poco más. Es el caso más simple, Para este caso solo tendremos que implementar una física mínima en cuanto a fuerza de empuje y velocidad resultante:

Dibujo1 Dibujo2
Dibujo1 muestra un ejemplo de juego de carreras cenita, Dibujo2 de uno con vista trasera 2D

Cada coche (o lo que sea) tendrá una velocidad y una fuerza de empuje actual (la flecha negra) así como una fuerza de empuje de dirección para el siguiente paso (la flecha azul, que en este caso indica que el jugador ha pulsado "girar a la izquierda") La fuerza resultante para el siguiente paso será la suma de ambas, con lo que conseguimos que haya "inercia" y el coche no responda únicamente a las teclas de dirección. Además tendremos una tecla "acelerar" y otra "frenar" la tecla acelerar aumenta el tamaño de la flecha resultante, mientras que la de frenar la disminuye. Por tanto, en cada frame tendríamos:

1. Comprobar si está pulsada alguna tecla, en cuyo caso creamos el vector dirección asociado. En caso de estar acelerando o frenando, aumentamos o disminuimos la variable "velocidad" del coche.
2. Sumar el vector dirección*velocidad más el vector inercia*peso_del_coche, el resultado es el nuevo vector inercia, sumado a la posición del coche será su nueva posición.

La forma de calcular los vectores dirección será distinta dependiendo del tipo de vista que escojamos para nuestro juego. Tanto si la vista es cenital, como si el juego es 3D estos vectores tendrán la forma del dibujo 1, y por tanto dependerán del vector director del coche. Es decir, al vector que indique hacia donde mira el coche, le sumaremos 90 grados para el vector izquierda y restaremos 90 para el vector derecha. En el caso de un juego en plan Road Runner es más sencillo, ya que el vector izquierda y derecha siempre serán los mismos, solo variará la velocidad del vehículo, su peso y la resultante en cada caso, pero todo esto nos da igual a la hora de implementar la función.

Con esto y ajustando un poco los parámetros podemos conseguir una conducción arcade entretenida. Para añadir elementos de simulación habría que tener en cuenta otros muchos detalles. Como ejemplo se me ocurre implementar estos cálculos de vectores la parte trasera y delantera del vehículo, así podríamos aplicar el vector dirección*velocidad solo a las ruedas con tracción mientras que el vector inercia afectaría a ambas partes. También podríamos implementar el desgaste de las ruedas de forma que si el desgaste en las rueda izquierda aumenta el coche tenderá a ese lado... Al final todo se reduce en una serie de vectores en el plano XY que modifican la posición del coche.

Por tanto, y a modo de resumen podríamos decir que el modelo más sencillo es el Dibujo2. Luego vendría el Dibujo1 (en plan micromachines) y la dificultad aumentaría al meter más física, más simulación o física 3D o de colisiones, por ejemplo.

En este caso la IA la voy a dejar como pregunta ¿Como implementaríais un coche controlado por computador? ¿lineas de trazada, puntos de control?

En cuanto a la parte gráfica necesitaremos un poco más de trabajo que en en el último modelo de juego. Deberemos dibujar o renderizar un sprite para cada una de las posiciones posibles del coche (en el dibujo1 serían mínimo 8, una cada 45 grados, en el Dibujo2 podría bastarnos con 3 o 5...) Además de distintos coches, o al menos distintos colores (debemos poder diferenciar los distintos vehículos) Y un escenario. Además, los efectos de sonido son una gran ayuda en este tipo de juegos, motores, frenazos, golpes y demás ayudan a dar vidilla y verosimilitud al juego, así que aquel programador que tenga previsto seguir mi orden e implementar primero el ajedrez, luego el tetris y luego un juego de carreras, que para este último comience a trabajar en equipo y se busque a alguien que le haga unos gráficos graciosos y le busque efectos de sonido, además así aprenderá a llevar un proyecto con otra persona, algo que puede ser tan enriquecedor como frustrante...

Como siempre en el blog está más bonito, y tiene los dos dibujos, que ahora mismo no tengo tiempo de enlazarlos y como siempre pido la colaboración de cuantos más mejor: ¿Qué os parecen por ahora estos resúmenes? ¿Os resultan útiles a los novatos? ¿Por qué los que no lo sois no contáis vuestras experiencias? ¡Se supone que esto es un foro de desarrolladores de videojuegos! ¡¡Alguien tiene que haberlo intentado!!
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P

Güarmigue

UUUHPS, ayer me decía que no lo podía colgar, ¿Alguien puede borrar este post? Perdón y el que quiera comentar que lo haga en el otro...
url=http://deadchannel.blogsome.com]Dead Channel[/url] - Blog de informática, juegos, tortugas y lo que me viene dando en gana ;P






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.