2 puan yazan GN⁺ 2024-12-22 | 1 yorum | WhatsApp'ta paylaş

Neden Bu Kadar Zordu

  • Bash'in hızı sorunu: Bash çok yavaştır ve piksel başına bir komut çalıştırıldığında uygun bir kare hızına ulaşmak mümkün değildir. Ekran durumunu bellekte tutmak mümkün değildir ve diziler veya dizelerle erişim zaman alır.
  • Matematiksel kısıtlamalar: Bash'te kayan nokta desteği ve matematik fonksiyon kütüphanesi yoktur. Tüm matematiksel işlemler tam sayılarla yapılır ve 100000 ile ölçeklendirilir.
  • Terminal grafikleri sorunu: Pikseli göstermek için, dikey çözünürlüğü iki katına çıkarmak üzere Unicode yarım blok karakterleri kullanıldı. Komşu piksellerin renklerini bilmek gerekirken Bash, durumu saklayamaz.
  • Diğer sorunlar:
    • Terminalin tamamını tek seferde güncellemek zordur.
    • Çoğu terminal bir video oyunu terminali değildir ve tuş girişlerini gerçek zamanlı işlemek zordur.
    • Terminali renklerle doldurmak çok fazla veri gerektirir.
    • Bash aynı anda birden fazla satırlık dizeyi yazdırmaz.
    • ECMA48, VT100, VT200, Xterm gibi standartlar karmaşık ve anlaşılması zordur.
    • Matematiksel hesaplamalarda zorluk yaşandı.

SSS

  • S: Pencere yeniden boyutlandırılırken sorun oluyor
    • C: Lütfen bir issue açın.
  • S: CPU aşırı ısınıyor veya eski bir bilgisayar yavaşlıyor
    • C: FPS ortam değişkenini 30'un altında olacak şekilde ayarlamayı deneyin.
  • S: Bash 5'in altında çalışmıyor
    • C: Doğrudur.
  • S: Bu kod saf Bash mi?
    • C: Değil. Başlangıçta stty çağırarak yankı kapatılır, çıkışta tekrar etkinleştirilir.

1 yorum

 
GN⁺ 2024-12-22
Hacker News Yorumu
  • Oyun aslında gerçek bir 3B oyun olmadığı için, her sütunda yalnızca bir kez ışın izleme çalıştırıp piksel çizen yaklaşımı çok zekice

    • Gökyüzünü, otu ve gerçek nesneleri çizmek için gereken kadar "bu pikseli çizip aşağı in" dizesini terminale tekrar tekrar yazdırıyor
    • Sınırlı diğer ortamlar için bir voxel render motoru üzerinde çalışmayı planlıyorum ve bu projede işe yarayacak şeyler bulabileceğimi düşünüyorum
  • MS Batch ile yazılmış bir raycaster olup olmadığını merak ediyorsanız, GitHub bağlantısına bakabilirsiniz

  • Bash’in yavaş olması nedeniyle betik yazımı veya etkileşimli kullanım için uygun olmadığını düşünüyorum

    • Bazı popüler Linux dağıtımlarının da Bash’i betikleme kabuğu olarak kullanmaması şaşırtıcı
  • stty’nin fork gerektirmesi can sıkıcı

    • Bir sonraki projede, Bash ile rowhammer kullanarak fork olmadan gerekli ioctls çağrılarını yapmanın bir yolunu bulabileceğimi düşünüyorum
  • Hâlâ bu kadar yavaş bir kabuğu kullanmak zor geldiği için anlamıyorum

    • Çoğu uygulama yalnızca stdout ve err yazıyor, bu yüzden metni ekrana çok daha hızlı yazdırabilmeli
  • Bash ile böyle bir şeyin mümkün olduğunu bilmiyordum

    • Bash’e hakim olduğumu sanıyordum ama bu uygulama beni şaşırttı
    • Matematiksel anlayışım zayıf ama sadece izlemek bile zevk veriyor
  • 9 yıl önceki awk raycaster da anılmaya değer

    • GitHub bağlantısına bakılabilir
  • Bu projeyi çalıştıramıyor olmam üzücü

    • Nedenini bilmiyorum ama görünüm buffered adlı bir dosyaya kaydedilip hemen kapanıyor
  • Kodun yalnızca 300 satır olması etkileyici

    • Bu proje bana çok hoş geldi
  • Bu meydan okuma gerçekten müthiş

    • Bunun mümkün olduğuna inanamıyorum