ایده شما چیه !؟ : نحوه افزایش انرژی در بازیها

شروع موضوع توسط Fanous ‏1 دسامبر 2015 در انجمن ساخت بازی در فلش

کلمات کلیدی:
  1. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    سلام دوستان

    اگر اهل بازی های موبایلی باشین ، احتمالا با بازیهایی برخورد کردین که برای انجام هر مرحله ، به مقدار مشخصی انرژی نیاز هست
    و انرژی های موجود با گذشت زمان زیاد میشن ، مثلا هر 15 دقیقه یا هر 1 ساعت ، یک انرژی به انرژی های موجود اضافه میشه

    سوال من اینه که توی فلش چجوری این انرژی رو زیاد کنیم
    مثلا اگه قراره هر 30 دقیقه یک انرژی اضافه کنیم ، به چه روشی اینکار رو انجام بدیم؟
    ایده شما چیه ؟

    روشهایی که به ذهن خودم رسیده ، هرکدوم یه مشکلی داره:
    1 - استفاده از ساعت آنلاین ، که باعث میشه همیشه واسه بازی به اینترنت نیاز باشه و قابلیت آفلاین رو از ما میگیره
    2 - استفاده از ساعت گوشی ، که اگه کاربر ساعت گوشی رو تغییر بده ، توی کار ما اختلال ایجاد میشه و مثلا کاربر می تونه با تغییر زمان ، انرژی موجود رو زیاد کنه

    ممنون میشم اگر ایده ای دارین ، با من به اشتراک بگذارین
     
    نوشته شده توسط Fanous در ‏1 دسامبر 2015
  2. mmz2006

    mmz2006 Active Member

    ارسال‌ها:
    131
    تشکر شده:
    121
    امتیاز دستاورد:
    43
    شما می تونی از یه تایمر فراگیر توی پروژه تون استفاده کنی و هر دقیقه یا هر فریم خاصی ،اونو سیو کنی و دفعه بعد که بازیتون اجرا میشه اون زمان قبلی رو فراخوانی کنی.
    البته استفاده از تایمر به این شکل شاید رم و سی پی یو رو در گیر و سنگین کنه . در عمل نمی دونم چطور میشه.

    بد نیست ببینیم بازی های دیگه از چه روشی استفاده می کنن.
    مثلا مجموعه بازی Candy Crush Soda که فلش نیست البته از روش شماره 2 که گفتین استفاده می کنه و مشکلی که فرمودین رو هم داره.
     
    نوشته شده توسط mmz2006 در ‏1 دسامبر 2015
    Fanous از این پست تشکر کرده است.
  3. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    ممنون دوست من
    هدف شما اینه که با فراخوانی زمان قبل و مقایسه اون با زمان حال ، حساب کنی چندتا انرژی باید به کاربر اضافه کنیم
    خب باز هم به مشکل برمیخوریم ، اگه بازی بسته بشه و زمان و تاریخ گوشی تغییر کنه و بازی دوباره اجرا بشه ، حساب کتابمون بهم میریزه
    کاربر می تونه زمان رو یک روز جلو ببره و با این کار مخزن انرژیش رو پر کنه !!
     
    نوشته شده توسط Fanous در ‏1 دسامبر 2015
  4. ghasemMMb

    ghasemMMb New Member

    ارسال‌ها:
    29
    تشکر شده:
    19
    امتیاز دستاورد:
    3
    سلام
    ما می تونیم مقدار زمان را تو یه متغیر ذخیره کنیم(ذخیره دایمی) بعد در مراتب بعدی که بازی اجرا میشه این متغیر فراخوانی بشه و با زمان فعلی جمع بشه.
    مثلا ما 50 دقیقه بازی می کنیم.و از بازی خارج میشیم.در پایان بازی متغیر ما میشه 50.
    در مرتبه بعدی متغیر ما از 50 شروع و هر 1 دقیقه یکی به متغیر ما اضافه بشه.
     
    آخرین ویرایش: ‏1 دسامبر 2015
    نوشته شده توسط ghasemMMb در ‏1 دسامبر 2015
    Fanous و mmz2006 از این پست تشکر کرده اند.
  5. mmz2006

    mmz2006 Active Member

    ارسال‌ها:
    131
    تشکر شده:
    121
    امتیاز دستاورد:
    43
    سلام
    آفرین
    منظور من همین بود
     
    نوشته شده توسط mmz2006 در ‏1 دسامبر 2015
    ghasemMMb از این پست تشکر کرده است.
  6. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    سلام وتشکر
    مشکل این روش اینه که در مدت زمانیکه کاربر بازی رو بسته و بازی نمیکنه ، مخزن انرژیش پر نمیشه ، درصورتیکه توی فاصله زمانی که برنامه بسته هم باشه ، باید مخزن انرژی کم کم پر بشه و فلسفه اصلی این کار هم اینه که کاربر مدت زمان طولانی بازی نکنه ، بلکه مدتی برنامه رو ببنده و صبر کنه تا مخزنش پر بشه
    توی روش شما فقط مدت زمان هنگام بازی محاسبه میشه و زمانهایی که برنامه بسته است نادیده گرفته میشه
     
    نوشته شده توسط Fanous در ‏2 دسامبر 2015
  7. ghasemMMb

    ghasemMMb New Member

    ارسال‌ها:
    29
    تشکر شده:
    19
    امتیاز دستاورد:
    3
    سلام
    پس باید یا از ساعت آنلاین استفاده بشه یا بازی قابلیت اجرا در پس زمینه را داشته باشه که برا بازیهای فلش نمی دونم میشه یا نه.
     
    نوشته شده توسط ghasemMMb در ‏2 دسامبر 2015
    Fanous از این پست تشکر کرده است.
  8. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    نوشته شده توسط Fanous در ‏2 دسامبر 2015
  9. mmz2006

    mmz2006 Active Member

    ارسال‌ها:
    131
    تشکر شده:
    121
    امتیاز دستاورد:
    43
    من ثمره این کار رو نمی دونم چیه دقیقا ، آخه تایمر خود فلش توی پس زمینه کار می کنه.
    بعدش این روش هم خیلی مطمئن نیست چون برنامه های پس زمینه به راحتی قابل بستن اند.

    در هر صورت من Ane این لینکی که گفتین یعنی BackgroundTasker رو براتون قرار می دم.

    بعد از ایمپورتش توی پروژه باید از کد زیر استفاده کنید که تابع ، در پس زمینه ، هر ثانیه یک بار اجرا میشه:

    [JSS]import com.lorenzonuvoletta.backgroundtasker.BackgroundTasker;

    BackgroundTasker.instance.startTasker( task );
    private function task():void{
    trace("myTask");
    }[/JSS]
     

    پیوست ها:

    نوشته شده توسط mmz2006 در ‏3 دسامبر 2015
    Fanous و ghasemMMb از این پست تشکر کرده اند.
  10. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    سلام و ممنون از زحمتی که کشیدین
    راستش توی توضیحاتش نوشته بود که این ane مثل یک سرویس عمل میکنه و اگر هم برنامه کاملا بسته بشه ، کار خودش رو انجام میده !
    حالا من امتحانش می کنم ببینم جواب میده یا نه
    بازهم یک دنیا تشکر
     
    نوشته شده توسط Fanous در ‏3 دسامبر 2015
  11. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93

    با تشکر مجدد از لطف شما دوست عزیز
    من این ane رو تست کردم و اون چیزی که فکر می کردم رو انجام نداد
    فقط وقتی برنامه درحال اجرا باشه ، کار می کنه و هروقت برنامه بسته بشه ، اون هم کار نمیکنه
    فایل تست هم پیوست کردم که کدهاش اینه و کارش اینه که هر ثانیه یک متغیر و افزایش میده و ذخیره میکنه روی سیستم:

    PHP:

    stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;

    var so:SharedObject = SharedObject.getLocal("fill_energy");
    if (so.data.energy == undefined)
    {
        so.data.energy = 0;
        so.flush();
    }

    exit.addEventListener(MouseEvent.MOUSE_UP, exitapp);
    function exitapp(event:MouseEvent)
    {
        NativeApplication.nativeApplication.exit();
    }

    energy_text.text = String(so.data.energy);

    import com.lorenzonuvoletta.backgroundtasker.BackgroundTasker;
    BackgroundTasker.instance.startTasker( task );
    function task()
    {
        var energy_no:Number = Number(so.data.energy);
        energy_no +=  1;
        so.data.energy = energy_no;
        so.flush();
    }
     
    توی نت یک ane پیدا کردم که وقتی برنامه کاملا هم بسته باشه ، باز هم کار میکنه
    این هم آدرسش:

    https://github.com/myflashlab/alarmManager-ANE

    شما که توی نوشتن ane وارد هستین ، آیا امکانش هست که ورژن اصلی اون رو نوشت ؟
     

    پیوست ها:

    • fill_energy.rar
      اندازه فایل:
      کیلوبایت 5.9
      نمایش ها:
      1
    آخرین ویرایش: ‏5 دسامبر 2015
    نوشته شده توسط Fanous در ‏5 دسامبر 2015
    mmz2006 از این پست تشکر کرده است.
  12. mmz2006

    mmz2006 Active Member

    ارسال‌ها:
    131
    تشکر شده:
    121
    امتیاز دستاورد:
    43
    سلام و تشکر از شما دوست گرامی

    چون کدهای جاوا و لایبراری swc رو در اختیار نداریم نمی تونم نسخه اصلی رو بسازم.ولی میشه از اول کد هاشو نوشت ولی فعلا دانش اینو ندارم.
    ظاهرا باید از سرویس آلارم منیجر اندروید استفاده کرد و بعد کدهای سمت لایبراری فلش رو نوشت و در نهایت ساخت Ane .
     
    نوشته شده توسط mmz2006 در ‏6 دسامبر 2015
    Fanous از این پست تشکر کرده است.
  13. Fanous

    Fanous Well-Known Member

    ارسال‌ها:
    762
    تشکر شده:
    541
    امتیاز دستاورد:
    93
    سلام و ممنون که وقت گذاشتین
    نمونه ای که گذاشته واقعا کار میکنه
    ایشالا که در آینده نزدیک بتونین این کار رو انجام بدین :)
    موفق باشین
     
    نوشته شده توسط Fanous در ‏6 دسامبر 2015

به اشتراک بگذارید