Steamworks Belgeleri
Steam'e Yükleme Yapmak

Yeni sürüm İngilizce dilinde mevcuttur

Bu sayfanın İngilizce sürümü, bu çeviri yayınlandıktan sonra güncellendi.
Bu sayfanın İngilizce sürümünü görmek için buraya tıklayın.
Aşağıda, Valve'in Steam'e içerik gönderme aracı olan SteamPipe'ı kullanma rehberi yer almaktadır. Oyununuzu güncellemek için en iyi yöntemler hakkında şuraya bakın: Oyununuzu Güncellemenin En İyi Yöntemleri.

SteamPipe İçerik Sistemi'ne Giriş

SteamPipe, Steam'e güç veren, oyun/uygulama içerik sistemidir. SteamPipe aşağıdaki özellikleri içerir:
  • Hızlı ve etkili içerik gönderme.
  • Sınırsız herkese açık ve özel "beta" dalları, çeşitli derlemelerin test edilmesine olanak sağlar.
  • Basit web temelli derleme yönetimi. Yeni bir derleme yayınlayın veya bir önceki derlemeyi birkaç tıklama ile geri alın.
  • Derlemeyi yayınlamadan önce güncelleme boyutunu görebilme.
  • İçeriği çoklu uygulamalar arasında paylaşabilme.
  • Herkese açık veya beta içeriğindenyükleme diskleri oluşturabilme imkânı.
  • Bir güncelleme indirmesi başlasa bile oyunlara/uygulamalara çevrim dışı erişilebilme imkânı.
  • Bütün içerikler her zaman şifre ile korumalıdır ve aktif durumda olmayan sürümler müşterilere erişilebilir olmaz.
  • Geliştirme sürecinde kullanılabilen bir belgelendirme bulunmaktadır.
NOT: SteamPipe'a dâhil olan birkaç konsept vardır. Başlamadan önce Uygulamalar belgelendirmesinde belirtilen bütün konseptlere aşina olmalısınız. Bu konseptlerde temel bir anlayışınız bile olsa ürününüzü Steam'e yüklerken çok kullanışlı olacaktır.

Steamworks Video Eğitimi - SteamPipe'da Oyununuzu Oluşturmak

Bu eğitim videosu SteamPipe'ı sizlere tanıtır ve Steam'de Steamworks araçlarını kullanarak örnek bir uygulama oluşturmayı adım adım anlatır.
https://www.youtube.com/watch?v=SoNH-v6aU9Q

Steamworks Video Eğitimi - Yeni Platformalar ve Diller eklemek

Bu eğitim videosu uygulamalarınıza depolar ekleyerek oyununuza yeni platformlar ve diller eklemeyi gösterir.
https://www.youtube.com/watch?v=PShS32hcing

SteamPipe Teknik Detayları

SteamPipe içerik dağıtımı için HTTP protokolünü kullanır. İndirmeler normal internet trafiği oldukları için herhangi bir üçüncü parti HTTP depolaması Steam sunucuları ve müşteri arasındaki indirme hızını artıracaktır. İçerik dışarıdan CDN sağlayıcıları tarafından saklanılabilir. Bu içerikler bizim içerik ağımıza kolayca eklenebilir. Pek çok müşteri güvenlik duvarı HTTP trafiğine izin verir ve indirmeleri engellemez.

SteamPipe ikili deltalara dayalı etkili bir güncelleme algoritmasına sahiptir. Var olan içerik dosyalarının sadece değiştirilmiş bölümlerini değiştirir. Bu içerik güncellendiği zaman, sadece bu deltaların gönderilmesi gerekir. Bu da hem geliştiricinin hem de kullanıcının veri akışının küçük ve hızlı olması anlamına gelir. Partnerlerin bir çoğu SteamPipe Local Content Server kullanmayı gerekli görmezler çünkü derlemeleri özel dallarda verimli bir şekilde güncelleyebilirler.

Steam Derleme Hesabı

Steam'de herhangi bir derleme oluşturmadan önce Steamworks hesabınızda "Uygulama Üst Verisini Düzenle" ve "Uygulama Değişikliklerini Steam'e Yayınla" izinlerinin verilmiş olduğu bir Steam hesabına ihtiyacınız var. Güvenlik sebepleri yüzünden sadece bu izinlerin verilmiş olduğu, özelleştirilmiş bir derleme hesabınızın olmasını öneririz. Sadece bu amaç için yeni bir Steam hesabını https://store.steampowered.com/join adresinden oluşturabilirsiniz.

Steamworks hesabınızdaki herhangi bir yönetici bir Steam hesabını ekleyebilir ve gerekli izinleri sağlayabilir. Bu süreç hakkında ayrıntılı bilgiyi Steamworks Hesabınızı Yönetmek belgelendirmesinde bulabilirsiniz. Bu hesabın nasıl görüneceği ile ilgili bir örnek:

create_build_account.png

Yeni SteamPipe Uygulamaları için İlk Kurulum

Yeni SteamPipe uygulamaları oluşturmak için bu adımları takip edin:
  1. Uygulamanızın app ID'sini bulun (Steamworks ana sayfanızda uygulamanızı seçerek bunu bulabilirsiniz).
  2. Uygulamanızın Genel Yükleme Ayarları sayfasına gidin.
  3. En az bir başlatma seçeneğini belirleyin (dizin ve opsiyonel olarak oyunu başlatmak için gerekli olan herhangi argüman). Her alan için daha ayrıntılı bilgi için (?) simgesinin üstüne gelin.

    Aşağıdaki örnek 4 adet başlatma seçeneği gösterir. 2 tanesi Windows için ve 1'er tane MacOS ve Linux için. Eğer kullanıcı aynı zamanda belirtilmiş DLC'ye de sahipse "başlatma seçeneği 3" sadece Windows'da gösterilir.

    updatedlaunchoptions.png
  4. Depolar sayfasına gidin ve bu uygulama için gerekli olduğu kadar depo ekleyin. Uygulamanız için hâlihazırda ayarlanmış bir depo var olabilir.
    1. Varsayılan depoya tıklayın ve deponun adını daha düzgün ve tanınabilir bir isimle değiştirin (mesela "Ana İçerik" veya "Windows İçeriği").
    2. Eğer bu depo, dili belirli bir depo değilse dili [Bütün diller] olarak bırakın.
    3. Leave the OS set to [All OSes] unless this is an OS-specific depot (if the app is all-in-one, or is just PC or just Mac, it should be left to [All OSes]. Sadece işletim sistemi belirli oyun depolarında belirtme yapılmalıdır.
    4. Ek depolar oluşturmak için Yeni Depo Ekle butonuna basın.
    5. Yapılan herhangi bir değişikliği kaydetmek için Değişiklikleri Kaydet tuşuna basın.
  5. Depolarınızın tanımlaması bittikten sonra yaptığınız değişiklikleri Yayınla sayfasından yayınlayın.
  6. Yeni tanımlanmış depolarınızın sahipliğini alabilmeniz için bir paket içerisine alınması gereklidir. Steam'deki her oyunun bir Geliştirici Comp paketine sahip olması gerekir. Bu paket otomatik olarak yayıncı grubunuzun içerisinde listelenen hesaplara verilir.
    O pakete (ve/veya bu depolara sahip diğer paketlere) yeni depoları İlişkili Paketler ve DLC sayfasından ekleyebilirsiniz.
Not: Çalıştırılabilir dosyanız ana yükleme dizininin içindeki bir alt klasörde ise Çalıştırılabilir alanına alt klasörün adını ekleyin. Başında eğik çizgi ya da noktalar kullanmayın.

SDK'nın SteamPipe yüklemeleri için ayarlanması

Derlemeleri yükleyeceğiniz makineye Steamworks SDK'nın en son sürümünü indirin ve arşivden çıkartın.

The SteamPipe tools can be found within the SDK in the tools folder which contains 2 relevant sub-directories.

ContentBuilder dizini oyun içeriğinizin ve SteamPipe derleme araçlarının olacağı dizindir. Bu dizinde aşağıdaki alt dizinler bulunur:
  • builder - Bu dizin ilk olarak sadece Steam'in komut satırı versiyonu olan steamcmd.exe'yi içerir.
  • builder_linux - steamcmd'nin linux sürümü.
  • builder_osx - steamcmd'nin macOS sürümü.
  • content - Bu dizin, depolara derlenecek bütün oyun dosyalarını içerir.
  • output - Bu dizin derleme kayıtlarının, öbek önbelleğin ve orta seviye çıktıların saklanacağı yer olacaktır. NOT: Bu klasör herhangi bir zamanda silinebilir veya boşaltılabilir. Ancak silindikten sonra bir sonraki yükleme süresi uzun olacaktır.
  • scripts - Bu dizin oyun depolarınızı oluştururken kullanacağınız derleme komutlarının saklanacağı yer olacaktır.
steampipebuilddir.png

steamcmd.exe dosyasını, sisteminizi kurarken önyükleme yapmak için platformunuzun builder klasörü içerisinden direkt olarak çalıştırmanızı öneririz. Bu, builder dizinini depo oluşturmak için gerekli olan bütün dosyalar ile çoğaltacaktır.

The ContentServer dizini eğer kullanmayı tercih ederseniz kendinizin SteamPipe Local Content Server çalıştırmaya yardımcı araçları içerir.

macOS'de SteamCmd

macOS'de SteamCmd'yi etkinleştirmek için aşağıdaki adımları tamamlamalısınız:
  1. Terminalden "tools\ContentBuilder\builder_osx\osx32" klasörüne göz atın.
  2. hmod +x steamcmd komutunu çalıştırın.
  3. Bir üst klasöre geri dönün (tools\ContentBuilder\builder_osx).
  4. bash ./steamcmd.sh yazın.
  5. Daha sonra SteamCmd çalışacaktır ve en son derlemeyi güncelleyip sizi SteamCmd'yi komut isteminde bırakacaktır.
  6. exit yazıp enter'a basarak komut isteminden çıkın.
Daha sonra depo oluşturmak ve içeriğinizi Steam'e yüklemek için ayar dosyalarını oluşturmak için bu belgelendirmenin (uygun olan yolları kullanarak) geri kalanını takip edebilirsiniz.

SteamPipe Derleme Yapılandırma Dosyalarını Oluşturmak

Uygulamanızı SteamPipe ile yüklemek için, derlemenizi ve içinde bulunan her depoyu açıklayan betikleri oluşturmalısınız. Burada gösterilen örnek betikler Steamworks SDK'de Tools\ContentBuilder\scripts klasöründedir.

SteamPipe GUI Aracı

Eğer Windows üzerinde çalışıyorsanız ve bir GUI aracı kullanarak bu yapılandırma dosyalarını oluşturmayı ve derlemelerinizi yüklemeyi tercih ederseniz Steamworks SDK içerisinde araçlar klasörünün içerisinde bulunabilen SteamPipeGUI aracını kullanabilirsiniz. zip dosyasında, size başlarken yardımcı olacak ek bilgiler bulunmaktadır.

If you choose to use the GUI tool then reading the following sections is still recommended to help you become more familiar with how the SteamPipe system works.

Basit Derleme Betiği


Mümkün olan en basit derleme betiği ile başlayalım. Örneğimizde, elimizde bir depoya sahip (DepotID 1001) olan bir oyunumuz (AppID 1000) olsun ve bir içerik klasörü ile alt klasörlerindeki tüm dosyaları yüklemek istiyor olalım. Bunun için sadece tek bir derleme betiğine ihtiyacımız vardır. SDK'nin içinde bulunan "simple_app_build.vdf" dosyasına bakalım:

"AppBuild" { "AppID" "1000" // AppID'niz "Desc" "Bu basit bir derleme betiğidir" // bu derleme için iç tanımlama "ContentRoot" "..\content\" // bu dosyanın konumuna göre içerik kök klasörü "BuildOutput" "..\output\" // derleme kayıt ve derleme günlüğü dosyalarının yazılacağı klasör "Depots" { "1001" // DepotID'niz { "FileMapping" { "LocalPath" "*" // içerik kök klasörü (contentroot) dâhilindeki tüm dosyalar "DepotPath" "." // deponun köküne eşlendi "recursive" "1" // tüm alt klasörleri dâhil et } } } }

App ID ve DepotID'yi oyununuz için gerektiği şekilde ayarlayın. Bir derlemeyi başlatmak için steamcmd'yi çalıştırmalı ve birkaç parametreyi işletmelisiniz:
tools\ContentBuilder\builder\steamcmd.exe +login +run_app_build ..\scripts\simple_app_build.vdf +quit

NOT: Steam Guard dolayısı ile ilk derleme çalıştırma denemeniz başarısızlıkla sonuçlanabilir. Eğer giriş Steam Guard nedeni ile başarısız olursa, e-postanızı Steam Guard kodu için kontrol edin ve Steam komut istemcisini steamcmd.exe "set_steam_guard_code " yazarak çalıştırın ve tekrar deneyin. Steam Guard ile bir kez giriş yaptıktan sonra, yapılan girişin gerçek olup olmadığını doğrulamak için bir gözlem dosyası kullanılır.

Steam komut istemcisini bir makinede ya da sık sık görüntüsü alınan bir VM üzerinde kullanıyorsanız gözlem dosyasını ve yapılandırma dosyasını da görüntüye dâhil etmelisiniz ki, her seferinde Steam Guard doğrulaması ile karşılaşmayın. Gözlem dosyası \ssfn konumunda, yapılandırma dosyası ise \config\config.vdf konumunda bulunur.

Bir SteamPipe derlemesi sırasında aşağıdaki adımlar yaşanır:
[olist]
[*] Steamcmd.exe, kendisini en son sürüme günceller.
[*] Steamcmd.exe, verilen derleyici Steam hesabı ile Steam arka uca giriş yapar.
[*] Uygulama derlemesi başlaması, MDS (Ana Depo Sunucusu) ile kayıtlıdır. Böylece kullanıcının bu uygulamayı değiştirmek için doğru izinlere sahip olduğundan emin olunur.
[*] Uygulama derlemesinde bulunan her depo için bir dosya listesi, içerik klasöründeki dosyalara ve depo derlemesi yapılandırma dosyasında belirlenen filtre kurallarındaki dosyalara bağlı olarak oluşturulur.
[*] Her dosya taranır ve yaklaşık 1MB boyutunda küçük parçalara bölünür. Eğer depo daha önceden derlendiyse bu bölümleme, değişmemiş öbekleri mümkün olduğunca korur.
[*] Yeni dosya öbekleri sıkıştırılır, şifrelenir ve daha sonra MDS’e yüklenir.
[*] Bu depo sürümü için son bir bildirim çıkartılır; her bildirim benzersiz bir 64-bit bildirim ID’si ile tanımlanır.
[*] Bütün depolar işlendikten sonra, MDS uygulama derlemesini bitirir ve ona bir global BuildID sağlar.
[*] Derleme bittikten sonra derleme çıktı klasöründe bazı *.csm ve *.csd dosyaları bulunabilir. Bunlar geçici dosyalardır ve silinebilirler. Ancak bu dosyalar daha sonraki derleme sürelerini hızlandırırlar.[/olist]


Derleme tamamlandıktan sonra onu uygulama derleme sayfanızda görebilirsiniz. Bu durumda: https://partner.steamgames.com/apps/builds/1000. Orada varsayılan dal için ya da herhangi bir beta dalı için derlemeyi yayınlayabilirsiniz, kullanıcılar da güncellemeyi birkaç dakika içinde indirebilirler.

Gelişmiş Derleme Betikleri


Uygulamanızda karmaşık dosya eşleme kurallarına sahip çok sayıda depo varsa her depo için uygulama derleme betiği tarafından başvurulacak bir depo derleme betiği oluşturabilirsiniz. Önce uygulama derleme betiğinde kullanılabilen parametrelere bir göz atalım:

  • AppID - Oyununuzun AppID'si (uygulama kimliği). Yüklemeyi yapan Steam partner hesabının "Uygulama Üst Verilerini Düzenleme" iznine sahip olması gerekir.
  • Desc - Açıklama yalnızca Uygulama Yöneticisi panelinin "Derlemeleriniz" bölümünde sizin tarafınızdan görülebilir. Bir derleme yükledikten sonra bu ayar herhangi bir zamanda "Derlemeleriniz" sayfasından değiştirilebilir.
  • ContentRoot - Oyun dosyalarınızın kök klasörü, mutlak yol ya da derleme betik dosyasına göre göreli yol olabilir.
  • BuildOutput - Bu dizin derleme kayıtlarının, depo bildiriminin, öbek önbelleğin ve orta seviye çıktıların saklanacağı yer olacaktır. En iyi performans için, derleme çıktılarınız için ayrı bir disk kullanın. Bu, diskin üstündeki GÇ yükünü bölerek içerik kök diskinizin okuma isteklerini ve çıkış diskinizin yazma isteklerini işlemesine izin verir.
  • Preview - Bu tür derleme yalnızca günlükleri ve bir dosya bildirimini derleme çıktı klasörüne çıkarır. Ön izleme derlemeleri oluşturmak, yükleme betiklerini yinelemenin ve dosya eşlemelerinizin, filtrelerinizin ve özelliklerinizin istendiği gibi çalıştığından emin olmanın iyi bir yoludur.
  • Local - Bunu, SteamPipe Local Content Server dâhilindeki htdocs konumunuza ayarlayın (LCS). LCS derlemeleri yalnızca kendi HTTP sunucunuza içeriği koyar ve Steam istemcisini kullanarak oyununuzun kurulumunu test etmenize olanak tanır.
  • SetLive - Başarılı bir derlemeden sonra, otomatik olarak yayınlanacak beta dalı adı. Boş bırakılırsa yayınlanmaz. Varsayılan dalın otomatik olarak yayınlanmaya ayarlanamayacağını not edin. Bunun, yönetici paneli üzerinden yapılması gerekmektedir.
  • Depots - Bu bölüm, her depo için tüm dosya eşlemelerini, filtreleri ve dosya özelliklerini içerir veya her depo için ayrı bir betiğe başvurur.

Örnek uygulama derleme betiği "app_build_1000.vdf" tüm seçenekleri kullanır:
"AppBuild" { "AppID" "1000" // Your AppID "Desc" "Your build description here" // internal description for this build "Preview" "1" // make this a preview build only, nothing is uploaded "Local" "..\..\ContentServer\htdocs" // put content on local content server instead of uploading to Steam "SetLive" "AlphaTest" // set this build live on a beta branch "ContentRoot" "..\content\" // content root folder relative to this script file "BuildOutput" "D:\build_output\" // put build cache and log files on different drive for better performance "Depots" { // her depo için dosya eşleme talimatları ayrı betik dosyalarında bulunur "1001" "depot_build_1001.vdf" "1002" "depot_build_1002.vdf" } }

Bu uygulama derleme betiği, tüm dosya eşlemelerini ve dosya özelliklerini belirten iki depo derleme betik dosyasına başvurur. Aşağıdaki talimatlar bir depo derleme betiğinde mevcuttur (ve ayrıca bölüm doğrudan uygulama derleme betiğine dâhil edilmişse).

  • DepotID - Bu bölüm için olan DepotID (depo kimliği)
  • ContentRoot - İsteğe bağlı olarak, ContentRoot klasörünü uygulama oluşturma betiğinden depo bazında geçersiz kılmanıza olanak tanır.
  • FileMapping - Yerel içerik kökünden deponuza tek bir dosyayı ya da bir dosyalar kümesini eşler. Depoya dosya ekleyen birden fazla dosya eşleme olabilir. LocalPath parametresi, içerik kök klasörüne göre, göreli bir yoldur ve "?" ya da "*" gibi joker karakterler içerebilir. Recursive etkinleştirilmişse alt klasörlerdeki eşleşen dosyalar için de geçerli olacaktır. DepotPath parametresi, seçilen dosyaların depoda nerede görüneceğini belirtir (özel eşleme olmaması için yalnızca "." kullanın)
  • FileExclusion - eşlenen dosyaları tekrar hariç tutar ve "?" ya da "*" gibi joker karakterler de içerebilir.
  • InstallScript - bir dosyayı yükleme betiği olarak işaretler ve derleme süreci esnasında dosyayı imzalar. Steam istemcisi, bu depoyu bağlayan herhangi bir uygulama için bunları çalıştırmayı bilir.
  • FileProperties - dosyayı özel kodlarla işaretler:
    • userconfig - Bu dosya kullanıcı tarafından ya da oyun tarafından değiştirilir. Bir güncelleme ile üzerine yazılamaz ve dosyanın önceki sürümünden farklıysa doğrulama hatasını tetiklemez.
    • versionedconfig - userconfig'e benzer, ancak dosya depoda güncellenirse, kullanıcının oyunu güncellendiğinde yerel olarak üzerine yazılır. Depodaki dosyayı yalnızca gerekli bir biçim değişikliği veya hata düzeltmesi olduğunda güncelleyin.

Tüm seçeneklerin kullanımını gösteren örnek depo oluşturma komut dosyası depot_build_1002.vdf:
"DepotBuild" { "DepotID" "1002" "ContentRoot" "C:\content\depot1002" // override ContentRoot from app build script "FileMapping" { // ".\bin" içindeki tüm kaynak dosya ve klasörler, depodaki ".\executables" klasörüne eşlenecek "LocalPath" "bin\*" "DepotPath" "executables\" "Recursive" "1" // tüm alt klasörleri dâhil et } "FileMapping" { // \\audio içindeki ses dosyalarının üstüne Almanca versiyonları yaz "LocalPath" "localization\german\audio\*" "DepotPath" "audio\" } "FileMapping" { // Almanca versiyon için yükleme betiğini depo kök klasörüne kopyala "LocalPath" "localization\german\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\server.exe" // bu dosyayı hariç tut "FileExclusion" "*.pdb" // her yerde tüm .PDB dosyalarını hariç tut "FileExclusion" "bin\tools*" // bin\tools\ konumundaki tüm dosyaları hariç tut "InstallScript" "localization\german\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\setup.cfg" "Attributes" "userconfig" // bu dosya çalışma zamanı esnasında değiştirilecek } }

NOT: Bu betikleri istediğiniz gibi adlandırabilirsiniz, ancak tutarlılık için app_build_ ve depot_build_ adlarını kullanıyoruz. Bu makinede uygulama derleyeceğinizi biliyorsanız her uygulamanın derleme betiklerini düzenlemeye yardımcı olmak için her uygulamaya ait betik dizinlerinde alt dizinler oluşturmak iyi bir fikir olabilir.

Güncellemeleri Yönetme

Uygulamanız müşterilerinize yayınladıktan sonra müşterilerin varsayılan olarak işaretlenmiş olan derlemeyi alacağını unutmayın. Yeni bir derleme yüklerken, kullanıcılarınıza göndermeden önce test etmek her zaman iyi bir fikirdir. Bunu düzgün şekilde nasıl yapacağınız hakkında daha fazla bilgi için bkz. Steam Üzerinde Test Etmek.

Derleme Sorunlarını Ayıklamak

Derlemeniz başarılı olmadıysa hata bilgisi için derleme betiğinizin çalıştırıldığı konsola değil, çıktı dizinine bakmalısınız. Çoğu hata bilgisi *.log dosyalarında bulunabilir.
Hata ayıklamak için aşağıdaki Steam istemcisi komutlarını ve istemci tarafındaki dosyaları kullanabilirsiniz:
  • "app_status [appid]" - Uygulamanın bu istemcideki mevcut durumunu gösterir.
  • "app_info_print [appid]" - Bu oyun için mevcut Steamworks ayarlarını gösterir (depolar, başlatma seçenekleri vb.).
  • "app_config_print [appid]" - Bu oyun için mevcut kullanıcı ayarlarını gösterir (dil ayarları, yükleme dizini vb.).
  • file "logs\content_log.txt" - Günlüğe girişi yapılmış tüm SteamPipe işlemlerini ve hatalarını listeler.
  • file "steamapps\appmanifest_[appid].acf" - Bu uygulamanın mevcut yükleme durumunu gösterir (KeyValues).

SteamPipe için Etkili Depolar Derlemek

Eski Steam içerik sistemi, güncellemeleri dosya düzeyinde yamalıyordu; bu, bir dosyadaki tek bir bayt değiştiğinde, yeni dosyanın tamamının tüm kullanıcılar tarafından indirileceği anlamına geliyordu. Bu durum özellikle oyun, paket dosyalarını, yani oyun içerik dosyalarının tek bir büyük dosyada toplandığı koleksiyonları kullanıyorsa verimsizdi. Paket dosyalarının boyutu rahatça 1 GB'ı aşabilir. Bu nedenle güncellemeler gereksiz yere büyük indirmelere yol açıyordu. Bu büyük indirmelerden kaçınmanın yaygın bir yolu, önceden gönderilen paket dosyalarının içeriğini geçersiz kılan yeni paket dosyaları eklemekti. Bu, güncellemelerde işe yaradı, ancak kullanılmayan, zaten yamalı olan içeriği indirdikleri için uzun vadede yeni kullanıcılara zarar veriyordu.

Yeni içerik sistemi her dosyayı kabaca 1 MB'lık parçalara bölerek bu sorunu çözüyor. Each chunk is then compressed and encrypted before being distributed by the Steam content system. Oyun içeriğinde büyük artık parçalar varsa bu parçalar yeniden kullanılır ve kullanıcının tekrarlanan her parçayı yalnızca bir kez indirmesi gerekir. Ancak bu sistemin gerçek gücü etkili güncelleme yamaları derlemektir. Sistem bir yama derlemesi yaparken, yeni içerik hâlihazırda bilinen parçalar için taranır. Bulursa onları tekrar kullanır. Yani büyük bir dosyada sadece birkaç bayt değiştirir veya enjekte ederseniz kullanıcının sadece değişiklikleri indirmesi gerekecektir.

Bu, çoğu durumda düzgün çalışır, ancak bir oyunun içerik düzenini tasarlarken kaçınılması gereken birkaç husus vardır. Oyun verinizi sıkıştırmamalı ya da şifrelememelisiniz. Bu işlem zaten Steam içerik sistemi tarafından indirmeler ve fiziksel diskler için yapılır. Siz de yaparsanız bu, delta yamalamasının etkinliğini azaltabilir. Sıkıştırma ve şifreleme, yalnızca bir paket dosyasındaki her bir varlığın ayrı ayrı sıkıştırılması ve/veya şifrelenmesi durumunda önerilir. Aksi takdirde, tek bir varlıkta yapılacak bir değişiklik, her zaman potansiyel olarak değişmeyen birkaç başka varlığın indirilmesini gerektirecektir.

Birden çok varlığı tek bir paket dosyasında paketlerseniz her yeniden paketlemede gereksiz değişikliklerin yapılmadığından emin olun. Adlar, derleme yapılan makineye bağlı olarak değişebileceği için, diskteki orijinal kaynak dosyalarının tam adlarını dâhil etmek sorun yaratan bir uygulamadır. Bir diğeri de her dosya için derleme zamanını dâhil etmektir. Mümkünse yeni içeriği her zaman paket dosyalarınızın sonuna ekleyin ve mevcut dosyaların düzenini koruyun. Ayrıca, paket dosyanızın üst verisini (bireysel varlıklara göre ofset ve boyutlar) tek bir yerde tutun ve varlık verileriyle karıştırmayın. BeyondCompare gibi bir ikili fark aracı kullanarak paket dosyalarınızın iki farklı derlemesini karşılaştırın ve yüzlerce farklı değişikliğin ortaya çıkmadığından emin olun.

Bu kuralları takip ederseniz yama boyutunu minimumda tutarsınız, ve sadece yeni içeriğin indirilmesi gerekir. Hem müşterileriniz bunun için size teşekkür edecektir, hem de daha fazla güncelleme göndererek ürününüzün kalitesini artırabileceksiniz.

Oyun paketinizin SteamPipe güncelleme işlemiyle düzgün olarak etkileşime girmediğinden şüpheleniyorsanız, lütfen Valve temsilcinizle iletişime geçin; bu konuda yardımcı olacak gelişmiş özellikleri etkinleştirmeyi araştırabiliriz.

Building Retail Install Discs

SteamPipe oyunları için bir fiziksel disk oluşturmak için, öncelikle bir derleme projesi dosyası kurmalısınız.
Bu örnekte SKU dosyası "sku_goldmaster.txt" olarak adlandırılmaktadır:
"sku" { "name" "Test Game Installer" // "isim" " Test Oyun Yükleyici" "appid" "202930" "disk_size_mb" "640" // "disk_boyutu_mb" "640" "included_depots" //"dâhil edilen depolar" { "1" "202931" "2" "202932" } }
Akılda tutulması gereken bazı ipuçları:
  • Fiziksel disk görüntülerinin yazılacağı, yeni bir klasör oluşturun. Ör: "D:\fiziksel_diskler". Yalnızca included_depots bölümlerindeki depolar eklenir; artık hariç tutma bölümü bulunmamaktadır.
  • Yükleyici görüntüleri derlemek için Steam.exe'yi (-dev ya da -console komut satırı parametreleri ile) ya da steamcmd.exe'yi kullanabilirsiniz. Her iki durumda da "build_installer" komutunu kullanın.
  • Oyuna ve fiziksel diske koymak istediğiniz tüm depolara sahip olan bir Steam hesabı ile giriş yapın. Diğer türlü, hesabın özel yetkilere sahip olması gerekmezdi ve herkes yükleme diskleri oluşturabilirdi.
  • Steam.exe'yi kullanıyorsanız diğer tüm indirmeleri durdurun.
  • Konsol sayfasına gidin ve build_installer komutunu çalıştırın:
    build_installer sku_goldmaster.txt "D:\fiziksel_diskler"
    Tüm depolar ilk defa yeniden indirileceği için derleme biraz vakit alabilir.
  • Yerel bir içerik sunucusunu kullanarak bir GM derliyorsanız şunu çalıştırın:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\fiziksel_diskler" local
    Çıkarma, "Yedekleme"ye başvurur, zira "Perakende satış yükleme diski" ve yerel oyun yedeği temelde aynı şeydir.
  • "Backup finished for AppID..." mesajını gördüğünüzde, yükleme diski görüntüleri hazırdır. Yedek derleme hakkında daha fazla detayı logs\backup_log.txt dosyasında bulabilirsiniz.
  • "disk_size_mb" kısmında belirtildiği gibi "D:\fiziksel_diskler" konumunda her biri en fazla 640 MB olan yeni dizinler (Disk_1, Disk_2, Disk_3...) bulunmaktadır. Her disk klasörü, bir "sku.sis" dosyası ve her depo için birer .csd ile .csm dosyası içerir. Daha büyük depolar birkaç disklik yer kaplayabilir. Perakende satış disklerindeki tüm içerikler her zaman (yerel yedek dosyaların aksine) şifrelenir. SDK GM kurulum dosyalarını (setup.exe, setup.ini vb.) ilk diskinizin dizinine kopyalayın, böylece fiziksel disk yükleyicisi tamamlanmış olacaktır.
  • macOS için GM oluştururken goldmaster/disk_assets/SteamRetailInstaller.dmg görüntüsünü Mac üzerinde açtığınızdan emin olun. Ardından orada bulunan uygulamayı alın ve medyanızın kök dizinine kopyalayın. Yükleme uygulamasının adını değiştirmeniz, simgeyi markalamanız ve pencereyi yalnızca yükleyiciyi gösterecek şekilde dekore etmeniz iyi olur.
  • macOS için çoklu disk GM'si oluştururken, her disk birimini isimlendirmeyi unutmayın. Birim adı, bağlama yolunun bir parçası hâline gelir ve isimler uyuşmazsa yükleyici bir sonraki diske geçemez.

Bir beta dalından isteğe bağlı olarak fiziksel disk için yükleyici derlemek

Yukarıdaki süreç varsayılan dalı kullanarak bir fiziksel disk yükleyicisi oluşturur. Beta dalı kullanarak bir yükleyici oluşturmanız gerekiyorsa öncelikle "baseline". adında bir beta dalı oluşturmanız gerekir. Daha sonra, bu baseline dalından derleme yapmak için aşağıdaki komutu kullanın:
build_installer 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

Fiziksel diskteki yükleyiciden DLC yüklemek

Bazı durumlarda, fiziksel diskteki yükleyicinizi, DLC paketlerinizi içerecek şekilde oluşturmak isteyebilirsiniz. Böyle durumlarda, yükleyiciyi oluşturma süreci sadece birkaç değişiklik gerektirir.
"sku_goldmaster.txt" dosyasının içinde, "included_depots" bölümünde DLC'lerin uygulama kimliklerini dâhil edin. "build_installer" işlemini çalıştırdıktan sonra, yükleyici için oluşturulan sku.sis dosyasını bulun ve bir metin düzenleyici ile açın.
"apps" bölümüne DLC'lerin uygulama kimliklerini dâhil edin. Örneğin elimizde AppID'si 1000 olan ve DLC AppID'si 1010 olan birer uygulama ve DLC'si olsun. "apps" bölümü aşağıdaki şekilde ayarlanır:
"apps" { "0" "1000" "1" "1010" }
Bu, Steam'in DLC için sahiplik doğrulaması yapmasını sağlayacaktır. Eğer DLC, Steam'e giriş yapılan hesap tarafından alınmamışsa kullanıcıdan anahtar girmesi istenir.

Tek bir disk/yükleme paketine birden fazla uygulama için fiziksel yükleyici derlemek

Birden fazla sayıda SteamPipe uygulamasını içeren bir GM derlemek için, her uygulama yükleyicisini teker teker derleyin ancak hepsi aynı çıktı klasörüne işaret ediyor olsun. Her derleme kendini hâlihazırda var olan yükleme görüntüsüyle birleştirecektir.

Bir perakende yükleme diskini özelleştirmek

Perakende yükleme diskinizi özelleştirme hakkında daha fazla bilgi için bkz. Gold master diskini özelleştirmek.

Piyasaya Sürülmeden Önce Oyunları Yüklemek

Varsayılan olarak perakende disklerdeki ve içerik sunucularındaki tüm içerik daima şifrelenir. Oyunu ön yükleme moduna geçirmek, oyuna sahip olanların, içeriği indirebilecekleri, ancak kullanıcıların diskinde şifreli hâlde kalacağı ve oynanamayacağı anlamına gelir. Oyun resmî olarak piyasaya sürüldüğünde, Steam önceden yüklenmiş olan içeriklerin şifresini kaldıracak ve kullanıcı, oyunu oynayabilecektir.

Oyunu ön yükleme moduna geçirmek şu durumlarda önerilir:
  • Shipping retail discs with product keys before the game is actually available (0-day piracy).
  • Ön sipariş uygulayan ve boyutu 20 GB'tan büyük olan oyunlar.

Oyununuzun ön yüklenmesi gerektiğini düşünüyorsanız, lütfen Steam Yayıncılık'a bir talep gönderin.

DLC Derlemek

DLC, ana oyunun bir deposu olarak derlenir. Ayrıntılı bilgi için İndirilebilir İçerik (DLC) belgelendirmesine göz atın.

SteamPipe Sorun Çözme

steamcmd aracılığıyla giriş yaparken alınan "Login Failure: Account Login Denied Failed" hatası

Sebebi: Muhtemelen SteamGuard giriş yapılmasını engelliyordur. Çözüm:
  • Oturum açmaya çalıştığınız hesapla ilişkili e-postayı kontrol edin ve Steam Destek'ten gelen e-postaya göz atın. Bu e-postadaki kodu kopyalayın.
  • steamcmd: set_steam_guard_code komutunu çalıştırın.
    [*] steamcmd: [code-inline]Steam>login
    ile yeniden giriş yapmayı deneyin.
[/list]

İndirme Sorunları İçin Genel Sorun Giderme

  • Restart computer, modem, router, etc.
  • Güvenlik duvarı ayarlarını doğrulayın. The new system requires port 80 (HTTP) and all other Steam ports, listed here.
  • Antivirüs ve spam engelleyici programları geçici olarak devre dışı bırakın.
  • Ayarlar->İndirmeler kısmından Steam indirme bölgesini kontrol edin. Bunun, sizin konumunuza uyması gerekir.
  • İndirmeyi durdurun, oyunu kaldırın ve yeniden yükleyin (bildirim önbelleklerini temizleyin).
  • Steam'den çıkın, Steam yükleme klasörünüzün içindeki appcache ve depotcache klasörlerini silin.
  • Steam indirme bölgenizi uzaktaki başka bir bölgeye ayarlamayı deneyin. Size yakın olan içerik sunucusu hatalı veri gönderiyorsa bu işe yarayabilir.

Mac ve/veya Linux derlemelerim hiçbir dosya yüklemiyor. Neden?

Oyununuzun veya uygulamanızın farklı platformlardaki yüklemelerini Steam aracılığıyla test ediyorsanız derlemenin Windows'ta dağıtıldığı ancak SteamPipe işleminiz Mac ve/veya Linux depolarına yükleme yapmak için ayarlanmış olmasına rağmen Mac veya Linux'ta herhangi bir dosya dağıtmadığı bir durumla karşılaşabilirsiniz. Dağıtılan pakete alternatif depolarınızı eklemeyi içeren, kolayca gözden kaçırılan bir adım vardır. Bir pakette hangi depoların dâhil edildiğini aşağıdaki adımlarla kontrol edebilirsiniz:
  1. Uygulama Yöneticisi sayfanıza gidin.
  2. İlişkili Öğeleri Görüntüle bölümünden, Demoları, bütün ilişkili paketleri, araçları ve DLC’leri görüntüle seçeneğine tıklayın.
  3. İndirmek istediğiniz paketin adına tıklayın.
  4. İçerilen Depolar bölümünü inceleyin.
  5. Depo Ekle/Kaldır özelliğini kullanarak pakete atanmış depoların doğru setler olduğundan emin olun.
Bu konuda yardımcı olabilecek birkaç tartışma konusu da mevcuttur:

steamcmd.exe’yi çalıştırmak şu hataya yol açıyor: "SteamUpdater: Hata: Steam’in güncellenmesi için çevrim içi olunması gerek. Lütfen ağ bağlantınızı kontrol edin ve tekrar deneyin."

Çözüm: İnternet Seçenekleri->Bağlantılar->Lan Ayarları yolunu izleyin ve Otomatik olarak ayarları belirle ayarını kontrol edin.

Uygulamayı çalıştırmak şu hataya yol açıyor: "HATA! 'DepotBuild for scriptname.vdf' Başarısız- durum = 6."

Olası Nedenler:
  • Hesap uygulama için gerekli izinlere sahip değil.
    • app_build.vdf’deki app ID’nin doğru olduğunu kontrol edin.
    • Derleme hesabının App ID için doğru izinlere sahip olup olmadığını kontrol edin.
  • Steamcmd depo içeriklerini bulamıyor.
    • app_build betiğindeki “contentroot”un, betik dosyasının lokasyonuna göre geçerli bir yol olduğunu kontrol edin.
    • depot_build betiğindeki “LocalPath”in, app_build betiğinin yoluna göre alakalı olup olmadığını kontrol edin. Asıl içeriğin yola dâhil olduğunu kontrol edin.

Uygulamayı çalıştırmak şu hataya yol açıyor: "HATA! Uygulama NNNNN için uygulama bilgisi alınamadı (giriş ve aboneliği kontrol edin)"

Bu, Steam’in uygulama hakkındaki bilgiyi ya var olmadığından ya da kullanıcının uygulamaya erişimi olmadığından dolayı alamadığı anlamına gelir.
  • NNNNN’nin uygulama için atadığınız app ID olup olmadığını kontrol edin.
  • app_build.vdf’deki app ID’nin doğru olup olmadığını kontrol edin.
  • Eğer yeni bir app ID ise, Steamworks uygulama yönetici ayarının yayınlandığını kontrol edin. Yeni uygulamaların yapılandırma sekmesinde bir SteamPipe yükleme dizinine, depo sekmesinde bir depoya ve yayınla sekmesinde bütün yayınlanmış değişikliklere sahip olması gerekir.
  • Eğer her şey doğru görünüyor ise, hesabınızın app ID’nin sahibi olup olmadığını kontrol edin.

Başlatılırken görülen ”[AppName] yüklenirken bir hata ile karşılaşıldı (geçersiz içerik ayarı)”

Olası Nedenler:
  • Yüklemek istediğiniz daldan hiçbir derleme yayınlanmamış.
    Çözüm: https://partner.steamgames.com/apps/builds/ adresine giderek derlemenizi bir dal üzerinden yayınlayın ve Steam istemcisinde o dalı seçin (burada açıklandığı gibi).
  • Geçersiz oyun başlatma ayarları.
    Çözüm: https://partner.steamgames.com/apps/config/ adresine giderek oyununuzun uygulama yöneticisindeki Yapılandırmalar sekmesi altındaki başlatma ayarlarını doğrulayın.
  • Oyunu yaptığınız Depo ID’lerine sahip değilsiniz.
    Çözüm: Gerekli depoların geliştirici aboneliğine eklendiğinden emin olun (ayrıntılı bilgi için Paketleri düzenlemek belgelendirmesine bakın).

Başlatılırken görülen "Hata kodu 15"

Bu CEG sunucularının istenilen CEG exe’sini (yürütülebilir dosyasını) reddettiği anlamına gelir. Oyun sayfasındaki yayın durumunu kontrol edin. Eğer "oynanabilir" değilse yayın durumunu geçersiz kılan Steam anahtarları istemek durumundasınız.

Başlatılırken görülen ”Steam sunucuları isteğinizi gerçekleştirmek için çok meşguller... Hata Kodu (2)"

Bu CEG sunucularının eşleşen bir CEG exe’sini (yürütülebilir dosyasını) bulamaması anlamına geliyor. Çalışan bir CEG yürütülebilir dosyasına sahip olduğunuzu uygulama yöneticisi sayfanızdaki CEG sekmesinden tekrar kontrol edin. "Durum" butonuna basarak, ayarlandığından emin olun.

Bir steamcmd komutunun ne olduğunu veya nasıl çalıştığını hatırlamıyorum

Steamcmd’de "find" komutunu kullanarak herhangi bir steamcmd komutunu arayabilirsiniz. Bu, komut adında kısmi eşleştirme yapacak ve komut söz dizimini listeleyecektir.
Steam>find build_installer ConVars: Commands: build_installer :
[/code-inline]