Arvanttt

تند و سریع

Arvant

تند و سریع












۵۶ مطلب با موضوع «بازی سازی :: برنامه نویسی بازی» ثبت شده است

خیلی از امکاناتی که معمولاَ برای پلتفرم IOS وجود دارد شاید هنوز از طریق cocosقابل دسترسی نباشد و به همین خاطر گاها نیازمند فراخوانی توابع Objectiv-c در داخل کد اصلی بازی که به زبان ++C است می شویم .

پیاده سازی این امکان به مراتب ساده تر از پیاده سازی توسط جاواست چون سی پلاس پلاس و آبجکتیو سی رابطه خانوادگی خوبی با هم دارند و اصولاَ بهتر با هم کنار خواهند آمد .

مطلب بعدی در ادامه مطالب مربوط به دسترسی به امکانات بومی در cocos2d-x مربوط به فراخوانی توابع ++C  با استفاده از جاواست .

برای این کار دو عمل اصلی انجام میدیم .

ابتدا تابع مورد نظر را به صورت Native در جاوا تعریف می کنیم .

سپس باید بر اساس یک سری قوانین خاص تابع مورد نظر را در ++C پیاده سازی کنیم .

احتمالا وقتی دارید یک بازی را با ابزاری با قابلیت چند سکویی مثل cocso2d-x توسعه می دهید پیش خواهد آمد که نیاز داشته باشید که از امکانات اختصاصی یک پلتفرم استفاده کنید .

به عنوان مثال فراخوانی متد مربوط به ثبت نظر و فراخوانی اکتیویتی بازار نمونه خوبی از این نیاز به حساب میاد یا خیلی مثال های دیگری که خود شما حتما هنگام تکمیل کردن بازی با آنها رو به رو خواهید شد.

خب هر وقت که به همچین نیازی برخوردید نیازی به درماندگی نیست اگر بلد باشید که در داخل کد های بازی که با ++C  نوشته اید توابع جاوا را فراخوانی کنید .

البته برای این کار باید آشنایی حداقلی با برنامه نویسی جاوا نیز داشته باشید که احتمالا این آشنایی رو دارید پس شروع می کنیم .

شاید یکی از اصلی ترین دغدغه های که در هنگام انتخاب یک پلتفرم با قابلیت چند سکویی وجود دارد امکان بهره گیری از امکانات خاص هر پلتفرم است .به طور مثال وقتی که بازی شما روی پلتفرم های آندروید و یا آی او اس ارائه می شود به احتمال زیاد هر پلتفرم به صورت جداگانه دارای کتابخانه ها و یا امکاناتی هستند که انجین به نوبه خود فاقد آن است .

شاید بتوان ملموس ترین مثال آن را خرید درون برنامه ای ،تبلیغات درون برنامه ای ،و یا ابزار های مختلف اشتراک گذاری نام برد که برای پلتفرم های مختلف به صورت جداگانه برای آنها ابزار های مختلفی در نظر گرفته شده است .

تشخیص برخورد یکی از نیاز های اساسی بازی به شمار می رود .شما برای تشخیص برخورد تیر به هدف یا برخورد شی با زمین یا هزار اتفاق دیگر نیاز دارید که این برخورد ها را تشخیص دهید .دو راه معمول برای تشخیص برخورد وجود دارد:

  • یکی از راه ها استفاده از چهار ضلعی است که از آن می توان برای بیشتر بازی های معمولی استفاده کرد و روند خیلی ساده ای دارد .
  • راه دوم استفاده از انجین فیزیک است که برای اشیاء با پیچدگی های ظاهری زیاد و چند ظلعی های نامتوازن استفاده می شود .استفاده از این روش نیازمند آشنایی با انجین فیزیک و یک سری اصول فیزیک می باشد و پیچیدگی آن نسبت به روش اول بیشتر است .

در ادامه مبحث بازی پرنده شل و ول به مبحث مدیریت رویداد ها میرسیم .قبلاَ با استفاده از منو ها امکان استفاده از کلیک یا تاچ رو مشاهده کرده بودیم ولی در بعضی از حالت ها مثل کلیک بر روی یک Sprite یا یک Layer باید با استفاده از سیستم مدیریت رویداد انجین  رویداد های مانند کلیک موس ، تاپ در صفحه تاچ یا رویداد های صفحه کلید را مدیریت کنیم .

یکی از عوامل موفقیت یک انجین می تونه راحتی اضافه کردن امکاناتی مثل خرید درون برنامه ای یا اضافه کردن تبلیغات از سرویس های مختلف باشد که میزان پیچیدگی این کار ها نقش زیادی روی علاقه مندی کاربران مختلف به انجین خواهد داشت .اگر چه برای سرویس های معروفی مثل سرویس تبلیغات گوگل یا سرویس درون برنامهای گوگل و اپل بیشتر انجین ها به سرعت پلاگین های خود را منتشر میکنند اما گاهی پیش خواهد آمد  که شما برای سرویس های مثل خرید درون برنامه  ای بازار نیازمندید که بدون تکیه به ابزار های رسمی  این کار را انجام دهید .

قبلاَ تاحدودی با کلاس های Scene و Layer آشنا شدیم اما برای مرور یادآور می شوم که یک سین(scene) مجموعه ای از لایه  (Layer) هاست و در هر نمایش فقط یک سین قابل نمایش وجود دارد در حالی که این سین خود می تواند شامل لایه های مختلف باشد .

ما بازی را به مجوعه ای از سین ها تقسیم بندی می کنیم .که از آنها برای مصارف خاصی مانند منوی بازی ، سپلش اسکرین ،صفحه تنظیمات ، صفحه اصلی بازی ، در باره ما و ... استفاده می کنیم .

آشنایی با اکشن ها:

Action عبارت است از رفتار خاصی که ما برای رسیدن به  هدف مورد نظر  بر روی اسپرایت اعمال می کنیم .انجین cocos2d-x  از اکشن های متفاوتی پشتیبانی می کند که در پروژه نمونه می توانید آنها را مشاهده کرده و فراخور نیاز از آنها استفاده کنید .

مثال های زیر همگی گونه ای از این اکشن ها هستند :

cc.moveTo/cc.moveBy:این اکشن باعث جابه جای اسپرایت به محل تعین شده می شود .

cc.scaleTo/cc.scaleBy: باعث تغیر اندازه اسپرایت به اندازه مورد نظر می شود .

cc.rotateTo/cc.rotateBy : باعث چرخش اسپرایت با زاویه مورد نظر می شود .

cc.jumpTo/cc.jumpBy: باعث جابه جایی به نقطه مورد نظر همراه با حرکت عرضی و طولی می شود که حالتی شبیه پرش را براساس  اندازه حداکثر ارتفاع و تعداد پرش  ایجاد می کند .

و....

دلایلی وجود دارد که تمایل داشته باشیم از محیط توسعه ای به جز Cocos Code IDE استفاده کنیم از جمله ی این دلایل می توان به موارد زیر اشاره کرد :

  • آماده نبودن این محیط برای Linux
  • سرعت پایین 
  • کلاَ دل خوشی از Eclipse ندارید :)

به عنوان جایگزین  از WebStorm یا Netbeans و Brackets می توان استفاده کرد .که البته فکر می کنم بهترین گزینه همان WebStorm باشد.