2 poin oleh GN⁺ 2024-12-22 | 1 komentar | Bagikan ke WhatsApp

Mengapa ini sulit

  • Masalah performa Bash: Bash sangat lambat, sehingga menjalankan perintah per piksel tidak dapat mencapai frame rate yang tepat. Status layar tidak dapat dipertahankan di memori, dan mengaksesnya lewat array atau string membutuhkan waktu yang cukup banyak.
  • Batasan matematis: Bash tidak mendukung titik mengambang, dan juga tidak memiliki pustaka fungsi matematika. Semua operasi matematika dijalankan dalam bentuk integer dan diskalakan sebesar 100000.
  • Masalah grafis terminal: Untuk merepresentasikan piksel, digunakan Unicode half block guna menggandakan resolusi vertikal dua kali lipat. Perlu mengetahui warna piksel tetangga, dan Bash tidak dapat menyimpan status.
  • Permasalahan lainnya:
    • Sulit memperbarui seluruh terminal sekaligus.
    • Sebagian besar terminal bukan untuk video game, dan sulit menangani input tombol secara real-time.
    • Mengisi terminal dengan warna memerlukan banyak data.
    • Bash tidak mencetak string multi-baris sekaligus.
    • Standar ECMA48, VT100, VT200, Xterm, dan yang semacamnya rumit dan sulit dipahami.
    • Terdapat tantangan dalam perhitungan matematika.

FAQ

  • Q: Jika ukuran jendela disesuaikan, terjadi masalah
    • A: Silakan buka issue.
  • Q: CPU terlalu panas atau komputer tua terasa lambat
    • A: Coba setel variabel lingkungan FPS di bawah 30.
  • Q: Tidak berfungsi pada Bash versi di bawah 5
    • A: Betul.
  • Q: Apakah kode ini murni Bash?
    • A: Tidak. Pada awal proses, stty dipanggil untuk menonaktifkan echo, dan diaktifkan kembali saat keluar.

1 komentar

 
GN⁺ 2024-12-22
Komentar Hacker News
  • Permainan ini sebenarnya bukan benar-benar 3D, jadi sangat cerdas cara merender piksel dengan menjalankan ray tracing sekali per kolom.

    • Untuk menggambar langit, rumput, dan objek nyata, dicetak ke terminal string "gambar piksel ini lalu pindah ke bawah" sebanyak yang dibutuhkan.
    • Saya sedang mempertimbangkan pembuatan mesin render voxel untuk lingkungan yang terbatas, dan proyek ini sepertinya bisa berguna.
  • Jika penasaran apakah ada raycaster yang ditulis dengan MS Batch, Anda bisa melihat tautan GitHub-nya.

  • Saya pikir Bash terlalu lambat untuk scripting atau penggunaan interaktif.

    • Beberapa distribusi Linux paling populer juga tidak menggunakan Bash sebagai shell skrip.
  • Sedih bahwa stty membutuhkan fork.

    • Pada proyek berikutnya, diharapkan bisa menemukan cara memanggil ioctl yang dibutuhkan tanpa fork menggunakan Bash dan rowhammer.
  • Tetap tidak mengerti kenapa memakai shell yang sangat lambat.

    • Karena mayoritas aplikasi hanya perlu menulis ke stdout dan err, menurut saya kita seharusnya bisa menampilkan teks ke layar lebih cepat.
  • Tidak menyangka Bash bisa melakukan hal seperti ini.

    • Saya pikir saya mahir Bash, tetapi implementasi ini sungguh mengejutkan.
    • Pemahaman matematika saya kurang, tapi menyenangkan hanya melihatnya.
  • Raycaster awk dari 9 tahun lalu juga layak disebut.

    • Anda bisa memeriksanya melalui tautan GitHub.
  • Sayang sekali saya tidak bisa menjalankan proyek ini.

    • Tanpa tahu alasannya, view seolah-olah disimpan ke file bernama buffered dan langsung keluar.
  • Hanya 300 baris kode, sangat mengesankan.

    • Proyek ini sangat saya sukai.
  • Tantangan ini sungguh luar biasa.

    • Sulit percaya ini mungkin dilakukan.