# TuxKart

TuxKart es un videojuego libre de carreras arcade en 3D para Linux creado por Steve y Oliver Baker. Cada personaje del juego tiene una pista en su nombre. Las pistas incluyen la autopista de Tux, el arco de Gown, la cumbre Geeko, el castillo de BSOD, la clase de Matemática de Oliver, y Arenas movedizas.
Su desarrollo se detuvo después de la versión 0.4.0 pero un equipo de desarrolladores lo mejoró y lo llamó SuperTuxKart. Los cambios incluyen una mejor interfaz gráfica, gráficos realzados, y pistas nuevas.

## Requisitos
### Hardware

* Tarjeta gráfica 3D que soporte OpenGL o Mesa.
* Es óptimo jugar con un joystick de 6 botones, pero es posible jugar con el teclado.
* CPU cuya velocidad sea 266MHz o superior.
* Una buena tarjeta de sonido, pero no es esencial.
* Más de 32Mb de memoria RAM.

### Software

TuxKart corre en sistemas operativos GNU/Linux y requiere una copia instalada de la librería PLIB en su versión 1.8.0 o superior.

## Instalación

Con la librería PLIB instalada en el sistema y el archivo tar de instalación que provee el desarrollador, en una terminal ingresar las siguientes instrucciones:

## Controles
### Joystick de seis botones

Botón A - acelerar.
Botón B - freno.
Botón C - usar objeto encontrado en el camino.
Botón D - ser rescatado por TinyTux.
Botón L - pop un caballito (si va lo suficientemente rápido).
Botón R - saltar.

### Teclado

IZQUIERDA / FLECHA DERECHA: Steer.
UP-ARROW - botón Igual que 'A' - acelerar
ABAJO-ARROW - Igual que el botón 'B' - Freno
Una de las claves - Igual que el botón de 'L' - pop una Wheelie
Tecla S - Igual que 'R' botón - Saltar
Tecla D - Igual que el botón de 'D' - Rescate
Tecla F - Igual que el botón de 'C' - Utilizar un elemento
ENTER - Igual que el botón de 'C' - Utilizar un elemento
ESPACIO - pop u ocultar la barra de menús.
Tecla R - Reinicie la carrera.
P clave - Pausa.
Tecla X - Salir del juego.
Escape- salir del juego.
Hay también algunas funciones de depuración para desarrolladores:
W clave - vista alámbrica Toggle
Z clave - estadísticas Toggle reunión
En la barra de menús, puede activar efectos de sonido y música dentro y fuera, activar o desactivar el cursos (que mantiene el ratón en la ventana que le impida perder accidentalmente el puntero.
En las pistas, encontrará Rojo, Plata y Oro Arenque (Yum - bueno), y verde Arenque (Yuk - malo!) - También flecha en forma de 'cierres' rojo y negro que le dan una aceleración rápida.
Usa la tecla de "rescate" si te estrellas y no puede volver a la pista. A veces se activa automáticamente si (por ejemplo) te quedas atascado en la lava caliente. TinyTux levantará su carrito y lo llevará de nuevo a la pista.
Cosas buenas:
Misiles - sin guía pero rápido. Si llegan a nada, explotan de manera impresionante. El efecto en un Kart es de detenerlo muertos - lo que tiene que acelerar de nuevo.
Homing misiles - más lento que el tipo normal - pero el seguimiento del kart más cercana y son muy difíciles de quitarse de encima.
Manchas borrosas - incluso más lento aún - un kart puede huir de ellos con bastante facilidad. Ellos rebotan en los lados de la pista y sólo explotan cuando golpean un Kart.
Imanes - si se activa un imán entonces se cuelga alrededor durante unos 15 segundos. Si alguno viene a unos 20 metros, se le tiró hacia ellos y terminan pegados a la cola hasta que el imán 'caduca'. Excelente para ponerse al día con alguien - sin esperanza para pasarlos.
Cremalleras portátiles - estos son como las cremalleras en la pista en sí - que te dan una accelleration repentina y aumentar temporalmente la velocidad máxima de su kart.
Cosas malas:
Parachute - esto se sale de la parte posterior de su kart y te frena un poco por solo unos segundos. Lo suficiente como para caer de vuelta un lugar si se trata de una carrera muy reñida embargo.
Anvil - se arrastró detrás de su kart en una cuerda por un monto aún más corto de tiempo que el paracaídas ... pero el efecto de arrastre es mucho más fuerte - tu kart apenas se mueve en absoluto.

## Errores

No hay soporte duro-con-el-ratón.
Bajo rendimiento en CPU menos de ~ 450MHz.
No hay manera de volver a la pantalla de título al final de la carrera.
Siempre juega como Tux - no hay manera de cambiar de jugador.
Después de cruzar la línea de meta, si alguien te adelanta, sus cambios finales de posición!
No "Ready, Steady, Go!" secuencia.
Los jugadores de la computadora se confunden y quedan 'atrapados' en las pistas que sí de intersección (por ejemplo, en forma de 8 pistas en forma). El contador de vueltas y las posiciones actuales jugador también se atornillan para arriba en ese tipo de pistas.
Si usted (o uno de los jugadores de la computadora) va por el borde de la pista, o las convocatorias de rescate luego tiny-esmoquin no siempre logran poner de nuevo a la pista correcta. Si esto sucede, es posible que tenga que escribir 'R' para reiniciar la carrera - Lo siento.
A veces se puede ser empujado a través de un objeto sólido, si usted es golpeado por otro jugador al entrar en contacto con la superficie.

## Diseñar tus propias pistas de carreras

Es posible crear y personalizar un nivel (una pista de carreras) en el juego de carreras liderado por el pingüino de Linux. Los archivos de modelos pueden estar en cualquier formato "SSG" que la librería de PLIB pueda cargar.
Una opción aceptable para modelar cosas para TuxKart es AC3D, y el formato de archivo AC3D está bastante bien apoyado.

### Modelos de pistas

La carrera comienza siempre en el origen del modelo. Los karts comienzan espaciados a un par de metros de distancia, por lo que es propicio asegurarse de que la pista sea lo suficientemente amplia.
Es muy importante que la superficie de la carretera en X == 0, Y == 0 sea ligeramente inferior a la Z == 0.
Es posible animar las pistas mediante simples movimientos repetitivos en cualquiera de los objetos o mapas de texturas como mover las corrientes de agua y lava mediante la creación de una textura que se mueve en formato AC3D. Hay varias otras extensiones similares para animaciones similares.

### Imagen y textura de archivos

Todos los iconos 2D y mapas de textura tienen que estar en formato SGI 'RGB' o BMP. El segundo es recomendado por el autor, ya que BMP cambia a menudo.
Todas las imágenes y texturas tienen que obedecer las reglas de mapas de textura de OpenGL - deben ser incluso potencias de dos de tamaño (es decir, las dimensiones X e Y deben ser 2,4,8,16,32,64,128,256, etc). Es posible crear mapas rectangulares (por ejemplo 128x64).
Si bien no hay límite para el tamaño de un mapa de textura o imagen - es necesario tener en cuenta que las tarjetas 3Dfx (que se utilizan muy comúnmente) no pueden hacer frente con mapas más grandes que 256x256. El mapa loader se encargará de reducir el tamaño de los mapas como sea necesario para hacerlos encajar - pero esto distorsionará la imagen.
Las texturas son SIEMPRE MIPmapped y se muestran utilizando la configuración de más alta calidad.

### Sistemas de coordenadas

Los autores eligieron una "unidad" en la base de datos equivalente a un metro de la vida real - pero ya que no se sabe muy bien cuán grandes son Tux y sus amigos, esto es bastante arbitrario. Otra manera de pensar en esto es que Tux es de un metro de altura. Los pingüinos del mundo real no son tan grandes como un metro de altura, pero Tux es un 'pingüino Jackass' y sólo crecen hasta unos 30 cm.
Los autores del juego están familiarizados con la simulación de vuelo, donde se emplea la convención Z-is-up (la coordenada Z apunta hacia arriba) - así que todo el software funciona así. Sin embargo, los cargadores PLIB saben que algunos modeladores usan Y-is-up y modifican el eje según sea necesario. Por lo tanto, en AC3D, Y-is-up - pero en el juego,la convención es Z-is-up. Esto último queda a criterio de quien quiera crear su propio mapa

### Materiales de las pistas

En el juego, al estrellarse se trata de una pared de ladrillo, Si se trata de una nube de humo. ¿Cuál es el coeficiente de fricción? Diferente para hielo que para hormigón.
Estas cosas eventualmente serán listadas en un "archivo de referencia de materiales" para el nivel, pero resulta tedioso en la etapa de compilación, los creadores recomiendan emplear parámetros pre-determinados, como ser: superficie helada, aplicar la textura "ice.rgb" y cuando se carga el modelo, comprobar que el nombre de archivo de la lista de materiales contenga "ice.rgb" como un material resbaladizo. Esto permite añadir nuevas propiedades de los materiales sin tener que pasar de nuevo en cada modelo.
Para ello hay que editar la tabla al comienzo del archivo 'src / material.cxx'.
Los campos (en orden) son:
y aarmco_gst - el nombre del material dentro del código C ++.
"images / aarmco.rgb" - el nombre de archivo del mapa de textura.
VCLAMP - esto debería ser: NOCLAMP, VCLAMP, UCLAMP o UVCLAMP y determina si el mapa:
NOCLAMP - repite sin cesar.
UCLAMP - repite en la V (es decir, Y) dirección.
VCLAMP - o sólo en el (es decir, X) dirección U.
UVCLAMP - hace que la textura no repetir en absoluto.
Si el polígono es mayor que el mapa y el mapa se fija entonces los texels borde del mapa se repetirán indefinidamente.
TRUE - es la textura transparente?
0.5 - el valor 'pinza alfa' - píxeles con un alfa menor que esto no se rindió.
TRUE - es 'iluminación' habilitado para este polígono? Si no, el polígono se dibuja en él es el brillo completo y va a brillar en la oscuridad.
1.0 - el coeficiente de fricción. 1.0 es "normal", los números más grandes representan superficies más ásperas, más pequeños son más resbaladizo.
0 - el efecto sobre el Kart de polígonos tocar hechas de este material.
0 significa que se trata de una 'superficie manejable' - o para una superficie vertical, que karts que golpean sólo se ralentizará un poco y puede 'slide' a lo largo de los polígonos.
MAT_CRASH significa que cualquier kart que golpea este polígono se estrellará y soltar a velocidad cero.
MAT_ZIP significa que este polígono tiene el efecto de una cremallera ... Probablemente, esto sólo se debe utilizar para cremalleras reales ... pensar cuidadosamente antes de hacerlo de otra manera!
MAT_IGN significa que este material es puramente decorativo y karts puede conducir a la derecha a través de él.

### Archivo de localización

Hay un archivo de "datos / xxx.loc '(donde' xxx 'es el nombre de su nivel) que contiene la ubicación de cada archivo de modelo en (x, y, z) y (h, p, r) - La partida, Pitch and Roll.
Es conveniente tener algunos objetos de forma automática 'ajustada' a sentarse en el terreno. Sustituyendo la coordenada Z con un par de llaves '' ... también se puede dejar de lado (usando '') - y se computarán por lo en cuanto a la posición del objeto sobre la superficie subyacente.
Dado que los objetos se añaden a la escena en orden, los modelos de la pista tienen que aparecer antes en el archivo de las cosas que desean ajustarse a ella.
Hay algunos modelos que se han 'incorporado' para el motor del juego - en particular los de los diferentes colores de arenque.
Los comentarios pueden ser colocados en el archivo '.loc' mediante la colocación de un "#" al inicio de la línea.
La forma más fácil de entender el formato de archivo '.loc' es mirar algunos de los de niveles existentes - el formato es bastante fácil. Aquí hay un ejemplo:
Puede cambiar los modelos de autos usados para un nivel dado especificando un archivo 'de los jugadores:
JUGADORES "data / filename.dat"
El archivo de los jugadores por defecto es "datos / players.dat '.

### Archivo de línea de transmisión

El segundo archivo que necesita es "datos / xxx.drv '- que es una lista ordenada de puntos 2D que se encuentran a lo largo de la línea central aproximada de la pista - a partir de la línea de salida, ir todo el camino alrededor de la pista y terminando de nuevo en el línea de salida.
El archivo de línea de transmisión se utiliza para varias cosas:
Para decirle a los jugadores de la computadora dónde dirigir.
Para permitir a averiguar hasta qué punto la vuelta de la 'vuelta' cada jugador es.
También lo utilizó para generar una 'vista en planta' de la pista con puntos de colores para los jugadores.
He aquí un ejemplo de un archivo típico "drv".
1.6556, -2.09912
-0.6416,15.1328
-7.5344,35.8112
-22.469,54.192
-40.8496,59.936
-59.2304,51.8944
-75.3136,33.5136
-83.3552,22.0256
-100.587,1.34728
-122.414, -8.99188

### Modelos kart

Los Karts en TuxKart son bastante simples, los personajes hacen cosas por el estilo que se inclina en las curvas, girando la cabeza, muy poco de lo que sucede en MarioKart, los Karts también necesitan iconos 2D para su uso en diversas partes del juego.
Los nombres de archivos para los cuatro modelos Kart se establecen en el archivo 'players.dat' (que se puede reescribir para cada nivel). Los iconos y los iconos de los diferentes objetos de colección están codificados en el juego. Los arenques y cremalleras, cosas como las sombras de los karts, misiles y arenques también se codifican en el juego.
Para 'conectar' un nuevo modelo en el juego mediante la edición del archivo de "datos / levels.dat ' se debe añadir una nueva línea que contiene el nombre de la base de datos ".loc 'y los archivos .DRV' seguido de un espacio y luego el nombre legible por humanos para el nivel que se muestra en el menú en la pantalla de inicio.
por ejemplo
penguinpark Pingüino Parque
Esto hace que el juego agregue 'Penguin Park' en el menú de inicio, y si se selecciona ese elemento, hará que se cargue "datos / penguinpark.loc 'y' data / penguinpark.drv '. Esta característica no estaba disponible antes de la versión 0.0.2.

### El archivo jugadores

Esta es una lista de nombres de ficheros que contienen directamente los modelos 3D de los jugadores y sus vehículos. El orden de las entradas en el archivo es significativa.
DIRECTORIO DE ESTRUCTURA:
src - Si el código fuente vive.
datos - Contiene todo tipo de datos miscelánea
archivos. En este momento, esto se limita al nivel
Descripción de los archivos de los .loc 'y' .drv 'y' levels.dat '.
doc - Documentación - todo en '.html'
imágenes - mapas de textura y otras imágenes que necesita el
juego. Estos son actualmente todo en SGI '.rgb'
formato de imagen.
wavs - Los archivos de sonido - efectos de sonido en formato ".wav".
mods - Los archivos de música - en formato 'mod'.
modelos - modelos en 3D - en formato '.ac'.