Skip to main content

Ejecución de un script personalizado durante la creación de la VM: VmStartupScript (versión preliminar)

Introducción

Esta característica está en versión preliminar. Le invitamos a empezar a usarla hoy mismo y darnos su opinión. Las instrucciones sobre cómo ponerse en contacto con nosotros se proporcionan al final del artículo. Tenga en cuenta que el soporte técnico es limitado durante la versión preliminar.
VmStartupScript le permite ejecutar un script personalizado en las máquinas virtuales (VM) que se usan en PlayFab Multiplayer Servers (MPS). MPS está optimizado para el hospedaje de servidores de juego, lo que facilita que su título se escale dinámicamente según la demanda. Para facilitar la personalización rápida de un gran número de servidores durante la inicialización de la VM, el script personalizado puede ejecutarse en cada VM subyacente que hospede sus servidores de juego. Se puede usar para realizar tareas como instalar software personalizado, modificar la configuración de seguridad, usar un servicio personalizado para registrar la salida y las métricas de los servidores de juego, y más.
Esta es una característica avanzada que debe usarse con extrema precaución. El script en ejecución se ejecuta en el nivel de la máquina virtual (VM) con privilegios de administrador (root). Si no se usa correctamente, puede interrumpir potencialmente el flujo normal de los servidores de juego en ejecución, o incluso impedir que se ejecuten por completo. El usuario final es responsable del contenido del script.

Cómo usar VmStartupScript

Para usar la característica VmStartupScript, debe proporcionar un script personalizado y todo el software pertinente (opcional) que planee instalar. El script comienza a ejecutarse cuando se inicializa la máquina virtual. Esta operación se produce antes de que los servidores de juego se inicien en cada VM. Después de que el script haya terminado de ejecutarse correctamente, el servicio MPS continúa completando la inicialización de los servidores de juego y los lleva al estado StandingBy. Para obtener más información sobre los distintos estados de un servidor de juego, consulte Ciclo de vida de un servidor multijugador. Para usar esta característica en un entorno de producción real, consulte Flujo de trabajo de desarrollo recomendado antes de empezar.

Creación de un script

  • Cree un archivo llamado PF_StartupScript.sh para las VM de Linux o PF_StartupScript.ps1 para las VM de Windows.
  • Agregue comandos de configuración y ejecución en el archivo. Si los necesita, aquí tiene algunas variables de entorno de uso común que puede usar en el script. Algunas acciones no se admiten o harían que las VM no se iniciaran correctamente, lo que generaría cargos no deseados. Para obtener más información, consulte la sección Qué no se admite.
Para ver ejemplos de scripts, consulte VmStartupScriptGallery.

Creación y carga del archivo comprimido

  1. Reúna en una carpeta todo el software pertinente que su script vaya a usar o llamar. Si su script instala software de terceros, el script puede descargarlo durante la ejecución, o el software puede incluirse en el archivo comprimido. Omita este paso si no va a instalar nada.
  2. Cree un archivo comprimido (.zip) con el script (.sh o .ps1) que creó en la sección anterior y el software que reunió en el paso anterior, si es necesario. El archivo de script debe estar en la raíz del archivo comprimido y no dentro de un directorio. Además, si su archivo de script no se llama PF_StartupScript.sh (Linux) o PF_StartupScript.ps1 (Windows), no se ejecutará y los servidores de juego no se iniciarán.
  3. Cargue el archivo comprimido con uno de los métodos siguientes:
Le recomendamos incluir en el archivo comprimido todos los binarios y recursos que necesite su script, ya que esto se traducirá en una ejecución más rápida y en menos tiempo para que MPS entregue sus servidores de juego. Asegúrese de incluir los recursos para la plataforma en la que se ejecutarán sus servidores de juego. Por ejemplo, si usa servidores Linux, debe incluir paquetes Debian/Ubuntu “amd64”.

Aplicación del script personalizado a las compilaciones nuevas

Después de cargar el archivo .zip, use la API de MPS para crear una nueva compilación tras configurar la propiedad VmStartupScriptAssetReference. Para obtener instrucciones, consulte Cómo crear compilaciones con la API de MPS.
  • Agregue la propiedad VmStartupScriptConfiguration.VmStartupScriptAssetReference, que incluye una referencia al archivo de recursos cargado. Esta propiedad forma parte de todas las API relacionadas con “CreateBuild”, como CreateBuildWithCustomContainer, CreateBuildWithManagedContainer y CreateBuildWithProcessBasedServer.
  • Agregue un valor válido para la propiedad VmStartupScriptAssetReference.FileName. Este valor debe ser el mismo que el nombre de su archivo de recursos, por ejemplo vmstartupscriptassets.zip.
  • La propiedad VmStartupScriptAssetReference.MountPath debe estar vacía, ya que no se admite para la característica VmStartupScript.
Si establece un valor para la propiedad MountPath, la operación de creación de la compilación producirá un error.
El ejemplo de código siguiente crea una compilación con contenedores de Linux y, a continuación, usa el script de vmstartupscriptassets.zip para personalizar las VM:
El VmStartupScript se ejecuta durante la fase de “Propping” de la VM y debe terminar correctamente para que se inicien los servidores de juego. Si falla (código de salida distinto de 0), la VM no pasará al estado “Running” y deberá conectarse por RDP/SSH a la VM para depurar. Para obtener más información, consulte Flujo de trabajo de desarrollo recomendado. La VM seguirá reintentando la ejecución del VmStartupScript.

Consideraciones especiales

En Linux, ¿es necesario marcar el archivo PF_StartupScript.sh como ejecutable?

Antes de que MPS ejecute el archivo de script, lo marca como ejecutable y, a continuación, convierte los finales de línea de Windows (“\r\n”) a los de Linux (“\n”). Por tanto, no necesita preocuparse por estas dos cosas.

Variables de entorno

Estas son las variables de entorno que puede usar en su script de inicio.

Qué no se admite

No debe realizar estas acciones desde su script, ya que hay una alta probabilidad de interrumpir el ciclo de vida de la VM y de los servidores de juego:
  • No se bloquee durante la ejecución del script de inicio. El script debe terminar correctamente para que se creen los servidores de juego. Si necesita que algo se ejecute en segundo plano, puede instalarlo como un servicio systemd en Linux o como un servicio de Windows.
  • No use puertos a partir del número 30000, ya que se usan para los servidores de juego, ni el puerto 56001, ya que lo usa el proceso VmAgent (el ejecutable orquestador de servidores de juego de MPS).
  • No modifique ninguno de los archivos de las rutas D: (Windows) o /mnt (Linux), ya que estos archivos son necesarios para el funcionamiento de VmAgent (aparte de las carpetas que contienen contenido editable, como PF_SHARED_CONTENT_FOLDER_VM).
  • No debe usar el GSDK desde el VmStartupScript ni desde una aplicación iniciada por él. El GSDK solo debe usarse desde los servidores de juego.
  • No debe reiniciar manualmente la máquina virtual, ya que esta operación creará problemas en la comunicación con el plano de control de MPS.

Puertos

Cuando usa la característica VmStartupScript, es posible solicitar que se expongan varios puertos en cada VM. Estos puertos pueden ser usados por cualquier programa iniciado por su script y son distintos de los puertos que MPS abre para sus servidores de juego.

Uso

Puede solicitar hasta cinco puertos por cada VM. Para cada puerto, debe especificar el protocolo (TCP o UDP) y un nombre. Este es un ejemplo de cómo solicitar dos puertos:
Siempre que solicite puertos, las siguientes variables de entorno estarán disponibles para su script para ayudarle a obtener información sobre los puertos: Por ejemplo, para los dos puertos solicitados en el script de ejemplo anterior, debería encontrar estas variables de entorno en su VmStartupScript:
De forma similar a los puertos que abrimos para los servidores de juego, es su responsabilidad autenticar a los clientes que se conecten a sus puertos. MPS no proporciona ningún mecanismo de autenticación para estos puertos.
Los clientes verán que los puertos asignados comienzan a partir del número 20000. Sin embargo, le recomendamos que no codifique de forma rígida este valor en sus scripts, ya que podría cambiar en el futuro, y que use siempre las variables de entorno para obtener la información correcta de los puertos.

Desarrollo/depuración

Antes de usar la característica VmStartupScript, le recomendamos que consulte estos scripts de ejemplo en nuestro repositorio de código abierto en GitHub (VmStartupScriptGallery). ¡Las contribuciones son bienvenidas!

Flujo de trabajo de desarrollo recomendado

Inicialmente, debe crear una compilación de prueba con una sola VM. Esta VM debe tener especificaciones similares a la que planea usar para implementar su compilación de producción. Cuando esta única VM esté implementada, puede conectarse por RDP/SSH, copiar los archivos necesarios y probar a editar/ejecutar el script hasta que se ejecute correctamente. Una vez que esta VM esté en funcionamiento y compruebe que su script se comporta según lo esperado, puede colocar el script y los recursos en un archivo .zip. Después, puede cargarlo y probar a crear una compilación con él. Intente crear de nuevo una compilación de una sola VM para ahorrar costes y escale verticalmente cuando esté seguro de que su script funciona. Si encuentra problemas al ejecutar su script, puede depurar iniciando sesión en la VM mediante RDP/SSH y comprobar los archivos PF_StartupScriptStdOut.txt y PF_StartupScriptStdErr.txt para ver las secuencias de salida estándar y de error estándar del script, respectivamente. Estos archivos se encuentran en la unidad D: en Windows o en /mnt en Linux. El script debe ser idempotente, ya que existe la posibilidad de que se ejecute más de una vez. Por ejemplo, si el script intenta descargar un recurso externo y falla debido a un problema de red, MPS reintenta la ejecución completa del script.

Soporte técnico

El servicio MPS ejecutará lo que tenga en su VmStartupScript. Sin embargo, el equipo no proporcionará soporte para las acciones y los ejecutables individuales que se instalen o ejecuten como parte del script. Durante la versión preliminar, obtenga soporte y envíe comentarios mediante los foros de la comunidad de PlayFab y Discord. Si tiene problemas con algún script del repositorio VmStartupScriptGallery o desea solicitar uno nuevo, use abrir una incidencia en GitHub.
Última modificación el 28 de agosto de 2026