Documentación de Steamworks
Desarrollar para SteamOS y Linux

Resumen sobre Linux

Steam para Linux ya está disponible para todos los usuarios de Steam. Entre el crecimiento del catálogo de juegos compatibles con Linux y la fuerza de la Comunidad Steam para Linux, es el momento perfecto para llevar tu juego a esta plataforma.

Desarrollar un juego en Linux para Steam puede ser un proceso complejo para quienes vienen del mundo del desarrollo en Windows o macOS. Esta información te ayudará a crear una versión de tu juego en Steam para Linux.

Creación de nuevos eventos

Para programar tu juego en Linux, necesitas lo siguiente:

  • Una máquina de desarrollo que utilice una versión de Linux totalmente actualizada. Puede ser un equipo de arranque dual, un equipo dedicado específicamente a Linux o incluso una máquina virtual que ejecute Linux. Además, Steam permite desarrollar con distribuciones de Linux de 32 y 64 bits. La distribución que recomendamos es la última versión de Ubuntu LTS, que es la que han podido probar de manera más profusa tanto Valve como la comunidad de Linux. Ubuntu se puede instalar desde aquí.
  • El cliente de Steam para Linux.
  • El conjunto de herramientas básicas de desarrollo para Linux (p. ej., g++, gcc y una utilidad de creación) contenidas en el paquete esencial. Puedes instalar este paquete desde el Centro de Software de Ubuntu o desde una ventana de terminal abierta, con el comando apt-get: sudo apt-get install build-essential.
  • La última versión del runtime de Steam para Linux, que incluye las herramientas y bibliotecas necesarias para lanzar juegos de Linux en Steam. Las instrucciones para usar el runtime se encuentran en el archivo README.md que contiene el repositorio.

Si tienes preguntas generales sobre Steamworks sobre Linux o quieres notificar incidencias relacionadas con el runtime, entra en el grupo de desarrollo de Steamworks y publícalas en las discusiones sobre Linux.

Herramientas para Linux

Linux cuenta con un vasto arsenal de herramientas, que van de interfaces de la línea de comandos a IDE de desarrollo gráfico. La siguiente información se basa en la experiencia del equipo de Linux en Valve.

Para quienes tienen experiencia con herramientas de desarrollo para Windows, el camino más sencillo para realizar tareas de desarrollo en Linux es Visual Studio para Windows y WinGDB, una extensión de Visual C++ que permite depurar procesos remotos de Linux usando la interfaz de depuración de Visual Studio.

El equipo de Linux en Valve utiliza las siguientes herramientas para desarrollar en Linux:
  • QtCreator: un depurador e IDE que utiliza atajos de teclado familiares de Visual Studio.
  • SlickEdit: una GUI básica y configurable, con atajos de teclado definidos por el usuario.
  • gdb - un depurador de línea de comandos popular.
  • cgdb: un contenedor de gdb que ofrece una vista de pantalla separada de la ubicación actual en código fuente durante la ejecución.
  • url=http://eclipse.org/downloads/?osType=linux]Eclipse
[/url]: otro IDE que se puede configurar para el desarrollo en Linux. Disponible para Windows,
macOS y Linux.
  • vim: un editor de texto de línea de comandos básico.
  • [/list]

    El equipo de Linux en Valve utiliza las siguientes herramientas de depuración y seguimiento:
    • QtCreator: ver más arriba.
    • Servidores de símbolos.
    • PerfStudio: un depurador completamente basado en fotogramas con soporte
      para el seguimiento de API para juegos que se ejecutan en tarjetas gráficas AMD. Disponible para Windows.
    • Telemetry: un generador de perfiles con todas las funciones para juegos que usan tarjetas gráficas. Disponible para
      Linux, Windows y macOS.
    • gDEBugger: un depurador que depura, genera perfiles y analiza código OpenGL. El desarrollo activo ha cambiado a
      CodeXL.
    • perf: una herramienta de línea de comandos con varias características de rendimiento. Disponible para Linux.
    • NVIDIA Nsight:
      una extensión para Visual Studio para depurar juegos que se
      ejecutan en tarjetas gráficas NVIDIA.
    • lTTng: una herramienta de seguimiento de Linux.
    • Proyecto apitrace: un conjunto de herramientas para seguir y reproducir llamadas OpenGL y OpenGL ES desde el juego.
    • Zoom: un generador de perfiles de CPU con una interfaz de usuario potente e intuitiva.

    API de Linux

    Vulkan es la librería preferida para la renderización de gráficos de alto rendimiento. Es el equivalente de código abierto de DirectX12 y Metal.

    OpenGL era el antiguo estándar de renderizado gráfico. La mayoría de los juegos realizan llamadas directas a OpenGL, pero hay algunos que usan un método de traducción donde el código de renderizado antiguo se convierte en llamadas a OpenGL. Es el enfoque utilizado por antiguos juegos del motor Source de Valve, como "Team Fortress 2" y "Counter-Strike: Source". Si utilizas OpenGL, te recomendamos que uses el conjunto de funcionalidades principales de OpenGL 3.0 para tu juego.

    La versión 2.0 de Simple DirectMedia Layer (SDL) proporciona acceso de bajo nivel a audio y gestión de ventanas, entre otras muchas cosas. OpenGL es compatible con el renderizado 3D. Las instrucciones de instalación se pueden encontrar aquí. Para más información y documentación, visita la wiki de SDL. Valve lo usa en Steam y en la mayoría de nuestros juegos para la gestión de las ventanas, y esto provee el backend de la API de Steam Input.

    Las siguientes bibliotecas ofrecen ayuda con otros aspectos del desarrollo de juegos:
    • FreeType: renderizado de fuentes (tanto vectoriales como bitmap) en Linux.
    • Fontconfig: configurar y personalizar el acceso a la fuente.
    • Miles Sound System: un motor de sonido middleware para el desarrollo en Linux.
    • Bink Video: un códec de video diseñado para desarrolladores de juegos.
    • WebM: un formato de archivo multimedia abierto que se utiliza para grabar videos de Team Fortress 2 en lugar de QuickTime.

    Repositorios en GitHub

    Los siguientes repositorios son públicos y se utilizan para proyectos relacionados con Steam para Linux:
    • steam-for-linux: incluye contenido para el cliente de Steam para Linux y el seguimiento de errores para el cliente de Steam en Linux.
    • steam-runtime: contiene el proyecto Runtime de Steam para Linux. El propósito es ofrecer un entorno de runtime estable para el desarrollo de juegos de Steam en Linux.

      Preguntas frecuentes

      P. Mi juego de Linux tiene múltiples dependencias de bibliotecas externas. ¿Cómo resuelvo este problema?
      R. Muchas bibliotecas habituales como SDL, OpenAL, FreeType y Fontconfig están incluidas en el runtime de Steam para Linux para que te sea más cómodo. Si tienes otras dependencias de bibliotecas externas que no estén incluidas en el runtime y sean de distribución gratuita, menciónalas en el hilo de discusiones de desarrollo de Steamworks: Linux y SteamOS.

      P. ¿Hay DRM de Steam para Linux?
      R. ¡Sí! La nueva herramienda de DRM drmtoolp es compatible con Linux. Visita DRM de Steam para obtener más información.

      P. ¿Cuál es la diferencia de rendimiento de controladores entre Ubuntu y Windows?
      R. Los controladores propietarios de Nvidia son similares a los de Windows en términos de estabilidad, rendimiento y características. También hay disponibles controladores propietarios tanto para AMD como para Intel, pero su estabilidad y rendimiento actual son inferiores a los equivalentes de Windows.

      Respecto al rendimiento en Linux, depende de la tarjeta de video y del tipo de controlador que se use, por ejemplo, código abierto vs. propietario. Normalmente, los controladores propietarios rinden mejor que los de código abierto y tienen más características. Además, la antigüedad del controlador puede variar entre versiones propietarias y de código abierto.

      P. La Interfaz de Steam no funciona al iniciarse fuera de Steam.
      R. En Linux, debes ajustar la variable de entorno LD_PRELOAD para cargar gameoverlayrenderer.so.

      El resultado será algo así:
      export LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so;~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so

      P. ¿Qué runtime debo usar para probar mi compilación para Linux?
      R. La distribución que recomendamos es la última versión de Ubuntu LTS, que es la que han podido probar de manera más profusa tanto Valve como la comunidad de Linux. Ubuntu se puede instalar desde aquí.