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 - This directory initially contains just steamcmd.exe which is the command line version of Steam.
  • builder_linux - The linux version of steamcmd.
  • builder_osx - The macOS version of 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 on macOS

To enable SteamCmd on macOS you must complete the following steps:
  1. From the terminal, browse to the tools\ContentBuilder\builder_osx\osx32 folder
  2. Ejecuta chmod +x steamcmd
  3. Browse up to the parent folder (tools\ContentBuilder\builder_osx)
  4. Introduce bash ./steamcmd.sh
  5. SteamCmd will then run and update to the latest build, leaving you in the SteamCmd prompt
  6. Type exit and press return to exit the prompt
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. That must be done through the App Admin panel. "setlive" "" // The following paths can be absolute or relative to location of the script. // This directory will be the location for build logs, chunk cache, and intermediate output. // The cache stored within this causes future SteamPipe uploads to complete quicker by using diffing. // // NOTE: for best performance, use a separate disk for your build output. This splits the disk IO workload, letting your content root // disk handle the read requests and your output disk handle the write requests. "buildoutput" "e:\build_logs\output\" // The root of the content folder. "contentroot" "..\content\" // The list of depots included in this build. "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. If the logon fails due to Steam Guard, check your email for the Steam Guard code, and run steamcmd as: steamcmd.exe "set_steam_guard_code <code>", and try again. 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.

If you are using steamcmd from a machine or VM that gets re-imaged frequently, you should include the sentry and config file in your image so you won't be prompted for a Steam Guard every time. El archivo centinela se encuentra en <Steam>\ssfn<hash numérico>, y el de configuración, en <Steam>\config\config.vdf.

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.
  • versionedconfig - Parecido a userconfig, sin embargo, si el archivo se actualiza en el repositorio, se sobrescribirá localmente cuando se actualice el juego del usuario. Actualiza solo el archivo en el repositorio cuando haya un cambio de formato necesario o corrección de errores.
    "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. You may not want to compress or encrypt your game data. This is already done for in-flight downloads and retail discs by the Steam content system. If you do it too, it can reduce the effectiveness of delta patching. Compression and encryption are only advised if each individual asset within a package file is separately compressed and/or encrypted. Otherwise, a change to one asset will always require downloading several other potentially unchanged assets.

If you package multiple assets in a single pack file, make sure that with each re-packaging, no unnecessary changes are made. One problematic practice is including the full name of the original source files on disk, because the names may change, depending on the build machine. Another bad pattern is including build time stamps for each file. If possible, always add new content to the end of your pack files and keep the order of existing files. Also, keep your pack file’s metadata (offset and sizes to individual assets) in one place and don’t intersperse it with the asset data. Use a binary difference tool like BeyondCompare to look at two builds of your pack files to make sure that hundreds of unwanted changes don’t show up.

If you follow these rules you will minimize patch sizes and only new content will need to be downloaded. Your customers will thank you for that and you will be able to increase the quality of your product by shipping more updates.

If you suspect that your game packaging is not interacting well with the SteamPipe update process, please contact your Valve representative and we can look into enabling advanced features to help with this.

Compilación de discos de instalación comerciales

To build retail install disc for SteamPipe games, you must first setup a build project file.
In this example, the SKU file is called "sku_goldmaster.txt":
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Some tips to keep in mind:
  • 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

The process above will create a retail installer based on the default branch. If you need to create an installer based on a beta branch, you must first create a beta branch named "baseline". Then use the following command to build from the baseline branch:
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

In some circumstances, you may wish to create a retail installer that includes your DLC packages. In such cases, the process to create the installer requires only a few changes.
In "sku_goldmaster.txt", include the DLC AppIDs under the "included_depots" section. Once you have run the "build_installer" process, find the generated sku.sis file for the installer and open it with a text editor.
Add the DLC AppID in the "apps" section. For example, if I had a game with AppID 1000 and DLC AppID 1010, I would adjust the "apps" section as follows:
"apps" { "0" "1000" "1" "1010" }
This will ensure that Steam checks for ownership of the DLC and prompt the user for a key if the DLC is not owned by the account that they are logging into on Steam.

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

To build a GM containing multiple Steam Pipe apps. Build each app installer one by one but point them all to the same output folder. Each build will merge itself with the already existing install image.

Personalización de un disco de instalación comercial

See Customizing a gold master for more details on customizing your retail install disk.

Juegos de precarga antes del lanzamiento

By default, all content is always encrypted, on all retail discs and on all content servers. Switching a game to preload mode means owners can download the content, but it stays encrypted on the users' disk and can't be played. Once the game becomes officially released, Steam will decrypt the preloaded content and the user can play the game.

Switching a game to preload mode is recommended in these cases:
  • 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.

Please submit a ticket to Steam Publishing if you believe your game requires preloading.

Compilación de DLC

DLC is built as a depot of the base game. See the Contenido descargable (DLC) documentation for more information.

Solución de problemas de SteamPipe

"Login Failure: Account Logon Denied Failed" when logging in via steamcmd

Cause: Probably SteamGuard is preventing login. Resolution:
  • Check the email associated with the account you are trying to log on with and look for an email from Steam Support. Copy the code from that email.
  • Run the following steamcmd: set_steam_guard_code <code>
  • Re-Attempt logon from 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é?

If you're testing via Steam the installation of your game or application across multiple platforms, you may run into a situation where the build deploys on Windows but doesn't deploy any files on Mac or Linux despite your SteamPipe process being setup to upload Mac and/or Linux depots. There is a step that is easily missed which involves adding your alternate Depots to the Package being deployed. You can check what depots are included in a package via the following steps:
  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.
There are a number of discussion threads about this that may also assist:

Running steamcmd.exe results in the following error: "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again."

Resolution: Go to Internet Options->Connections->Lan Settings and check Automatically detect settings.

Running the app build results in the following error: "ERROR! Failed 'DepotBuild for scriptname.vdf' - status = 6."

Possible Causes:
  • 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 cannot find the depot contents.
    • 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)".

This means that Steam can't retrieve information about the app, either because it doesn't exist or the user doesn't have access to the app.
  • 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.

Possible Causes:
  • 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

This is the CEG servers rejecting the request to CEG the exe. Check the release state on the game page. If it is not 'playable', you will need to request Steam keys that override the release state.

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

This is the CEG servers failing to find a matching CEG exe. Double check that you have a working CEG executable on the CEG tab of your app admin. Click the 'status' button to make sure that it's propped.

I can't remember what that steamcmd command was or how it worked

Use the 'find' command in steamcmd to search for any steamcmd command. It will do partial matching on the command name and it will list out the command syntax.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>