اپنی پروڈکٹ · Carrom

اصلی کیرم، اس فزکس کے ساتھ جو ہم نے خود لکھی۔

Carrom فون کو ترجیح دینے والا بورڈ گیم ہے، لکڑی کے بورڈ اور ڈسکس کی درست فزکس کے ساتھ۔ اس میں پانچ کھیل ہیں، جن میں بنگلہ دیش، بھارت اور پاکستان میں کھیلے جانے والے 29 Game اور Tal Gach شامل ہیں، آن لائن 1 بمقابلہ 1 اور 2 بمقابلہ 2، بوٹس اور باری باری کھیل کے ساتھ۔ ایک TypeScript کوڈ بیس ویب، Android اور iOS پر چلتا ہے، اور آن لائن کھیل ہمارے اپنے ریئل ٹائم سرور پر۔

ویب، App Store (iPhone اور iPad) اور Google Play (Android) پر لائیو۔

  • Web (PWA)
  • Android
  • iOS
  • iPadOS
کھیل کی اقسام، ہر ایک کا اپنا قواعد انجن
5
ضربیں، براؤزر انجنوں میں بٹ بہ بٹ یکساں
4,320
خودکار ٹیسٹ: 396 یونٹ اور 150 براؤزر ٹیسٹ، ہر براؤزر ٹیسٹ تین اسکرین سائزوں پر
540+
سست کی گئی Fast 3G پر پہلا لوڈ
≤ 3 s

ایپ کے اندر

چلتی ہوئی ایپ کی اصل اسکرینز، جیسی اسٹور لسٹنگ میں نظر آتی ہیں۔

کھلاڑیوں کو کیا ملتا ہے

  • پانچ کھیل

    Classic، 29 Game (29 تک پہلا)، Tal Gach (19 مہروں کا مینار توڑیں، 170 تک پہلا)، Disc Pool اور Freestyle، ساتھ روزانہ چیلنج اور ٹیوٹوریل۔

  • آن لائن 1 بمقابلہ 1 اور 2 بمقابلہ 2

    ریٹنگ کے مطابق Quick Match، خالی نشستوں پر بوٹس، نجی کمرے، ایپ کھولنے والے چیلنج لنکس، کھلے کمروں کی لابی، ری میچ، ایموٹس، 20 سیکنڈ کی باری کی گھڑی اور ہر کھیل کی اپنی Elo ریٹنگ۔

  • بوٹس اور باری باری کھیل

    4 درجوں (Easy سے Expert) اور 4 مزاجوں (متوازن، جارحانہ، دفاعی، ٹرک شاٹ) کے بوٹس، ہر ایک کا اپنا نام اور جھنڈا، اور ایک ڈیوائس پر 2 یا 4 کھلاڑیوں کا باری باری کھیل۔

  • آپ کے ساتھ چلنے والی پیش رفت

    سکے، متحرک بورڈز، اسٹرائیکرز اور گوٹوں کے سیٹوں کی شاپ، کامیابیاں، اعداد و شمار اور روزانہ کی لڑیاں۔ ہر ڈیوائس پر محفوظ رکھنے کے لیے Google یا Apple سے سائن اِن کریں۔

  • آپریٹر ٹولز

    ہمارا ایڈمن پینل لائیو کھیل اور کھلاڑی دکھاتا ہے، نگرانی سنبھالتا ہے، کسی بھی کھلاڑی کے سکے پیغام کے ساتھ ایڈجسٹ کرتا ہے، اور ایپ ریلیز کے بغیر اشتہارات، لازمی اپڈیٹس، ریویو کی درخواستیں، میچ میکنگ کے سوئچ، یہاں تک کہ اسٹائل بھی بدلتا ہے۔

  • ایک کوڈ بیس سے ہر جگہ

    ایک ہی کوڈ بیس سے ویب، Android، iPhone اور iPad، اور ویب ایپ کے طور پر انسٹال ہونے کے قابل۔ کمرے کے لنکس ایپ انسٹال ہو تو ایپ کھولتے ہیں، ورنہ ویب گیم۔

شروع سے بنایا گیا

ہر تہہ ہماری ہے، کھیل کے اصولوں سے لے کر اس سرور تک جس پر یہ چلتا ہے۔

  1. کھیل کا کلائنٹ

    سخت TypeScript، Vite اور Canvas 2D، بغیر گیم انجن اور بغیر UI فریم ورک کے۔ گھومتے بورڈز اور Tal Gach مینار کے پیش منظر خالص CSS 3D ہیں۔

    • TypeScript
    • Vite
    • Canvas 2D
    • CSS 3D
  2. ہماری اپنی فزکس

    فریم ریٹ سے آزاد، 1/120 s کے مقررہ قدم پر واقعہ پر مبنی ڈسک فزکس: جیب کے جبڑے، وہ گوٹ جو تب گرتی ہے جب اس کا کافی حصہ سوراخ پر ہو، گوٹ کا جیب میں کھڑکھڑا کر باہر آنا اور ٹوٹتا مینار۔ اس نے ایک عمومی فزکس لائبریری کی جگہ لی۔

    • Deterministic
    • Seeded randomness
    • Headless tests
  3. ریئل ٹائم بیک اینڈ

    MongoDB پر ہمارا اپنا Node سرور، ایک چھوٹے JSON-over-WebSocket پروٹوکول کے ساتھ: get، set، compare-and-set، watch اور presence۔ یہ وہی سیکیورٹی رولز فائل جانچتا ہے جو Firebase Realtime Database جانچتا۔

    • Node.js
    • MongoDB
    • WebSocket
    • esbuild
  4. ایپس اور سائن اِن

    Android اور iOS کے لیے Capacitor ایپس۔ Google اور Apple سائن اِن Firebase Auth سے چلتا ہے، اور ہمارا سرور ہر ٹوکن خود جانچتا ہے۔ اشتہارات AdMob سے آتے ہیں، اصل رقم کی کوئی خریداری نہیں۔

    • Capacitor
    • Firebase Auth
    • AdMob
    • App Links

آپریشنز

ہم سرورز خود چلاتے ہیں

بیچ میں کوئی گیم بیک اینڈ سروس نہیں: ہمارا اپنا سرور، اپنے ڈیپلائمنٹ، اپنی نگرانی۔

  • ہمارا اپنا Linux سرور: nginx، Cloudflare کے پیچھے Let’s Encrypt TLS کے ساتھ کھیل پیش کرتا ہے
  • WebSocket، ایپ کنفیگ اور ہیلتھ چیکس systemd کے تحت Node سروس کو پراکسی ہوتے ہیں
  • ایڈمن پینل اپنی الگ سروس کے طور پر چلتا ہے اور ایسے آپریٹر API کو بلاتا ہے جو صرف مشین پر ہی جواب دیتا ہے
  • ایک کمانڈ سے ڈیپلائمنٹ: بلڈ، ٹائم اسٹیمپ والی ریلیز اپ لوڈ، سوئچ، ری اسٹارٹ، ہیلتھ چیک؛ فوری رول بیک کے لیے آخری 5 ریلیزز محفوظ
  • بنگلہ دیش سے Cloudflare کے ذریعے تقریباً 210 ms وسطانی راؤنڈ ٹرپ (لانچ کے وقت ناپا گیا)
  • Google Play اور App Store Connect کے لیے اسکرپٹ سے بننے والی ایپ بلڈز
  • کمرے کی دعوتوں کے لیے Android App Links اور iOS universal links

مشکل مسائل جو ہم نے حل کیے

وہ حصے جو کھلاڑیوں کو کبھی نظر نہیں آتے، ہمارے ناپے ہوئے اعداد کے ساتھ۔

  1. ہر فون پر ایک ہی فزکس

    مسئلہ
    آن لائن کھیل میں ہر فون حریف کی ضرب کی نقل خود کرتا ہے۔ اگر دو ڈیوائسز کبھی ایک عدد مختلف نکالیں تو ان کے بورڈ الگ ہو جائیں گے، اس لیے فزکس ہر جگہ بالکل درست ہونی تھی۔
    ہم نے کیا کیا
    نقل صرف وہ عمل استعمال کرتی ہے جو ہر JavaScript انجن پر درست ہیں، اپنے مربع جذر پر مبنی hypot، log، acos، sin اور cos کے ساتھ۔ تمام بے ترتیبی بیج سے بنتی ہے اور بنیادی حصہ کبھی گھڑی نہیں پڑھتا۔

    نتیجہ Chromium اور WebKit کے انجنوں میں 4,320 ضربیں جانچی گئیں: ہر بورڈ بٹ بہ بٹ یکساں۔

  2. عدم ہم آہنگی، جو پکڑی گئی اور روک دی گئی

    مسئلہ
    ایپ کے مختلف ورژنز والے کھلاڑی، جن کی فزکس قدرے مختلف تھی، آپس میں ملائے جا رہے تھے، اور ان کے بورڈ مختلف ہو جاتے تھے۔
    ہم نے کیا کیا
    اب پروٹوکول ورژن میچ میکنگ اور کمروں کا دروازہ ہے، اور فزکس فنگر پرنٹ ٹیسٹ بلڈ ناکام کر دیتا ہے اگر ورژن بڑھائے بغیر فزکس بدلے۔

    نتیجہ صرف یکساں فزکس والے کھلاڑی ہی ایک بورڈ شیئر کرتے ہیں۔

  3. ایسا مینار جو انصاف سے ٹوٹے

    مسئلہ
    Tal Gach میں ابتدائی ضرب 19 مہروں کے رکھے ہوئے مینار پر لگتی ہے۔ یہ اصلی جیسا محسوس ہونا اور دونوں کھلاڑیوں کے لیے منصفانہ ہونا ضروری ہے۔
    ہم نے کیا کیا
    70% یا زیادہ رفتار کی ضرب نیچے کی ایک یا دو گوٹیں نکالتی ہے اور مینار کھڑا رہتا ہے؛ نرم ضربیں اسے گرا دیتی ہیں۔ بے ترتیبی بیج سے بنتی ہے، اس لیے ہر ڈیوائس ایک ہی ٹوٹنا دیکھتی ہے۔

    نتیجہ زوردار ضربیں 90% بار نیچے کی گوٹیں صاف کرتی ہیں، ہر اسکرین پر یکساں۔

  4. Macs پر آواز

    مسئلہ
    Apple-silicon Macs پر چلنے والی iPad ایپ نہ AAC اور نہ Opus آڈیو ڈی کوڈ کر سکتی تھی۔
    ہم نے کیا کیا
    ایپ آوازوں اور موسیقی کی 16-bit WAV کاپیاں ساتھ لاتی ہے، اور کھیل انہیں خود ڈی کوڈ کرتا ہے۔

    نتیجہ ہر ڈیوائس پر وہی آواز، Macs سمیت۔

  5. کھیل کو چھیڑے بغیر ایک وینڈر چھوڑنا

    مسئلہ
    آن لائن کھیل کا آغاز Firebase Realtime Database پر ہوا، اور ہم کھیل کو دوبارہ لکھے بغیر کھیل کا ڈیٹا اپنے سرور پر لانا چاہتے تھے۔
    ہم نے کیا کیا
    ہر آن لائن فیچر ایک ہی ڈیٹا بیس انٹرفیس سے بات کرتا ہے۔ ہمارا سرور وہی رولز فائل انہی معنوں کے ساتھ نافذ کرتا ہے، اور مکمل میچوں اور 180 سے زیادہ جائز یا مسترد تحریروں کا ایک جانچ سیٹ دونوں بیک اینڈز پر چلتا ہے۔

    نتیجہ کھیل کا ڈیٹا اب ہمارے اپنے سرور پر ہے، اور بیک اینڈ بدلنا دو سیٹنگز کا بلڈ سوئچ ہے۔

  6. پہلی ضرب تک تیز

    مسئلہ
    عام کھیل کے پاس کھلاڑی کو جیتنے کے لیے چند سیکنڈ ہوتے ہیں، اکثر سست موبائل کنکشن پر۔
    ہم نے کیا کیا
    ڈاؤن لوڈ کرنے کو کوئی انجن یا فریم ورک نہیں، پہلے ٹیپ سے پہلے آڈیو نہیں، اور ایسا کارکردگی ٹیسٹ جو پروڈکشن بلڈ کو سست کیے گئے کنکشن پر چلاتا ہے۔

    نتیجہ سست کی گئی Fast 3G پر 3 s یا کم میں پہلا لوڈ۔

پروڈکٹ کی طرح جانچا گیا، ڈیمو کی طرح نہیں

  • 396 یونٹ ٹیسٹ اور 150 براؤزر ٹیسٹ، ہر ایک فون، ٹیبلٹ اور ڈیسک ٹاپ سائز پر اسکرین شاٹ بنیادوں کے ساتھ (400 سے زیادہ رن)
  • بوٹ بمقابلہ بوٹ توازن کے رن اور مانکی ٹیسٹ
  • ایمولیٹر سیٹ جو ڈیٹا بیس رولز کے مقابل مکمل آن لائن میچ کھیلتا ہے
  • یونٹ ٹیسٹ میں ہیڈ لیس نقل کی گئی ضربیں، جو متعین فزکس کی بدولت ممکن ہوا

ٹیکنالوجی

  • TypeScript
  • Vite
  • Canvas 2D
  • Node.js
  • MongoDB
  • WebSocket
  • Capacitor
  • Firebase Auth
  • AdMob
  • Vitest
  • Playwright
  • nginx
  • Cloudflare
  • systemd

GPScom: gpscom.gr کا مکمل نیا ڈیزائن

ہمارا پورا کام دیکھیں

کیا آپ ایسا بنا ہوا گیم یا ریئل ٹائم ایپ چاہتے ہیں؟

ہم گیمز اور ریئل ٹائم پلیٹ فارمز شروع سے آخر تک ڈیزائن، تعمیر اور آپریٹ کرتے ہیں: ایپس، سرورز، اسٹورز اور آپریشنز۔