PlayPendium
Contraption · سوچنے کے لیے کچھ

ایک ایسی سطح جو خود اپنے حل پذیر ہونے کا ثبوت دیتی ہے

یہ گیم کبھی کوئی پہیلی ہاتھ سے نہیں بناتی۔ وہ اسے ایک واحد عدد سے اگاتی ہے، اور پھر اس پہیلی کو خود اپنے خلاف کھیلتی ہے تاکہ آپ کے دیکھنے سے پہلے ہی یہ یقینی بنا لیا جائے کہ وہ نہ تو معمولی ہے اور نہ ہی ناممکن۔

آج کی تاریخ 1 عدد، بیج میں ہیش شدہ
بن جاتی ہے
روزانہ کی پہیلی 1 میدان، سب کے لیے ایک جیسا

انگریزی میں لکھا اور ترمیم کیا گیا۔ یہ اردو نسخہ مشینی ترجمے سے تیار کیا گیا ہے؛ جہاں درستی اہم ہو، وہاں انگریزی اصل ہی مستند ہے۔ اصل انگریزی متن پڑھیں ←

01 · سب کچھ ایک عدد سے

ایک بیج (seed) میں تہہ کی ہوئی پوری دنیا

Contraption کی کوئی سطح کہیں محفوظ نہیں ہوتی۔ کوئی ایسی فائل نہیں جس میں درج ہو کہ گول کہاں ہے یا کنارے کس ترتیب سے رکھے گئے ہیں۔ اس کے بجائے پوری سطح، گیند کا نقطۂ آغاز، گول کی جگہ، مقررہ دیواروں کی تعداد اور ان کی جگہیں، آپ کو دیے جانے والے حصوں کی فہرست، سب کچھ ایک واحد ابتدائی عدد سے، جسے بیج (seed) کہا جاتا ہے، حساب کر کے نکالا جاتا ہے۔ جنریٹر کو وہی بیج دیجیے اور آپ کو بائٹ بہ بائٹ وہی پہیلی ملے گی۔ 1

یہ اس لیے ممکن ہے کہ جنریٹر کے پاس "بے ترتیبی" کا واحد ذریعہ ایک چھوٹا سا متعین (deterministic) شبہ بے ترتیب عدد ساز (pseudo-random number generator) ہے۔ Contraption جو استعمال کرتی ہے وہ mulberry32 ہے، ٹومی ایٹنگر کا لکھا ہوا ایک مختصر 32-بٹ جنریٹر؛ آپ اسے اس کے مخصوص مستقل 0x6d2b79f5 سے پہچان سکتے ہیں، جو ہر بار عدد نکالنے پر حالت (state) میں جمع کیا جاتا ہے۔ 2 یہ تیز ہے، چند سطروں میں سما جاتا ہے، اور، سب سے اہم بات، یہ بالکل بھی بے ترتیب نہیں ہے: یہ ایک مقررہ ریاضیاتی سلسلہ ہے جو محض بے ترتیب دکھائی دیتا ہے۔ اسے ایک نقطۂ آغاز دیجیے اور یہ ہمیشہ اعداد کی وہی دھارا پیدا کرے گا۔ پھر جنریٹر اسی دھارے کو پڑھ کر طے کرتا ہے کہ ہر چیز کہاں رکھنی ہے۔

02 · روزانہ کی پہیلی

ایک تاریخ کیسے مشترکہ چیلنج بن جاتی ہے

روزانہ (Daily) موڈ اسی متعین پن پر ٹیک لگا کر ایک سماجی کام کرتا ہے۔ اس کا بیج بے ترتیب نہیں ہوتا، بلکہ کیلنڈر سے تیار کیا جاتا ہے۔ گیم آج کی تاریخ عالمی وقت (universal time) میں لیتی ہے، اسے "contraption:2026-7-28" جیسی ایک مختصر سٹرنگ میں لکھتی ہے، اور اس متن کو ایک ہیش فنکشن (hash function) سے گزار کر ایک واحد 32-بٹ عدد میں سمیٹ دیتی ہے۔ 1

یہ ہیش FNV-1a ہے، ایک معروف غیر خفیہ نگاری (non-cryptographic) مکسر: یہ ایک مقررہ آفسیٹ سے شروع ہوتا ہے، یعنی اعشاری 2166136261، یا 0x811c9dc5، اور ہر حرف کے لیے اس حرف کو ایکسکلوسیو-آر (exclusive-or) کے ذریعے ملا کر پھر FNV مفرد عدد 16777619 سے ضرب دیتا ہے۔ 3 اس سے ایک ایسا عدد بچتا ہے جو کسی مخصوص دن کے لیے مستحکم ہوتا ہے اور ایک دن سے اگلے دن تک بالکل مختلف، چنانچہ تاریخ میں ایک حرف کی تبدیلی بیج کو مکمل طور پر بکھیر دیتی ہے۔ چونکہ کیلنڈر سب کے لیے ایک ہی ہے، اس لیے بیج بھی ایک ہی ہے، اور پہیلی بھی۔ دنیا کے دو مخالف کناروں پر بیٹھے دو اجنبی روزانہ موڈ کھولتے ہیں اور بالکل ایک جیسے میدان کا سامنا کرتے ہیں، اور یہی وہ بات ہے جو اسکور کا موازنہ بامعنی بناتی ہے۔

روزانہ چیلنج اس لیے منصفانہ نہیں کہ کوئی سرور سب کو ایک ہی سطح بھیجتا ہے، بلکہ اس لیے کہ ہر ایک کی اپنی کاپی آزادانہ طور پر ایک ہی تاریخ سے وہی سطح دوبارہ حساب کر کے نکال لیتی ہے۔

03 · جنریٹر خود اپنے پر شک کرتا ہے

خود بخود حل ہو جانے والی پہیلی کو رد کرنا

بے ترتیب جیومیٹری آسان ہے؛ اچھی بے ترتیب جیومیٹری آسان نہیں۔ ایک ایسا جنریٹر جو محض ایک گول اور چند کنارے بکھیر دے، کبھی کبھار ایسی سطح پیدا کرے گا جہاں اوپر سے گرائی گئی گیند خود بخود سیدھی گول میں جا گرتی ہے۔ وہ پہیلی نہیں، ایک کٹ سین (cutscene) ہے۔ چنانچہ اس سے پہلے کہ Contraption کسی امیدوار دنیا کو قبول کرے، وہ ایک خاموش آزمائش چلاتی ہے جسے کوڈ preSolved کہتا ہے: وہ صفر حصے رکھے ہوئے سطح کی سمولیشن (simulation) چلاتی ہے اور جانچتی ہے کہ آیا خالی گیند محض کششِ ثقل کے زور پر گول تک پہنچ جاتی ہے۔ اگر ایسا ہو تو سطح کو پھینک دیا جاتا ہے اور جنریٹر دوبارہ پانسہ پھینکتا ہے۔ 1

یہ اس انداز کا ایک باریک الٹ ہے جس سے آپ عام طور پر کسی فزکس انجن کے بارے میں سوچتے ہیں۔ وہی simulate() فنکشن جو آپ کی مشین کو چلا کر دکھاتا ہے، تیاری کے وقت اندر کی طرف موڑ کر سطح کی اپنی مشکل کی جانچ پڑتال کے لیے استعمال کیا جا رہا ہے۔ انجن آپ کے حل کا ریفری بھی ہے اور پہیلی کا معیار پرکھنے والا معائنہ کار بھی۔

04 · ایک ننھا حل ساز، اندر ہی نصب

"کیا یہ ایک حصے سے ہو سکتا ہے؟"

حد سے زیادہ آسان سطح کو رد کرنا آدھا کام ہی ہے۔ دوسرا خطرہ ناممکن سطح کا ہے، ایک ایسا گول جو ایسی جگہ چھپا ہو جہاں حصوں کی کوئی ترتیب پہنچ ہی نہ سکے۔ Contraption اس سے بچاؤ کے لیے plausiblySolvable نامی ایک چھوٹا سا بروٹ فورس (brute-force) حل ساز استعمال کرتی ہے۔ یہ چالاکی سے نہیں سوچتا۔ یہ بس آزماتا ہے۔ 1

خاص طور پر، یہ ایک واحد ریمپ کو میدان پر پھیلے مقامات کی ایک گرڈ پر پھیرتا ہے اور ہر مقام پر اسے چار مختلف زاویوں پر جھکا کر آزماتا ہے۔ ان آزمائشی جگہوں میں سے ہر ایک کے لیے یہ مکمل سمولیشن چلاتا ہے اور پوچھتا ہے: کیا اس ایک ریمپ نے گیند کو گول تک پہنچا دیا؟ جس لمحے کوئی بھی جگہ کامیاب ہوتی ہے، سطح کو حل پذیر قرار دے کر آپ تک بھیج دیا جاتا ہے۔ اگر پوری تلاش مکمل ہونے کے بعد ان میں سے کوئی بھی کام نہ کرے، تو جنریٹر اس سطح کو رد کر کے ایک تازہ بیج آزمانے کو ترجیح دیتا ہے۔

ایک حصے والے حل ساز کی تلاش، ایک کھردری گرڈ، ہر مقام پر چار جھکاؤ
تلاش کا پیرامیٹرحدودمطلب
ریمپ X15 → 85، قدم 14میدان کے آر پار کالم
ریمپ Y30 → 120، قدم 18میدان میں نیچے کی طرف قطاریں
آزمائے گئے زاویے4±0.45 اور ±0.8 ریڈین
فی جگہ آزمائش1 مکمل سمولیشنکیا گیند گول تک پہنچتی ہے؟

اس بارے میں ایماندار ہونا مناسب ہے کہ یہ کیا ثابت کرتا ہے، کیونکہ کوڈ بھی اس بارے میں ایماندار ہے: تبصرے میں اسے "سستی امکانی جانچ … مکمل نہیں" کہا گیا ہے۔ جو سطح پاس ہو جائے اس کا یقینی طور پر کم از کم ایک کھردرا واحد ریمپ والا حل موجود ہے۔ جو سطح ناکام ہو جائے وہ پھر بھی کسی پنکھے، کسی گیئر، یا کسی ایسے زیادہ ہوشیار ریمپ سے حل ہو سکتی ہے جسے گرڈ نے کبھی آزمایا ہی نہیں، اس لیے جنریٹر ناکامی کو ناممکن ہونے کا ثبوت نہیں مانتا۔ وہ اپنی ملی ہوئی پہلی ایسی دنیا کو جو معمولی نہ تھی متبادل کے طور پر سنبھال رکھتا ہے، اور اگر چالیس کوششیں ایک صاف ستھرے ایک حصے والے حل کے بغیر گزر جائیں، تو وہ ہمیشہ کے لیے چکر لگاتے رہنے کے بجائے وہی متبادل بھیج دیتا ہے۔ نتیجہ ایک عملی ضمانت ہے: کبھی مفت جیت نہیں، تقریباً ہمیشہ اندر تک ایک حقیقی راستہ، اور "کامل" سطح کے لیے کبھی لامتناہی انتظار نہیں۔ 1

05 · گہرا خیال

پیدا کرو اور آزماؤ، ذہانت کی سب سے عاجزانہ قسم

ذرا پیچھے ہٹ کر دیکھیں تو Contraption کا سطح ساز مسئلہ حل کرنے کے ایک بہت پرانے اور بہت عمومی نمونے کی صاف مثال ہے: پیدا کرو اور آزماؤ (generate and test)۔ بے ترتیب طور پر ایک امیدوار تجویز کیجیے؛ اسے اپنی شرائط پر پرکھیے؛ پاس ہو جائے تو رکھ لیجیے، ناکام ہو تو رد کر کے نئی تجویز دیجیے۔ یہی وہ چکر ہے جو بے شمار گیموں کے پروسیجرل مواد (procedural content) کے پیچھے ہے، ارتقائی کمپیوٹیشن کے بڑے حصے کے پیچھے ہے، اور، ذرا آنکھیں سکیڑ کر دیکھیں تو، خود قدرتی انتخاب کے پیچھے بھی: تغیر تجویز کرتا ہے، ماحول آزماتا ہے، بچ جانے والے باقی رہتے ہیں۔ 4

Contraption کے نسخے کو خوبصورت جو چیز بناتی ہے وہ یہ ہے کہ آزمائش کھیلنے کی قابلیت کا کوئی سستا نعم البدل نہیں، بلکہ یہ خود کھیلنے کی قابلیت ہے۔ جنریٹر کنارے گن کر یا فاصلے ناپ کر یہ اندازہ نہیں لگاتا کہ سطح منصفانہ ہے یا نہیں۔ وہ لفظی معنوں میں سطح کو کھیلتا ہے، دو بار: ایک بار خالی، تاکہ یقینی ہو کہ یہ مفت کا تحفہ نہیں، اور ایک بار ایک ٹٹولنے والے ریمپ کے ساتھ، تاکہ یقینی ہو کہ کوئی راستہ موجود ہے۔ وہی متعین فزکس جو آپ کے حل کا فیصلہ کرے گی، وہی فزکس ہے جس نے پہیلی کی جانچ کی۔ کوئی الگ "سطح جانچنے والا" (level validator) نہیں جو اصل قواعد سے ہٹ کر بے ربط ہو سکے، کیونکہ قواعد کا صرف ایک ہی مجموعہ ہے، جو ہر چیز کے لیے استعمال ہوتا ہے۔

اور چونکہ یہ سب کچھ متعین ہے، اس لیے یہ جانچ دونوں سمتوں میں قسمت سے آزاد ہے۔ روزانہ کا بیج سازش کر کے ایک کھلاڑی کو دوسرے سے آسان میدان نہیں تھما سکتا، اور نہ ہی کسی کو غیر منصفانہ میدان دے سکتا ہے، کیونکہ سطح کے چیلنج بننے سے پہلے ہی وہ کھیلے جانے کی آزمائش سے گزر چکی ہوتی ہے، خود گیم کے ہاتھوں، اپنے ہی خلاف۔

Sources & notes
  1. Seed-to-level generation, the preSolved rejection test, the plausiblySolvable one-ramp solver (grid ranges, four angles, up to 40 attempts, fallback world), and the daily-seed date string are all read directly from Contraption's own game engine and random-number code. Grounded in the game's code, not invented.
  2. mulberry32 is a compact 32-bit pseudo-random generator by Tommy Ettinger; it advances its state with the constant 0x6d2b79f5 and has a period of 2³². Author's reference gist (with his own later caveats on its equidistribution). gist.github.com/tommyettinger/46a874533244883189143505d203312c
  3. "Fowler–Noll–Vo hash function." Wikipedia, the 32-bit FNV offset basis is 2166136261 (0x811c9dc5) and the FNV prime is 16777619 (0x01000193); FNV-1a XORs each byte into the hash first and then multiplies by the prime. en.wikipedia.org/wiki/Fowler–Noll–Vo_hash_function
  4. On generate-and-test / "generation followed by evaluation" as a general search and problem-solving strategy, and its kinship with procedural generation and evolutionary methods. See "Procedural generation," Wikipedia. en.wikipedia.org/wiki/Procedural_generation
  5. Further reading on Procedural generation, [2410.15644] Procedural Content Generation in Games: A Survey with Insights on Emerging LLM Integration. arxiv.org.
  6. Further reading on Procedural generation, Procedural Content Generation in Games: A Survey with Insights on Emerging LLM Integration. doi.org.
  7. Further reading on Procedural generation, "Procedural City Generation with Combined Architectures for Real-time V" by Gr. open.clemson.edu.
Was this worth reading?
← Back to Contraption
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Inspirations · © 2026