2 puan yazan GN⁺ 2024-06-22 | 1 yorum | WhatsApp'ta paylaş

1987'deymiş gibi sıfırdan video oyunu yazmak

Ne yapıyoruz

  • X protokolünün 11. sürümü 1987'de ortaya çıktı.
  • X11, GPU'lar ortaya çıkmadan önceki modele ait olduğu için günümüz donanımıyla çok iyi uyuşmuyor.
  • Her Unix sisteminde bir X sunucusu vardır; macOS ve Windows'ta da GUI Linux uygulamaları çalıştırılabilir.
  • X11 protokolü nispeten basittir ve yalnızca bir soket oluşturmakla başlanabilir.
  • 2D uygulamalar, GPU ile etkileşime girmeye gerek kalmadan çalışabilir.

Kimlik doğrulama

  • Önceki yazıda X sunucusuna kimlik doğrulama olmadan bağlanılmıştı.
  • Artık X kimlik doğrulama protokolü destekleniyor.
  • Bunun nedeni, XWayland kullanan bazı masaüstü ortamlarında kimlik doğrulamanın gerekli olması.
  • Kimlik doğrulama, MIT-MAGIC-COOKIE-1 mekanizması kullanılarak işleniyor.

Pencere açma

  • X sunucusuyla iletişim kurmak için bir UNIX domain socket açılıyor.
  • X11 handshake üzerinden sunucuyla bağlantı kuruluyor.
  • Bir grafik bağlamı oluşturuluyor ve bir pencere yaratılıyor.
  • Pencereyi göstermek için map_window çağrısı kullanılıyor.

Varlık yükleme

  • Oyun için gerekli görseller yükleniyor ve X11 görüntü biçimine uygun şekilde dönüştürülüyor.
  • Bir Pixmap oluşturuluyor, görseller yükleniyor ve ardından gerekli kısımlar pencereye kopyalanıyor.

GN⁺ görüşü

  • X11'in sadeliği: X11 protokolü görece basit olduğundan, doğrudan soket üzerinden iletişim kurulabilir. Bu, başlangıç seviyesindeki mühendislerin ağ programlama ve GUI'nin temel kavramlarını anlamasına yardımcı olur.
  • Optimizasyon olasılığı: Pixmap gibi ekran dışı tamponlar kullanılarak görseller yalnızca bir kez yüklenebilir, sonrasında ise hızlıca kopyalanabilir. Bu, performans optimizasyonuna iyi bir örnektir.
  • Odin dilinin avantajları: Odin dili, bellek yönetimi gibi karmaşık işleri daha basit ele almayı sağlayan özellikler sunar. Bu da verimli programlamayı mümkün kılar.
  • Eski sistem desteği: Bu yöntem eski sistemlerde de çalışabilir. Bu, yazılımın farklı ortamlarda çalıştırılması gereken durumlarda faydalıdır.
  • Öğrenme kaynağı: X11 gibi düşük seviyeli protokollerle doğrudan çalışmak, GUI'nin iç işleyişini anlamaya büyük katkı sağlar. Bu da mühendislerin teknik becerilerini geliştirmesine yardımcı olabilir.

1 yorum

 
GN⁺ 2024-06-22
Hacker News yorumları
  • Birinci yorum: 1987'de PC'lerde 1–2MB RAM vardı, Super NES'te ise 128KB RAM bulunuyordu. Microsoft programlarından çok daha küçük boyutta çalıştırılabilir dosyalar yapılabiliyordu. Bağlantı

  • İkinci yorum: X11 eski olsa da, oyun geliştirme için gereken temel işlevleri uygularsanız geri kalanını dert etmeniz gerekmez. Xlib kullanmak işi daha da kolaylaştırabilir.

  • Üçüncü yorum: DOS PC için bir Mayın Tarlası klonu Turbo Pascal ile geliştirdim. Büyük seviyelerde özyinelemeli algoritma sorunları yaşadım ve başlangıç konumunu güvenli seçebilen bir özellik ekledim.

  • Dördüncü yorum: 1987'de oyun geliştirmek bugüne kıyasla çok daha zordu. DOS çoklu görev desteklemediği için çalışma akışı son derece verimsizdi. Bağlantı

  • Beşinci yorum: Godot motorunun wasm dosya boyutunun en az 50MB olması hayal kırıklığı yarattı. Özellikle basit 2D oyunlarda optimizasyona ihtiyaç var. Genel olarak ise etkileyiciydi.

  • Altıncı yorum: Odin diline ilgi duymaya başladım. Odin, Zig'e benzer şekilde bellek ayırıcıyı fonksiyonlara geçiriyor, ama bunu daha pratik hale getiren mekanizmalara sahip.

  • Yedinci yorum: Windows 3.1'deki Mayın Tarlası'nda bir hile kodu vardı. Belirli tuş kombinasyonları girildiğinde güvenli karelerle bomba bulunan kareleri ayırt edebiliyordunuz.

  • Sekizinci yorum: SDL gibi kütüphaneler kullanıldığında neredeyse hiç ek yük olmuyor ve farklı işletim sistemleri desteklenebiliyor. Eski SDL 1.x kullanılırsa daha eski Linux sürümleri de desteklenebilir.

  • Dokuzuncu yorum: Simon Tatham'ın Mines for Windows çalıştırılabilir dosyasının boyutu yaklaşık 180KiB. Bağlantı