2 पॉइंट द्वारा GN⁺ 2024-06-22 | 1 टिप्पणियां | WhatsApp पर शेयर करें

1987 की तरह शुरुआत से एक वीडियो गेम लिखना

हम क्या बना रहे हैं

  • X protocol का 11वां version 1987 में आया था.
  • X11, GPU आने से पहले के मॉडल पर आधारित है, इसलिए यह आज के हार्डवेयर के साथ पूरी तरह मेल नहीं खाता.
  • हर Unix system में एक X server होता है, और macOS व Windows पर भी GUI Linux application चलाए जा सकते हैं.
  • X11 protocol अपेक्षाकृत सरल है, और केवल socket बनाकर शुरुआत की जा सकती है.
  • 2D application के मामले में, GPU के साथ interaction किए बिना भी काम किया जा सकता है.

प्रमाणीकरण

  • पिछले लेख में X server से बिना authentication के कनेक्ट किया गया था.
  • अब X authentication protocol को support किया गया है.
  • इसकी ज़रूरत इसलिए है क्योंकि XWayland इस्तेमाल करने वाले कुछ desktop environment में authentication आवश्यक होता है.
  • authentication को MIT-MAGIC-COOKIE-1 mechanism से संभाला जाता है.

विंडो खोलना

  • UNIX domain socket खोलकर X server से संचार किया जाता है.
  • X11 handshake के ज़रिए server के साथ connection स्थापित किया जाता है.
  • graphics context बनाया जाता है और window तैयार की जाती है.
  • window दिखाने के लिए map_window call का उपयोग किया जाता है.

एसेट लोड करना

  • गेम के लिए ज़रूरी images लोड की जाती हैं और उन्हें X11 image format के मुताबिक बदला जाता है.
  • Pixmap बनाया जाता है, image upload की जाती है, फिर ज़रूरी हिस्से को window में copy किया जाता है.

GN⁺ की राय

  • X11 की सादगी: X11 protocol काफ़ी सरल है, इसलिए सीधे socket के माध्यम से उससे संचार किया जा सकता है. इससे शुरुआती engineers को network programming और GUI की बुनियादी अवधारणाएँ समझने में मदद मिलती है.
  • optimization की संभावना: Pixmap जैसे offscreen buffer का उपयोग करके image को सिर्फ़ एक बार upload किया जा सकता है, और उसके बाद तेज़ी से copy किया जा सकता है. यह performance optimization का अच्छा उदाहरण है.
  • Odin भाषा के फायदे: Odin भाषा memory management जैसे जटिल कामों को सरल तरीके से संभालने की क्षमता देती है. इससे efficient programming संभव होती है.
  • legacy system support: यह तरीका पुराने systems पर भी काम कर सकता है. यह उन स्थितियों में उपयोगी है जहाँ software को अलग-अलग environment में चलाना हो.
  • सीखने का संसाधन: X11 जैसे low-level protocol को सीधे संभालना GUI के अंदरूनी कामकाज को समझने में बहुत मदद करता है. इससे engineers की तकनीकी क्षमता बेहतर हो सकती है.

1 टिप्पणियां

 
GN⁺ 2024-06-22
Hacker News टिप्पणियाँ
  • पहली टिप्पणी: 1987 के PC में 1~2MB RAM होती थी, और Super NES में 128KB RAM थी। Microsoft के प्रोग्रामों की तुलना में बहुत छोटे executable files बनाए गए थे। लिंक

  • दूसरी टिप्पणी: X11 पुराना है, लेकिन अगर गेम development के लिए ज़रूरी बुनियादी features ही implement किए जाएँ, तो बाकी चीज़ों की चिंता करने की ज़रूरत नहीं होती। Xlib का उपयोग करने से काम और आसान हो सकता है.

  • तीसरी टिप्पणी: DOS PC के लिए Minesweeper clone को Turbo Pascal में develop किया था। बड़े levels पर recursive algorithm की समस्या आई, और start position को सुरक्षित चुनने वाला feature भी जोड़ा गया.

  • चौथी टिप्पणी: 1987 में गेम develop करना आज की तुलना में कहीं ज़्यादा कठिन था। DOS multitasking को support नहीं करता था, इसलिए workflow बहुत inefficient था। लिंक

  • पाँचवीं टिप्पणी: Godot engine की wasm file size कम से कम 50MB होने से निराशा हुई। खासकर simple 2D games में optimization की ज़रूरत है। कुल मिलाकर यह प्रभावशाली था.

  • छठी टिप्पणी: Odin भाषा में रुचि जगी। Odin, Zig की तरह memory allocator को functions में pass करता है, लेकिन इसे और आसानी से संभालने के लिए इसके पास एक mechanism है.

  • सातवीं टिप्पणी: Windows 3.1 के Minesweeper में cheat code था। एक खास key combination डालने पर safe cells और bomb वाले cells में फर्क किया जा सकता था.

  • आठवीं टिप्पणी: SDL जैसी library का उपयोग करने पर लगभग कोई overhead नहीं होता, और कई operating systems को support किया जा सकता है। legacy SDL 1.x का उपयोग करने पर पुराने Linux versions भी support किए जा सकते हैं.

  • नौवीं टिप्पणी: Simon Tatham के Mines Windows executable का आकार लगभग 180KiB है। लिंक