Dead Channel






      "The sky above then port was the color of television, 
       tuned to a dead channel..."
      Neuromancer


24 June, 2007

Modelo IV: Juegos de carreras

Escrito a las 21:54 en la categoría: Juegos, Modelos de juego

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 efectillos de sonido, además así aprenderá a llevar un proyecto con otra persona, algo que puede ser tan enriquecedor como frustrante…

Como siempre esta entrada la cuelgo también en el foro de stratos.

Deja tu opinión - 2 »

Si quieres hacer TrackBack de esta entrada, usa esta URI: (Simplemente copia la dirección de la barra de herramientas)

  1. me encantan los juegos de carreras de coches, o motos, pero lo cierto es que para mi son muy complicados, a la vez qe divertidos…
    Lo bueno que tienen es que siempre hay niveles asi q…te puedes ir superando a ti mismo :)
    Y, lo mas importante para mi, uedes jugar tu solo y engancharte igualmente, asi que no te hace falta nadie para pasar un buen rato con el juego :)
    Un saludo

    Comment by princess — 29 June, 2007 @ 9:41

  2. jummm carreras de coches… nunca me había planteado como se “hacían” este tipo de juegos, y supongo que tu forma será una de tantas…

    en fin, buena entrada, pero queremos ejemplos ;)

    1Salud
    P.S.: Felicidades!

    Comment by The_IBITH — 2 July, 2007 @ 18:11

RSS suscríbete a los comentarios de este post

Deja tu opinión

El parrafo se justifica solo, nunca se mostrará el correo, están permitidas etiquietas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Medida anti-spam. Por favor, escribe el texto de la imagen en el cuadro de texto para saber que no eres una tonta máquina automática que intenta que compre muñecas hinchables ;).