Skip to main content

Steam bildirim dosyalarının açıklaması

appmanifest_*.acf dosyası nedir, içinde ne var, SteamTools'nin neden buna ihtiyacı var ve bir metin düzenleyicide nasıl okunacağı.

Son güncelleme: 2026-07-05

Her SteamTools kilidinin açılması için iki dosya gerekir. Bu sayfada ilk dosya olan appmanifest_<APPID>.acf dosyası, bir metin düzenleyicide okuyabileceğiniz ve her satırın ne yaptığını anlayabileceğiniz kadar ayrıntılı olarak açıklanmaktadır. Lua dosyası işin kolay kısmıdır (SteamTools'ye hangi depoların yükleneceğini söyleyen kısa bir komut dosyasıdır); manifesto insanların kafasını karıştıran kısımdır. Ayrıca manifest dosyasında bulunabilecek her yaygın hatayı ve uç durumu gözden geçiriyoruz, böylece bir dahaki sefere vahşi doğada bir hata gördüğünüzde, onunla ne yapacağınızı tam olarak bilirsiniz.

Dosya nedir

Manifest, Valve'nin "ACF" (Uygulama Yapılandırma Dosyası) formatında küçük bir metin dosyasıdır. ACF, INI'ye benzer şekilde bölüm başlıklarına sahip bir anahtar/değer biçimidir. Steam, steamapps dizinine şimdiye kadar yüklediğiniz her uygulama için bunlardan birini yazar. Adlandırma kuralı appmanifest_<APPID>.acf'dir; burada <APPID>, oyunun App ID'sidir.

SteamTools'nin çalışması için, SteamTools'nin izlediği bir klasörde (genellikle <SteamTools>/depotcache/) bulunan bu dosyanın bir kopyasına (veya doğru depoları ve yapıyı işaret eden bir kopyaya) ihtiyacınız vardır. Bildirinin, Steam'nin kurulumunuz için yazdığı dosyanın aynısı olması gerekmez; yalnızca doğru uygulamanın doğru yapısını tanımlaması yeterlidir. SteamTools, hangi deponun hangi yapısının alınacağını bilmek için bildirimi okur ve hangi şifre çözme anahtarının kullanılacağını bilmek için Lua dosyasını (ikinci indirme) okur.

Bir bildirimin içinde ne var?

Gerçek bir appmanifest_400.acf (Portal) şuna benzer:

"AppState"
{
    "appid"         "400"
    "name"          "Portal"
    "installdir"    "Portal"
    "StateFlags"    "4"
    "UpdateLocalTime"   "Wed Jan  1 12:34:56 2025"
    "buildid"       "1234567"
    "LastOwner"     "12345678901234567"
    "BytesToDownload"   "0"
    "BytesDownloaded"   "0"
    "AutoUpdateBehavior" "0"
    "UserConfig"
    {
        "language"   "english"
    }
    "MountedDepots"
    {
        "400"    "2345678"
    }
}

Ne arayacağınızı bildiğinizde bu alanların çoğu kendi kendini açıklayıcı niteliktedir. SteamTools için önemli olan iki şey şunlardır:

  • appid — App ID. Dosya adıyla eşleşmelidir. SteamTools dosya adına bile bakmaz, ancak Steam, dosya adı appmanifest_<appid>.acf ile başlamıyorsa bildirimi yüklemeyi reddeder. Yani eşleşmeleri gerekiyor.
  • MountedDepots — depo kimliğinden söz konusu deponun yapı kimliğine eşleme. SteamTools bunu her deponun hangi yapısının indirileceğini bilmek için kullanır. MountedDepots boş veya yanlışsa SteamTools doğru yapıyı bulamaz ve oyun başlamaz.

Diğer alanlar (UpdateLocalTime, UserConfig, LastOwner, vb.) Steam'nin defter tutma alanıdır. SteamTools bunları yok sayar. Oluşturucu bunları içermiyor çünkü LastOwner'yi başka birinin bildiriminden kopyalamak sizin değil, onun Steam kurulumuna işaret edecektir; bu bir gizlilik ve doğruluk sorunudur.

Jeneratörün size gerçekte sağladığı şey

Bu siteden bir bildirim talep ettiğinizde SteamTools'nin ihtiyaç duyduğu alanları içeren küçük bir metin dosyası alırsınız, başka hiçbir şey almazsınız. Özellikle:

-appid

  • name (istek zamanında appdetails'den çözümlendi)
  • installdir (Steam'nin kurulum dizini kuralı, küçük harflerle yazılmıştır)
  • buildid (en son genel yapı veya istediğiniz şubenin yapısı)
  • MountedDepots, uygulamada depo başına bir girişle

UpdateLocalTime, UserConfig veya LastOwner'yi eklemiyoruz çünkü SteamTools bunları okumaz ve bunları başka birinin manifest dosyasından kopyalamak sizinkine değil, başka birinin Steam kurulumuna işaret eder.

Oluşturucudan gelen bildirim, depo sayısına bağlı olarak genellikle 200-600 bayttır. Bunu, 2–4 KB olabilen tam Steam bildirimiyle karşılaştırın.

60 saniyede Lua dosyası

Lua dosyası (indirdiğiniz iki dosyadan ikincisi), SteamTools'ye bu uygulama için hangi depoların yükleneceğini söyleyen küçük bir komut dosyasıdır. Tipik bir 400_public.lua kabaca şöyledir:

addappid(400, 1, "abcdef0123456789abcdef0123456789")
setmanifest("2345678", "1234567890abcdef1234567890abcdef")
  • addappid(<appid>, 1, <depot_key>) uygulamayı kaydeder ve birincil deposu için şifre çözme anahtarını sağlar.
  • setmanifest(<depot_id>, <manifest_id>), SteamTools'yi söz konusu deponun belirli yapısına işaret eder.

Oluşturucu, hem depo anahtarını hem de bildirim kimliğini genel Steam verilerinden türetir. Gizli bir sos yok. Depo anahtarı, Steam'nin halka açık olarak yayınladığı 32 karakterlik onaltılık bir dize olan deponun şifre çözme anahtarıdır. Bildiri kimliği, deponun yine herkese açık olan bildirim dosyasının SHA-1'idir.

SteamTools neden her iki dosyaya da ihtiyaç duyuyor?

Bölünme kasıtlıdır:

  • Bildirim, SteamTools'ye uygulamanın hangi yapısının yükleneceğini söyler.
  • Lua dosyası, SteamTools'ye nasıl yükleneceğini (hangi depolara, hangi şifre çözme anahtarına) söyler.

Elinizde yalnızca manifest varsa SteamTools deponun şifresini nasıl çözeceğini bilmiyor. Yalnızca Lua dosyanız varsa SteamTools hangi yapıyı yakalayacağını bilemez. Her iki dosya da gereklidir ve App ID üzerinde anlaşmaları gerekir.

  .acf manifest                  .lua script
       │                              │
       │  "I want build 1234567       │  "use depot key X for app 400,
       │   of app 400, with depots    │   and point at manifest Y for
       │   400 → 2345678"             │   depot 2345678"
       │                              │
       └──────────┬───────────────────┘
                  ▼
            SteamTools
            (desktop client)
                  │
                  ▼
         game launches with
         the right decrypted
         build

Dallarla ilgili bir not

Bazı oyunlarda public'ye ek olarak beta veya ptb dalı bulunur. Oluşturucu, kullanıcı arayüzünde bir "Şube" alanı gösterir; bunu ayarlarsanız, döndürülen bildirim ve Lua genel yapı yerine o dalın yapısını hedefler. Varsayılan public'dir.

Şube adı, Steam'nin gösterdiği adla tam olarak eşleşmelidir. Ortak değerler public, beta, beta_1, ptb ve experimental'dir. Hangi şubeyi istediğinizden emin değilseniz alanı boş bırakın, halka açık yapıya kavuşacaksınız.

Belirli bir uygulamaya yönelik mevcut dalları keşfetmek için App ID için SteamDB'nin dalları sekmesini kontrol edin. SteamDB, şube adları ve her birinin buildid'si için yetkili kaynaktır.

Sık karşılaşılan uç durumlar

Bunlar, temel "dosyayı depotcache'ye bırakma" akışının kapsamına girmeyen durumlardır.

Herkese açık deposu olmayan uygulamalar

Bazı uygulamalar Steam'nin kataloğunda mevcuttur ancak yayınlanmış yapıları yoktur. Aramada görünüyorlar, bir App ID'ye sahipler, ancak appdetails boş bir depo listesi döndürüyor. Oluşturucu 0 baytlık bir bildirim veya yalnızca AppState başlığını içeren bir bildirim döndürecektir. Nasıl çalışır sayfasında bunun için özel bir hata var.

Şifreli ve şifrelenmemiş depolar

Oyunun "DRM'siz" olup olmadığına bakılmaksızın Steam üzerindeki her depo şifrelenir. Şifreleme, oyun dosyalarının kendisine değil depo parçalarına uygulanır; SteamTools depo anahtarını aldığında oyun dosyalarının şifresi çözülmüş olarak ortaya çıkar. Lua dosyası, SteamTools'ye bu anahtarı veren dosyadır.

Bu nedenle Lua dosyası "DRM yok" olarak tanıtılan oyunlar için bile zorunludur. DRM, Steam atölye düzeyindedir (oyunun sahibi hiçbir Steam hesabı yoktur), depo düzeyinde değildir (depo parçaları hala kablo üzerinde AES şifrelidir).

Film Müzikleri ve DLC

DLC ve film müzikleri normal Steam uygulamalarıdır. Kendi App ID'leri, kendi manifestleri ve kendi Lua dosyaları var. Bir DLC'nin veya film müziğinin kilidini açmak için, temel oyunun değil, DLC'nin App ID'si için + Lua bildirimini oluşturun. Yaygın DLC'ler "Orijinal Film Müziği" (200.000'lerin zirvesinde App ID) ve "Sezon Bileti" (App ID değişiklik gösterir) gibi şeylerdir.

Kilidini açmak istediğiniz bir temel oyun + DLC kombinasyonunuz varsa iki bildirim/Lua çiftine ihtiyacınız vardır: biri temel oyunun App ID'si için ve diğeri DLC'nin App ID'si için. Her ikisi de aynı depotcache ve scripts klasörlerine gider.

Bölgeler arası depolar

Bazı oyunlar farklı bölgeler (CN, AB, ABD, ASYA) için ayrı depolar yayınlar. Oluşturucu, Steam müşterinizin bölgesiyle eşleşen depoları seçer. Bölgeleri değiştirirseniz bildirimi yeniden oluşturun; MountedDepots eşlemesi farklı olacaktır.

Araçlar (Proton, Steamworks, Kaynak SDK)

Proton, Kaynak SDK ve Steamworks Ortak Yeniden Dağıtılabilir Öğeler gibi araçlar normal Steam uygulamalarıdır. Aynı şekilde kilitleri açılabilir. App ID'ler iyi bilinmektedir (Proton, 858280; Steamworks, 243750'dir).

Listeden kaldırılan uygulamalarla ilgili bir not

Bir oyun Steam'den kaldırıldıysa manifest ve Lua bu oluşturucuda hâlâ mevcut olabilir ancak çalışmazlar. SteamTools yukarı akış da listeden kaldırılmış bir uygulama için çalışan bir yapı elde edemez ve SteamDB de alamaz. Bunun geçici bir çözümü yok; listeden kaldırılan bir uygulamayı kullanmaya devam etmenin tek yolu, listeden çıkarılmadan önce uygulamanın bir kopyasını yüklü tutmak ve uygulamayı asla kaldırmamaktır.

Listeden kaldırılan bazı uygulamalar, listeden kaldırıldıktan sonra birkaç hafta boyunca Steam'nin appdetails uç noktası aracılığıyla teknik olarak erişilebilir durumda kalır. Bu pencere sırasında, jeneratör çalışma bildirimini döndürecektir. Pencere kapandıktan sonra 404 döndürecektir ve bizim yapabileceğimiz hiçbir şey yoktur.

Bir bildirimin doğruluğunun doğrulanması

depotcache'ye bir bildirim bırakmadan önce bu kontrol listesini gözden geçirin:

  1. Dosya adı appid ile eşleşiyor. Dosya appmanifest_<APPID>.acf olmalı ve içindeki appid alanı eşleşmelidir. Eşleşmiyorlarsa SteamTools bunu reddedecektir.
  2. name beklediğiniz oyunla eşleşir. Ad yanlışsa App ID yanlıştır.
  3. MountedDepots boş değildir. Boş bir MountedDepots bloğu, uygulamanın genel yapıya sahip olmadığı anlamına gelir.
  4. Yapı makul görünüyor. Steam yapı kimlikleri, genellikle 7-8 basamaklı tam sayılardır ve zamanla büyürler. 1 veya 0'nin buildid'si yanlış.

Dördü de geçerse manifest iyidir. depotcache'ye bırakın, Lua'yi scripts'ye bırakın, SteamTools'yi yeniden başlatın.

Sorun Giderme: "Dosyaları bıraktım ama SteamTools oyunu hala kilitli olarak gösteriyor"

On vakadan dokuzunda aşağıdakilerden biri sebeptir:

  1. Bildirimi yanlış klasöre koydunuz. Bir alt klasörde değil, SteamTools kurulumunuzun kökündeki depotcache klasöründe olmalıdır.
  2. Lua'yi yanlış klasöre koydunuz. depotcache'de değil, SteamTools kurulumunuzun kökündeki scripts klasöründe olmalıdır.
  3. SteamTools'yi yeniden başlatmadınız. Dosyalar SteamTools başlatıldığında okunur. SteamTools çalışırken bunları kopyalarsanız hiçbir şey olmuyor.
  4. Bildirimdeki yapı Steam'nin sunduğu yapıdan daha eski. Bildiriyi yeniden oluşturun — yenideki yapı kimliği en son genel sürüm olacaktır.
  5. Lua'deki dal, bildirimdeki dalla eşleşmiyor. Dal alanını beta olarak ayarlarsanız ancak Lua, public için oluşturulmuşsa, kabul etmeyeceklerdir. Her iki yerde de aynı dalla yeniden oluşturun (jeneratör bunu varsayılan olarak yapar).
  6. Lua'deki depo anahtarı yanlış. Bu nadir görülen bir durumdur; deponun yeniden anahtarlandığı anlamına gelir. Jeneratör bir sonraki istekte yeni anahtarı alır.

SteamTools.games manifestosu vs ham Steam manifestosu vs GreenLuma manifestosu

Biçim aynı, ancak içerik farklı.

| Kaynak | appid'ye sahiptir | Doğru MountedDepots | LastOwner'ye sahiptir | SteamTools ile çalışır | | ----------------------------------------- | ------------------- | ------------------------ | ----------------------- | ------------------------------------------------------------------------ | ----------------- | | Bu jeneratör | Evet | Evet (en son genel yapı) | Hayır (gösterilmedi) | Evet | | Ham Steam bildirimi (kendi yüklemenizden) | Evet | Evet (kurulu yapınız) | Evet (Steam kimliğiniz) | Evet, ancak LastOwner sizin kendi kimliğinizdir, bu da sorun değil | | Bir arkadaşın paylaştığı manifesto | Evet | Evet (kurulu yapıları) | Evet (Steam kimlikleri) | Evet, SteamTools, LastOwner'yi yok sayar | | GreenLuma bildirimi | Evet | Bazen | Hayır | Bazen — GreenLuma'nin bildirim biçimi bir alt kümedir ve MountedDepots | 'ı içermeyebilir. |

Kısacası: appid ve MountedDepots doğru olduğu sürece herhangi bir kaynaktan gelen bildirim SteamTools ile çalışır. Diğer alanlar SteamTools amaçları için gürültüdür.

Daha fazla okuma

Ayrıca bakınız