Documentación de Steamworks
DRM de Steam

Descripción general

El contenedor DRM de Steam es una parte importante de la plataforma, ya que inicia Steam antes que el juego para comprobar que este pertenece al usuario y para asegurarse de que las características de Steamworks funcionen correctamente.

Usar solo el contenedor DRM de Steam no es una solución antipiratería. El contenedor DRM de Steam sirve de protección frente a casos muy concretos de piratería (p. ej., la copia de todos los archivos de juego a otro equipo) y cuenta con ciertas funciones de ocultamiento (ofuscación), pero cualquier atacante motivado puede eliminarlo con facilidad.

Lo más recomendable es mejorar el valor de las copias legítimas de tu juego por medio de las características de Steamworks que no funcionarán en las copias no legítimas (p. ej., el multijugador online, los logros, las tablas de clasificación, las tarjetas, etc.).

Véase Uso del contenedor de Steam con otros DRM. para obtener más información sobre cómo combinar el contenedor DRM de Steam con otros DRM u otras soluciones antimanipulación.

Contenedor DRM de Steam automatizado

El contenedor de Steam se puede aplicar desde el script de carga de SteamPipe. De esta forma, se envía una solicitud de inicialización a los servidores de Steam por medio del cliente que ha iniciado sesión; a continuación, el ejecutable en texto simple se envía al backend de Steam mediante HTTP. El encapsulado se realiza en el servidor, y luego SteamCMD descarga el ejecutable encapsulado.

Para realizar el encapsulado de DRM con SteamPipe, haz que tu script inicie sesión y ejecute después el comando de Steamdrm_wrap:
drm_wrap [appid] [input filename] [output filename] [toolname] [flags] [<destination>]

Parámetros:
  • appid: id. de aplicación numérica.
  • input filename: ruta de acceso, relativa o absoluta, al ejecutable en texto simple de entrada. ¡No olvides entrecomillar las rutas que contengan espacios!
  • output filename: ruta de acceso, relativa o absoluta, en la que la herramienta escribirá el ejecutable encapsulado de salida.
  • Actualmente, toolname - "drmtoolp" es el único parámetro de nombre de herramienta admitido.
  • flags: máscara de bits de las siguientes marcas numéricas que especifican el comportamiento de la herramienta.
    • 0: encapsulado normal (la mayor protección).
    • 6: modo de compatibilidad (desactiva la ofuscación).
    • 32: omite la comprobación del depurador.
    • 38: modo de compatibilidad y también omite comprobación del depurador (la menor protección).
  • destino, parámetro opcional - "cloud" o "local". El valor predeterminado actual es "cloud". La opción "local" no debería necesitarse, salvo que se encuentren problemas utilizando la opción "cloud".

Ejemplo de script.bat que inicia sesión, aplica DRM, compila y carga la compilación en Steam (donde el id. de la aplicación es 480):
builder\steamcmd.exe +login mysteamaccount +drm_wrap 480 "D:\src\steamworkssdk\steamworksexample\release\steamworksexample.exe" "D:\src\steamworkssdk\tools\ContentBuilder\content\windows_content\SteamworksExample.exe" drmtoolp 0 +run_app_build ..\scripts\app_build_480.vdf +quit

Contenedor DRM de Steam manual

Para encapsular rápidamente un ejecutable con el contenedor de Steam, usa la página del administrador de apps de Steamworks para encapsular el ejecutable principal del juego.

  1. Selecciona el juego al que quieres agregar DRM en la página del administrador de apps.
  2. Selecciona Editar ajustes de Steamworks en la sección de herramientas técnicas de la página del administrador de apps.
  3. En la pestaña Seguridad, selecciona DRN.
  4. Carga el ejecutable principal del juego y consulta la sección anterior sobre el contenedor automatizado para obtener información sobre las opciones de ejecución de la herramienta.
  5. Descarga el ejecutable en tu equipo local.
  6. Cambia el nombre del ejecutable a su nombre original.
  7. Cópialo en la ubicación de origen de los repositorios de tu herramienta de contenido.
  8. Compila una versión nueva de tu repositorio.
  9. Prueba ese repositorio en tu servidor de contenido local.

Uso del contenedor de Steam con otros DRM.

El contenedor de Steam puede y debe usarse en combinación con otras soluciones de DRM. Para ello, aplica primero el contenedor de Steam en modo de compatibilidad, antes de aplicar cualquier otro DRM. De esta forma se evita que interfiera con la solución de DRM. El modo de compatibilidad deshabilitará la funcionalidad de DRM del contenedor.

Envía el ejecutable en modo de compatibilidad. Puedes seleccionarlo en el cuadro desplegable de la página de Steamworks o usar las marcas correspondientes en la herramienta drmtool automatizada.

Preguntas frecuentes

P. Mi juego en C# o .Net no se ejecuta después de aplicar el contenedor de Steam.
R. El contenedor de Steam no es compatible con aplicaciones .Net. En lugar de usar el contenedor DRM, usa SteamAPI_RestartAppIfNecessary.

P. Mi juego no se ejecuta después de aplicar el contenedor de Steam.
R. El contenedor de Steam puede obstaculizar el funcionamiento de otras herramientas de DRM. Consulta Uso del contenedor de Steam con otros DRM., ya que es posible que exista un conflicto.

P. ¿Tengo que aplicar DRM al ejecutable cada vez que cree una compilación nueva?
R. Sí, cada compilación que pretendas publicar debe estar encapsulada con el contenedor de Steam. Puedes intentar automatizarlo empleando el proceso que hemos descrito antes en Contenedor Drm de Steam automatizado.

P. Después de aplicar el contenedor DRM de Steam, un antivirus ha detectado mi archivo binario como si estuviera infectado con un virus. ¿Qué puedo hacer?
R. El proceso de inyección de DRM modifica los archivos binarios igual que lo haría un virus, por eso pueden aparecer falsos positivos de este tipo. Puedes ponerte en contacto con el proveedor o utilizar la API en lugar del contenedor DRM de Steam.