Steamworks Belgeleri
SteamOS ve Linux için Geliştirmek

Linux - Genel Bakış

Linux için Steam, şimdi tüm Steam kullanıcıları tarafından erişilebilir. Linux desteğine sahip oyunların her geçen gün büyüyen kataloğu ve aktif bir Linux için Steam topluluk grubu ile, şimdi oyununuzu Linux'a uyarlamanın tam sırası.

Steam için bir Linux oyunu geliştirmek, Windows veya macOS geliştirme geçmişine sahip olan geliştiriciler için zorlu olabilir. Aşağıdaki bilgiler oyununuzu Linux için Steam'e başarıyla uyarlamanıza yardımcı olacaktır.

Başlarken

Oyununuzu Linux için derlemek aşağıdakileri gerektirir:

  • Linux'un tamamen güncellenmiş bir sürümünü çalıştıran geliştirme makinesi. Bu çift ön yüklemeli bir makine, tamamen adanmış bir Linux makinesi veya Linux çalıştıran sanal bir makine bile olabilir. Ek olarak, geliştirme hem 32-bit hem de 64-bit Linux dağıtımlarınca desteklenmelidir. Önerilen Linux dağıtımı en güncel Ubuntu yayını olan Ubuntu LTS'dir. Bu sürüm hem Valve hem de Linux topluluğu tarafından en çok test edilmiş sürümdür. Ubuntu buradan yüklenebilir.
  • Linux için Steam istemcisi.
  • Derleme temeli paketi ile alınan temel Linux geliştirme araç seti (örn. g++, gcc ve bir kullanım aracı). Bu paketi ister Ubuntu Yazılım Merkezinden isterseniz de bir açık terminal penceresinde apt-get komutu: "sudo apt-get install build-essential" ile yükleyin.
  • Linux oyunlarının Steam'de yayınlanabilmesi için gerekli olan bütün kütüphane setlerini ve araçları içeren Steam Linux Çalışma Zamanının son sürümünü indirin. Çalışma Zamanını nasıl kullanacağınız konusundaki yönergeleri dizinde bulunan README.md dosyasında bulabilirsiniz.

Eğer Linux Steamworks hakkında genel sorularınız varsa veya çalışma zamanı ile ilgili sorunları bildirmek istiyorsanız lütfen Steamworks Geliştirici Grubuna katılın ve Linux Tartışmalarında bizimle paylaşın.

Linux Araçları

Komut satırı arayüzlerinden grafiksel geliştirici IDE'lerine kadar çeşitli bir Linux geliştirici araçları bulunmakta. Aşağıdaki bilgiler Valve Linux takımının tecrübeleri temel alınarak yazılmıştır.

Windows geliştirme araçlarında tecrübesi olanlar için Linux'ta geliştirmenin en kolay yolu Windows'taki Visual Studio veya Visual Studio hata ayıklama arayüzünü kullanarak uzak Linux işlemlerinde hata ayıklama yapabilmenizi sağlayan bir Visual C++ uzantısı olan WinGDB programıdır.

Linux'ta geliştirme için aşağıdaki araçlar Valve Linux takımı tarafından kullanılmıştır:
  • QtCreator - Visual Studio ile benzer tuş atamalarına sahip bir hata ayıklama ve IDE programı.
  • SlickEdit - kullanıcıların tuş atamalarına izin veren temel, ayarlanabilir bir GUI sunar.
  • gdb - popüler bir komut satırı hata ayıklama programı.
  • cgdb - gdb sarmalıyıcısı; yürütme sırasında mevcut konumu kaynak kodda bölünmüş ekranda gösterir.
  • Eclipse - Windows, macOS ve Linux'ta erişilebilen, Linux'ta geliştirmeye ayarlanabilecek bir başka IDE programı. Windows, macOS ve Linux'ta erişilebilir.
  • vim - temel bir komut satırı metin editörü.

Aşağıdaki hata ayıklama ve izleme araçları Valve Linux takımı tarafından kullanılmaktadır:
  • QtCreator - yukarıya bakın.
  • Symbol Servers
  • PerfStudio - Tam özellikli, çerçeve temelli AMD grafik kartlarında çalışan oyunlar için API izleme desteğine sahip bir hata ayıklama programı. Windows'ta erişilebilir.
  • Telemetry - tam özellikli, grafik kartlarında çalışan oyunlar için bir profilleme programı. Windows, Linux ve macOS'te erişilebilir.
  • gDEBugger - OpenGL kodunu analiz eden, profilleyen ve hatalarını ayıklayan bir hata ayıklama programı. Aktif geliştirme CodeXL'e taşındı.
  • perf - Çeşitli performans özellikleri sunan bir komut satırı aracı. Linux'ta erişilebilir.
  • NVIDIA Nsight - NVIDIA ekran kartlarında çalışan oyunlar için hata ayıklama yapabilen bir Visual Studio uzantısı.
  • lTTng - Bir Linux izleme aracı
  • apitrace project - Oyununuzdaki OpenGL ve OpenGL çağrıları için tekrar ve izleme sağlayan bir araç seti
  • Zoom - güçlü ve kullanımı kolay kullanıcı arayüzüne sahip bir CPU profilleme programı

Linux API'ları

Vulkan yüksek performans grafik çizimleri için tercih edilen kütüphanedir. DirectX12 ve Metal'in açık eşdeğeridir.

OpenGL eskiden kullanılan grafik işleme standartı idi. Oyunların pek çoğu OpenGL'e direkt çağrı yapar ancak bazı diğer oyunlar eski çizim kodunu OpenGL çağrılarına çeviren bir çeviri yöntemi de kullanabilirler. Bu yaklaşım eski Valve Source oyunları olan Team Fortress 2 ve Counter-Strike: Source'da kullanılmıştır. Eğer OpenGL kullanmayı tercih ederseniz, OpenGL 3.0'daki çekirdek fonksiyonelliği oyununuz için kullanmanızı öneririz.

Simple DirectMedia Layer (SDL) sürüm 2.0 diğer pek çok şeyin yanı sıra ses ve pencereleme erişimi sağlıyor. 3B çizim desteği OpenGL kullanılarak sağlanılıyor. Yükleme yönergeleri burada bulunabilir. Ayrıntılı bilgi ve belge için SDL wikiye başvurun. Valve bunu Steam'de ve pek çok oyununda pencereleme için kullanıyor. Bu özellik aynı zamanda Steam Girdisi API'ının çalışmasını sağlayan arka ucu sağlıyor.

Aşağıdaki kütüphaneler oyun geliştirmenin diğer yönlerinde destek sağlarlar:
  • FreeType - Linux'ta font çizimi (hem vektör temelli hem de bitmap fontları için)
  • Fontconfig - Font erişiminin ayarlanması ve özelleştirilmesi
  • Miles Sound System - Linux'ta geliştirme için kullanılabilecek bir ara yazılım ses motoru
  • Bink Video - oyun geliştiricileri için tasarlanmış bir video codec'i
  • WebM - Bir açık medya dosya formatı. Team Fortress 2'de QuickTime yerine video kayıt için kullanıldı.

Linux Runtime

Yerel Linux desteğine sahip uygulamalar, çalıştırılacak Linux için Steam runtime'ının belirli bir sürümünü seçebilir. Bu, her dal için ayrıca ayarlanabilir. Seçtiğiniz runtime'ın, yürütülebilir dosyalarınızı derlemek için kullandığınız Linux SDK için Steam ile eşleşmesi gerektiğini lütfen aklınızda bulundurun. Daha fazla bilgi için steam-runtime-guide belgesine bakın.

Bu özelliği kullanabilmeniz için öncelikle uygulamanızın Linux'u destekleyen bir başlatma seçeneği olmalıdır. Bunu yaptıktan sonra "Kurulum > Linux Runtime" menü öğesine gidebilirsiniz.

GitHub Depoları

Aşağıdaki depolar herkese açıktır ve Linux'ta Steam ile alakalı projelerde kullanılmışlardır:
  • steam-for-linux - Linux'ta Steam istemcisi için içerikler ve hata izleyicisi içerir
  • steam-runtime - Steam Linux Çalışma Zamanı projesini içerir. Bunun nedeni Steam Linux oyunlarının geliştirmelerinde stabil bir çalışma zamanı çevresi sağlayabilmek.

    Sıkça Sorulan Sorular

    S: Linux oyunum çok sayıda dış kütüphaneye bağımlı. Bu sorunu nasıl çözerim?
    C: SDL, OpenAL, FreeType ve Fontconfig gibi pek çok popüler kütüphanelerin hepsi rahatınız için Steam Linux Çalışma Zamanı içerisinde bulunmaktadır. Eğer çalışma zamanı içerisinde yer almayan veya ücretsiz bir şekilde dağıtılabilen herhangi bir başka dış kütüphane bağımlılığınız var ise lütfen bunu Linux ve SteamOS Steamworks Geliştirme Tartışmaları bölümüne taşıyınız.

    S: Linux için Steam DRM'i var mı?
    C: Evet! Yeni drmtoolp DRM aracı linux desteğine sahiptir. Ayrıntılı bilgi için Steam DRM belgesini inceleyin.

    S: Ubuntu ve Windows arasında sürücü performansları ne kadar fark ediyor?
    C: Özel Nvidia sürücüleri Windows'takilerle istikrar, performans ve özellikler konusunda karşılaştırılabilir. AMD ve Intel'in özel sürücüleri de mevcuttur ancak onların mevcut performansı ve istikrar durumları eş Windows sürücülere oranla düşüktür.

    Linux performansı konusunda ise kullanılan ekran kartı ve sürücüsüne göre değişkenlik görülebilir. Ör. açık kaynak - tescilli. Genellikle, özel sürücüler açık kaynaklı sürücülerden çok daha iyi bir performans gösterirler ve daha çok özellikler sunarlar. Ek olarak, özel ve açık kaynak sürücülerin arasındaki yaş farkı da önemli bir faktördür.

    S: Steam Arayüzü, Steam dışından başlatıldığında çalışmıyor.
    C: Linux üzerinde gameoverlayrenderer.so dosyasını yüklemek için LD_PRELOAD ortam değişkenini ayarlamanız gerekir

    Bu şuna benzeyecektir:
    export LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so;~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so

    S: Linux derlememi test etmek için hangi runtime'ı (çalıştırma zamanı) kullanmalıyım?
    C: Bunun için önerilen Linux dağıtımı en güncel Ubuntu LTS sürümüdür. Zira bu sürüm hem Valve hem de Linux topluluğu tarafından en çok test edilmiş sürüm olacaktır. Ubuntu buradan yüklenebilir.