CodeGym /جاوا بلاگ /Random-UR /شروع میں، وہاں تھا ...
John Squirrels
سطح
San Francisco

شروع میں، وہاں تھا ...

گروپ میں شائع ہوا۔
شروع میں، وہاں تھا ... - 1 میری پہلی ملازمت کا پروبیشن دورانیہ 3 سال پہلے ختم ہوا، لیکن ابھی مجھے مضمون لکھنے کا وقت ملا ہے۔ میں نے اپنی یونیورسٹی میں مختلف شعبوں میں ایک سال گزارا: اپنے پہلے سمسٹر میں، میں نے مینجمنٹ کی تعلیم حاصل کی، اور اپنے دوسرے سمسٹر میں، میں نے سافٹ ویئر انجینئرنگ کی طرف رخ کیا۔ مجھے امید تھی کہ وہ مجھے پروگرام کرنا سکھائیں گے، لیکن میں غلطی پر تھا۔ لہذا، میں نے مواد اکٹھا کیا اور خود ہی سب کچھ سیکھنے کا فیصلہ کیا۔ میں اپنے استاد کے شکر گزار ہونے کی واحد وجہ یہ ہے کہ اس نے سفارش کی کہ میں اسٹیفن پریٹ کی ای بک "دی سی پروگرامنگ لینگویج" سے شروعات کروں۔ یہ واقعی ایک اچھی کتاب ہے جس میں بہت ساری عملی مشقیں ہیں۔ میں نے کتاب پر تقریباً 2 ماہ گزارے، جس کے بعد میں نے ایک دوست کے گروپس میں جاوا کا یہ آن لائن کورس دیکھا اور اس طرح یہ شروع ہوا۔ سب سے پہلے، میں نے ایک اینڈرائیڈ ڈویلپر بننے کا منصوبہ بنایا ، لیکن بیک اینڈ میرے لیے زیادہ دلچسپ لگ رہا تھا کیونکہ میں نے اپنی تعلیم میں ترقی کی۔ ویسے، مجھے لیول 20 تک پہنچنے میں پڑھائی میں 3 مہینے لگے، جس کے بعد میں نے نوکری تلاش کرنے کی کوشش کرنے کا فیصلہ کیا۔ کاروبار کا پہلا حکم یہ تھا کہ دوسرے شہر چلے جائیں۔چونکہ میرے پاس کسی جونیئر جاوا ڈویلپر کے لیے کوئی اوپننگ نہیں تھی۔ مجھے ایک کمپنی ملی، درخواست دی، اور ایک ٹیسٹ ٹاسک موصول ہوا، جسے مکمل کرنے کے لیے مجھے ایک ہفتہ دیا گیا تھا۔ مجھے Hibernate، Servlet/JSP اور MySQL کا استعمال کرتے ہوئے ایک سادہ ویب ایپلیکیشن لکھنی تھی۔ ان تمام شرائط کو دیکھ کر، میں صرف اتنا جانتا تھا کہ MySQL ایک ڈیٹا بیس ہے۔ پہلے تو میں بہت مایوس ہوا۔ یہاں تک کہ میں نے کچھ KFC میں ملازمت کے مواقع تلاش کرنے کا فیصلہ کیا، لیکن پھر میں نے ٹیسٹ ٹاسک میں کریک لینے کا عزم کیا۔ سب کے بعد، مجھے ہمیشہ KFC میں نوکری مل سکتی تھی۔ میں نے پورا ہفتہ نان اسٹاپ کام کیا اور ٹیسٹ مکمل کرنے میں کامیاب رہا۔ میں نے اپنا حل پیش کیا ، لیکن یہ "خوبصورت نہیں تھا" ، لہذا میں نے اس پر مزید 4 بار نظر ثانی کی۔ میرا آخری حل درست نکلا، لیکن اسامیاں پہلے ہی پُر ہو چکی تھیں اور 3 ماہ تک اضافی درخواستیں قبول نہیں کی جائیں گی۔ تم کیا کرنے والے ہو، ٹھیک ہے؟ اگلے 3 مہینوں میں، میں نے HTML، CSS، JS، SQL اور PHP سیکھا۔ پی ایچ پی کیوں؟ مجھے ایک سرور زبان کی ضرورت ہے جو درخواستوں کا جواب دے اور اس طرح کے۔ اس وقت، servlets اور jsp بہت پیچیدہ لگ رہے تھے. آخر میں، میں نے ایک خوفناک انٹرفیس کے ساتھ ایک مکمل ویب ایپلیکیشن تیار کی۔ میں نے اپنے پورٹ فولیو کے لیے GitHub پر کوڈ شائع کیا۔ اس وقت تک، 3 مہینے گزر چکے تھے اور اسی کمپنی نے مجھ سے دوبارہ رابطہ کیا اور مجھے انٹرویو کے لیے مدعو کیا، ایس کیو ایل کے بارے میں میرے علم کو جانچنے کے لیے ایک اور آسان کام دیا، جسے میں چند گھنٹوں میں مکمل کرنے میں کامیاب ہوگیا۔ جس شخص سے میں ملازمت کے بارے میں بات کر رہا تھا اس نے اشارہ کیا کہ وہ الگورتھم اور ڈیٹا ڈھانچے کے بارے میں پوچھیں گے — ایسے عنوانات جن پر عبور حاصل کرنے کے لیے میرے پاس ابھی وقت نہیں تھا۔ اس نے کہا، انٹرویو سے پہلے 15 دن تھے. میں سمجھ گیا! رابرٹ لافور کی کتاب "Data Structures & Algorithms in Java" نے میری مدد کی۔ میرے پاس دو ہفتوں میں یہ سب پڑھنے اور سمجھنے کا وقت نہیں تھا، لیکن میں نے پھر بھی بہت کچھ سیکھا۔ اور پھر انٹرویو کا دن آگیا۔ میں مقررہ وقت پر پہنچا۔ دو آدمیوں نے مجھے سلام کیا اور انٹرویو شروع ہوا۔ یہ کہنا کہ میں پریشان تھا ایک جنگلی کم بیانی ہوگی۔ میری آواز کانپ گئی۔ انہوں نے الگورتھم اور ڈیٹا ڈھانچے کے علاوہ ہر چیز کے بارے میں پوچھا۔ انہوں نے اسپرنگ، ڈی آئی، آئی او سی، ہائبرنیٹ کے بارے میں پوچھا، جے وی ایم کیسے کام کرتا ہے، کوڑا اٹھانے والا کیسے کام کرتا ہے — میں ان سوالوں میں سے کسی ایک کا بھی جواب دینے کے قابل نہیں تھا۔ میں نے جاوا کور (مجموعہ، مستثنیات، OOP، وغیرہ) کے بارے میں صرف کامیابی کے ساتھ سوالات کا جواب دیا۔ انٹرویو میں رہتے ہوئے، میں جانتا تھا کہ میں اس میں ناکام رہا، لیکن پھر بھی مجھے کوئی رائے نہ ملنے پر مایوسی ہوئی۔ اس کے بجائے، میں نے اپنے علم میں خامیوں کی نشاندہی کی اور انہیں دور کرنے کے لیے تندہی سے کام کرنا شروع کیا۔ مجھے اپنے ناکام انٹرویو کے ایک ماہ بعد نوکری مل گئی۔ ویسے، مجھے جاوا رش پر بات چیت میں نوکری کا آغاز ملا ( جاوا رش کوڈ جیم کا روسی زبان کا ورژن ہے — ایڈیٹر کا نوٹ)۔ سب سے پہلے، ایک بھرتی کرنے والے کے ساتھ اسکائپ انٹرویو تھا (یہ تقریباً 2 گھنٹے جاری رہا)۔ انہوں نے جاوا کور، کوڑا کرکٹ جمع کرنے کے بارے میں پوچھا (اب میں جانتا ہوں کہ یہ کیسے کام کرتا ہے)، ڈیٹا بیس اور ڈیٹا ڈھانچے کے بارے میں۔ انٹرویو لینے والے نے مجھ سے اپنی سکرین شیئر کرنے اور کیلکولیٹر لکھنے کو کہا۔ میں تقریباً خوشی سے رو پڑا، کیونکہ میں نے صرف ایک ہفتہ پہلے ہی کیلکولیٹر لکھا تھا۔ اپنے آپ پر اعتماد کرتے ہوئے میں نے کام شروع کیا۔ لیکن چاہے میری جوش کی وجہ سے یا کسی اور وجہ سے، میں الگورتھم کا کچھ حصہ بھول گیا۔ میری سکرین شیئر کی گئی تھی۔ میں گوگل سے مشورہ کرنے سے ڈرتا تھا۔ خوش قسمتی سے، میرے پاس میرا موبائل فون تھا، جس نے میری گدی کو بچایا۔ اگلے دن، انہوں نے ذاتی طور پر انٹرویو کے لیے بلایا اور کچھ دن بعد مجھے ایک پیشکش موصول ہوئی ۔ یہ کوئی سرکاری عہدہ نہیں تھا۔ میرا کردار ایک واحد مالک کے لیے ایک اپرنٹیس تھا۔ ہم نے ایونٹ کی منصوبہ بندی، ٹکٹوں کی فروخت وغیرہ کے لیے ایک سروس لکھی تھی۔ مجھے اپنے کام کا پہلا دن یاد ہے۔ میرے باس نے یہ بتانے میں 15 منٹ لگائے کہ کیا کرنے کی ضرورت ہے۔ "کیا سب کچھ صاف ہے؟" اس نے پوچھا. "ہمم، واقعی نہیں۔ کیا آپ ایک بار پھر اس پر جا سکتے ہیں؟" میں نے بڑی فکرمندی سے پوچھا۔ باس نے پھر سب کچھ سمجھا دیا۔ "اب واضح ہے؟" "ہاں، اب ہو گیا ہے۔" اصل میں، میں کچھ بھی نہیں سمجھا. لیکن میں ایک اور وضاحت طلب کرنے سے ڈرتا تھا۔ میرے خیال میں کوئی بھی ملازم اسے سمجھ سکتا ہے۔ یہ کام Thymeleaf سے AngularJS تک پورٹ کرنے کے لیے ابل پڑا۔ خوش قسمتی سے، میں نے تیار شدہ کوڈ کا ایک حصہ پایا اور اسے کیا کرنا ہے اس کی مثال کے طور پر استعمال کیا۔ مجھے سمجھ نہیں آیا کہ یہ کیسے کام کرتا ہے، لیکن میں نے کام ختم کر دیا۔ مجھے اس کے بعد براہ راست پسدید سے متعلق کام تفویض کیے گئے۔ بہار کے عملی تجربے کے بعد ہی میں نے "اسپرنگ فار پروفیشنلز" میں جو کچھ پڑھا ہے اسے سمجھنا شروع کیا۔ میں نے وہاں 8 مہینے کام کیا اور پھر دوسرے شہر چلا گیا، جہاں مجھے فوری طور پر ایک سرکاری نوکری مل گئی، 2 سال کام کیا اور راستے میں اپنا ٹائٹل "جونیئر" سے بدل کر "مڈ لیول" کر دیا۔ پھر مجھے اس حقیقت کا سامنا کرنا پڑا کہ میرا کام معمول بن گیا تھا اور اس نے مجھے خوشی کا ایک قطرہ بھی نہیں دیا۔ تو میں نے وقفہ لیا۔ اپنے وقفے کے دوران اپنی انگلیوں کو اٹروفائی سے روکنے کے لیے، میں نے ایک اور شعبے میں اپنا ہاتھ آزمانے کا فیصلہ کیا: گیم ڈویلپمنٹ۔ مزید خاص طور پر، موبائل گیم ڈیولپمنٹ، اینڈرائیڈ کو اٹھانا، چونکہ میں جاوا کو پہلے سے جانتا تھا۔ اور اسی کے بارے میں اب میں تفصیل سے بات کرنے جا رہا ہوں۔ میری ٹیم. مختصر ترتیب میں، میں نے 4 لوگوں کی ایک چھوٹی ٹیم (بشمول مجھ) کو جمع کیا تھا: 2 ڈویلپرز، 1 گیم ڈیزائنر، اور 1 ساؤنڈ انجینئر۔ کیونکہ ٹیم میں سے کسی کو بھی گیم ڈویلپمنٹ کا کوئی تجربہ نہیں تھا، اور چونکہ میری چھٹیوں کا وقت محدود تھا، اس لیے ہم نے ایک سادہ پروجیکٹ کو نافذ کرنے کا فیصلہ کیا جسے ہم یقینی طور پر مکمل کر سکیں گے۔ اور اسی طرح ہم نے کیا! ابتدائی طور پر، آخری تاریخ 15 نومبر تھی، لیکن جیسا کہ آپ جانتے ہیں، شیڈول کے مطابق کسی پروجیکٹ کو مکمل کرنا بالکل غلط ہے۔ لہذا، ہم نے اسے دو ہفتے دیر سے ختم کیا۔ ہمارا ٹیکنالوجی اسٹیک Java 8 اور libGDX پر مشتمل ہے۔

ترقی

ترقی کا آغاز 17 اکتوبر کو ہوا۔ مجموعی طور پر، ہم نے 45 دن گزارے جس کے دوران:
  1. ہم نے libGDX استعمال کرنے کا طریقہ سیکھا۔
  2. ہم نے کوڈ لکھا۔
  3. ہم نے گرافکس بنائے۔
  4. ہم نے موسیقی بنائی۔
جس نے بھی اس گیم کو دیکھا ہے وہ پوچھ سکتا ہے، "اس میں اتنا وقت کیوں لگا؟ گیم بہت آسان ہے۔" جی ہاں، یہ سچ ہے، اور درست ہونے کے لیے، ترقیاتی حصہ (کوڈ لکھنے) میں تقریباً ڈیڑھ ہفتہ لگا۔ باقی وقت کے درمیان تقسیم کیا گیا تھا:
  1. گیم انجن کو استعمال کرنے کا طریقہ سیکھنا۔
  2. آرٹ ورک کو ڈرائنگ اور دوبارہ ڈرائنگ کرنا۔
  3. موسیقی لکھنا۔
  4. https://freesound.org پر آوازیں تلاش کر رہے ہیں ۔
  5. گیمز کو فروغ دینے کے طریقے سے متعلق مضامین کا ڈھیر پڑھنا۔
ہمارے پاس مختلف وجوہات کی بنا پر "ڈاؤن ٹائم" کے لمحات بھی تھے: کسی کا امتحان تھا، کسی اور کا میک اپ ٹیسٹ تھا، وغیرہ۔ ہم یقینی طور پر ڈیڑھ ہفتہ یا اس سے زیادہ وقت کو ڈاؤن ٹائم سے منسوب کر سکتے ہیں۔ کچھ وقت "بحثوں" پر بھی گزرا: گیم میں کیا شامل کرنا ہے اس کے بارے میں نئے آئیڈیاز تقریباً روزانہ سامنے آتے تھے، اس لیے ہم نے بحث کی: "یہ ضرورت سے زیادہ ہے،" "یہ فٹ نہیں ہو گا،" وغیرہ۔ ہم نے بہت سارے خیالات پھینکے، مثال کے طور پر، دوڑنے والے کاکروچوں کو شامل کرنا جنہیں اضافی پوائنٹس حاصل کرنے کے لیے کچل دیا جا سکتا ہے: میری رائے میں، سب سے مشکل کاموں میں سے ایک یہ تھا کہ پہلے سے فیصلہ کرنا تھا کہ گیم میں کیا ہوگا اور "صرف ایک اور" شامل کرنے کی کوشش کیے بغیر منصوبہ پر قائم رہنا "خصوصیت. یوں یہ 45 دن جمع ہو گئے۔ ڈیڑھ ہفتے کے بعد گیم کا پروٹو ٹائپ تیار ہوا۔ اس عرصے کے دوران، ہمارے پاس واقعی کوئی گرافکس نہیں تھا، اس لیے ہم نے پبلک ڈومین سے کچھ چیزیں لیں (مثال کے طور پر، ہم نے Doodle Jump سے کاغذی پس منظر لیا) اور ہم نے خود پینٹ میں کچھ چیزیں نکال لیں۔ شروع میں، وہاں تھا ... - 2کھیل تکنیکی لحاظ سے بہت آسان ہے۔ ہمیں box2d (ایک فزکس انجن) استعمال کرنے کی بھی ضرورت نہیں تھی۔ ہم تصادم کو سنبھال سکتے ہیں اور اپنے طور پر فرضی کا حساب لگا سکتے ہیں۔ سب سے دلچسپ نکات جن پر میں روشنی ڈالوں گا وہ ہیں:
  1. ابتدائی طور پر، گیم کے تمام عناصر تصادفی طور پر تیار کیے گئے تھے۔ دوسرے لفظوں میں، ہم نے فراہم کنندگان (بلیک ہولز، کینچی، ننجا ستارے، پنسل لیڈ، دل) کو ایک صف میں ڈالا، بے ترتیب فراہم کنندہ ملا، بے ترتیب نقاط کے ساتھ ایک عنصر ملا۔ یہ بہت جلد واضح ہو گیا کہ یہ نقطہ نظر "واقعی واقعی اچھا نہیں تھا"۔ ٹیسٹ میں حصہ لینے والے دوستوں نے ٹیمپلیٹس کے استعمال کی سفارش کرتے ہوئے ہمیں ایک ہی بات بتائی۔ گیم ڈویلپمنٹ میں شامل لوگوں کے لیے، یہ شاید ایک واضح حل ہے۔ لیکن چونکہ ہم میدان میں نئے آنے والے تھے، یہ ہمارے لیے بہت ہی عملی مشورہ تھا۔

    تو ہم نے کئی ٹیمپلیٹس بنائے: قینچی کی ایک وادی؛ پنسل لیڈز — انہیں تیز رفتاری سے جمع کرنا بہت اچھا ہے (وہوش، ہوش، اپنی انگلی سے ہوش)؛ اور ایک اور ٹیمپلیٹ جسے میں نہیں جانتا کہ کیا کال کرنا ہے — میں آپ کو صرف یہ بتاؤں گا کہ ہم نے اپنے کوڈ میں کلاس کا نام کیا رکھا ہے: StraightForwardPattern۔

    شروع میں، وہاں تھا ... - 3

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

  2. یہاں اہم مسئلہ ہے جس کا ہم نے سامنا کیا۔ LibGDX ایک لامحدود لوپ میں رینڈر (فلوٹ ڈیلٹا) طریقہ کو کال کرتا ہے۔ یہ وہ جگہ ہے جہاں تمام عناصر کھینچے جاتے ہیں۔ پنسل کی لکیر اس طرح کھینچی گئی ہے: ہم انگلیوں کے نقاط حاصل کرتے ہیں اور وہاں ساخت کھینچتے ہیں۔ لہذا، اگر ہم اپنی انگلی کو اسکرین پر بہت تیزی سے منتقل کرتے ہیں، تو رینڈر (ڈیلٹا) کے طریقہ کار پر کالوں کے درمیان ملی سیکنڈز کی وجہ سے لائن میں "گیپ" ہو جائے گا۔

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

کھیل کے بارے میں

گیم پلے منفرد ہونے کا دعویٰ نہیں کرتا، لیکن یہ کافی اچھا ہے اور صارفین کو اندر کھینچ سکتا ہے۔ آپ پنسل کو کنٹرول کرتے ہیں، لفظی طور پر کاغذ پر ڈرائنگ کرتے ہیں اور رکاوٹوں کو دور کرتے ہیں — قینچی، ننجا ستارے، اور بلیک ہولز۔ دریں اثنا، آپ کی پنسل کی لیڈ ختم ہو رہی ہے اور آپ کو چھوٹی پنسلیں لینے کی ضرورت ہے۔ اگر آپ کی پنسل تھوڑی سی پنسل جمع کرنے سے پہلے ختم ہو رہی ہے، تو آپ آئینے کا ایک ٹکڑا اٹھا سکتے ہیں۔ چند سیکنڈ کے لیے، پنسل کا سیسہ استعمال کرنے کے بجائے، اسے بحال کر دیا جائے گا، تاہم، ایک ہی وقت میں، کنٹرولز کی عکس بندی کی جاتی ہے — اگر آپ کی انگلی بائیں طرف جاتی ہے، تو پنسل دائیں طرف کھینچتی ہے۔ آپ ایک ایسا دل بھی اٹھا سکتے ہیں جو آپ کو ایک بار رکاوٹ کو ٹکرانے اور زندہ رہنے دے گا۔ آپ اپنی انگلی اٹھائے بغیر پنسل کو جتنا لمبا حرکت دیں گے، آپ کا کمبو اتنا ہی اونچا ہوگا، جس کا مطلب ہے کہ آپ تیزی سے پوائنٹس جمع کریں گے۔ شروع میں، وہاں تھا ... - 4کھیل کی رفتار بھی بتدریج بڑھتی جاتی ہے۔ صرف ایک چیز غائب ہے ناراض پرندے ہیں۔ ابتدائی طور پر، ہم نے گیم کا نام کرن ڈیش رکھنے کا ارادہ کیا (پینسل کے لیے روسی لفظ کی نقل حرفی ہے کارندش — ہا! سمجھیں؟)، لیکن بعد میں ہم نے اپنا ارادہ بدل لیا اور پنسل ڈیش پر بس گئے۔ ہم نے ایسا اس لیے کیا کہ یہ خوبصورت جملہ صرف روسی بولنے والے سامعین ہی سمجھ سکیں گے۔ ہم نے کچھ دن پہلے اس گیم کو ریلیز کیا تھا اور اب اس کی تشہیر کر رہے ہیں۔ یہاں بھی ٹیم میں کسی کو تجربہ نہیں ہے۔ ہم نے گیم پروموشن کے بارے میں اپنی تمام معلومات مختلف مضامین سے حاصل کیں۔ ہم نے گیم کے بارے میں معلومات مختلف ویب سائٹس/فورمز پر مفت شائع کیں۔ ہمارے بامعاوضہ چینلز میں 4pd پر اشتہارات، ایک بلاگر کے ساتھ اشتہار، VKontakte پر عوامی گروپس میں کئی پوسٹس، اور AdMob اشتہارات شامل تھے۔ ویسے یہ پوسٹ بھی ہماری پروموشن کا حصہ ہے، اس لیے ویب سائٹ کی انتظامیہ سے اجازت لے کر میں گیم کا لنک یہاں شامل کر رہا ہوں۔ آپ کو گوگل پلے پر گیم یہاں مل سکتی ہے ۔ اگر آپ اسے انسٹال کریں گے تو میں شکر گزار ہوں گا (شاید آپ کو یہ پسند آئے گا!)، اور اگر آپ کوئی درجہ بندی چھوڑیں گے، تو میں آپ کے نام پر ایک بچے کا نام رکھنے کا وعدہ کرتا ہوں! :) شروع میں، وہاں تھا ... - 6
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION