Kerbal Space Program: una gozada para aquellos que gusten del Espacio

¿Tan difícil va a
ser la la ciencia de cohetes?
En los últimos años ha habido un creciente número de juegos de los denominados «indie». Este tipo de juegos son hechos por estudios de pequeño tamaño que manejan bajos presupuestos, muy lejos de los millonarios triple A (AAA) que pueden superar la inversión de una película recargada de CGI (Computer Generated Imaginery).
Uno de los juegos de este tipo que más ha destacado en los últimos tiempos es Kerbal Space Program. Este videojuego que aún no está terminado, tiene como principal característica la de poder simular los fenómenos físicos que intervienen en la exploración espacial, desde la fabricación del cohete y su carga hasta la órbita o aterrizaje en otro planeta. Claro que hay simplificaciones en la mecánica de las leyes físicas a simular por razones prácticas: capacidad de cálculo requerida y facilidad para los jugadores (y seguramente también para los programadores).


Aterrizando en Mun,
Kerbin de fondo
En el canal YouTube de este blog colgué la semana pasada un vídeo con un intento fallido de hacer volar un cohete bastante estrambótico. No hay sonido por temas de desincronización de audio al capturar con avconv bajo Kubuntu 13.10 (estoy trabajando en poder capturar el sonido bien). En dicho vídeo se puede ver la gran cantidad de piezas diferentes que hay actualmente, el límite para idear una nave prácticamente está en la imaginación de uno.

El juego se desarrolla en un universo que se asemeja al nuestro y el planeta natal del que parten todos nuestros programas espaciales se llama Kerbin, siendo sus habitantes los Kerbins. Kerbin tiene dos lunas: Mun (en contraposición al nombre inglés que recibe la Luna: Moon) y Minmus. Kerbin pertenece al sistema Kerbol cuya estrella es precisamente Kerbol (el equivalente a nuestro Sol de nuestro sistema Solar). El juego dispone de una wiki en la cual encontrar toda la información que queramos (y añadir información propia) así como tutoriales sobre despegues, aterrizajes, conseguir órbitas alrededor de determinados cuerpos celestes, técnicas de viaje usando cambios de órbita y demás.
En Mun, la luna de Kerbin
Con el gran abanico de piezas disponible puedes crear desde un pequeño cohete para ir a la Mun hasta montar estaciones espaciales con puertos de acoplamiento y recarga de combustible, ideal para un viaje largo en el que hayas preparado previamente estaciones de repostaje. Los cambios de órbita en cuerpos grandes pueden ser muy costosos en combustible, sobre todo si nuestro equipo tiene una gran masa.

Calentito calentito
En Kerbal Space Program el objetivo del modo campaña o carrera consiste en manejar una agencia espacial tanto en el apartado técnico como en el económico. El apartado técnico incluye el entrenamiento de nuevos astronautas así como conseguir «puntos de ciencia» que nos permitirán desbloquear nuevas piezas para usar en nuestras misiones. Para mantener nuestra agencia espacial a flote deberemos organizar viajes y otras atracciones para turistas espaciales. Ese dinero lo podremos invertir en explorar el espacio a nuestro gusto y porqué no, llevar a los turistas aún más lejos si quieren y pueden pagarlo.
El modo campaña aún no está totalmente terminado, los valores monetarios indicados no se tienen actualmente en cuenta. El modo caja de arena o sandbox es el más usado actualmente, tienes todas las piezas disponibles y puedes montar lo que quieras y hacer tus pruebas. Las posibilidades son muchas. Incluso puedes plantearte misiones de rescate por si te dejas alguna nave perdida sin combustible a millones de kilómetros de Kerbin con algún astronauta dentro.

Las posibilidades del juego no terminan con lo que trae de serie. Dispone de un sistema de extensiones que permite añadir tus propias piezas. Si lo deseas puedes subirlas a un repositorio en Internet, el Kerbal SpacePort, aunque a partir del 30 de Mayo el sitio oficial de modding del juego será curse.com, sitio web con mods para múltiples juegos. Si eso de crear tus extensiones no te va, simplemente descárgate algunas y prueba cosas como motores gigantes o modelos de naves existentes en la realidad.

Con KSP todo es posible y puedes construirte estaciones espaciales, estaciones de paso para recargar combustible en viajes largos, explorar planetas del sistema Kerbol, poner en práctica conocimientos básicos de física, etcétera.
Dos satélites orbitando Mun
Sin duda alguna lo mejor del juego es lo gratificante que puede resultar una misión exitosa: aterrizar en Mun, poner un satélite en órbita, construir tu loca idea de nave y que funcione. El límite está en tu imaginación y un poco también en tu habilidad para manejar una nave espacial aunque hay extensiones que te permiten automatizarlo todo. Personalmente sólo las consideraría para cosas muy complejas con cambios múltiples de órbita y cosas por el estilo.

No hace falta decir que el juego está disponible para GNU Linux. Puedes conseguirlo en la web del mismo o bien en Steam. En el caso de Steam tienes el DRM de Steam.




Último detalle: si deseas tener anti-aliasing para suavizar los dientes de sierra como los que aparecen en la imagen de arriba del cohete rozando con la atmósfera de Kerbin, deberás usar las opciones de tu tarjeta gráfica ya que en la última versión de Kerbal Space Program la opción de suavizado no funciona. En el caso de NVIDIA puedes forzar el uso de suavizado creando un perfil para el ejecutable del juego en el NVIDIA Control Panel e indicar el modo de suavizado (anti-alias) que quieres emplear. Primero tendrás que averiguar los tipos de suavizado que tu tarjeta gráfica puede usar y escoger el que mejor te parezca para ponerlo luego en el perfil.
Puedes listar los identificadores de los distintos tipos de suavizado ejecutando en un terminal el siguiente comando:
user@home~$ nvidia-settings --query=fsaa --verbose

Mostrará una salida parecida a ésta:

  Attribute 'FSAA' (kiwi64:0.0): 0.
    Valid values for 'FSAA' are: 0, 1, 5, 7, 8, 9, 10, 11, 12 and 14.
    'FSAA' can use the following target types: X Screen.

    Note to assign 'FSAA' on the commandline, you may also need to assign
    'FSAAAppControlled' and 'FSAAAppEnhanced' to 0.

    Valid 'FSAA' Values
      value - description
        0 - Off
        1 - 2x (2xMS)
        5 - 4x (4xMS)
        7 - 8x (4xMS, 4xCS)
        8 - 16x (4xMS, 12xCS)
        9 - 8x (4xSS, 2xMS)
       10 - 8x (8xMS)
       11 - 16x (4xSS, 4xMS)
       12 - 16x (8xMS, 8xCS)
       14 - 32x (8xMS, 24xCS)


Como podéis ver hay posibilidad de 2x, 4x, 8x, 16x y 32x. Esto con una GeForce GTX 570. Para un AA de 16x hay tres opciones: una con valor 7, otra con valor 11 y otra con valor 12. Según el modo que deseéis, anotaros el valor correspondiente. Una explicación de todo lost distintos modos (aunque en inglés) la podéis encontrar en Reddit. Un consejo básico es evitar cualquier modo que use SS (Super Sampling) ya que es una forma de suavizado muy, muy costosa. Para 16x entonces no queda otra que usar el modo con valor 7 o el de valor 12 (4xMSAA+12xCSAA y 8xMSAA+8xCSAA, respectivamente). Normalmente con un suavizado de 2x a 4x ya es suficiente para la mayoría de personas y resoluciones. Cuanta más alta sea la resolución menos necesidad de suavizado se suele necesitar y cuanto más elevado es un suavizado más recursos de tarjeta gráfica consume así que si queréis probar más de 4x e incluso usando SS (no abreviado, SSAA de Super Sampling Anti-Aliasing) es posible que perdáis bastante rendimiento (sobre todo con SSAA).

Si no queréis usar FSAA (Full Scene Anti-Aliasing) podéis mirar si vuestra tarjeta soporta FXAA, MLAA o alguna otra forma de suavizado. Si a la opción --query le pasáis «all» (--query=all) veréis todas las opciones activables disponibles. En el caso de una GeForce GTX 570 aparece también la posibilidad de usar FXAA (cuyo valor puede ser 0 para off y 1 para on).
El FXAA fue un modo desarrollado por NVIDIA parecido al MLAA de AMD de manera que se consigue cierto suavizado con muy bajo rendimiento. El problema de FXAA es que el suavizado se realiza sobre el buffer final, afectando también al HUD de los juegos (los elementos 2D de información). Cosas de los motores gráficos actuales de coloreado postergado. (deferrered shading).

Una vez averiguados los posibles modos de suavizado, podemos proceder a abrir el panel de control de NVIDIA.
Pantalla principal del panel de control
de NVIDIA, X-Settings

Si os fijáis hay un apartado llamado antialiasing settings:

Anti-aliasing settings, global para todas las aplicaciones

Este apartado permite configurar el suavizado para todas las aplicaciones, es por ello que que crearemos un perfil para Kerbal Space Program de forma que no afectemos al resto. En el listado de secciones de la parte izquierda de la ventana pulsamos sobre Application Profiles, que nos mostrará lo siguiente:


En la imagen de encima podéis ver la única regla que he creado en el perfil que tengo para KSP. En vuestro caso estará todo vacío. Pulsad en la pestaña Profiles y le dáis a Add Profile (el botón con el símbolo +), os aparecerá una ventana como la siguiente:

Le dáis a Add Setting (el botón con el símbolo +). Se creará una fila en el recuadro y rellenáis la fila como aparece en la figura siguiente:

Key=GLFSAAMode, Value = 12. Cuando escribáis el valor que queráis en decimal el programa lo pasa automáticamente a hexadecimal (para 12, 0xC). El Type será detectado también como «int» o «bool» según si ponéis un número, o «true» o «false».

Pulsáis sobre Update Profile y ya está, perfil creado. Ahora falta crear una regla que use ese perfil (perfil que puede contener más de una configuración, es decir, no sólo podéis establecer el tipo de suavizado sino otras cosas) cada vez que Kerbal Space Program se ejecute. Id a la pestaña Rules y pulsad sobre Add Rule (el botón con el símbolo +). Aparecerá la siguiente ventana:


Una regla debe aplicarse a algo según un patrón (pattern). Ese algo puede ser un nombre de proceso que en nuestro caso es el nombre del ejecutable del juego (process name), esta opción viene así por defecto. También puede ser el nombre de una biblioteca compartida (Shared Object, los archivos de extensión .so, como en Windows son las .DLL) o bien la regla puede aplicarse siempre da igual que sea un proceso o una biblioteca compartida.
En el campo «matches this string» pondremos el nombre del ejecutable de KSP: KSP.x86. Luego escoged el perfil que habéis creado antes en el desplegable «Profile Name» (acordaros de haberle puesto un nombre que tenga algo de sentido)  y le dáis a «Update Rule». Si sólo tenéis un perfil ya estará escogido por defecto, en caso de tener varios pues por defecto aparecerá el primero siguiendo un orden alfabético.

Regla que aplica el perfil de configuraciones Kerbal al ejecutable de nombre KSP.x86,
que es el ejecutable de Kerbal Space Program

Y eso es todo. Ahora cada vez que juguéis a Kerbal Space program tendréis el suavizado funcionando. Resumen:
  1. Escoger modo de suavizado.
  2. Crear perfil (nombre + configuración para el suavizado).
  3. Añadir regla que use el perfil creado con el proceso cuyo nombre coincida con KSP.x86.
Si al listar todas las opciones no habéis guardado la salida en un archivo de texto o no la habéis redirigido al comando less y tampoco sabéis como hacerlo, quizá os venga bien echar un vistazo a este post que habla de los tubos (pipes, símbolo «|»), aunque es quizá una entrada un poco densa y trata los tubos como algo ya conocido, o bien mirar aquí como referencia las opciones que una GTX 570 soporta. El caso es que en el panel de control parece que las opciones no se escriben exactamente como aparecen en dicho listado, ya veis que de FSAA ha habido que pasar a escribir GLFSAAMode. Pero un poco de Google seguro que nunca está de más.

Comentarios

  1. Faltaría añadir que éste juego ha recibido atención por parte de la NASA y ha salido un DLC desarrollado en conjunto con dicha agencia. Además de eso también hay piezas incluidas de serie en el juego que han sido también desarrolladas en cooperación con la NASA como motores, boosters y depósitos de combustible.

    ResponderEliminar

Publicar un comentario