GNU/Linux >> Tutoriales Linux >  >> Linux

¿Los juegos de Steam están protegidos?

Steam no usa cajas de arena. Por ejemplo, en Windows, los juegos de Steam generalmente guardan sus datos en Mis documentos, Appdata, su propia carpeta de instalación o la carpeta Steam Cloud de Steam (que se sincroniza con el servicio de almacenamiento en línea para guardar, configurar y otros datos de usuario). Algunos incluso instalan otros programas, como la biblioteca de un componente multijugador (por ejemplo:Juegos para Windows - LIVE).

Valve, sin embargo, implementó algunas restricciones para evitar comportamientos no deseados, como un juego que instala el mercado de juegos de un editor sin preguntar. Lo único más cercano a hacer eso es uPlay de Ubisoft, que Ubisoft quería usar para actualizar sus juegos, por lo que en lugar de enviar el cliente completo, cada juego viene con una versión mini que carece del mercado y solo se puede iniciar cuando inicia su juego asociado. .

Los juegos en Steam son en su mayoría iguales a sus contrapartes minoristas, solo que ligeramente modificados para usar el DRM de autenticación de Steam y se pueden descargar a través de los servidores de Steam.

Steam ofrece servicios adicionales a cambio, como actualizaciones automáticas, sincronización en la nube de datos de usuario del juego, logros, tablas de clasificación y otros datos personalizados (mira las estadísticas de Team Fortress 2 de un usuario como ejemplo) y más.


Steam no protege su sistema de juegos que no son de confianza ni de sí mismo.

Quizás le interese el artículo de Stéphane Graber sobre el uso de LXC para hacer esto, y el proyecto steam-lxc que creó para ese propósito.

Actualización de septiembre de 2014:

Finalmente llegué a configurar esto yo mismo. Los enlaces anteriores están un poco desactualizados, pero Stéphane publicó una serie de artículos más recientes sobre LXC 1.0 que fueron muy útiles. Entre eso y un poco de experimentación, conseguí que Steam funcionara en un contenedor sin privilegios, y funciona bastante bien.

Advertencia: Incluso si ejecuta Steam (y sus juegos) en un contenedor, normalmente aún podrá acceder a su pantalla, mouse y teclado a través del protocolo X. Existen algunas extensiones X para mitigar este problema, pero aún no he intentado ejecutar Steam como un cliente X que no es de confianza. Una forma sencilla de limitar esta exposición es crear una cuenta de usuario de Linux separada para su contenedor Steam, usar la función "cambiar de usuario" de su entorno de escritorio para iniciar sesión como ese usuario para jugar y cambiar entre esa sesión de escritorio y su sesión de escritorio normal. según sea necesario. Dado que este enfoque utiliza una sesión de servidor X separada para Steam, el rastreo del protocolo X no debería ser posible, aunque la GPU y sus controladores aún podrían explotarse en servidores X.

Mi línea de comando para crear el contenedor:

lxc-create -n steambox -t download -- -d ubuntu -r trusty -a amd64

Edité el archivo de configuración de mi contenedor para que se vea así:

# Distribution configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
lxc.arch = x86_64

# Container specific configuration
lxc.id_map = u 0 100000 1000
lxc.id_map = g 0 100000 1000
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 101001 64535
lxc.id_map = g 1001 101001 64535
lxc.rootfs = /home/myusername/.local/share/lxc/steambox/rootfs
lxc.utsname = steambox

# Network
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.hwaddr = 00:16:3e:77:88:99

# Video
lxc.mount.entry = /tmp/.X11-unix tmp/.X11-unix none bind,optional,create=dir
lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry = /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry = /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
#lxc.cgroup.devices.allow = c 195:* rwm
# video0 doesn't exist on my system.
#lxc.mount.entry = /dev/video0 dev/video0 none bind,optional,create=file

# Sound
lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir

# Game Controllers
# Steam uses SDL for controller support; SDL uses udev and /dev/input/*
lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir
#lxc.cgroup.devices.allow = c 13:* r
# uinput might be needed for gamepad support with streaming
#lxc.mount.entry = /dev/uinput dev/uinput none bind,optional,create=file
#lxc.cgroup.devices.allow = c 10:223 rwm

# for debugging
#lxc.aa_profile = unconfined

# EOF

Esto solo tiene la intención de ayudarlo a comenzar. Todavía tendrá que configurar su sistema host como se describe en los artículos, y probablemente reiniciarlo, antes de que funcione. Por favor, no me pidas que solucione los problemas de tu sistema.

Estoy ejecutando Ubuntu con una tarjeta nVidia. Diferentes distribuciones y tarjetas de video probablemente requerirán algunas rutas, nombres de archivos de dispositivos y números de dispositivos diferentes.

Tenga en cuenta que no he configurado lxc.cgroup.devices.deny = a sin embargo, el contenedor no está tan bloqueado como podría estarlo. (Lo cambiaré una vez que termine de experimentar).

Tuve que instalar el mismo paquete de controladores de nVidia en el contenedor que tengo en el host. (Incluso una discrepancia en el número de versión menor provocó errores cuando Steam intentó usar el controlador).

Utilicé deliberadamente la arquitectura amd64 y la versión Ubuntu Trusty para mi contenedor, a pesar de que Valve solo admite i386 y Precise. Hice esto porque quiero que el software espía de Valve me cuente entre los que usan un sistema operativo moderno, con la esperanza de que comiencen a admitirlo antes.

Una vez que tuve Steam trabajando en el contenedor, configuré un script de inicio en mi sistema host. Se llama steam y vive en mi PATH , por lo que las líneas de comando de Steam funcionan prácticamente como lo harían si Steam estuviera instalado normalmente. Aquí está el guión:

#!/bin/sh

CONTAINER=steambox
RUNASUSER=ubuntu
STEAMCOMMAND=/usr/games/steam

# Execute a command in the container, with X display support
run_in_container() {
  lxc-attach --clear-env -n $CONTAINER -- sudo -u $RUNASUSER -i \
    env DISPLAY="$DISPLAY" "[email protected]"
}

# Find joystick devices so we can tell Steam's old SDL library to use them
# https://github.com/ValveSoftware/steam-for-linux/issues/1894#issuecomment-25295972
enum_joysticks() {
  local joyprop=ID_INPUT_JOYSTICK=1
  for f in /dev/input/*; do
    if [ ! -c "$f" ]; then
      continue
    elif udevadm info --query=property --name="$f" | grep --quiet $joyprop; then
      echo "$f"
    fi
  done
}

# Use the first arg as a separator to join the remaining args
join() {
  local IFS="$1"
  shift
  echo "$*"
}

# Use an environment variable to help Steam's old SDL version find gamepads
run_steam_with_joysticks() {
  run_in_container SDL_JOYSTICK_DEVICE="$(join : $(enum_joysticks))" \
    $STEAMCOMMAND "[email protected]"
}

STARTED=false
if ! lxc-wait -n $CONTAINER -s RUNNING -t 0; then
    lxc-start -n $CONTAINER -d
    lxc-wait -n $CONTAINER -s RUNNING
    STARTED=true
fi

run_in_container xauth add $(xauth list | sed 's/^.*\///')
run_steam_with_joysticks "[email protected]"

if [ "$STARTED" = "true" ]; then
    lxc-stop -n $CONTAINER -t 10
fi

El enum_joysticks , join y SDL_JOYSTICK_DEVICE= las piezas solo están ahí para evitar un error de Steam que evita que Big Picture Mode detecte los controladores de juego en un sistema Ubuntu Trusty. Probablemente podría eliminar esas partes de la secuencia de comandos si su contenedor ejecuta Ubuntu Precise o si no usa el modo de imagen grande.

Con ese script instalado en mi PATH , puedo copiar el archivo .desktop de cada juego desde mi contenedor a mi sistema host para que el juego aparezca en mi menú de aplicaciones. (Por lo general, también copio el ícono o edito el archivo .desktop para nombrar un ícono que está instalado en mi host).

cp /home/myusername/.local/share/lxc/steambox/rootfs/home/ubuntu/.local/share/applications/thegame.dekstop /home/myusername/.local/share/applications/

¡Buena suerte!


Linux
  1. En el Centro de software, ¿no se encuentran algunos programas?

  2. Aquí se explica cómo desinstalar completamente Steam de Ubuntu

  3. ¿Puedo transferir Steam Games de Win7 a Linux?

  4. ¿Cómo consigues que tus juegos de Steam se ejecuten en Ubuntu a través de Wine o algo similar?

  5. directorio de juegos?

Los 20 mejores juegos divertidos de Steam para que los niños jueguen ahora mismo

Los mejores juegos gratuitos de Steam para jugar ahora:los 12 mejores juegos revisados

Cómo instalar Steam en el escritorio de Linux | Juega tus juegos favoritos

Los 20 juegos de Steam mejor valorados para Linux que no podrás resistirte a jugar

Los 10 mejores juegos para Steam Deck:¿Cuál es tu favorito?

5 mejores juegos de aventura para escritorio Linux:pruébalos cuando estés aburrido