Featured image for Montar la ola Palworld: tapar la pérdida de memoria para mantener nuestros servidores a flote

January 1, 2020

Montar la ola Palworld: tapar la pérdida de memoria para mantener nuestros servidores a flote

Introducción

Palworld arrasó en el mundo de los videojuegos cuando se lanzó en acceso anticipado el 19 de enero. Llegó a los 3 millones de jugadores apenas 40 horas después de su lanzamiento, y actualmente tiene más de 19 millones solo 2 semanas después de su lanzamiento. Palworld es un juego de supervivencia de mundo abierto con elementos de domesticación de monstruos. O como se le conoce más comúnmente como “Pokémon con armas de fuego”.

Decir que la demanda de servidores nos tomó por sorpresa sería quedarse corto. Cuando comenzamos a ofrecer alojamiento Palworld, las entradas se agotaron en 4 horas; a pesar de nuestros mejores esfuerzos, simplemente no pudimos conseguir suficiente hardware para satisfacer la demanda. Esto se debió en gran medida a la necesidad de recursos de sus servidores dedicados. El official recommendation tiene 4 núcleos de CPU y más de 32 GB de RAM para un funcionamiento estable. Podrías ejecutar más de 30 servidores Terraria con esa cantidad de RAM. La mayor parte del uso de recursos (francamente excesivo) proviene de errores y una mala optimización, pero eso es de esperarse de un juego de acceso temprano.

Mucho acceso temprano

Hay una buena razón por la que Palworld explotó como lo hizo. Es divertido. Realmente divertido. Ver a un simpático cordero esférico construir un arma para ti no es algo que ofrezca ningún otro juego. Pero Palworld sí. Sin embargo, se lanzó con una letanía de errores/problemas de rendimiento que iban desde divertidos hasta inconvenientes e incluso rompían el juego. Algunos de mis favoritos personales han sido:

  • Poder usar conjuntos completos de armadura en las ranuras de equipo de planeador, escudo y cabeza simultáneamente.* (Logré obtener hasta 2600 de defensa antes de que, lamentablemente, se solucionara en la actualización más reciente).
  • Poder atrapar jefes de torres como Zoe y Grizzbolt. No estoy seguro si esto se ha solucionado todavía.
  • Los amigos de tu base son inexplicablemente teletransportados al palco y mueren a causa del daño resultante de la caída.*
  • Subirte a una palesfera antes de que la captura termine de enviarte volando. (Esto terminó siendo clave para descubrir el origen de una pérdida importante de memoria, pero volveré a eso).

Todo lo que se haya solucionado se marca con un *

Todos esos problemas afectaron tanto al modo para un jugador como al modo multijugador, pero hubo algunos problemas con los servidores dedicados específicamente que afectaron particularmente a AleForge y a otros proveedores de servidores, principalmente:

  • Pantallas de carga infinitas.
  • Transferir guardados entre servidores
  • Múltiples pérdidas de memoria.

💡¿Qué es una pérdida de memoria?

Piense en la memoria (RAM) de su computadora como una pizarra que los programas usan para escribir información que planean usar más adelante. Cuando un programa tiene una pérdida de memoria, sigue escribiendo cosas en esa pizarra, pero no regresa y borra nada. Incluso si ya no lo necesita. Finalmente, el programa se queda sin espacio para escribir nueva información y falla. A veces, se cae la computadora con ella.

Sin duda, es un juego de acceso temprano y los desarrolladores han estado trabajando incansablemente para corregir estos errores. Aun así, queríamos hacer todo lo posible para resolver estos problemas lo antes posible. Constantes bloqueos y caídas del servidor, quedándote atascado en la pantalla de carga mientras escuchas a tus amigos jugar. O peor aún, no poder conseguir ningún servidor debido a los costos prohibitivos. No podíamos quedarnos de brazos cruzados y esperar a que los desarrolladores solucionaran los problemas de rendimiento. Seguramente había algo que podíamos hacer.

Reunirnos con nuestra comunidad

Estábamos lejos de ser los únicos que padecíamos estos problemas. El canal oficial de ayuda del servidor de Palworld en su discordia se vio inundado de personas que preguntaban cómo solucionar los bloqueos/pantalla de carga infinita, o cómo transferir su archivo guardado. Lo frustrante es que nadie parecía tener buenas respuestas. Sin embargo, gracias a nuestra increíble comunidad, terminamos en primera línea controlando el bajo rendimiento y los errores que interrumpen el juego.

Comenzó poco a poco, con miembros de nuestro discordia compartiendo sus descubrimientos sobre los problemas más comunes. Pero creció rápidamente a medida que más y más miembros de nuestra comunidad comenzaron a contribuir con su conocimiento y experiencia. Carbonic, miembro del personal de soporte, y Mayples y VeroFess, miembros de la comunidad, fueron los MVP en esto, pero muchos otros colaboraron.

Fue realmente conmovedor ver a tanta gente trabajando en equipo, ayudándose mutuamente a optimizar y solucionar los problemas. Pronto logramos que algunos servidores funcionaran durante más de 12 horas seguidas antes de tener que reiniciarlos para evitar fallos. Este tiempo de actividad prolongado supuso una gran mejora con respecto a los fallos casi horarios que sufrimos al principio. Si quieres implementar estos cambios en tu servidor, tenemos un artículo (here) que te guiará paso a paso.

Logramos avanzar un poco en la transferencia de partidas guardadas y también en pasar la pantalla de carga infinita. Esto es lo que sabemos sobre ellos:

  • Pantalla de carga infinita

Esto ocurre cuando alguien abandona tu gremio mientras estás desconectado, lo que corrompe los datos de guardado de tu personaje. Actualmente, la única solución conocida es eliminar el archivo de guardado corrupto de los archivos del servidor. Si necesitas ayuda con esto en uno de nuestros servidores, abre un ticket en here o en Discord y haremos todo lo posible para solucionarlo. Perderás tus niveles, objetos y compañeros, pero lamentablemente no hay otra solución por el momento.

  • Transfiriendo guardados

Esto tiene dos partes, ya que pasar de un jugador a un servidor es diferente a pasar de un servidor a otro. Tenemos una guía sobre cómo hacer ambas cosas, pero el proceso es bastante engorroso y los resultados pueden variar.

  • Un jugador/Cooperativo → Servidor Al momento de escribir esto funciona… Mayormente. El mundo y la mayoría de los datos del jugador se transferirán sin problemas, excepto los del anfitrión. Por defecto, Palworld rastrea qué jugador es cuál con un GUID (Identificador único global). Esa identificación está vinculada a su cuenta de Steam/Xbox. Sin embargo, los datos del anfitrión se guardan con el ID 000000001. Entonces, cuando se unen, el servidor no los reconoce y los obliga a crear un nuevo personaje. Hay una solución no oficial here, úsela bajo su propio riesgo.

  • Servidor → Servidor Una vez más, esto está funcionando actualmente. A menos que estés intentando transferir un mundo creado antes del parche 1.3.0. Ese parche cambió la forma en que los servidores dedicados crean y administran GUID. Hasta donde sabemos, no existe una solución para esto. De lo contrario, debería funcionar la siguiente guía que vinculé antes. Si te quedas atascado o necesitas ayuda para transferirte a nuestros servidores, abre un ticket y te ayudaremos.

Mientras trabajábamos para encontrar soluciones a la pantalla de carga infinita y guardar transferencias, Mayples y VeroFess todavía estaban solucionando las pérdidas de memoria y las cosas comenzaban a calentarse. Tanto es así que abrimos The Code Forge, un canal de discordia dedicado para que nuestra comunidad lo use mientras realizan ingeniería inversa en el juego.

Tapar la fuga

Las primeras mejoras provinieron de simples ajustes de configuración. Como reducir la cantidad de elementos terrestres, deshabilitar las incursiones y deshabilitar la penalización fuera de línea. Este último no afecta mucho el juego, ya que tus amigos actualmente no comerán si no estás conectado. Entonces se enferman de todos modos. Al final, agotamos rápidamente nuestras opciones de optimización y todavía estábamos lidiando con fallas regulares. Eso fue hasta que encontramos VeroFess’s Unofficial Fix.

Casi de inmediato, Carbonic creó un servidor comunitario para que lo pusiéramos a prueba y los resultados fueron buenos. Con sólo 2 núcleos de CPU y 12 GB de RAM, el servidor funcionaba sin problemas. Sin retrasos ni bandas elásticas. ¡Incluso con 9 personas! (Llegar a ser uno de esos 9 fue una experiencia increíble) Lo que VeroFess había hecho fue editar el binario del servidor para corregir varias funciones mal optimizadas. No puedo exagerar la capacidad técnica que se requirió para lograrlo, especialmente sin poder ver el código fuente. Una vez que estuvimos seguros de que era estable, implementamos su solución para todos nuestros clientes y vimos mejoras notables en la estabilidad y el tiempo de actividad. Una vez que llegó el parche 1.3.1, ya no lo necesitábamos porque los desarrolladores habían solucionado el problema (gracias en parte a VeroFess).

Si bien hubo mejoras significativas en el rendimiento del servidor y el uso de RAM, no se solucionó por completo. A medida que la gente jugaba en un servidor, el uso de RAM aumentaba y aumentaba, pero ¿por qué? Mayples fue quien descubrió lo que estaba pasando, todo gracias al error palsphere que mencioné anteriormente.

Mayples (parafraseado): Tuve un error como ese en CoDMW2 cuando instalamos un nuevo lanzagranadas. Lanzaría a los jugadores, no el proyectil. Fue porque no matamos el objeto, simplemente lo teletransportamos, y el impulso haría volar a los jugadores. El error palsphere es lo mismo. No matan el objeto; simplemente teletransportalo y el impulso te lanzará. Lo que me dijo que están haciendo una caja de destrucción en algún lugar como la nuestra. Cargan mazmorras debajo del mapa, si sales puedes ver el mapa completo, y donde apilan todo lo que espera ser asesinado. Los gráficos están apagados pero los objetos están ahí. Sin embargo, en realidad nunca se eliminan. Luego, el juego comienza a generar errores por cosas que aparecen en el mapa, y eventualmente genera un registro de errores masivo y falla.

Volviendo a la analogía de la pizarra. Cuando aparece un objeto como palesferas usadas o palos/piedras en el suelo, se dibujan en el tablero. Cuando “desaparecen”, no se borran, simplemente se ocultan. Finalmente, el servidor regresa y escribe “error” debajo, ocupando más espacio. Probablemente estés empezando a ver cómo los servidores Palworld consumen RAM como si fueran patatas fritas, ¿no es así?

Conclusión

Si bien todavía hay algunas cuestiones pendientes, en las últimas semanas se han visto grandes avances en la lucha contra el uso descontrolado de recursos de Palworld. Gracias a las correcciones de los desarrolladores y al increíble trabajo de nuestra comunidad, ¡hemos logrado que algunos servidores funcionen cómodamente durante más de 24 horas!

Un gran agradecimiento a Mayples por su descubrimiento sobre la fuga de Killbox y a VeroFess por su solución no oficial que nos dio un respiro muy necesario desde el principio. Todos estos conocimientos de rendimiento se han transmitido a los desarrolladores quienes (con suerte) tienen una actualización de estabilidad en proceso. Aparte de eso, han hecho un trabajo increíble solucionando otros errores de acceso temprano.

Aunque Palworld aún necesita madurar un poco antes de estar listo para independizarse, estamos encantados de haber realizado importantes mejoras en el servidor gracias a la ayuda de nuestros jugadores. Si quieres unirte a nuestra increíble comunidad y quizás incluso colaborar en su optimización, ¡únete a nuestro servidor Discord! También tenemos un 20 % de descuento de lanzamiento en Palworld servers si tú y tus amigos habéis estado esperando para empezar. ¡En cualquier caso, estoy deseando ver qué nos depara el futuro de Palworld!

¿Necesita un servidor Palworld?

Desde $7.99 $4.00/mes · configuración instantánea · Protección DDoS

¿Atascado en una misión? Solucionemos problemas juntos.

Solicite ayuda a nuestro gremio de soporte con la configuración de su servidor o consulte los archivos para encontrar soluciones a problemas técnicos comunes.

Leer preguntas frecuentes
Chatea con nosotros
Invocar soporte en vivo Enviar un despacho
Leer preguntas frecuentes Sube de nivel tu servidor