Datos del Viernes # 82 - Optimizaciones
Hola constructores de Factorio.
Espero que disfrutes de las listas y de los números, porque vas a tener bastantes hoy :).
La 0.11 ha sido declarada estable.
Sabemos que no es perfecta, pero llegó al punto de que los problemas restantes eran sutiles o específicos de una determinada configuración de hardware/software o de mods específicos. El maratón de las 22 lanzadas con la 0,11 por fin ha terminado, por lo que podemos concentrarnos plenamente en el nuevo material.
Equipo en aumento
Las llamadas recientes para buscar más programadores adicionales tuvieron sus resultados y ahora da la sensación como si la cantidad de gente empezara a ser suficiente para esta etapa de software Wub
Hola constructores de Factorio.
Espero que disfrutes de las listas y de los números, porque vas a tener bastantes hoy :).
La 0.11 ha sido declarada estable.
Sabemos que no es perfecta, pero llegó al punto de que los problemas restantes eran sutiles o específicos de una determinada configuración de hardware/software o de mods específicos. El maratón de las 22 lanzadas con la 0,11 por fin ha terminado, por lo que podemos concentrarnos plenamente en el nuevo material.
Equipo en aumento
Las llamadas recientes para buscar más programadores adicionales tuvieron sus resultados y ahora da la sensación como si la cantidad de gente empezara a ser suficiente para esta etapa de software Wub
- kovarex a tiempo completo: el fundador, programador principal, gestionador, programador y generador de ideas para el juego.
- slpwnd (Tomas) a tiempo completo: el co-fundador, programador principal y gestor, Tomas también se encarga de la mayor parte de los aspectos legales, y cortapisas de las ideas sin sentido de kovarex.
- Albert el doble del tiempo completo: el tipo de los gráficos, que está con nosotros desde el principio.
- cube a tiempo completo: programador y experto técnico.
- Pavel a tiempo completo: el refuerzo del departamento de gráficos.
- Daniel a tiempo parcial: está componiendo la música y sonidos para Factorio desde el Reino Unido.
- Rseding91 a tiempo parcial : programador de los EE.UU, que sólo trabaja remotamente.
- Twinsen (Robert) a tiempo completo:programador de Rumania, se trasladó a Praga.
- Leon a tiempo parcial: artista de los Países Bajos, que está haciendo el tema artísitco.
- Martin a tiempo parcial: programador, se unió a nosotros recientemente.
- Michal a tiempo parcial: programador, que va a unirse a nosotros en dos semanas.
La lista del progreso realizado de la 0.12. Resumen de lo prometido para la 0.12
Optimizaciones
Para mí, el comienzo de la nueva gran versión principal está generalmente vinculada a la optimización de juego. El juego nunca se podría optimizar del todo, ya que cada factoría puede ampliase. Esto es especialmente importante ahora, cuando el multijugador está en el juego, a medida que más jugadores construyen más cosas, obviamente.
La mayor parte del tiempo, el mayor problema en la lógica de la actualización del juego son las correas de transporte. Por lo general hay muchas de estas, y su lógica era sencilla, pero muy ineficiente. Cada elemento de la banda de transporte era una entidad física en el juego con un cuadro de colisión y su posición. Una vez que se suponía que el elemento de la correa de transporte se moviera hacia adelante, todos los elementos cercanos (todos en el área de baldosas 2X2) tenían que comprobar la colisión. No puede haber una gran cantidad de elementos de cerca, especialmente si hay otra cinta transportadora junto a la existente, por lo que puede dar lugar a una gran cantidad de comprobaciones.
Hay 18 artículos que tienen que comprobar su colisión en esta curva para cada movimiento individual:
- Mejoras en el multijugador (reducir la latencia, mejor jcj/ soporte de las fuerzas)
Tomás está trabajando en reducir la latencia y parece tener buenos resultados, se puede esperar una descripción detallada de la misma en el próximo blog. - Primera parte del contenido final del juego. (Versión del cohete y envío al espacio).
- Robert terminó la lógica del silo y el lanzamiento cohete, la parte restante es averiguar las recetas para las partes y los detalles del montaje de cohetes en el silo de misiles.
- Señales encadenadas para trenes (saber más)
Martin sigue trabajando en esto, muchos detalles deben de estar terminados, el trabajo en las pruebas de integración y los gráficos se supone que comenzarán la próxima semana. - Combinador y más lógica del circuito (los planes)
Tuvimos unas cuantas conversaciones sobre el divisor, tenemos una idea básica y estamos discutiendo los detalles, y Robert comenzará a trabajar en estas pronto. - Roboport Personal
0% de avance - Optimización de la velocidad de simulación del juego (principalmente la simulación de la correa de transporte)
Yo (kovarex) trabajo en ello, más detalles en el siguiente párrafo. - Nuevos gráficos de los robots de combate. (previa)
Básicamente listos para fusionarse en la rama principal. - Integración con Steam
Esto, técnicamente, no será parte de la 0,12 ya que planeamos ir a Steam cuando la 0.12 fuera estable, pero esta vez decidimos no posponerlo más.
Optimizaciones
Para mí, el comienzo de la nueva gran versión principal está generalmente vinculada a la optimización de juego. El juego nunca se podría optimizar del todo, ya que cada factoría puede ampliase. Esto es especialmente importante ahora, cuando el multijugador está en el juego, a medida que más jugadores construyen más cosas, obviamente.
La mayor parte del tiempo, el mayor problema en la lógica de la actualización del juego son las correas de transporte. Por lo general hay muchas de estas, y su lógica era sencilla, pero muy ineficiente. Cada elemento de la banda de transporte era una entidad física en el juego con un cuadro de colisión y su posición. Una vez que se suponía que el elemento de la correa de transporte se moviera hacia adelante, todos los elementos cercanos (todos en el área de baldosas 2X2) tenían que comprobar la colisión. No puede haber una gran cantidad de elementos de cerca, especialmente si hay otra cinta transportadora junto a la existente, por lo que puede dar lugar a una gran cantidad de comprobaciones.
Hay 18 artículos que tienen que comprobar su colisión en esta curva para cada movimiento individual:
Para la 0.12, volví a escribir completamente la lógica interna de todas las entidades relacionadas con la cinta de transporte (cinta, cinta subterránea, divisor). Los elementos de las cintas ya no se representan como entidades individuales. Estas son sólo estructuras internas muy simples que se mueven en pequeños "carriles" invisibles. Una vez que el elemento de la cinta de transporte se supone que deba moverse, solamente el artículo que haya frente a él, debe comprobar la distancia.
El movimiento del artículo apenas requiere comprobar el elemento frente al mismo, en lugar de comprobar la colisión con 18 entidades diferentes.
El movimiento del artículo apenas requiere comprobar el elemento frente al mismo, en lugar de comprobar la colisión con 18 entidades diferentes.
La otra ventaja de esta reescritura es que ahora podemos controlar totalmente la densidad de las cintas y otras propiedades, sin tener que estar preocupados por que de las cintas queden bloqueadas, como en este informe de error. La optimización global de este cambio fue más o menos del 20% en la reducción del tiempo de fabricación durante la prueba.
Eso, combinado con algunas otras cosas que hemos hecho para 0.12, el tiempo de actualización se ha reducido en un 28% en comparación con la 0,11. Mi sueño sería llegar al 50% para la 0,12 lo permitiría el doble de tamaños de las fábrica, pero obviamente es más difícil y complicado para optimizar el juego. Por otro lado, es más divertido ahora, ya que está comenzando a ser un reto mayor.
Me han preguntado cuál es la distribución del tiempo de actualización de la entidad, así que aquí están los resultados de las primeros 20 entidades de unafábrica normal.
Eso, combinado con algunas otras cosas que hemos hecho para 0.12, el tiempo de actualización se ha reducido en un 28% en comparación con la 0,11. Mi sueño sería llegar al 50% para la 0,12 lo permitiría el doble de tamaños de las fábrica, pero obviamente es más difícil y complicado para optimizar el juego. Por otro lado, es más divertido ahora, ya que está comenzando a ser un reto mayor.
Me han preguntado cuál es la distribución del tiempo de actualización de la entidad, así que aquí están los resultados de las primeros 20 entidades de unafábrica normal.
Entidad | Tiempo de actualización | Planes |
Insertador | 18.01% |
Reduce el vector de rotación redundante por precálculos. |
Cinta transportadora | 12.44% |
Mejora la localización del caché y la activación/deactivación de la lógica. |
Humo | 9.66% | Acortar la vida útil del humo del tren, simplificando su lógica de movimiento. |
Máquina de ensamblaje | 6.97% |
(ensambladoras/hornos/química/refinerías). Implementar la lógica de activación/desactivación para éstos. |
Panel solar | 4.11% |
Combina los paneles solares en grupos internos cuando están en la misma red. |
Tanque de almacenaje | 3.68% | |
Perforadora | 3.40% | |
Unidad | 3.33% | |
Cinta subterránea | 2.80% | |
Robot logístico | 2.60% | |
Divisor | 2.31% | |
Acumulador | 1.58% | |
Lámpara | 1.47% | |
Robopuerto | 1.21% | |
Caldera | 0.47% | |
Particula | 0.40% | |
Vehiculo | 0.31% | |
Generador | 0.28% |