Bir yazılım, uygulama veya sistem geliştirirken gözettiğimiz 2 önemli faktör bulunmakta, 1- Zaman Karmaşıklığı (Hız), 2- Boyut Karmaşıklığı.Zaman boyuttan, boyut ise zamandan her zaman önemli değildir. Bahsettiğin örnekteki gibi dosya sıkıştırmak, boyuttan tasarruf ederek zamanı arttırır (Sıkıştırılan dosyaların oyun motorunun anlayacağı şekilde geri çıkarılması için zaman harcanıyor) Sıkıştırma yaparak kullanıcının internetini kullanıp indirdiği boyutun azalması, kullanıcı deneyimini tabii ki pozitif... Daha fazla göster
Bir yazılım, uygulama veya sistem geliştirirken gözettiğimiz 2 önemli faktör bulunmakta, 1- Zaman Karmaşıklığı (Hız), 2- Boyut Karmaşıklığı.
Zaman boyuttan, boyut ise zamandan her zaman önemli değildir. Bahsettiğin örnekteki gibi dosya sıkıştırmak, boyuttan tasarruf ederek zamanı arttırır (Sıkıştırılan dosyaların oyun motorunun anlayacağı şekilde geri çıkarılması için zaman harcanıyor) Sıkıştırma yaparak kullanıcının internetini kullanıp indirdiği boyutun azalması, kullanıcı deneyimini tabii ki pozitif etkiliyor.
Gelelim asıl soruya, o zaman neden oyunlar sıkıştırılmış dosyalar gibi küçük boyutlu dosyalar yerine genişletilmiş dosyalarla çalışmak zorunda? Aslında dediğin gibi, zorunda değil. Bu kod parçalarını, görselleri, 3 boyutlu modelleri faklı bir formata sıkıştırıp oyunda kullanmayı teorik olarak başarabiliriz. Ama bu aradaki %20-30 boyut azaltmanın yanında çok çok büyük bir problem yaratacaktır. Buna biz "runtime overhead" veya direkt Türkçe çevirisi ile "çalışır zamandaki genel gider" diyoruz. Örnekten ilerlemek gerekirse; GTA oynarken bir NPC ile karşılaştığında, NPC ekranda renderlanırken onun sahip olduğu model, doku, renk, hatta diyalog gibi verilerin o anda decompress edilmesi gerekecektir. Bu da ekranda gözüken her objenin kullandığı her kaynak için bir decompression işlemi demek. Kullanılan sıkıştırma algoritmasına göre modern bilgisayarlarda gerçek zamanlı yapması neredeyse imkansız olacağı için ölçeklendirilebilir bir method hiç değil.
Burada sorgulamak gereken daha önemli ve komplike bir kısım var, dosya boyutunu düşürmek için muhakkak sıkıştırma yapmamız gerekmiyor. Bir yazılımda kullanılan dile göre yazılım geliştiricilerin yazdığı insan kodunu makine diline dönüştüren derleyiciler kullanılır, bunlar en nihayetinde küçüle küçüle işlemciye bir toplama işlemi yaptırmaya, veya ekran kartına x,y koordinatına kırmızı renkli bir pixel çiz demeye kadar indirgenebilir. Bu talimatların yazıldığı kodlar ise daha sonra çalıştırılmak üzere (Örneğin oyun içinde NPC'yi ekranda gösterirken) çalıştırılır. Bu kodların boyutu nihai üründeki boyutu belirler (Tabii ki bir oyunda ses dosyaları, görüntüler, modeller gibi bir çok varlık bulunmakta, ama sadece kod örneğinden ilerleyelim). İlk paragrafta bahsettiğim zaman, boyut pazarlığı bu seviye de geçerliliğini koruyor. Örneğin, derleyiciye optimizasyon seviyesini 1 verirsek, hızdan feragat edip bazı değişkenleri önceden hesaplayıp hafızada tutabilir, bu sayede daha sonra hesaplamasına gerek kalmayacağı için hızdan tasarruf eder, ama hafızada tuttuğu için uygulamanın boyutu artar.)
Çok Uzun Okumadım: Eksiksiz bir programda hızdan tasarruf etmek boyutu arttırırken, boyuttan tasarruf etmek hızı arttırır. İndirdiğimiz oyunlar veya diğer programlar en optimal kullanıcı deneyimi için bu pazarlığı göz önünde bulundurarak tasarlanmıştır.