2 puntos por GN⁺ 2024-06-22 | 1 comentarios | Compartir por WhatsApp

Cómo crear un videojuego desde cero como en 1987

Lo que estamos construyendo

  • La versión 11 del protocolo X nació en 1987.
  • X11 es un modelo anterior a la aparición de las GPU, por lo que no encaja bien con el hardware actual.
  • Todos los sistemas Unix tienen un servidor X, y también es posible ejecutar aplicaciones Linux con GUI en macOS y Windows.
  • El protocolo X11 es relativamente simple y se puede empezar solo con crear un socket.
  • En el caso de aplicaciones 2D, puede funcionar sin necesidad de interactuar con la GPU.

Autenticación

  • En el artículo anterior, se conectaba al servidor X sin autenticación.
  • Ahora se admite el protocolo de autenticación de X.
  • Esto se debe a que algunos entornos de escritorio que usan XWayland requieren autenticación.
  • La autenticación se maneja usando el mecanismo MIT-MAGIC-COOKIE-1.

Abrir una ventana

  • Se abre un socket de dominio UNIX para comunicarse con el servidor X.
  • Se establece la conexión con el servidor mediante el handshake de X11.
  • Se crea un contexto gráfico y una ventana.
  • Para mostrar la ventana, se usa la llamada map_window.

Cargar recursos

  • Se cargan las imágenes necesarias para el juego y se convierten al formato de imagen de X11.
  • Se crea un Pixmap, se suben las imágenes y luego se copian las partes necesarias a la ventana.

Opinión de GN⁺

  • La simplicidad de X11: el protocolo X11 es relativamente simple, por lo que se puede comunicar directamente a través de sockets. Esto ayuda a ingenieros principiantes a entender los conceptos básicos de programación de redes y GUI.
  • Posibilidades de optimización: usando buffers fuera de pantalla como Pixmap, las imágenes pueden subirse una sola vez y luego copiarse rápidamente. Este es un buen ejemplo de optimización de rendimiento.
  • Ventajas del lenguaje Odin: el lenguaje Odin ofrece funciones que permiten manejar de forma sencilla tareas complejas como la gestión de memoria. Esto hace posible una programación eficiente.
  • Compatibilidad con sistemas heredados: este método puede funcionar incluso en sistemas antiguos. Resulta útil cuando se necesita ejecutar software en distintos entornos.
  • Recurso de aprendizaje: trabajar directamente con protocolos de bajo nivel como X11 ayuda mucho a entender el funcionamiento interno de las GUI. Esto puede contribuir a mejorar las habilidades de un ingeniero.

1 comentarios

 
GN⁺ 2024-06-22
Comentarios de Hacker News
  • Primer comentario: Las PC de 1987 tenían entre 1 y 2 MB de RAM, y la Super NES tenía 128 KB de RAM. Se creaban ejecutables mucho más pequeños que los programas de Microsoft. Enlace

  • Segundo comentario: X11 es antiguo, pero si implementas solo las funciones básicas necesarias para desarrollar juegos, no hace falta preocuparse por el resto. Con Xlib se puede trabajar más fácilmente.

  • Tercer comentario: Desarrolló un clon de Buscaminas para PC con DOS en Turbo Pascal. Tuvo problemas con algoritmos recursivos en niveles grandes y añadió una función para elegir con seguridad la posición inicial.

  • Cuarto comentario: Desarrollar juegos en 1987 era mucho más difícil que hoy. DOS no soportaba multitarea, así que el flujo de trabajo era muy ineficiente. Enlace

  • Quinto comentario: Le decepcionó que el archivo wasm del motor Godot mida al menos 50 MB. Sobre todo en juegos 2D simples, hace falta optimización. En general, le pareció impresionante.

  • Sexto comentario: Le interesó el lenguaje Odin. Odin, de forma parecida a Zig, pasa asignadores de memoria a las funciones, pero tiene un mecanismo que permite manejarlo de forma más simple.

  • Séptimo comentario: El Buscaminas de Windows 3.1 tenía un código de trampa. Al ingresar cierta combinación de teclas, se podía distinguir entre casillas seguras y casillas con bombas.

  • Octavo comentario: Si usas una biblioteca como SDL, casi no hay sobrecarga y puedes dar soporte a distintos sistemas operativos. Si usas el SDL 1.x heredado, también es posible soportar versiones antiguas de Linux.

  • Noveno comentario: El ejecutable de Mines para Windows de Simon Tatham pesa unos 180 KiB. Enlace