Steamworks Belgeleri
Steam'e Yükleme Yapmak
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.
  • Public and private "beta" branches, allowing multiple builds to be tested.
  • 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). Hover over the (?) to learn more about each field.

    The example below shows 5 launch options, 2 for Windows, 2 for macOS and 1 for Linux.
    Launch option 3 will only be shown on Windows if the user also owns the DLC specified.

    updatedlaunchoptions_3.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.
Note: If your executable is in a sub-folder of the main installation folder, add the sub-folder name in the Executable field. Başında eğik çizgi ya da noktalar kullanmayın.
Platform Note: As shown above, macOS applications may be launched by specifying either an app bundle (Game.app) or a script/binary (Game.app/Contents/MacOS/Game). In general the app bundle format should be preferred if possible as it allows macOS to more correctly determine launch parameters in the manner it would if launched manually outside of Steam.

One instance of this to note is that currently applications that are launched through an app bundle on Apple Silicon devices will launch the best architecture available in the application whereas direct binary launches will use the same architecture as the Steam process (currently x86_64).

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

Download and unzip the latest version of the Steamworks SDK on the machine you will be uploading builds on.

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

The ContentBuilder directory is where your game content and SteamPipe build tools will live. This directory contains the following sub-directories:
  • 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

It's recommended that you run steamcmd.exe directly in the builder folder for your platform once to bootstrap your build system. This should populate your builder directory with all the files it needs to build depots.

The ContentServer directory contains the tools for running your own SteamPipe Local Content Server if you choose to do so.

macOS'de SteamCmd

To enable SteamCmd on macOS you must complete the following steps:
  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.
You can then follow the rest of this documentation (substituting paths as appropriate) to create depot and app config files for uploading your content to Steam.

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

To upload files for your app with SteamPipe, you must create scripts which describe your build and each depot that will be included in it. The example scripts shown here are in the Tools\ContentBuilder\scripts folder in the Steamworks SDK.

SteamPipe GUI Aracı

If you're running on Windows and would prefer a GUI tool to help create these config files and upload your builds you can use the SteamPipeGUI which is available in the tools folder of the Steamworks SDK. Included in the zip are additional instructions to get you started.

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


Let's start with the most basic build script possible. In our example we have a game (AppID 1000) that has one depot (DepotID 1001) and want to upload all files from a content folder and it's subfolders. We just need a single build script for that, take a look at "simple_app_build.vdf" included in the SDK :

"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 } } } }

Adjust the AppID and DepotID for your game as needed. To kick off a build you need to run steamcmd and pass a couple of parameters :
tools\ContentBuilder\builder\steamcmd.exe +login <account_name> <password> +run_app_build ..\scripts\simple_app_build.vdf +quit

NOT: Your first attempt at running a build may fail due to Steam Guard. If the login fails due to Steam Guard, check your email for the Steam Guard code, and run steamcmd as: steamcmd.exe "set_steam_guard_code <code>", and try again. After logging in with Steam Guard once, a sentry file is used to verify the login is genuine.

If you are using steamcmd from a machine or VM that gets re-imaged frequently, you should include the sentry and config file in your image so you won't be prompted for a Steam Guard every time. The sentry file is located in <Steam>\ssfn<hashOfNumbers>, and the config file is located in <Steam>\config\config.vdf.

The following steps occur during a SteamPipe build:
  1. Steamcmd.exe, kendisini en son sürüme günceller.
  2. Steamcmd.exe, verilen derleyici Steam hesabı ile Steam arka uca giriş yapar.
  3. 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.
  4. 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.
  5. 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.
  6. Yeni dosya öbekleri sıkıştırılır, şifrelenir ve daha sonra MDS’e yüklenir.
  7. 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.
  8. Bütün depolar işlendikten sonra, MDS uygulama derlemesini bitirir ve ona bir global BuildID sağlar.
  9. 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.


Once the build is complete you can see it on your app builds page, in this case it would be https://partner.steamgames.com/apps/builds/1000. There you can set that build live for the default branch or any beta branch and users will be able to download this update with a couple of minutes.

Gelişmiş Derleme Betikleri


If your app has a lot of depots with complex file mapping rules, you can create a depot build script for each depot which will be referenced by the app build script. First let's take a look at available parameters in the app build script:

  • 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.

Example app build script "app_build_1000.vdf" is using all options:
"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" } }

This app build script references two depot build script files that specify all file mappings and file properties. The following instructions are available in a depot build script ( and also if the section is included directly into the app build script).

  • 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.

Example depot build script depot_build_1002.vdf showing use of all options:
"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: You can name these scripts what ever you want, but we use the names app_build_<AppID> and depot_build_<DepotID> for consistency. If you know that you'll be building apps on this machine, it might be a good idea to create sub-directories in your scripts directory for each application, to help organize each application's build scripts.

Güncellemeleri Yönetme

After your app releases to customers, your customers will be receiving the build marked as the Default build. When uploading a new build it's always a good idea to test it before shipping it to your customers, for more information on how to successfully do this see Steam Üzerinde Test Etmek.

Derleme Sorunlarını Ayıklamak

If your build wasn't successful, you should look in your output directory for error information, not the console where the build script was run. Most error information can be found in the *.log files.
You can use these Steam client commands and client-side files to debug issues:
  • "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

The old Steam content system would patch updates on a file level, which meant that if a single byte in a file changed, the entire new file would be downloaded by all users. This was especially inefficient if the game used pack files, which are collections of game content files in a single big file. Pack files can easily exceed 1 GB, so updates often led to unnecessarily large downloads. A common way to avoid these large downloads was to add new pack files that overrode content of already shipped pack files. That worked for updates, but it hurt new users long-term, since they ended up downloading unused, already-patched content.

The new content system fixes this problem by splitting each file into roughly 1-MB chunks. Each chunk is then compressed and encrypted before being distributed by the Steam content system. If the game content has large redundant parts, these chunks are reused and the user only has to download each repeated chunk once. However, the real strength of this system is building efficient update patches. While the system is building a patch, the new content is scanned for already known chunks. If it finds them, it reuses them. This means if you change or inject a few bytes in a big file, the user only has to download the changes.

This works well in most cases, but there are still a few pitfalls that need to be avoided when designing the content layout of a game. You may not want to compress or encrypt your game data. This is already done for in-flight downloads and retail discs by the Steam content system. If you do it too, it can reduce the effectiveness of delta patching. Compression and encryption are only advised if each individual asset within a package file is separately compressed and/or encrypted. Otherwise, a change to one asset will always require downloading several other potentially unchanged assets.

If you package multiple assets in a pack file, make sure that with each re-packaging, no unnecessary changes are made. One problematic practice is including the full name of the original source files on disk, because the names may change, depending on the build machine. Another bad pattern is including build time stamps for each file. If possible, always add new content to the end of your pack files and keep the order of existing files. Also, keep your pack file’s metadata (offset and sizes to individual assets) in one place and don’t intersperse it with the asset data. Use a binary difference tool like BeyondCompare to look at two builds of your pack files to make sure that hundreds of unwanted changes don’t show up.

Using pack files is especially useful to package lots of small files (<1 MB) into a single larger file. This will improve download speed and disk IO performance. But you might also want to avoid to put all your assets in a single huge pack file since Steam needs to copy & patch the whole file even if only a small subset of it changed. A good start would be to bundle resources of the same type together in pack files smaller than 4GB each.

If you follow these rules you will minimize patch sizes and only new content will need to be downloaded. Your customers will thank you for that and you will be able to increase the quality of your product by shipping more updates.

If you suspect that your game packaging is not interacting well with the SteamPipe update process, please contact your Valve representative and we can look into enabling advanced features to help with this.

Building Retail Install Discs

To build retail install disc for SteamPipe games, you must first setup a build project file.
In this example, the SKU file is called "sku_goldmaster.txt":
"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" } }
Some tips to keep in mind:
  • 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

The process above will create a retail installer based on the default branch. If you need to create an installer based on a beta branch, you must first create a beta branch named "baseline". Then use the following command to build from the baseline branch:
build_installer <project file> <target folder> <beta key> <beta pwd> 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

In some circumstances, you may wish to create a retail installer that includes your DLC packages. In such cases, the process to create the installer requires only a few changes.
In "sku_goldmaster.txt", include the DLC AppIDs under the "included_depots" section. Once you have run the "build_installer" process, find the generated sku.sis file for the installer and open it with a text editor.
Add the DLC AppID in the "apps" section. For example, if I had a game with AppID 1000 and DLC AppID 1010, I would adjust the "apps" section as follows:
"apps" { "0" "1000" "1" "1010" }
This will ensure that Steam checks for ownership of the DLC and prompt the user for a key if the DLC is not owned by the account that they are logging into on Steam.

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

To build a GM containing multiple Steam Pipe apps. Build each app installer one by one but point them all to the same output folder. Each build will merge itself with the already existing install image.

Bir perakende yükleme diskini özelleştirmek

See Customizing a gold master for more details on customizing your retail install disk.

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

By default, all content is always encrypted, on all retail discs and on all content servers. Switching a game to preload mode means owners can download the content, but it stays encrypted on the users' disk and can't be played. Once the game becomes officially released, Steam will decrypt the preloaded content and the user can play the game.

Switching a game to preload mode is recommended in these cases:
  • 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.

Please submit a ticket to Steam Publishing if you believe your game requires preloading.

DLC Derlemek

DLC is built as a depot of the base game. See the İndirilebilir İçerik (DLC) documentation for more information.

SteamPipe Sorun Çözme

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

Cause: Probably SteamGuard is preventing login. Resolution:
  • 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 <code> komutunu çalıştırın.
  • steamcmd: Steam>login <buildaccount> <password> ile yeniden giriş yapmayı deneyin.

İ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?

If you're testing via Steam the installation of your game or application across multiple platforms, you may run into a situation where the build deploys on Windows but doesn't deploy any files on Mac or Linux despite your SteamPipe process being setup to upload Mac and/or Linux depots. There is a step that is easily missed which involves adding your alternate Depots to the Package being deployed. You can check what depots are included in a package via the following steps:
  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.
There are a number of discussion threads about this that may also assist:

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."

Resolution: Go to Internet Options->Connections->Lan Settings and check Automatically detect settings.

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

Possible Causes:
  • 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)"

This means that Steam can't retrieve information about the app, either because it doesn't exist or the user doesn't have access to the app.
  • 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ı)”

Possible Causes:

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

This is the CEG servers rejecting the request to CEG the exe. Check the release state on the game page. If it is not 'playable', you will need to request Steam keys that override the release state.

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

This is the CEG servers failing to find a matching CEG exe. Double check that you have a working CEG executable on the CEG tab of your app admin. Click the 'status' button to make sure that it's propped.

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

Use the 'find' command in steamcmd to search for any steamcmd command. It will do partial matching on the command name and it will list out the command syntax.
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>