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
- 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
- Q: Apakah kode ini murni Bash?
- A: Tidak. Pada awal proses,
stty dipanggil untuk menonaktifkan echo, dan diaktifkan kembali saat keluar.
1 komentar
Komentar Hacker News
Permainan ini sebenarnya bukan benar-benar 3D, jadi sangat cerdas cara merender piksel dengan menjalankan ray tracing sekali per kolom.
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.
Sedih bahwa stty membutuhkan fork.
Tetap tidak mengerti kenapa memakai shell yang sangat lambat.
Tidak menyangka Bash bisa melakukan hal seperti ini.
Raycaster
awkdari 9 tahun lalu juga layak disebut.Sayang sekali saya tidak bisa menjalankan proyek ini.
viewseolah-olah disimpan ke file bernamabuffereddan langsung keluar.Hanya 300 baris kode, sangat mengesankan.
Tantangan ini sungguh luar biasa.