بازی های سبك پلتفرم (ساده)
بازیکننده در این نوع بازی مجبور به پرش از روی موانع مختلف یا بالا رفتن از سدهای فیزیکی است، مانند بازی سوپر ماریو یا بازی سونیك
گرافیك | آماده |
---|---|
تعداد مراحل | 2 |
منوی ورود | ساده |
حركات | حركت به طرفین- پرش- دشمن ثابت |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های سبك پلتفرم (متوسط)
بازیکننده در این نوع بازی مجبور به پرش از روی موانع مختلف یا بالا رفتن از سدهای فیزیکی است، مانند بازی سوپر ماریو یا بازی سونیك
گرافیك | آماده |
---|---|
تعداد مراحل | 5 |
منوی ورود | نیمه حرفه ای |
حركات | حركت به طرفین- پرش- شلیك- دشمنان متحرك |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های سبك پلتفرم (حرفه ای)
بازیکننده در این نوع بازی مجبور به پرش از روی موانع مختلف یا بالا رفتن از سدهای فیزیکی است، مانند بازی سوپر ماریو یا بازی سونیك
گرافیك | آماده-حرفه ای |
---|---|
تعداد مراحل | 10 |
منوی ورود | حرفه ای |
حركات | حركت به طرفین- پرش- شلیك- دشمنان متحرك- دشمن تیر انداز- دشمن دارای هوش مصنوعی- حركات خاص كاراكتر- تغییر اصلحه |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های جنگی (ساده)
محوریت اصلی این نوع بازی ها بر روی پیروزی در جنگ استوار است و شما باید با غلبه بر دشمنان مراحل را به پایان برسانید. مانند جنگ هوایی یا جنگ تانكی
گرافیك | آماده |
---|---|
تعداد مراحل | 2 |
منوی ورود | ساده |
حركات | حركت به طرفین- شلیك- دشمن ثابت |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های جنگی (متوسط)
محوریت اصلی این نوع بازی ها بر روی پیروزی در جنگ استوار است و شما باید با غلبه بر دشمنان مراحل را به پایان برسانید. مانند جنگ هوایی یا جنگ تانكی
گرافیك | آماده |
---|---|
تعداد مراحل | 5 |
منوی ورود | نیمه حرفه ای |
حركات | حركت به طرفین- شلیك- دشمنان متحرك- جوایز حین جنگ |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های جنگی (حرفه ای)
محوریت اصلی این نوع بازی ها بر روی پیروزی در جنگ استوار است و شما باید با غلبه بر دشمنان مراحل را به پایان برسانید. مانند جنگ هوایی یا جنگ تانكی
گرافیك | آماده-حرفه ای |
---|---|
تعداد مراحل | 10 |
منوی ورود | حرفه ای |
حركات | حركت به طرفین- شلیك- دشمنان متحرك- دشمنان ثابت- هوش مصنوعی- جوایز حین جنگ- ارتقا- تغییر صلاح |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های مسابقه ای (متوسط)
محوریت اصلی این نوع بازی ها پیروزی بر رقبا در مسابقات است معمولا مسابقات با وسایل نقلیه انجام میپذیرد.
گرافیك | آماده |
---|---|
تعداد مراحل | 5 |
منوی ورود | نیمه حرفه ای |
حركات | حركت- مسابقه با رقبای كامپیوتری- |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های مسابقه ای (حرفه ای)
محوریت اصلی این نوع بازی ها پیروزی بر رقبا در مسابقات است معمولا مسابقات با وسایل نقلیه انجام میپذیرد.
گرافیك | آماده-حرفه ای |
---|---|
تعداد مراحل | 10 |
منوی ورود | حرفه ای |
حركات | حركت- مسابقه با رقبای كامپیوتری- ماژول های خاص در حین مسابقه- ارتقا و شخصی سازی وسیله |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های آموزشی ای (متوسط)
محوریت اصلی این نوع بازی ها آموزش است. مانند آموزش الفبا فارسی یا انگلیسی و آموزش ریاضی
گرافیك | آماده |
---|---|
تعداد مراحل | 0 |
منوی ورود | نیمه حرفه ای |
حركات | آموزش جزئی بحث |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
بازی های آموزشی ای (حرفه ای)
محوریت اصلی این نوع بازی ها آموزش است. مانند آموزش الفبا فارسی یا انگلیسی و آموزش ریاضی
گرافیك | آماده-حرفه ای |
---|---|
تعداد مراحل | 0 |
منوی ورود | حرفه ای |
حركات | آموزش كلی- ثبت امتیاز |
سورس كد | |
خروجی ویندوز | |
خروجی اندروید | |
صدا گذاری | |
درج اطلاعات شما در بازی | |
درج اطلاعات درخواستی |
با سلام با توجه به اینکه اکثر دوستان در هنگام خروجی اندروید دچار مشکل میشن قصد داریم چند نمونه از خطاهای رایج هنگام خروجی گیم میکر رو رفع ایراد کنیم.
خطای اول
A problem occurred configuring root project ׳׳.
> Could not resolve all dependencies for configuration ׳:classpath׳.
> Could not resolve com.android.tools.build:gradle:2.2.0+.
Required by:
project :
> Could not resolve com.android.tools.build:gradle:2.2.0+.
> Failed to list versions for com.android.tools.build:gradle.
> Unable to load Maven meta-data from
https://jcenter.bintray.com/com/android/tools/build/gradle/
maven-metadata.xml.
> Could not GET ׳https://jcenter.bintray.com/com/android/tools/build/
gradle/maven-metadata.xml׳.
> Connect to
در بخش کد نویسی چند نکته هست که اگه این نکات رو رعایت کنید هیچ مشکل افت فریمی از نظر برنامه نویسی براتون پیش نخواهد امد .
نکته اول استفاده از حلقه هست
با توجه به اینکه حلقه ها در هر فریم به صورت اتوماتیک اجرا و بسته میشن توسیه میکنم تا حد ممکن از حلقه ها استفاده نکنید در کنار حلقه ها از عبارت تکرار نیز تا حد امکان استفاده نکنید.
حلقه ها عبارت اند از
.for-statement.
.do-statement.
.switch-statment.
و عبارت تکرار
.repeat-statment.
حالا ممکنه مجبور باشین از حلقه استفاده کنید در این صورت اگه حلقه فقط یک بار نیازه اجرا بشه در ایونت .Create. ازش استفاده کنید (مثل اسکریپت فارسی نویس گیم میکر) یا ایونتهای مشابه که یک بار اجرا میشن یا حداقل در هر فریم اجرا نمیشن. در صورتی که لازمه به صورت مکرر حلقه شما اجرا بشه از ایونت .Step. استفاده کنید و تا حد ممکن از ایونت .draw. دروی کنید و فقط در صورت اجبار از
با توجه به اینکه تعداد درخواست آموزش بهینه سازی بازی به 20 حمایت در بخش درخواستها رسید بهینه سازی بازی رو آموزش میدیم.
لازمه ذکر کنم بهینه سازی بازی مقوله خیلی ساده ای هست فقط کافیه به موارد کوچکی دقت کنید تا بازیتون از نظر حجم و برنامه نویسی بهینه بوده که باعث میشه بازیتون دانلود بیشتری داشته باشه و تو اکثر گوشیهای قدیمی و جدید بدون مشکل اجرا بشه.
بریم سر اصل مطلب
اسپرایتها
دقیت کنید که اسپرایتها به همراه صدا و تصویر زمینه تعیین کننده اصلی حجم بازی شما هستند،
دیده شده برخی دوستان برای اینکه خروجی بازیشون کیفیت خوبی داشته باشه از اسپرایتهای بزرگ استفاده میکنن و در روم بازی اون اسپرایت رو به وسیله کد کوچیک میکنن یا برعکس روم بازیشون رو خیلی بزرگ در نظر میگیرن این کار بسیار کار اشتباهی هست که اولا باعث افزایش حجم بازیتون میشه (معمولا بازیهایی با حجم بالا دانلود نمیشن یا رغبت کمتری برای
خب بریم سراخ ایجاد زندگی (جان) در گیم میکر
برای اینکار اسپرایت نمایش زندگی رو لازم داریم که فریم کلی اون به شکل زیر خواهد بود
اسم این اسپرایت رو spr_live میذاریم
سپس یک اسپرایت برای نمایش حالت مرگ کاراکتر با نام spr_dead ایجاد کرده و دو اسپرایت دیگه یکی برای افزایش و دومی برای آبجکت کاهش تعداد زندگی با نامهای spr_food و spr_fire ایجاد میکنیم.
در آبجکت پلیر در ایونت .create. کد زیر رو اضافه میکنیم.
live=3
در کد بالا ما تعداد زندگی رو با توجه به اسپرایتمون که سه وضعیت داره برابر 3 قرار دادیم.
در نتیجه کدهای ایونت کریت آبجکت پلیر به صورت زیر میشه
image_speed=0.02
shot=0
bullet=13
shovel=3
live=3
بریم حالت مرگ رو کد نویسی کنیم برای این کار در ایونت .step. آبجکت پلیر کدهای زیر رو اضافه میکنیم
if(live=0 && sprite_index!=spr_dead)
{
shot=1
sprite_index=spr_dead
image_index=1
alarm[2]=22
}
خط اول : ما شرط کردیم اگر تعداد زندگی برابر یک باشد و اگر اسپرایت پلیر اسپرایت مرگ نباشد (شرط اسپرایت جهت جلوگیری از اجرای مجدد کد هست و به عنوان یک کلید
خب در این قسمت قصد داریم برای بازیمون تعدادی تیر و تعدادی خشاب تعریف کنیم
برای اینکار ابتدا یه اسپرایت با نام spr_recharge برای افکت تغییر خشاب ایجاد میکنیم
یه اسپرایت دیگه برای نمایش زمینه تیر و خشاب با نام spr_gun_health ایجاد میکنیم
دو اسپرایت دیگه با نامهای spr_bullet برای تیر و spr_shovel برای خشاب ایجاد میکنیم
این دو اسپرایت برای مچ شدن با اسپرایت قبلی ادیت شدن
خب با توجه به اینکه در هنگام شلیک دوست دارم صدای شلیک پخش بشه یه sound با نام snd_shot ایجاد کرده و صدای شلیک رو براش انتخاب میکنیم.
دقت کنید استفاده زیاد از صدا و بک گراند حجم بازیتون رو بالا میبره.
خب بریم سراغ آبجکت پلیر در ایونت کریت آبجکت پلیر دو متغییر یکی برای تیر و دیگری برای خشاب ایجاد میکنیم با توجه به اسپرایتمون تعداد تیر رو 13 و تعداد خشاب رو 3 قرار میدیم.
پس دو خط زیر رو به ایونت کریت آبجکت پلیر اضافه میکنیم
bullet=13
shovel=3
در نتیجه ایونت کریت آبجکت پلیر
خب در این مرحله قصد داریم برای کاراکترمون قابلیت شلیک تیر قرار بدیم
منابع مورد نیاز برای این مرحله اسپرایت شلیک تیر و اسپرایت تیر هست (میتونید سورس آموزش رو در آخر مطلب دانلود کنید)
یه آبجکت برای تیرمون با نام obj_tir ایجاد میکنیم
یک ایونت کریت برای آبجکتمون ایجاد کرده ویک برگه کد به این ایونت اختصاص داده کدهای زیر رو در این برگه وارد میکنیم
motion_set(0,25*obj_player.image_xscale)
image_xscale=obj_player.image_xscale
خط اول : ما مسیر حرکت تیر رو مشخص میکنیم با توجه به اینکه کاراکترمون میتونه به سمت چپ و راست حرکت کنه ما سرعت حرکت تیر رو به جهت اسپرایت آبجکت پلیر با کد obj_player. .image_xscale. مرتبط میکنیم یعنی با این کار اگر کاراکتر ما به سمت راست باشد مقدار image_xscale یک و در صورتی که به سمت چپ باشد مقدار image_xscale برابر -1 است در این صورت سرعت حرکت آبجکت تیر ما بسته به وضعیت پلیر -25 یا 25 خواهد بود .
خط دوم : در این خط ما
خب در این آموزش یاد میگیریم چطور یه آبجکت ایجاد کنیم که دارای دو حالت ایست و حرکت به دو طرف با دو اسپرایت متفاوت باشه.
یه آبجکت ایجاد کنید اسم آبجکت رو obj_player میذاریم و اسپرایت پیش فرض اون رو spr_stop میذاریم
یک ایونت کرت برای آبجکت خود ایجاد میکنیم
در ایونت کریت یک برگه کد از لیب .control. ایجاد میکنیم
در برگه کد ایجاد شده کد زیر را وارد میکنیم
image_speed=0.02
با توجه به اینکه تعداد فریم اسپرایت spr_stop ما سه عدد است (خیلی کم)
کد بالا رو نوشتیم تا سرعت اجرای فریمهای اسپرایتمون کم بشه و رو مخ نباشه.
سه ایونت left - right - no key رو از بخش کیبورد به ابجکتمون اضافه میکنیم.
نتیجه
در ایونت left کد زیر را وارد میکنیم
image_speed=0.2
motion_set(180,4)
sprite_index=spr_move
image_xscale=-1
خط اول کد فوق با توجه به پایین بودن سرعت اجرای فریم که در ابتدا ایجاد کردیم سرعت اجرای فریم رو بالا میبره چون تعداد فریم دو اسپرایت ما یکی نیست.
خط دوم باعث حرکت آبجکت به