Documentación de Steamworks
Carga de datos en Steam

Introducción al sistema de contenido SteamPipe

SteamPipe es el sistema de contenidos para juegos o aplicaciones que usa Steam. SteamPipe incluye las siguientes características:
  • Aporte eficiente y rápido de contenidos.
  • Un número ilimitado de ramas "beta", públicas y privadas, permitiendo la prueba de múltiples compilaciones.
  • Gestión sencilla de compilaciones a través de la red: publica una nueva compilación o revierte la actual a una anterior solo con algunos clics.
  • Capacidad para consultar el tamaño actualizado de una compilación antes de activarla.
  • Capacidad de compartir contenido entre múltiples aplicaciones.
  • Capacidad para build installer discs desde contenido público o beta.
  • Los juegos o aplicaciones permanecen disponibles fuera de línea, incluso después de que se haya iniciado la descarga de una actualización.
  • Todo el contenido está siempre cifrado, y las versiones no activas no están visibles para los clientes.
  • Un Servidor de contenido local SteamPipe que puede usarse durante el desarrollo.
NOTA. Hay algunos conceptos que son parte integral de SteamPipe. Antes de comenzar, debes estar familiarizado con todos los conceptos descritos en la documentación Aplicaciones. Tener siquiera una comprensión básica de cómo encajan estas piezas será de gran utilidad cuando subas tu producto a Steam.

Tutorial en vídeo de Steamworks: cómo desarrollar tu juego en SteamPipe

Este tutorial presenta SteamPipe y los pasos para crear una aplicación de ejemplo para Steam a través de las herramientas de Steamworks..
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Tutorial en video de Steamworks: cómo añadir nuevas plataformas e idiomas

Este tutorial lo guía a través de como agregar nuevas plataformas e idiomas a tu juego al agregar repositorios a tu aplicación.
https://www.youtube.com/watch?v=PShS32hcing

Información técnica de SteamPipe

SteamPipe usa el protocolo HTTP para aportar sus contenidos. Dado que las descargas son tráfico de red ordinario, cualquier caché HTTP de terceros entre el cliente y los servidores de Steam aumentará la velocidad de descarga. El contenido puede estar hospedado por proveedores externos de CDN, que pueden añadirse fácilmente a nuestra red de contenidos. La mayoría de los firewalls para consumidores permiten el tráfico HTTP y no bloquean las descargas.

SteamPipe está dotado de un eficiente algoritmo de parcheado que se basa en deltas binarios, cambiando solo las partes modificadas de los archivos de contenido existentes. Cuando se actualiza este contenido, solo es necesario enviar esos deltas. Esto significa que las transferencias tanto del desarrollador como del usuario son más pequeñas y ágiles. La mayoría de los asociados encontrarán que no es necesario usar Servidor de contenido local SteamPipe ya que pueden parchear eficientemente las construcciones en ramas privadas.

Cuenta de compilación de Steam

Antes de poder crear cualquier compilación en Steam, debes tener una cuenta de Steam en tu cuenta de Steamworks con los permisos "Editar metadatos de la aplicación" y "Publicar cambios en la aplicación en Steam" activados. Por razones de seguridad, se recomienda que tengas una cuenta de compilación dedicada con solo esos permisos; puedes crear una nueva cuenta de Steam para tal propósito en https://store.steampowered.com/join.

Cualquier administrador de tu cuenta de Steamworks puede añadir una cuenta de Steam y otorgar los permisos necesarios. Puede encontrar más información sobre este proceso en la documentación de Administrar tu cuenta de Steamworks. Un ejemplo del aspecto que presentaría esta cuenta sería:

create_build_account.png

Configuración inicial de las aplicaciones nuevas de SteamPipe

Sigue estos pasos para configurar nuevas aplicaciones de SteamPipe:
  1. Encuentra el id. de tu aplicación (que puede encontrarse seleccionando la aplicación en tu página principal de Steamworks).
  2. Ve a la página Configuración general de la instalación para tu aplicación.
  3. Define al menos una opción de inicialización (la ruta y, opcionalmente, cualquier argumento requerido para inicializar el juego). Pasa el cursor sobre (?). Para obtener más información sobre cada campo.

    El siguiente ejemplo muestra 4 opciones de lanzamiento, 2 para Windows y 1 para macOS y Linux. La opción de inicio 3 solo se mostrará en Windows si el usuario también posee el DLC especificado.

    updatedlaunchoptions.png
  4. Ve a la página Repositorios y agrega repositorios según sea necesario para esta aplicación. De forma predeterminada, es posible que un repositorio ya esté configurado para tu aplicación.
    1. Haz clic en el repositorio predeterminado y cámbiale el nombre a una denominación adecuada y reconocible (como "Contenido básico" o "Contenido de Windows").
    2. Deja el idioma establecido como [All language] (Todos los idiomas), a menos que este sea un repositorio específico de idioma.
    3. Deja el SO establecido como [All OSes] (Todos los sistemas operativos), a menos que sea un repositorio específico de SO (si la aplicación es un todo en uno o si es solo para PC o solo para Mac, debería dejarse como [All OSes]). Especifícalo solo para repositorios de juegos específicos de sistemas operativos.
    4. Haz clic en Agregar nuevo repositorio para crear repositorios adicionales.
    5. Haz clic en Guardar cambios para guardar los cambios realizados.
  5. Una vez que hayas terminado de definir tus repositorios, publica los cambios que hayas realizado en la página Publish page.
  6. Los repositorios que acabas de definir deberán incluirse en un paquete para que adquieras su propiedad. Cada juego en Steam debe tener un paquete de desarrollador Comp que se concede automáticamente a las cuentas dentro de tu grupo editorial.
    Puedes agregar los nuevos repositorios a ese paquete (y/o otros paquetes que deben tener estos repositorios) en la página [url = https://partner.steamgames.com/apps/associated] paquetes asociados y DLC
  7. [/url].
Nota: si tu archivo ejecutable está en una subcarpeta de la carpeta de instalación principal, agrega el nombre de la subcarpeta en el campo Ejecutable. No utilices barras o puntos iniciales.

Configuración del SDK para subidas a SteamPipe

Descarga y descomprime la versión más reciente del SDK de Steamworks en el dispositivo al que vayas a subir compilaciones.

Las herramientas SteamPipe se pueden encontrar dentro del SDK en la carpeta tools que contiene 2 subdirectorios relevantes.

El directorio ContentBuilder es donde se alojarán el contenido de tu juego y las herramientas de compilación SteamPipe. El directorio contiene los siguientes subdirectorios:
  • builder: este directorio contiene, inicialmente, solo steamcmd.exe, que es la versión de línea de comandos de Steam.
  • builder_linux: la versión de Linux de steamcmd.
  • builder_osx: la versión macOS de steamcmd.
  • content: este directorio contiene todos los archivos del juego que se integrarán en los almacenes.
  • output: este directorio será la ubicación de los registros de compilación, el caché de fragmentos y la salida intermedia. NOTA: esta carpeta puede borrarse o vaciarse en cualquier momento, pero una vez que se borre, la siguiente carga de datos llevará más tiempo.
  • scripts: este directorio es donde se ubicarán todos tus scripts de compilación para desarrollar tus repositorios para el juego.
steampipebuilddir.png

Se recomienda ejecutar steamcmd.exe directamente en la carpeta de compilación para tu plataforma una vez para arrancar tu sistema de compilación. Esto deberá llenar tu directorio de compilación con todos los archivos que necesita para construir repositorios.

El directorio ContentServer contiene las herramientas para ejecutar tu propio Servidor de contenido local SteamPipe si decides hacerlo.

SteamCmd en macOS

Para habilitar SteamCmd en macOS debes completar los siguientes pasos:
  1. Desde el terminal, ve a la carpeta tools\ContentBuilder\builder_osx\osx32 folder
  2. Ejecuta chmod +x steamcmd
  3. Accede a la carpeta (tools\ContentBuilder\builder_osx)
  4. Introduce bash ./steamcmd.sh
  5. Se ejecutará entonces SteamCmd y se actualizará a la compilación más reciente, dejándote en el mensaje de SteamCmd
  6. Teclea exit y pulsa la tecla Intro para salir del mensaje
Después podrás seguir el resto de esta documentación (reemplazando las rutas según corresponda) para crear archivos de configuración de repositorios y aplicaciones para subir tu contenido a Steam.

Crear los archivos de configuración para la compilación en SteamPipe

Para subir tu aplicación con SteamPipe, debes crear scripts que describan tu compilación y cada repositorio que se incluirá en la misma. Hay scripts de ejemplo simples en la carpeta ContentBuilder\scripts para una aplicación con un repositorio.

NOTA: Puedes nombrar estos scripts como quieras, pero usamos los nombres app_build_<AppID> y depot_build_<AppID> por consistencia. Si sabes que vas a crear aplicaciones en esta máquina, tal vez sea buena idea crear subdirectorios en el directorio de scripts para cada aplicación, con el fin de ayudar a organizar los scripts de compilación de cada una.

Herramienta de SteamPipe

Si ejecutas en Windows y prefieres una herramienta gráfica que te ayude a crear estos archivos de configuración y cargar tus compilaciones, puedes usar SteamPipe GUI, que se encuentra en la carpeta de herramientas del SDK de Steamworks. El archivo. zip incluye instrucciones adicionales para ponerse en marcha.

Aunque decidas utilizar la herramienta gráfica, se recomienda leer las siguientes secciones para familiarizarte mejor con el funcionamiento del sistema SteamPipe.

Script de compilación de repositorio

Primero, crea un script de compilación de repositorio para cada repositorio que quieras cargar. Comienza por duplicar el script depot_build_1001.vdf y cambia el nombre con el id. de depósito que se va a cargar.

Ejemplo de script de compilación de repositorio:
"DepotBuildConfig" { // Establece el id. de depósito que este script cargará. "DepotID" "1001" // Establecer una raíz para todo el contenido. // Todas las rutas relativas especificadas a continuación (LocalPath en las entradas de FileMapping y FileExclusion) // se resolverá en relación con esta raíz. // Si no define ContentRoot, se asumirá que es // la ubicación de este archivo de script, que probablemente no sea lo que quiere "ContentRoot" "D:\MyGame\rel\master\" // Incluir todos los archivos de forma recursiva "FileMapping" { // Esto puede ser una ruta completa o una ruta relativa a ContentRoot "LocalPath" "*" // Esta es una ruta relativa a la carpeta de instalación de tu juego "DepotPath" "." // Si LocalPath contiene comodines, configurando esto significa que todos // los archivos coincidentes dentro de los subdirectorios de LocalPath también // se incluirá. "recursive" "1" } // Excluir todos los archivos de símbolos // Esto puede ser una ruta completa o una ruta relativa a ContentRoot "FileExclusion" "*.pdb" }

NOTA: Establecer un "ContentRoot" en el script de compilación de repositorio anula el "ContentRoot" del script de compilación de aplicación.

Script de compilación de aplicación

Tras establecer los scripts de compilación de repositorio, necesitas un script de compilación de aplicación que describa los detalles de la compilación. Comienza por duplicar el script app_build_1000.vdf y cambia el nombre con el id. de la aplicación que se va a cargar.

SteamPipe admite los siguientes tipos de compilación:
  • Vista previa: este tipo de compilación solo produce registros y un manifiesto de archivos. Crear compilaciones de vista previa es un buen modo de iterar en los scripts de carga.
  • Local: se compila para el Servidor de contenido local SteamPipe. Las compilaciones LCS se cargan a tu propio LCS y te permiten probar la instalación del juego empleando el cliente de Steam.
  • SteamPipe: las compilaciones de SteamPipe resultan en que los repositorios se cargan en Steam. Esto siempre resulta seguro, incluso en el caso de juegos ya publicados, ya que es necesario configurarlo como público antes de que los clientes puedan descargarlo.

Ejemplo de script de compilación de aplicación:
"appbuild" { // Establecer el ID de la aplicación que este script cargará. "appid" "1000" // La descripción de esta compilación. // La descripción solo es visible en la sección 'Sus compilaciones' del panel de administración de la aplicación. // Esto se puede cambiar en cualquier momento después de cargar una compilación en la página 'Tus compilaciones'. "desc" "La descripción de tu compilación aquí" // Habilitar/deshabilitar si se trata de una compilación de vista previa. // Se recomienda encarecidamente que utilices compilaciones de vista previa mientras realizas la configuración inicial de SteamPipe en // asegúrate de que el manifiesto del repositorio contenga los archivos correctos. "vista previa" "1" // Ruta del archivo del servidor de contenido local si está habilitado. "local" "" // El nombre de la rama se establece automáticamente en vivo después de una compilación exitosa, ninguno si está vacío. // Ten en cuenta que la rama 'predeterminada' no se puede configurar en vivo automáticamente. Eso debe hacerse a través del panel de administración de la aplicación. "setlive" "" // Las siguientes rutas pueden ser absolutas o relativas a la ubicación del script. // Este directorio será la ubicación de los registros de compilación, la caché de fragmentos y la salida intermedia. // La memoria caché almacenada dentro de esto hace que las futuras cargas de SteamPipe se completen más rápido usando diffing. "buildoutput" "..\output\" // La raíz de la carpeta de contenido. "contentroot" "..\content\" // La lista de almacenes incluidos en esta compilación. "depots" { "1001" "depot_build_1001.vdf" } }

Compilación de repositorios

Para comenzar una compilación, edita el archivo run_build.bat para incluir tu cuenta y tu contraseña de compilación de Steamworks (véase descrito anteriormente), así como la ruta al script de compilación de aplicaciones:
builder\steamcmd.exe +login "account" "password" +run_app_build ..\scripts\[build_script_name].vdf +quit

NOTA: El primer intento de ejecutar una compilación puede fallar debido a Steam Guard. Si el inicio de sesión falla debido a Steam Guard, revisa tu correo electrónico para obtener el código de Steam Guard, y ejecutar steamcmd como: steamcmd.exe "set_steam_guard_code <code>" e intentalo nuevamente. Después de iniciar sesión una vez con Steam Guard, se utiliza un archivo centinela para verificar que el inicio de sesión sea genuino.

Si estás utilizando steamcmd desde una máquina o máquina virtual que recrea con frecuencia, debes incluir el archivo centinela en tu imagen para que no se te solicite un Steam Guard todo el rato. El archivo centinela se encuentra en <Steam>\ssfn<hashOfNumbers>.

Después de ejecutar run_build.bat, el resultado de la compilación debería estar en el directorio especificado en el archivo de script de compilación. Si la compilación de vista previa produce el manifiesto esperado, ejecútala de nuevo con vista "previa" "0" en el script de compilación de aplicación.

Los siguientes pasos se producen durante una compilación de SteamPipe:
  1. Steamcmd.exe inicia sesión en el backend de Steam empleando la cuenta del compilador de Steam dada.
  2. El comienzo de la compilación de la aplicación se registra en el MDS (Servidor repositorio maestro), que se asegurará de que el usuario tenga los privilegios adecuados para modificar esta aplicación.
  3. Por cada repositorio incluido en la compilación de la aplicación, se genera un archivo basado en los archivos de la carpeta de contenido y las reglas de filtrado definidas en el archivo de configuración de compilación de repositorio.
  4. Cada archivo se escanea y se divide en pequeños segmentos de 1 MB, aproximadamente. Si el repositorio se ha construido antes, esta partición preserva tantos segmentos no cambiados como sea posible.
  5. Los nuevos segmentos de archivo se comprimen, se cifran y se cargan al MDS.
  6. Se genera un manifiesto final para esta versión del repositorio; cada manifiesto se identifica mediante un id. exclusivo de 64 bits.
  7. Una vez que todos los depósitos se han procesado, el MDS termina esta compilación de la aplicación y la asigna a un buildID global.
  8. Una vez concluida la compilación, en la carpeta de salida de esta compilación pueden aparecer archivos *.csm y *.csd. Son temporales y pueden eliminarse, aunque sirven para acelerar posteriores compilaciones.

Gestión de actualizaciones

Una vez que tu aplicación se lanza al público, los clientes reciben la compilación marcada como predeterminada. Al cargar una nueva compilación, siempre es buena idea probarla antes de enviársela a los clientes. Para obtener más información sobre cómo hacerlo correctamente, consulta Testeo en Steam.

Reglas avanzadas de asignación de archivos

Puede haber múltiples asignaciones de archivo que añadan archivos al repositorio. Deben ser listados primero.
Los archivos o subcarpetas se pueden excluir con expresiones de filtro.
Los scripts de instalación de Steam se pueden marcar durante el proceso de compilación para que el cliente de Steam sepa que debes ejecutarlos en cualquier aplicación que monte el Repositorio.
Los archivos o carpetas se pueden volver a asignar, por lo que las subcarpetas de la carpeta de contenido se pueden asignar a cualquier lugar del repositorio.
Los archivos pueden ser etiquetados con banderas especiales:
  • userconfig: este archivo ha sido modificado por el usuario o el juego. No lo puede anular una actualización y no activa un error de verificación si difiere de las versiones previas del archivo.
  • readonly: este archivo se marcará como de solo lectura para el sistema de archivos del cliente.
  • hidden: este archivo se marcará como oculto para el sistema de archivos del cliente.
  • executable: este es un archivo ejecutable (solo para OS X).
    "DepotBuildConfig" { "DepotID" "202931" "FileMapping" { // anular archivos de video en \\vídeos con versiones alemanas "LocalPath" "localization\\alemán\\vídeos\\*" "DepotPath" "videos\\" } "FileMapping" { // anular los archivos de audio en \\audio con versiones alemanas "LocalPath" "localization\\alemán\\audio\\*" "DepotPath" "audio\\" } "FileMapping" { "LocalPath" "localization\\german\\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\\server.exe" // exclude this file "FileExclusion" "*.pdb" // exclude all .PDB files everywhere "FileExclusion" "maps\\testroom*" // exclude all files under maps/testroom/ "InstallScript" "localization\\german\\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\\setup.cfg" "Attributes" "userconfig" // this file will be modified during runtime } }

Depuración de problemas de compilación

Si la compilación no se completó correctamente, comprueba si hay información del error en el directorio de salida, no en la consola donde se ejecutó el script de compilación. La mayoría de la información de errores se puede encontrar en los archivos *.log files.
Puede usar estos comandos de cliente de Steam y archivos del lado del cliente para depurar problemas:
  • "app_status [appid]": muestra el estado actual de la aplicación en este cliente.
  • "app_info_print [appid]": muestra la configuración actual de Steamworks para este juego (repositorios, opciones de lanzamiento, etc.).
  • "app_config_print [appid]": muestra la configuración de usuario actual para este juego (idioma actual, directorio de instalación, etc.).
  • file "logs\content_log.txt": enumera todas las operaciones y errores registrados de Oxcart.
  • file "steamapps\appmanifest_[appid].acf": muestra el estado de instalación actual de esta aplicación (KeyValues).

Compilación de repositorios eficientes para SteamPipe

El antiguo sistema de contenido de Steam aplicaba instalaciones en el nivel de archivo, lo que suponía que, si un solo byte de un archivo había cambiado, todos los usuarios debían descargar el nuevo archivo completo. Esto resultaba especialmente ineficiente si el juego empleaba archivos empaquetados, que son colecciones de archivos con contenido del juego en un solo archivo de gran tamaño. Los archivos empaquetados pueden exceder fácilmente el tamaño de 1 GB, por lo que las actualizaciones llevaban con frecuencia a descargas innecesariamente grandes. Una manera común de evitar estas grandes descargas era añadir nuevos archivos empaquetados que anularan contenido de archivos empaquetados ya enviados. Esto funcionaba para las actualizaciones, pero perjudicaba a los nuevos usuarios a largo plazo, pues terminaban descargando contenido que no se había usado y que ya estaba actualizado.

El nuevo sistema de contenido resuelve el problema dividiendo cada archivo en segmentos de 1 MB, aproximadamente. Cada trozo se comprime y cifra antes de que el sistema de contenido de Steam lo distribuya. Si el contenido de juego tiene grandes secciones redundantes, estos segmentos se reutilizan y el usuario solo debe descargar una vez cada segmento repetido. Sin embargo, el verdadero punto fuerte de este sistema es la posibilidad de crear parches de actualización eficientes. Cuando el sistema crea un parche, se escanea el nuevo contenido en busca de segmentos ya conocidos. Si los encuentra, los reutiliza. Esto significa que, si se cambian o inyectan unos pocos bytes en un archivo grande, el usuario solo tiene que descargar los cambios.

Esto funciona bien en la mayoría de los casos, aunque quedan algunos problemas por evitar al diseñar la distribución de contenido del juego. No comprimas o cifres los datos del juego. El sistema de contenido de Steam ya lo hace para las descargas y los discos comerciales. Si lo haces tú también, se reduce la efectividad de la aplicación diferencial de parches. Si combinas varios archivos de datos en un solo archivo empaquetado, asegúrate de no incluir cambios innecesarios en cada reempaquetado. Una práctica problemática es incluir el nombre completo de los archivos fuente originales en el disco, ya que los nombres pueden cambiar en función de la máquina de compilación. Otra mala costumbre es incluir marcas de tiempo de compilación para cada archivo. Si es posible, siempre debe añadirse nuevo contenido al final de los archivos empaquetados y mantenerse el orden de los archivos existentes. También se deben mantener los metadatos del archivo empaquetado (el desplazamiento y el tamaño de cada archivo individual) en un mismo sitio, y no entremezclarlos con archivos de contenido. Utiliza una herramienta de comparación de binarios como BeyondCompare para examinar dos compilaciones de tus archivos empaquetados y comprobar que no aparezcan centenares de cambios no deseados.

Siguiendo estas reglas se minimiza el tamaño de los parches y solo es necesario descargar el nuevo contenido. Los clientes te lo agradecerán y podrás aumentar la calidad de tus productos produciendo más actualizaciones.

Compilación de discos de instalación comerciales

Para crear un disco de instalación minorista para juegos SteamPipe, primero debes configurar un archivo de proyecto de compilación.
En este ejemplo, el archivo SKU se llama "sku_goldmaster.txt":.
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Algunos consejos a tener en cuenta:
  • Crea una nueva carpeta en la que se escribirán las imágenes del disco comercial, p. ej., "D:\retail_disks". Solo se añaden repositorios en las secciones included_depots; ya no existe una sección de exclusión.
  • Puedes utilizar Steam.exe (con los parámetros de línea de comandos -dev y -console) o steamcmd.exe para compilar imágenes de instalación. En ambos casos, usa el comando "build_installer".
  • Inicia sesión con una cuenta de Steam con la que se haya comprado el juego y todos los repositorios que quieres poner en el disco comercial. Por lo demás, la cuenta no precisa de derechos especiales, por lo que cualquiera puede compilar discos de instalación.
  • Si utilizas Steam.exe, detén el resto de las descargas.
  • Ve a la página de la consola y ejecuta el comando build_installer:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    La compilación puede llevar un tiempo porque todos los repositorios vuelven a descargarse la primera vez.
  • Si estás creando un GM utilizando un servidor de contenido local, ejecuta:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    El spew se refiere a 'Copia de seguridad', ya que 'Copia de instalación minorista' y las copias de seguridad del juego local son básicamente las mismas.
  • Cuando veas "Copia de seguridad terminada para AppId...", las imágenes de disco de instalación están listas. Puedes encontrar más detalles sobre la creación de la copia de seguridad en logs\backup_log.txt.
  • Hay nuevas carpetas (Disk_1, Disk_2, etc.) en "D:\retail_disks", cada una no es mayor que 640 MB, como se especifica con "disk_size_mb". Cada carpeta de disco contiene un archivo "sku.sis" y un archivo .csd y .csm por cada repositorio. Los repositorios más grandes se reparten por varios discos. Todo el contenido de los discos de instalación comerciales se cifra siempre (al contrario que los archivos de copia de seguridad locales del juego). Copia los archivos de configuración SDK GM (setup.exe, setup.ini, etc.) en la carpeta de tu primer disco y el instalador de disco comercial queda completado.
  • Al crear un GM para OS X, asegúrate de abrir la imagen goldmaster/disk_assets/SteamRetailInstaller.dmg en un Mac. A continuación, toma la aplicación que contiene y cópiala en la raíz de tu soporte. Probablemente, quieras cambiar el nombre de la aplicación de instalación, marcar el icono y decorar la ventana para que solo muestre el instalador.
  • Al crear GM multidisco para OS X, asegúrate de que el nombre del volumen de cada disco coincida. El nombre del volumen se convierte en parte de la ruta de montaje y, si los nombres no coinciden, el instalador no podrá encontrar el disco siguiente.

Creación opcional de un instalador comercial a partir de una rama beta

El proceso anterior crea un instalador comercial basado en la rama predeterminada. Si necesitas crear un instalador basado en una rama beta, primero debes crear una rama beta llamada "baseline". A continuación, utiliza el comando siguiente para compilar desde la rama baseline:
build_installer <project file> <target folder> <beta key> <beta pwd> steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit

Instalación de DLC desde un instalador comercial

En algunas circunstancias, puedes querer crear un instalador comercial que incluya tus paquetes DLC. En tales casos, el proceso para crear el instalador requiere solo unos pocos cambios.
En "sku_goldmaster.txt", incluya los id. de aplicación de DLC en la sección "included_depots". Una vez que haya ejecutado el proceso"build_installer", encuentra el archivo sku.sis generado para el instalador y ábrelo con un editor de texto.
Agregue el DID AppID en la sección "aplicaciones". Por ejemplo, si tengo un juego con AppId 1000 y AppId de DLC 1010, ajustaría la sección "aplicaciones" del modo siguiente:
"apps" { "0" "1000" "1" "1010" }
Esto garantiza que Steam compruebe la propiedad del DLC y solicita al usuario una clave si el DLC no es propiedad de la cuenta con la que inicia sesión en Steam.

Compilación de un instalador comercial para varios id. de aplicación en un solo disco o paquete de instalación

Para compilar un GM que contenga varias aplicaciones de SteamPipe. Compila, uno por uno, cada instalador de aplicación, pero dirígelos todos a la misma carpeta de salida. Cada compilación se combinará con la imagen de instalación ya existente.

Personalización de un disco de instalación comercial

Consulta Personalización de un Gold Master para obtener información sobre la personalización de tu disco de instalación comercial.

Juegos de precarga antes del lanzamiento

De forma predeterminada, todo el contenido se cifra siempre, tanto en los discos comerciales como en los servidores de contenido. Cambiar un juego al modo de precarga significa que los propietarios pueden descargar el contenido, pero permanece encriptado en el disco del usuario y no se puede jugar. Una vez que el juego se lance oficialmente, Steam descifra el contenido precargado y el usuario puede jugar el juego.

Se recomienda pasar un juego al modo de precarga en estos casos:
  • Se envían discos comerciales con claves de producto antes de que el juego esté disponible (piratería del día cero).
  • Los juegos que ejecutan una pre-compra y son más grandes que 20 GB de tamaño.

Envía un ticket a Steam Publishing si crees que tu juego requiere una precarga.

Compilación de DLC

Los DLC se compilan como un repositorio del juego base. Por favor, consulta la documentación de Contenido descargable (DLC) para obtener más información.

Solución de problemas de SteamPipe

"Error de inicio de sesión: el inicio de sesión de cuenta ha sido denegado" al iniciar sesión a través de steamcmd

Razón: Probablemente Steam Guard esté impidiendo el inicio de sesión. Resolución:
  • Comprueba el correo electrónico asociado a la cuenta con la que intentas iniciar sesión y comprueba si hay un mensaje del Soporte de Steam. Copia el código que aparezca en él.
  • Ejecuta el siguiente steamcmd: set_steam_guard_code <code>
  • Vuelve a intentar iniciar sesión desde steamcmd: Steam>logon <buildaccount> <password>

Resolución de problemas generales de descarga

  • Reinicia el ordenador, módem, enrutador, etc.
  • Verifica la configuración del firewall. Para obtener una lista de los puertos necesarios de Steam, dirígete aquí.
  • Deshabilita temporalmente los programas antivirus o anti correo no deseado instalados en tu equipo.
  • Verifica la región de descarga de Steam en Configuración y Descargas. Debe corresponder con tu ubicación.
  • Detén la descarga, desinstala el juego y vuelve a instalarlo (tras limpiar las cachés de manifiesto).
  • Sal de Steam y borra las carpetas appcache y depotcache en la carpeta de instalación de Steam.
  • Intenta seleccionar una región distinta y lejana como región de descarga de Steam. Puede que esto funcione si un servidor de contenidos próximo a ti está transmitiendo datos erróneos.

Mis compilaciones de Mac o Linux no instalan archivos. ¿Por qué?

Si estás probando, a través de Steam, la instalación de tu juego o aplicación en múltiples plataformas, puede que te encuentres con una situación en la que se instala en Windows pero no en Mac o Linux, a pesar de que el proceso SteamPipe está configurado para subir repositorios de Mac o Linux. Hay un paso que muchas veces se olvida y que consiste en añadir los repositorios alternativos al paquete que se está instalando. Sigue estos pasos para comprobar qué repositorios incluye un paquete:
  1. Navega a tu página App Admin.
  2. En la sección Ver artículos asociados, haz clic en Ver Todos los paquetes asociados, contenido descargable, demos y herramientas.
  3. Haz clic en el título del paquete que quieres descargar.
  4. Revisa la sección Depot Included.
  5. Usa Agregar/Eliminar depósitos para asegurarse de que el conjunto correcto de depósitos esté asignado al paquete.
Hay una serie de hilos de discusión sobre esto que pueden serte de ayuda:

La ejecución de steamcmd.exe produce el siguiente error: "SteamUpdater: Error: Steam necesita estar en línea para actualizar. Confirma tu conexión de red e inténtalo de nuevo."

Resolución: Ve a Opciones de Internet->Conexiones->Configuraciones de Lan y marca Detectar automáticamente configuraciones.

Al ejecutar la aplicación, se produce el siguiente error: "¡ERROR! Ha fallado "DepotBuild for scriptname.vdf". Estado = 6."

Posibles causas:
  • La cuenta no tiene los permisos requeridos por la aplicación.
    • Asegúrate de que el id. de aplicación es correcto en app_build.vdf.
    • Verifica que la cuenta de compilación tenga proper permissions para el id. de la aplicación.
  • Steamcmd no puede encontrar los contenidos del repositorio.
    • Asegúrate de que el valor de "contentroot" en el script es una ruta de acceso válida en relación con la ubicación del archivo de script.
    • Asegúrate de que el valor de "LocalPath" en el script depot_build es una ruta válida en relación con la ruta del script. Asegúrate de que la ruta incluye contenido.

Al ejecutar la aplicación, se produce el siguiente error: "¡ERROR! No se ha obtenido la información de la aplicación NNNNN (comprobar inicio de sesión y suscripción)".

Esto quiere decir que Steam no puede recuperar la información sobre la aplicación, bien porque no existe o bien porque el usuario no tiene acceso a la aplicación.
  • Asegúrate de que NNNNN es el id. de aplicación que se te asignó para la aplicación.
  • Asegúrate de que el id. de aplicación es correcto en app_build.vdf.
  • Si se trata de un nuevo id. de aplicación, asegúrate de que se ha publicado la configuración del administrador de aplicaciones de Steamworks. Las nuevas aplicaciones deben tener un directorio de instalación de SteamPipe en la pestaña de configuración, un repositorio en la pestaña correspondiente y todos los cambios publicados en la pestaña de publicación.
  • Si todo esto parece estar bien, asegúrate de que tu cuenta tiene el id. de aplicación.

"Se ha producido un error al instalar [AppName] (configuración de contenido no válida)" en el momento del lanzamiento.

Posibles causas:
  • No se ha establecido ninguna compilación en vivo en la rama desde la que intentas instalar.
    Resolución: configura tu compilación en vivo en una rama yendo a https://partner.steamgames.com/apps/builds/<YourGameAppId> y selecciona esa rama en el cliente Steam (como se describe aquí).
  • Opciones de lanzamiento de juego no válidas.
    Resolución: verifica las opciones de inicio en la pestaña Configuración en el administrador de la aplicación para tu juego https://partner.steamgames.com/apps/config/<YourGameAppId>.
  • No tienes los id. de repositorio que componen el juego.
    Resolución: asegúrate de que se agreguen los repositos necesarios a la suscripción de desarrollo (consulta Edición de paquetes para obtener detalles adicionales).

"Código de error 15" en el momento del lanzamiento

En este caso, los servidores CEG rechazan la solicitud de CEG para el archivo .exe. Comprueba el estado de lanzamiento en la página del juego. Si no es "jugable", tendrás que solicitar claves de Steam que permitan anular el estado de lanzamiento.

"Los servidores de Steam están demasiado ocupados para atender tu petición... Código de error 2" en el momento del lanzamiento

En este caso, los servidores CEG no consiguen encontrar el ejecutable CEG que necesitan. Verifica que tengas un archivo ejecutable CEG en la pestaña CEG del administrador de su aplicación. Haz clic en el botón "estado" para asegurarse de que está apoyado.

No recuerdo qué era ese comando de steamcmd ni cómo funcionaba.

Usa el comando "Buscar" en steamcmd para buscar cualquier comando. Buscará la correspondencia parcial con el nombre del comando y mostrará su sintaxis.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>