Kabaca anlatmak gerekirse, bir algoritma yardımıyla her dosyanın kendine has bir değeri oluyor. Doğrulama sırasında senin bilgisayarındaki bu değerler ile, normalde olması gereken değerler karşılaştırılıyor. Sen dosyada değişiklik yaparsan bu değer değişiyor. Karşılaştırma sonucunda eksik ya da değiştirilmiş dosyalar tekrardan indiriliyor.

Bulut uzerindeki dosya ile karsilastiriyor normal kisa surmesi.

İşin teknik kısmı hakkındaki detayları %100 bilmiyorum ama olan biteni tahmin etmek kolay. Checksum değerlerini çıkarıp Steam veri tabanındaki değerler ile karşılaştırıyor. Kontrol toplamı diye motomot çevirebiliriz. Çok sayıda türü olan checksum işleminde aslında bir şifreleme algoritması kullanılarak her dosya için bir anahtar sözcük çıkarılır. Bu algoritmalar öyle bir şekilde işler ki hedef dosyanın içinde bir harf bile değişse sözcük komple değişir. Bunların en yaygın türleri; CRC32, MD5, SHA-1 ve SHA-256'dır. Her biri ayrı birer algoritmadır. Steam'de hangisini kullandıklarını bilmiyorum. Sonuç olarak bir oyuna ait toplam kaç adet dosya varsa Steam her biri için checksum değeri çıkarır ve sunucularında saklar. Senin bilgisayarındaki istemci ise doğrulama esnasında sahip olduğun oyun dosyalarının tümünü diskten okuyarak her birine checksum değeri çıkarır. Sunucudaki değer ile kıyaslama yapar. Değer uyuşmazsa dosya bozulmuş veya yetkisiz bir şekilde modifiye edilmiş demektir. Bu durumda o dosya yeniden indirilir. Kendi bilgisayarındaki kişisel bir dosyanın checksum değerini öğrenmek istiyorsan HashTab isimli programı tavsiye ederim. Yıllardır kullanırım. Aşağıdaki ekran görüntüsünde bu checksum değerlerinin neye benzediğinin bir örneğini ve aynı zamanda yukarıda bahsettiğim HashTab programının sisteme kendisini entegre ettikten sonra nasıl çalıştığını göreceksin. İstediğin dosyanın özelliklerine girdiğinde yukarıda ilaveten "dosya hash'leri" isimli sekmeyi göreceksin. Buradaki ayarlara göre istediğin algoritmayı kullanarak checksum çıkarırsın. Algortimaların çıkardığı değerler farklı uzunlukta olabiliyor. İşte Steam, bir oyunun tüm dosyaları için bu işlemi yapar. Bin tane dosya varsa bin tane checksum çıkar. Kıyaslama yapar ve sadece gereken dosyayı indirir.

Yeniden indirme yapması gerekmiyor. Oyun dosyalarını bulut üzerinde doğru olan dosyalar ile karşılaştırıyor. Eksik dosya bulursa bulut üzerinden o dosyayı indiriyor. Sonuçta o dosyaları bir bulut üzerinden indiriyor zaten. Dosya doğrulama yaparken neden tekrar indirsin.

Stram üzerinden oyun dosyalarını doğrulayabiliyoruz. Ve bu işlem oyunu indirmekten kat kat daha kısa sürüyor. Benim dosyalarımı karşılaştırmak için yeniden indirme yapması gerekmiyor mu? Bu işlem nasıl bu kadar hızlı oluyor?