Sonsuz harita nasıl üretilir?
Minecraft’ta bir yöne yürümeye başladığında dünya hiç bitmiyor. Bunun sırrı prosedürel gürültü: Perlin gürültüsü gibi, verdiğin koordinata bir yükseklik döndüren matematiksel bir fonksiyon. Üç güzel özelliği var. Çok hızlı (mikrosaniyeler), sonsuz (her koordinat için çalışır) ve tohuma bağlı (aynı seed her zaman aynı dünyayı verir). Bu sayede oyun, dünyanın tamamını üretmeden sadece oyuncunun yakınını hesaplayabiliyor.
Sorun şu: Gürültü bir şey öğrenmiyor. Dağ sıraları, nehir havzaları, kıta ölçeğinde bir düzen yok. Sonuç büyük ölçekte tekdüze ve tekrar eden bir görüntü.
Difüzyon gerçekçi ama tuvali sınırlı
Resim üreten yapay zekâların yöntemi difüzyon: Rastgele gürültüyle başla, eğitilmiş model onu adım adım temizleyip anlamlı bir görüntüye çevirsin. Bu yöntemin metne uygulanmış halini DiffusionGemma yazısında anlatmıştık. Gerçek yükseklik haritalarıyla eğitilen bir difüzyon modeli de inandırıcı arazi üretebilir. Ama genelde sabit büyüklükte bir tuvalde çalışır. Büyük görüntüler için kullanılan MultiDiffusion, tuvali üst üste binen pencerelere bölüp her pencerenin tahminini ortalıyor. Yine de tuval baştan belli olmalı; sonsuz bir dünya için bu mümkün değil.
InfiniteDiffusion: Sadece sorduğun yeri hesapla
Goslin’in fikri, MultiDiffusion’ı tembel (lazy) hale getirmek. Bir bölgeyi istediğinde algoritma sadece o bölgeye değen pencereleri temizliyor ve sonuçlarının ağırlıklı ortalamasını alıyor. Uzaktaki hiçbir şeye bakmıyor. Hesaplanan parçalar sınırsız boyutlu, seyrek bir önbellekte tutuluyor.
Bunun sonuçları, Perlin gürültüsünün sevilen özellikleriyle birebir aynı:
- Tohuma bağlı: Çıktı sadece seed’e ve koordinata bağlı. Hangi sırayla gezdiğin fark etmiyor.
- Sabit maliyetli erişim: Sabit büyüklükte bir bölgeyi sormanın maliyeti, dünyanın neresinde olduğundan ve ne kadarının üretildiğinden bağımsız. Binlerce kilometre öteye ışınlanabilirsin.
- Paralel: Aynı adımdaki pencereler birlikte hesaplanabiliyor.
Algoritma yeniden eğitim gerektirmiyor; mevcut bir difüzyon modelinin üzerine takılabiliyor. Depoda Stable Diffusion ile sonsuz panorama üreten küçük bir örnek de var.
Dağ ile dere aynı haritada
Arazinin zor yanı ölçek. Mariana Çukuru’ndan Everest’e yükseklik farkı yaklaşık 19 kilometre, ama araziyi arazi gibi gösteren sırtlar ve dere yatakları birkaç metre. Tek bir sayı aralığında ikisini birden iyi öğrenmek zor. Makale bunu Laplace kodlamasıyla çözüyor: Haritayı bulanık, kaba bir katman ile ondan geriye kalan ince ayrıntı katmanı olarak ikiye ayırıyor. Model ikisini ayrı ayrı üretiyor.
Üstüne bir model hiyerarşisi var. En üstteki model piksel başına yaklaşık 23 kilometre çözünürlükte kıtaların kabaca yerleşimini çiziyor. Ortadaki 90 metre çözünürlükte 46 kilometrelik parçalar üretiyor, son model ayrıntıyı ekliyor. Eğitim verisi gerçek Dünya ölçümleri: karada MERIT yükseklik verisi, denizde ETOPO1, iklim için WorldClim.
Ne kadar hızlı?
Makaleye göre eğitim bir RTX 3090 Ti üzerinde yaklaşık iki hafta sürüyor. Aynı kartta ilk 512×512 parça 1,7 saniyede, sonrakiler 0,66 saniyede geliyor ve 2 GB civarında ekran kartı belleği yetiyor. Yazar bunu yörünge hızının 9 katında uçan birine yetişecek hız olarak özetliyor. Gerçekçilik ölçüsü FID’de Perlin karışımı 186,7, InfiniteDiffusion 14,8 alıyor (düşük olan daha iyi).
Bedeli de var. Perlin mikrosaniyeler sürerken burada saniyeler konuşuyoruz. Dağınık, küçük sorgular verimsiz. Minecraft’ta bir biyomu aratmak (/locate biome) ve keşif haritaları şimdilik çalışmıyor.
Kod MIT lisanslı. Minecraft Java için Fabric mod’u hazır: Dünyayı seed ile paylaşabiliyor, çok oyunculu oynayabiliyorsun. Videoya göre makalenin tek yazarı olan bağımsız bir araştırmacının SIGGRAPH’a kabul edilmesi de az rastlanan bir şey.
Düşün
- Bir oyun dünyası “öğrenilmiş” olunca tasarımcının kontrolü azalır mı, artar mı?
- Sadece istenen parçayı hesaplayan bu yaklaşım arazi dışında nerede işe yarardı? Şehir, doku, müzik?
Videoyu izle
Kaynaklar (5, İngilizce)
- Two Minute Papers: Minecraft Was Missing One Brilliant Idea (video) (yeni sekmede açılır)
- Project page: InfiniteDiffusion and Terrain Diffusion (yeni sekmede açılır)
- arXiv 2512.08309: InfiniteDiffusion: Bridging Learned Fidelity and Procedural Utility for Open-World Terrain Generation (yeni sekmede açılır)
- GitHub: xandergos/terrain-diffusion (yeni sekmede açılır)
- Modrinth: Terrain Diffusion (Minecraft mod) (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.