منصوبے کے بارے میں
itch، itch.io سے گیمز کھیلنے کے لیے ڈیسک ٹاپ ایپلیکیشن ہے۔ اس کا بیان کردہ مقصد یہ ہے کہ صارفین گیمز ڈاؤن لوڈ اور چلا سکیں، اپ ڈیٹ کی اطلاعات وصول کریں، اور گیمز کو اپ ڈیٹ رکھیں، بغیر خود itch.io ویب سائٹ کی جگہ لینے کے۔
آرکیٹیکچر
یہ ایپ ایک Electron ایپلیکیشن ہے جس کا ڈیزائن کثیر العملیاتی (multi-process) ہے۔ مرکزی عمل (Node.js) Redux کے ساتھ حالت کا انتظام، کاروباری منطق، اور ساتھی اجزاء کے ساتھ ہم آہنگی سنبھالتا ہے؛ یہ Redux ایکشنز کے ضمنی اثرات کے لیے "reactor" پیٹرن استعمال کرتا ہے۔ رینڈرر عمل ایک React پر مبنی UI ہے جس کی حالت electron-redux کے ذریعے مرکزی عمل سے ہم آہنگ کی جاتی ہے۔
اس کی معاونت دو ساتھی Go اجزاء کرتے ہیں:
- butler: ایک ڈیمن جو گیمز کی ڈاؤن لوڈ، انسٹالیشن، اپ ڈیٹ اور لانچنگ سنبھالتا ہے، انسٹالیشن ڈیٹا کا SQLite ڈیٹا بیس رکھتا ہے، اور ایپ کے ساتھ TCP پر مبنی RPC کے ذریعے رابطہ کرتا ہے۔ یہ ایپ کے لائف سائیکل سے منسلک چائلڈ پراسیس کے طور پر شروع کیا جاتا ہے۔
- itch-setup: ایک ایگزیکیوٹیبل جو تمام پلیٹ فارمز پر ابتدائی انسٹالیشن سنبھالتا ہے اور خودکار اپ ڈیٹ کی جانچ اور دوبارہ آغاز کا انتظام کرتا ہے۔
ورژن کا انتظام (broth)
ایپ butler اور itch-setup کے ورژن broth نامی نظام کے ذریعے منظم کرتی ہے، ایک سروس جو itch.io API کو پراکسی کرتی ہے تاکہ بائنریز اور اثاثوں کے لیے مقررہ ڈاؤن لوڈ URLs فراہم کرے۔ بائنریز broth.itch.zone کے تحت پلیٹ فارم شناخت کنندگان جیسے linux-amd64، darwin-arm64 اور windows-386 کے ساتھ میزبانی کی جاتی ہیں۔ مقامی طور پر، ورژن broth ڈائریکٹری کے تحت محفوظ کیے جاتے ہیں (مثلاً Linux پر ~/.config/itch/broth/)، جہاں نکالی گئی بائنریز، عارضی ڈاؤن لوڈز اور ایک .chosen-version مارکر ہوتا ہے۔
ورژن کا انتخاب src/main/broth/formulas.ts میں متعین semver پابندیوں کا استعمال کرتا ہے (butler ^15.20.0، itch-setup ^1.8.0)۔ ایپ ایک /versions اینڈ پوائنٹ حاصل کرتی ہے اور پابندی پوری کرنے والا جدید ترین ورژن منتخب کرتی ہے؛ canary بلڈز -head چینلز بغیر کسی پابندی کے استعمال کرتے ہیں۔ آغاز پر یہ منتخب ورژن کی توثیق کرتی ہے، جب ایپ کا ورژن تبدیل ہوا ہو تو نئے اجزاء کے ورژن کی جانچ کرتی ہے، CRC32 تصدیق کے ساتھ ڈاؤن لوڈ اور نکالنے کے بعد sanity چیک چلاتی ہے، پھر مارکر اپ ڈیٹ کرتی ہے اور پرانے ورژن صاف کرتی ہے۔ ایک ڈیولپمنٹ اوور رائیڈ (BROTH_USE_LOCAL=butler) مقامی طور پر بنائے گئے butler کے استعمال کی اجازت دیتا ہے۔
butlerd بائنڈنگز
butler کے ساتھ رابطہ butlerd نامی JSON-RPC 2.0 پروٹوکول استعمال کرتا ہے۔ درخواستوں، اطلاعات اور ڈیٹا اقسام کی TypeScript تعریفیں src/common/butlerd/messages.ts میں موجود ہیں اور generous نامی ٹول کے ذریعے Go قسم کی تعریفوں سے خودکار طور پر تیار کی جاتی ہیں۔ تیار کردہ کوڈ @itchio/butlerd npm پیکیج پر منحصر ہے، جو ڈیمن شروع کرنے، TCP کے ذریعے جڑنے اور JSON-RPC پیغامات کے تبادلے کے لیے رن ٹائم فراہم کرتا ہے۔ جب butler ریپوزٹری بطور sibling ڈائریکٹری چیک آؤٹ ہو تو بائنڈنگز npm run sync-butler کے ذریعے دوبارہ تیار کی جا سکتی ہیں۔
itch بمقابلہ kitch
کوڈ بیس دو ویریئنٹس کی معاونت کرتا ہے: itch (مستحکم) اور kitch (canary)، جو ساتھ ساتھ انسٹال کیے جا سکتے ہیں۔ ویریئنٹ بلڈ کے وقت git ٹیگ سے متعین ہوتا ہے: -canary پر ختم ہونے والا ٹیگ kitch پیدا کرتا ہے، ورنہ itch۔ مقامی ڈیولپمنٹ ہمیشہ kitch کے طور پر چلتا ہے کیونکہ package.json کا نام بطور ڈیفالٹ "kitch" ہوتا ہے؛ پروڈکشن پیکیجنگ غیر canary بلڈز کے لیے اسے "itch" میں تبدیل کر دیتی ہے۔ فرق میں URL پروٹوکولز (itchio:// اور itch:// بمقابلہ kitchio:// اور kitch://)، broth چینلز (باقاعدہ بمقابلہ -head)، semver پابندیاں (موجود بمقابلہ کوئی نہیں)، macOS بنڈل IDs، ٹرے/ونڈو آئیکنز، اور آرٹیفیکٹ نام شامل ہیں۔
ڈیولپمنٹ اور ٹیسٹنگ
ڈیولپمنٹ کے لیے npm install، پھر واچنگ اور دوبارہ بلڈ کے ساتھ ڈیولپمنٹ موڈ میں چلانے کے لیے npm start درکار ہے۔ دیگر اسکرپٹس میں ٹائپ چیکنگ کے لیے npm run ts-check اور اثاثے بنانے کے لیے npm run compile شامل ہیں۔ انٹیگریشن ٹیسٹ Electron ایپ کو کنٹرول کرنے اور لاگ ان، گیمز انسٹال کرنے اور UI میں نیویگیشن جیسے بہاؤ کو آزمائش کے لیے ChromeDriver استعمال کرتے ہیں۔ ان کے لیے Go (ٹیسٹ رنر Go میں لکھا گیا ہے)، ایک ڈسپلے (Linux CI پر xvfb)، اور ٹیسٹ اکاؤنٹ سے itch.io API کلید درکار ہے۔ ChromeDriver ورژن کو Electron ورژن سے مماثل ہونا چاہیے؛ جب package.json میں Electron ورژن تبدیل ہو تو integration-tests/versions.go کو اسی کے مطابق اپ ڈیٹ کرنا ضروری ہے۔ ٹیسٹ پیکیجڈ بلڈ (npm run integration-tests) یا ڈیولپمنٹ ورژن (node release/test.js --test-dev) کے خلاف چلائے جا سکتے ہیں۔
لائسنس اور متعلقہ منصوبے
itch MIT لائسنس کے تحت جاری کیا گیا ہے۔ README میں Mitch کا بھی ذکر ہے، ایک Android کلائنٹ جو دیگر ڈیولپرز نے شروع کیا۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.