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?

No hay comentarios: