Super Mario, neredeyse hepimizin bildiği bir oyun. Yıllar öncesinde oynamış olduğumuz atarilerde yer alan bu oyun, teknolojinin gelişmesiyle birlikte bir hayli değişti. Ancak hala atari zamanlarındaki Super Mario, pek çoğumuzun aklının bir köşesinde kendisine yer bulabiliyor. Peki Super Mario Bros. oyununun sadece 31 kilobayt boyutunda olduğunu biliyor muydunuz?
Günümüz teknolojisi ile atarileri elbette kıyaslayamayız. Hatta şu sıralar, ilerleyen dönemlerde piyasaya sürülecek Red Dead Redemption 2’nin 150 GB, Call of Duty: Modern Warfare’ın 175 GB boyutunda olacağı konuşuluyor. Kısacası Super Mario Bros. bu devasa büyüklükteki oyunların en ufak bir dosyası bile etmiyor. Peki bu durum nasıl mümkün oldu dersiniz?
Super Mario Bros. ilk kez 1985 yılında hayatımıza girdi. Ancak o dönemlerde bugünkü oyun konsolları değil, Nintendo’nun NES isimli bir konsolu vardı. Bu oyun konsolu sadece 256 x 240 boyutlarında görüntü oluşturabiliyordu. Bu da sadece 180 kilobayt boyutundaki bir görüntünün gösterilebileceği anlamına geliyordu. Ayrıca NES, sadece 2 kilobayt boyutunda RAM’e sahipti. NES için geliştirilen oyunlar, bir çeşit kartuşla (bildiğiniz oyun kaseti) beraber geliyordu. Bu kartuşlardan her biri 8 kilobayt ile 1 megabayt arasında oyun depolayabiliyordu. Dolayısıyla oyunları NES’in belleğine aktarmanın herhangi bir yolu yoktu.
Hal böyle olunca da geliştiriciler, oyun geliştirebilmek için kartuştaki verilerin sadece 2 kilobaytını NES RAM’ine aktarmaya karar verdiler ve bu sayede de ortaya, 180 kilobaytlık görüntüleri çıkardılar. Ancak bu işlem, yapılabilirlik açısından hiç de kolay değildi. Geliştirici ekibin Super Mario Bros.’u nasıl NES ile uyumlu hale getirdiği ise, oyunun teknik belgelerindeki bazı ipuçlarıyla anlatılıyor.
Hemen yukarıda gördüğünüz bu fotoğraf, Super Mario Bros.’ta yer alan bazı şekilleri gösteriyor. Bu fotoğrafta gördüğünüz her şey, aslında Super Mario Bros.’ta bulunan ve tekrar tekrar karşımıza çıkan veri bloklarından ibaret. Görselde bulunan her küçük nokta, 16 x 16 piksel boyutundaki döşemelerden oluşuyor. Geliştiriciler, işte bu görseldeki verilerden faydalanarak Super Mario Bros.’u bölümler halindeki bir bütün haline getirebildiler. Ancak sihir, sadece bundan ibaret değil.
Gelin şimdi de Mario’nun ilk bölümünün, aslında ne kadar olduğuna bakalım;
Aslına bakacak olursak Super Mario Bros.’ta bulunan bu görüntü sıkıştırma işlemi, bugün bile geçerliliği olan bir durum. Günümüzün en gelişmiş oyunlarında bile buna benzer teknikler kullanılıyor ve bu tekniklerin bir araya getirilmesiyle de o enfes oyunlar ortaya çıkıyor. Aslında bunu şöyle düşünün; oyunlardaki evlerin çeşitliliği sınırlıdır, ayrıca oyundaki arabalar ve yapay zeka destekli karakterlerin çeşitleri de sınırlıdır. Super Mario Bros.’un oyun haline gelmesini sağlayan asıl şey de bu.
Peki bu görüntüler nasıl sıkıştırılıyor?
Geliştiriciler, görüntüleri sıkıştırmak için çeşitli algoritmalardan yararlanıyorlar. Ancak bu algoritmalar, oyunlar için geliştirilmiş olan bir şekilde değil, fotoğraflar için geliştirilmiş olarak bulunuyor. Şimdi bu durumun biraz daha derinine inecek olursak; elimizde 1 JPG dosyasının olduğunu varsayalım. Algoritmalar, görüntüyü ilk olarak 8 x 8 boyutlarındaki bloklara böler. Bölünen bloklardaki RGB renkler, YCBCr formatına dönüştürülür. Görüntü bu hale geldikten sonra da ayrık kosinüs dönüşümü uygulanır ve bu sayede görüntü sıkıştırılmış olur.
Ayrıca bu işlemler, PNG formatındaki görüntülerde de yapılabilir. Hatta PNG formatındaki görüntülerin sıkıştırılma işlemleri, ortaya daha kayıpsız sonuçlar verir. Sıkıştırıldıktan sonraki bir görüntü, çok daha kaliteli olur hatta PNG dosyalarına uygulanan sıkıştırma işlemi, JPEG türündeki dosyalar kadar büyük oranlarda yapılabilir. Bununla ilgili bir örnek vermek gerekirse;
Örneğin bu görüntünün JPG türünde sıkıştırılma yapıldıktan sonraki boyutu 106 kilobayttır. Ancak aynı fotoğraf, PNG türünde sıkıştırıldığı zaman ise sadece 5.9 kilobayt yer kaplıyor ve elbette, PNG türündeki sıkıştırma işlemi, JPG’ye oranla bir hayli iyi sonuç veriyor.
İşte Super Mario Bros.’un bu kadar küçük boyutlu olmasına rağmen uzun soluklu bir oyun olmasının altında yatan sebep, tam olarak buydu. Geliştiriciler, sahneler oluşturmak için farklı görüntüler oluşturmak yerine, tek bir görsel oluşturdular ve bu görseli algoritmalar yardımıyla sıkıştırdılar. Ardından da oyunun kendi algoritması, sürekli olarak tekrar eden görüntüleri oyunseverlere sundular. Bu sayede de Super Mario Bros. sadece 31 kilobayt boyutunda olabildi.