¿Por qué fue difícil
- Problema de rendimiento de Bash: Bash es muy lento, así que si ejecutas un comando por píxel no podrás alcanzar una tasa de fotogramas adecuada. No se puede mantener el estado de la pantalla en memoria y acceder a arreglos o cadenas toma mucho tiempo.
- Limitaciones matemáticas: Bash no ofrece soporte para coma flotante ni una biblioteca de funciones matemáticas. Todas las operaciones matemáticas se realizan con enteros y se escalan por
100000.
- Problemas de gráficos en terminal: Se usó un bloque medio Unicode para representar píxeles y duplicar la resolución vertical. Es necesario conocer el color del píxel adyacente, pero Bash no puede guardar estado.
- Otros problemas:
- Es difícil actualizar todo el terminal de una sola vez.
- La mayoría de los terminales no están orientados a videojuegos y es difícil manejar las entradas de teclado en tiempo real.
- Llenar el terminal con colores requiere una gran cantidad de datos.
- Bash no imprime cadenas de varias líneas de una sola vez.
- Estándares como ECMA48, VT100, VT200 y Xterm son complejos y difíciles de comprender.
- Existían dificultades con los cálculos matemáticos.
FAQ
- P: Hay problemas al cambiar el tamaño de la ventana
- P: La CPU se sobrecalienta o las computadoras antiguas se ralentizan
- R: Intenta poner la variable de entorno
FPS por debajo de 30.
- P: No funciona en Bash menor que 5
- P: ¿Es este código Bash puro?
- R: No. Al iniciar se llama
stty para desactivar el eco, y al salir se vuelve a activar.
1 comentarios
Comentarios de Hacker News
Como este juego no es realmente 3D, renderizar píxeles haciendo un solo trazado por cada columna es muy ingenioso
Si quieres ver un raycaster escrito en MS Batch, puede haber un enlace en GitHub
Creo que Bash es demasiado lento para scripting o uso interactivo
Es una pena que
sttyrequieraforkrowhammerpara invocar losioctlnecesarios sin hacerforkTodavía me cuesta entender el uso de un shell tan lento
stdoutystderr, deberíamos poder imprimir texto en pantalla más rápidoNo sabía que algo así fuera posible en Bash
También conviene mencionar que hace 9 años hubo un raycaster en
awkEs una pena no poder ejecutar este proyecto
bufferedy termina de inmediatoEs impresionante que solo tenga 300 líneas de código
Este reto es impresionante