7/4/10

Jasit, Simutrans en otro lenguaje

Es por todos conocido que Simutrans está programado usando C++, un lenguaje que usa el paradigma de la programación orientada a objetos (POO). El código del juego es relativamente eficiente y usar ese lenguaje tiene sus ventajas, sobre todo en cuanto a gestión de memoria, pero hubo gente que preguntó por un posible port del juego al lenguaje Java. Pues bien, parece que alguien ha recogido el testigo...

Leer más...

El caso es que navegando por SourceForge me tope con este proyecto llamado JaSit, dirijido por Florian Schlögl aka Xenoplus. Parece se un simulador de transportes en Java. En otras palabras, es una versión de Simutrans en Java.

En su momento ya hubo discusiones previas acerca de las posibilidades de portar parte del código de Simutrans a Java.

El código de Simutrans no puede trasladarse directamente de C++ a Java, ya que usa elementos de POO no disponibles en Java como herencia múltiple de una manera que Java no soporta. Solo una clase padre puede ser clase normal, el resto de padres deben ser puras clases virtuales (interfaces en Java). Por otro lado, Simutrans usa su propio sistema de gestión de memoria, lo cual en casos como mapas grandes con millones de objetos puede hacer que el colector de basura de Java tenga problemas.

Hay estimaciones que dicen que el rendimiento de Simutrans en Java caería alrededor del 30%, pero sería más fácil de paralelizar, lo cual sería una ganancia en las actuales arquitecturas multinúcleo.

En cuanto a la magnitud de los cambios, en cifras se estima que aproximadamente el 70% del código debería ser rescrito y alrededor del 30% de los ficheros requerirían de algo más que pequeños cambios. Además, Simutrans usa objetos valor en muchos lugares, lo cual no está disponible en Java, y deberían reemplazarse a mano. Las templates de Java son distintas de las de C++ y en este aspecto es complicado estimar el impacto de los cambios.

En resumen, es factible portar Simutrans a Java pero requeriría de muchos pequeños arreglos y detalles así como una rescritura desde cero de parte de la arquitectura del juego para fuese mínimamente jugable.

Dicho esto, Jasit aún no da posibilidad de descargar nada, pero el proyecto comenzó este mismo año, hace apenas un par de meses, así que la cosa está un poco verde aún. Esperemos que siga adelante con el plan y el proyecto llegue a buen puerto, ya que parece que hay gente interesada en ello.

Si quereís más detalles, echad un vistazo a la Hoja de Ruta o daros un paseo por http://sourceforge.net/projects/jasit. Se ve prometedor ¿no?

5/4/10

El día de la independencia de los paks

Desde hace tiempo, cuando inicias Simutrans, aparece una pantalla en la que te pregunta qué pakset quieres usar, y si lo quieres con addons o no. Yo siempre pasé por alto ese detalle, pero gracias a VS y jonasbb, hemos descubierto para que sirve el famoso botón Load with Addons.

Leer más...

Este es un pequeño tutorial que muestra como puedes separar los addons de la instalación base de Simutrans, con el fin de facilitar las actualizaciones. De hecho, es una mera traducción de del foro internacional.

La clave de todo está en que uede usar una carpeta adiccional para los addons u objetos extra, así pues puede ponerlo ahí y tener la certeza de que no interferirán con el resto del pakset. El nombre de dicha carpeta debe ser el mismo que el nombre del pakset (pak128, pak, pak96, etc..).

Ruta de la carpeta de addons:
  • En Windows, debe estar en Documents/Simutrans/nombre_del_pakset/

  • En Linux, debe estar en user_home/simutrans/nombre_del_pakset

Si pones los ficheros .pak de los addons en este directorio y después pulsas el botón "Load with Addons" en la pantalla de inicio, se cargarán los addons adicionales que haya en dicho lugar. Si no, se cargará unicamente el contenido base de pakset. De esta manera puedes separar los ficheros originales del pakset de los addons, y en caso de actualizar el pakset, los addons seguirán ahí.

Un ejemplo, para windows: La ventana inferior muestra el contenido habitual del directorio de Simutrans con el ejecutable. La ventana superior muestra lo que tienes que tener en Documents/Simutrans, a fin de poder cargar los addons por separado.


Por otro lado, es la forma perfecta de evitar los problemas de compatibilidad por addons al intercambiar partidas. Si lo tienes organizado de esta forma, solo necesitas que te pasen la carpeta de addons, manteniendo el resto "a salvo".