Desde el Blog de Unknown Worlds nos llega una entrada de Max que responde a varias de las preguntas que se les han ido haciendo acerca del motor de Natural Selection 2, Spark. A continuación podéis leer una traducción de la misma.

Nos preguntan bastante acerca de las aplicaciones que estamos desarrollando para Natural Selection 2. Partiendo de esto, he escrito la primera de una serie de entradas del blog destinadas a responder algunas de las preguntas más comunes e interesantes. Mi petición inicial de preguntas generó unas cuantas, las cuales quiero responder en detalle, pero primero empezaré por dos preguntas más generales.
Andrea pregunta: ¿Que es el Spark engine? Es todo el motor del juego o solo el apartado gráfico?Es una gran pregunta por la que empezar. Spark es conjunto del motor del juego y las herramientas que usamos para crear Natural Selection 2. Esto incluye tanto los gráficos, el sonido, el código de red, las físicas, el scripting, búsqueda de caminos y sistema de efectos (y probablemente otros más). Esto también incluye las herramientas como el Editor, Builder, Viewer y Cinematic Editor.
Cuando Charlie y yo empezamos a trabajar en Natural Selection 2, no planeábamos crear un motor. Tener que crear tecnología propia supone mucho trabajo y es un verdadero reto crear un juego - tanto en términos de jugabilidad y de arte - mientras el motor no está acabado. Cuando al fin decidimos que íbamos a crear nuestro propio motor queríamos asegurarnos que la tecnología sería suficientemente flexible para que no tuviéramos que volver a empezar desde cero para el siguiente juego. Con este objetivo se ha diseñado para que sea muy independiente del juego. Spark está programado en C++ y provee de funciones para crear un mundo virtual. Pero Natural Selection 2, que está totalmente programado en LUA, añade los elementos comunes de los juegos de disparos en primera persona (jugadores, armas, puntuación, etc.) y las piezas específicas de Natural Selection como el modo de comandante, los árboles de progreso, caminar por las paredes, etc.
La división de trabajo para la programación la hemos tenido clara desde el principio - Charlie escribe el código para Natural Selection 2 y yo me encargo del motor y las herramientas. Hace unos meses, Kurt Miller, un gran programador y amigo mío, se unió a Unknown Worlds para trabajar también en el motor y las herramientas.
Durante los dos últimos meses hemos estado lanzando parches semanales para el editor. Muchas veces la gente interpreta estas actualizaciones solo del editor como que no estamos haciendo progresos en el juego. En realidad, aunque nos hemos volcado a saco en el editor - al menos antes de la primer versión - Charlie estuvo dedicándose a tiempo completo en el código del juego. En la actualidad, Kurt y yo nos dedicamos la mayor parte del tiempo en mejorar en motor, aunque Kurt va dedicando ratos a implementar nuevas características y a corregir fallos del editor.
Beat Wolf pregunta: ¿Que plataformas serán soportadas? (Linux, OS X, XBox, etc...) La página web aun menciona Linux y OS X como plataformas, pero han habido muchas dudas con la inclusión de Steamworks y parece que la pregunta se ha ido evitando últimamente.¡No la esquivemos más, pues! Actualmente nuestro motor y herramientas solo funcionan en Windows, y será la única plataforma para la que Natural Selection 2 estará disponible en su lanzamiento. Sin embargo, la mayor parte del motor no está vinculado a una plataforma concreta. La pieza que más está vinculada a Windows es el código de bajo nivel de pintado (NdT: render) que está hecho con Direct3D. Con el interés de tener nuestro engine corriendo en Linux y OS X algún día, este código de pintado de bajo nivel usa un envoltorio (NdT: wrapper) de modo que está mayormente separado del resto del motor. Con poco esfuerzo podemos intercambiar esta pieza por una implementación en OpenGL que funcionaría en Linux y OS X. El resto de nuestras herramientas están hechas usando el framework multi-plataforma wxWidgets, de modo que en el momento que el motor funciona en otra plataforma, llevar las herramientas no supondrá demasiado trabajo.
Ahora que te he convencido de que hemos previsto el llevar nuestro motor a otras plataformas, te preguntarás porque simplemente no lo hacemos. La respuesta es simple; no tenemos tiempo ahora mismo. Como una alternativa a hacerlo nosotros estamos considerando "abrir el código" o publicar las API de bajo nivel que son específicas de Windows e invitar a la comunidad a contribuir con sus propias implementaciones. Si te gusta esta idea házmelo saber en los comentarios.
Ahora el tema de Steamworks. Para aquellos que no lo sepan, Steamworks es la tecnología núcleo de Steam, cosas como la lista de amigos, el buscador de servidores y el chat de voz. Hemos integrado Steamworks en Natural Selection 2 porque te ahorra el esfuerzo de implementar estas cosas por ti mismo, y entregaros el juego antes. Desgraciadamente Steamworks (que es esencialmente el cliente de Steam) solo funciona en Windows. Hemos preparado Natural Selection 2 para trabajar sin Steamworks, pero pierdes los servicios que provee. Por ejemplo, en vez de poder buscar un servidor tendrías que teclear su dirección en la consola para conectarte. Para el cliente de OS X y Linux tendremos que substituirlo en nuestra propia implementación de los servicios que falten. Esto obviamente no queda fuera de la pregunta sobre una actualización pasada la publicación del juego, pero no es algo que nos vaya a retrasar en la publicación inicial para windows por incorporarlo entonces.
Debo añadir a todo esto que nada de esto se aplica a los servidores dedicados en Linux. Los servidores dedicados no requieren de gráficos, periféricos de entrada (NdT: teclado/ratón) u otras cosas que dependan de la plataforma. Y una de las ventajas de usar de escribir todo el código en LUA es que es independiente de la plataforma por definición. Los servidores dedicados en Linux estarán en el lanzamiento inicial.
Si tienes más preguntas que quieras que se respondan, envíanos un correo electrónico a
max@unknownworlds.com. Contra más específico seas mejor.