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

Menulis Video Game dari Nol Seperti Tahun 1987

Apa yang kita buat

  • Versi ke-11 dari protokol X lahir pada tahun 1987.
  • X11 adalah model dari sebelum GPU muncul, sehingga tidak terlalu cocok dengan perangkat keras masa kini.
  • Semua sistem Unix memiliki server X, dan di macOS maupun Windows juga bisa menjalankan aplikasi Linux GUI.
  • Protokol X11 relatif sederhana, dan bisa dimulai hanya dengan membuat soket.
  • Untuk aplikasi 2D, ini bisa berjalan tanpa perlu berinteraksi dengan GPU.

Autentikasi

  • Pada artikel sebelumnya, koneksi ke server X dilakukan tanpa autentikasi.
  • Sekarang protokol autentikasi X didukung.
  • Ini karena pada beberapa lingkungan desktop yang menggunakan XWayland, autentikasi diperlukan.
  • Autentikasi ditangani dengan mekanisme MIT-MAGIC-COOKIE-1.

Membuka jendela

  • Membuka soket domain UNIX untuk berkomunikasi dengan server X.
  • Menetapkan koneksi dengan server melalui handshake X11.
  • Membuat graphic context dan jendela.
  • Menggunakan pemanggilan map_window untuk menampilkan jendela.

Memuat aset

  • Memuat gambar yang diperlukan untuk game, lalu mengonversinya agar sesuai dengan format gambar X11.
  • Membuat Pixmap, mengunggah gambar, lalu menyalin bagian yang diperlukan ke jendela.

Opini GN⁺

  • Kesederhanaan X11: Protokol X11 relatif sederhana sehingga bisa dikomunikasikan langsung melalui soket. Ini membantu engineer pemula memahami konsep dasar network programming dan GUI.
  • Potensi optimisasi: Dengan menggunakan buffer off-screen seperti Pixmap, gambar cukup diunggah sekali lalu dapat disalin dengan cepat setelahnya. Ini adalah contoh bagus dari optimisasi performa.
  • Keunggulan bahasa Odin: Bahasa Odin menyediakan fitur yang dapat menyederhanakan tugas kompleks seperti manajemen memori. Ini memungkinkan pemrograman yang efisien.
  • Dukungan sistem lama: Metode ini dapat berjalan bahkan pada sistem lama. Ini berguna ketika perangkat lunak harus dijalankan di berbagai lingkungan.
  • Sumber pembelajaran: Menangani langsung protokol level rendah seperti X11 sangat membantu dalam memahami cara kerja internal GUI. Ini dapat berkontribusi pada peningkatan kemampuan teknis engineer.

1 komentar

 
GN⁺ 2024-06-22
Opini Hacker News
  • Komentar pertama: PC pada tahun 1987 memiliki RAM 1~2MB, dan Super NES memiliki RAM 128KB. Dulu orang membuat berkas executable yang jauh lebih kecil daripada program Microsoft. Tautan

  • Komentar kedua: X11 memang sudah tua, tetapi jika hanya mengimplementasikan fungsi dasar yang dibutuhkan untuk pengembangan game, sisanya tidak perlu dipikirkan. Menggunakan Xlib bisa membuat pekerjaan lebih mudah.

  • Komentar ketiga: Pernah membuat klon Minesweeper untuk DOS PC dengan Turbo Pascal. Mengalami masalah algoritma rekursif pada level besar, lalu menambahkan fitur untuk memilih posisi awal yang aman.

  • Komentar keempat: Mengembangkan game pada tahun 1987 jauh lebih sulit dibanding sekarang. DOS tidak mendukung multitasking sehingga alur kerja menjadi sangat tidak efisien. Tautan

  • Komentar kelima: Kecewa karena ukuran berkas wasm engine Godot minimal 50MB. Terutama untuk game 2D sederhana, optimasi sangat dibutuhkan. Secara keseluruhan tetap mengesankan.

  • Komentar keenam: Mulai tertarik pada bahasa Odin. Odin, seperti Zig, meneruskan allocator memori ke fungsi, tetapi memiliki mekanisme yang membuat penanganannya lebih sederhana.

  • Komentar ketujuh: Minesweeper di Windows 3.1 punya cheat code. Jika memasukkan kombinasi tombol tertentu, pengguna bisa membedakan kotak aman dan kotak yang berisi bom.

  • Komentar kedelapan: Menggunakan library seperti SDL hampir tidak menambah overhead, dan tetap bisa mendukung berbagai sistem operasi. Jika memakai SDL 1.x lawas, versi Linux lama pun masih bisa didukung.

  • Komentar kesembilan: Ukuran file executable Mines Windows buatan Simon Tatham sekitar 180KiB. Tautan