Publicaciones sobre el desarrollo reunidas en un solo lugar. Hasta disponer de la traducción al español, se muestran las versiones revisadas en inglés con un enlace a la fuente.
Una actualización. Aramos, sembramos y cosechamos, incluso los fines de semana. Un logro importante: Me las arreglé para establecer una persistente conexión bidireccional entre cliente y servidor, intercambiar datos, y, sobre todo, procesarlo! La conexión existía antes, pero no siempre hacía lo que era necesario, y la implementación era incómoda. Ahora está estable. Cada 20 segundos, el cliente y el servidor intercambian paquetes cardíacos para comprobar que ambos lados están vivos. Si las cosas van bien, agregaré acceso a la base de datos hoy, y el inicio de sesión y el registro funcionarán, de verdad. Los formularios y la lógica del cliente ya están listos.
He empezado a ensamblar el proyecto final a partir de prototipos construidos en años anteriores. Sin duda será bastante difícil, pero funcionará. El video muestra el mapa de estrellas necesario para la navegación interestelar. Mira la escala. Si el hardware puede manejarlo, puedo expandirlo a 200.000 estrellas. Antes de la optimización, apenas podía manejar 20.000, y la tasa de fotogramas era de unos 5 fps. Después de la optimización, 45.000 se ejecutan sin problemas. Ese es todo mi catálogo anterior.
Por cierto, si alguien quiere ayudar con el código, hay una manera fácil. Instale Unreal Engine desde Epic Games Store, haga un proyecto vacío, cree un nuevo Blueprint y seleccione una biblioteca de funciones. A continuación, puede hacer todo tipo de funciones con pines de entrada y salida. Todo es visual, usando gráficos. No necesitas escribir una sola línea de código.
Noticias. Durante la temporada pasada trabajé en combate en barco. Ahora vuelvo al lado económico, estratégico y logístico. Hasta ahora, sabía que las interacciones del servidor necesarias para la economía podrían de alguna manera ser construidas en el motor, pero no sabía exactamente cómo. El problema es que el motor está esencialmente diseñado para conexiones basadas en sesiones: un grupo de jugadores tiene una sala de juegos, todo el mundo corre alrededor de él, y una computadora actúa como el servidor. Físicamente no hubo interacción completa, o incluso rudimentaria, con un servidor capaz de mantener a cada jugador conectado y de servirles información de una base de datos. Algunas soluciones eran posibles, pero el resultado habría sido pobre.
Entonces, ¿dónde estamos? Tuve que dedicar noviembre y diciembre al trabajo de nuestra compañía. Tenemos que ganarnos la vida. Ahora mismo estoy construyendo rápidamente un juego de plataformas y lo pondré en Google Play, con la esperanza de traer algo de dinero. Ya veremos. En un mes o dos, terminaremos nuestro proyecto de escritura actual y empezaremos a trabajar seriamente en el libro principal de la serie Éxodo. Desde que un juego llamado Exodus fue lanzado recientemente, un shooter basado en la ciencia ficción, por cierto, vamos a cambiar el nombre de nuestro proyecto Último Exodus o algo similar. Me mudé a la versión 5.3 del motor. ¿Qué nos da eso? Tamaño. Con coordenadas de 32 bits, teníamos aproximadamente 2.000.000.000 de unidades. Si una unidad es de un centímetro, el mapa abarca 20.000 metros, o 20 kilómetros. Si una unidad es un metro, son 2.000 kilómetros. Eso puede funcionar para una batalla espacial local, pero la precisión es entonces sólo un metro, que es demasiado gruesa. En la versión 5.3, entre otras cosas, como el soporte para la base de datos que necesitamos, las coordenadas se han movido completamente a 64 bits sin ninguna solución incómoda. Son 9.000.000.000.000.000.000 Unidades Coordinadas. Podemos posicionar una bala o fragmento con precisión y tener un mapa que abarque 90.000.000.000.000 de kilómetros. Sí, 90 billones de kilómetros. Divide eso por 150.000.000 kilómetros, o una UA, y obtendrás 600.000 unidades astronómicas. Podemos simular una bala volando a través de un sistema de triple estrella, fácilmente y sin trucos especiales. Aproximadamente 300 UA es suficiente para modelar el Sistema Solar; con las nubes Oort y otras características trans-Neptunianas, 1.500. Anteriormente, utilizando soluciones de trabajo tensas e incapaces de modelar un sistema estelar más grande que el nuestro, nuestro paso más pequeño era de 10.000 kilómetros. Naves más cercanos que los que se consideraban ocupan el mismo punto. Ahora podemos calcular hasta el centímetro.
Casi no hay noticias porque he estado enfermo. Cuando estoy enfermo, mi pensamiento se desacelera y no me siento a codificar. Además, ahora estoy trabajando en cómo el servidor interactúa con la base de datos y cómo los servidores se comunican con el cliente. La fundación está ahí, y el juego ya funciona con un servidor y clientes, pero ahora necesita soportar varios servidores distribuidos. Es una tarea difícil pero solvable. Algunas partes ya están funcionando. Como bono, aquí hay un avatar de uno de los oficiales de la tripulación de la nave.
¿Qué se ha añadido? Cambiar municiones a través de un menú; menús de armas e ingeniería con botones y diversos datos; modos de disparo de armas; seguimiento de diferentes tipos de municiones. He empezado a trabajar en el comportamiento térmico de los módulos y la nave en su conjunto. Después de eso añadiré armas de misiles, luego drones, y luego sistemas de guerra electrónica. A continuación vienen mejoras en el menú de destino detectado, incluyendo correcciones e incertidumbres que dependen de los sensores y otras circunstancias; pulir el radar y otros sensores; un menú de inicio con una interfaz para la configuración de la nave y modificaciones; y luego la parte difícil, afinando el modelo de daño. ¡Después de eso, puedo empezar a hacer pruebas con amigos!
Ayer construí un componente importante. Más precisamente, todo un conjunto de mecánicas: contabilidad de los recursos energéticos de un nave; cierre de módulos en orden de prioridad cuando la energía es escasa; conexión, carga y descarga de baterías; y transiciones de tiempo entre diferentes estados de actividad del módulo, mientras que la contabilidad de posibles daños y la experiencia de los oficiales y la tripulación. Lo que es especialmente agradable es que esto no está construido para un pequeño barco. Es un sistema que puede procesar cualquier número de módulos, en cualquier configuración, en cualquier nave.
Un informe de progreso. Además de los fallos y otras cosas habituales, los sectores de escáner y las funciones complejas del motor ahora están funcionando correctamente. Ahora podemos disparar a un objetivo en movimiento con plomo, teniendo en cuenta tanto nuestra propia velocidad como la del objetivo. El comportamiento proyectil ahora depende de la calidad, por lo que la velocidad del hocico varía. El barril tiene dispersión, también; se puede ver en el camino bastante desigual de los disparos. Para un descanso, y para obtener un mejor sentido de la escala, puse temporalmente un modelo de Star Trek en la escena. Nuestro pequeño barco está atracado justo al lado.
Después del verano y todo ese trabajo, era hora de un descanso. Entonces era hora de volver a codificar, y ya he estado haciendo eso durante unos días, con un poco de éxito. Hoy, por ejemplo, terminé y depuraba la función de parada automática de la nave. Añadí disparos a un objetivo, tanto desde una plataforma en movimiento como en un objetivo en movimiento, e introduje variación en la velocidad del proyectil según la calidad de las municiones. A continuación se compara la velocidad con un objetivo y volar hasta él para atracar o abordar. Luché con detenerme por mucho tiempo. Tuve que calcular cuánto tiempo tendría que funcionar cada motor, y en qué modo, para llevar a la nave a una parada completa. Dado que la nave puede estar al revés o apuntando en una dirección completamente diferente, y que hay seis motores, la tarea no es tan simple como parece. Especialmente cuando se trata de programarlo. Hice un menú que aparece cuando se hace clic en otra nave, con algunas opciones en ella, aunque creo que hacer esto a través de la interfaz será más conveniente y más apropiado. En este caso, uno no impide al otro.