4 puan yazan GN⁺ 2025-01-05 | 1 yorum | WhatsApp'ta paylaş

Voxel Space

Voxel Space için web demosu

Tarihçe

  • 1992 yılında CPU'lar günümüzdekinden 1000 kat daha yavaştı ve GPU hızlandırması ya yaygın değildi ya da çok pahalıydı.
  • 3D oyunlar yalnızca CPU'da hesaplanıyordu ve render motorları tek renkli poligonları işliyordu.
  • 1991'de MicroProse'in Gunship 2000 oyunuyla, 1992'de NovaLogic'in Comanche oyunu piyasaya çıktı.
  • Comanche, dönemine göre çok iyi grafikler sunuyor, doku, gölgeleme ve gölgeleri gösteriyordu.

Render algoritması

  • Comanche, Voxel Space adlı bir teknoloji kullandı; bu teknoloji, ray casting ile benzer bir fikre dayanır.
  • Voxel Space motoru 2.5D bir motordur ve tipik bir 3D motorunun sunduğu tüm serbestliği sunmaz.
Yükseklik haritası ve renk haritası
  • En basit şekilde araziyi temsil etmenin yolu yükseklik haritası ve renk haritası kullanmaktır.
  • Comanche oyununda 1024 x 1024 boyutunda, 1 baytlık yükseklik haritası ve renk haritası kullanılmıştır.
  • Bu haritalar periyodik olmakla birlikte, karmaşık yapıları temsil edemez; ancak renk haritası zaten gölgeleme ve gölgeleri içerdiğinden render sürecinde aydınlatma hesaplamaya gerek kalmaz.
Temel algoritma
  • 3D motorun render algoritması oldukça basittir.
  • Voxel Space motoru, yükseklik ve renk haritalarını rasterleştirerek dikey çizgiler çizer.
  • Ekranı temizler ve arka plandan öne render ederek örtüşmeyi (gizlemeyi) garanti eder.
  • Gözlemciden olan optik uzaklığa karşılık gelen harita çizgilerini belirler.
  • Çizgiyi rasterleştirip ekranın kolon sayısına uydurur.
  • 2D haritadaki çizgi segmentlerine karşılık gelen yüksekliği ve rengi alır.
  • Yükseklik koordinatına perspektif projeksiyonu uygular.
  • Perspektif projeksiyonundan alınan yüksekliği ve ilgili rengi kullanarak dikey çizgileri çizer.
Rotasyon ekleme
  • Yukarıdaki algoritmayla yalnızca kuzeye bakılabilir.
  • Farklı açılarda bakmak için koordinatları döndüren birkaç satır koda ihtiyaç vardır.
Performans iyileştirme
  • Performansı artırmak için çeşitli hileler vardır.
  • Arka plandan öne doğru çizmek yerine, önden arkaya doğru çizim yapılabilir.
  • Gizlemeyi garanti etmek için ek bir y-buffer gerekir.
  • Ayrıntı düzeyini ayarlayarak yakın bölgelerde daha fazla, uzak bölgelerde daha az ayrıntı render edilir.

Bağlantılar

  • Web proje demo sayfası
  • Voxel arazi motoru tanıtımı
  • Kişisel web sitesi

Harita

  • Renk, yükseklik

Lisans

  • Yazılım kısmı MIT lisansı kapsamındadır.
  • Voxel Space teknolojisi bazı ülkelerde hâlâ patentli olabilir.
  • Renk ve yükseklik haritaları Comanche oyunundan tersine mühendislikle elde edildiği için lisans kapsamı dışında bırakılmıştır.

1 yorum

 
GN⁺ 2025-01-05
Hacker News Yorumları
  • Geçmişin özgün ve zarif algoritmalarının sihirli bir deneyim sunduğu günleri özlüyorum. Donanım kaynaklarının kısıtlı olduğu dönemde geliştiriciler, oyunları geliştirmek için yeni teknikler ve yaratıcılıklarını ortaya koydu.

    • Bugünlerde PICO-8 gibi fantezi platformlar, AAA stüdyolarının tekrarlayan oyunlarından daha ilgi çekici.
    • VoxelSpace gibi algoritmalar, araziyi az kodla nasıl renderlayacağınıza dair iyi bir örnek sunuyor.
  • mars.com adlı programa ait videolar çok ilginç.

    • Pouet sitesinde ilgili bilgileri bulabilirsiniz.
  • Bu renderleme yöntemi ilgi çekici olsa da, rastgele bir hacmi renderlayamadığı için bunu voxel olarak sınıflandırmak zor. Aslında bu, çok iyi yapılmış bir yükseklik haritası renderlayıcısı.

  • Başlıkta 2020 veya 2017 tartışmalarına atıf olması mümkün. 2021'de de aynı repoda buna dair bir tartışma vardı.

  • Programlamayı ilk öğrenmeye başladığımda QBasic ile bir arazi yükseklik haritası üreten ve izometrik bir stilde renderlayan bir program yazmıştım. Bu, programlamaya devam etmemi sağlayan etkenlerden biriydi.

  • Bu teknikle Adventure Game Studio'da bir oyun geliştirdim. Motorun eski sürümünde optimize edilmemişti ama bir gün güncelleyeceğim.

  • Çoğu modern oyunda dağlar boşken, bu yöntem onları daha sağlam gösteriyor.

  • Comanche oyununu ilk oynadığımda hissettiğim heyecanı hatırlıyorum. Gelecekte ya da bir filmden çıkmış gibi bir his veriyordu.

  • Yazılım renderlayıcısı projeleri eğlenceli ve hafta sonu projeleri için ideal. Benzer bir algoritmayı geçmişte uygulamıştım, ama şu andaki uygulama çok daha güçlü ve daha basit.

  • GPU'lar voxel tabanlı alternatif bir zaman çizgisinde yaşamak isterim