مصرف کردن بیش از حد cpu و ram در حال اجرای apk ساخته شده در فلش توسط اندروید

aminzamani68

New Member
با سلام و ادب خدمت تمامی دوستان
من مدتها پیش از طریق همین مجیدآنلاین و سایتهای مشابه به این تونستم زبان as3 را از نظر خودم به صورت تقریبا حرفه ایی فرا بگیرم.
من از روز اولی که به طرف برنامه نویسی و طراحی و با فلش روی آوردم قسطم این بود که یکی از توسعه دهندگان اندروید باشم و الان که بعد از مدتها کار با فلش که دارم بازی تقریبا حرفه ایی خودم را با گرافیک بالا طراحی میکنم به وسط های ساخت بازی که رسیدم متوجه شدم که فلش حجم زیادی از CPU و RAM را اشغال میکنه و این مشکل تو گوشی های هوشمند خودشو نشون میده مخصوصا تبلت های چینی که از CPU و RAM پایین تری برخوردارند، این مشکل منو کلافه کرده :sad:

بعد از مدتها کار با فلش و فرا گرفتن اصول برنامه نویسی تو فلش الان با این مشکل روبرو شدم
آیا باید چیکار کنم؟ فلش و as3 را بعد از این همه فراگیری و بعد از 10ها هزار خط کدنویسی که واسه بازیم نوشتم ، ببوسم و بذارم کنار؟
خیلی دپرسم :cry:
دوستان راه چاره ایی برای حل این مشکل ندارند؟
آیا Event.ENTER_FRAME هایی که باز هستند و تا آخر بازی نیاز به چک کردن دائمی فریم ها دارند و بسته نمیشن باعث بیشتر مصرف شدن CPU و RAM گوشی میشه؟
آیا در فلش در تنظیمات خروجی apk اندروید کسی هست که بتونه تمام موارد این قسمت رو توضیح بده آیا تنظیمات خاصی وجود داره تا در اجرای بازی و لود و روان کار کردن بازی تاثیر داشته باشه؟
 

aliamel

کاربر فعال
فکر می کنم نیاز دارید تا کمی بیشتر در مورد فلش بدونید.با این که اطمینان دارم برنامه نویس خوبی هستید اما احتمال می دم تجربه کافی رو ندارید.توصیه می کنم کمی به نرم افزار فلش ،محیط اون ، کلاس ها و... بیشتر مسلط بشید.
بدونید کی ، کجا ، چگونه و چرا باید فضا های اشغال شده توسط APP رو آزاد و چه موقع فضایی رو به برنامه اختصاص بدید و یا چگونه مدیریت صحیحی بر روی Library و Timeline داشته باشید.
موارد بسیاری وجود داره که روی خروجی نهایی شما موثره. یک نمونه خیلی اولیه اینه که موقع خروجی گرفتن کلیه دستوراتtrace را کامنت کنید.
در سطح پیشرفته تر نگاهی به بحث مدیریت حافظه به کمک متد () pauseForGCIfCollectionImminent داشته باشید.
به طور کلی می گم در هر زمینه ای علاوه بر آموزش و یادگیری نیاز به تجربه هم داریم.
یه کم بیشتر تحقیق کنید و نگاه تونو به فلش کمی عمیق تر کنید.
حتما موفق خواهید شد.
 

Mehrdad155

کاربر فعال
aminzamani68@

یکی از بهترین روشها برای بالا بردن سرعت بازی و fps روی دیوایس ها استفاده از فریم ورک های شتابدهنده است مثل Starling یا genome2d و.. .
اینها مستقیما خروجی را می اندازن روی GPU و از از تکنولوژی stage 3D استفاده میکنن.
 

aminzamani68

New Member
ممنون دوستان

آره دوستان در حقیقت من هیچ اطلاعاتی در مورد AIR به دست نیاوردم و تا حالا چیزی در موردش نخوندم ، چون نیاز واجب رو فراگیری زبان میدونستم، اما شما درست میگید فرا گیری چنین کتبی برای توسعه دهندگان واجبه من به دنبال این مطالبی که شما گفتید میرم و امیدوارم که به نتیجه مطلوب برسم اما یه سوال در مورد trace کردن بعد از خروجی گرفتن آیا trace ها هم مثل Comment ها از دید Compiler مخفی نمیشن؟ در مبحث مدیریت حافظه در مورد متد () pauseForGCIfCollectionImminent کجا میتونم اطلاعات خوبی بدست بیارم؟ آیا تو انجمن هست؟ در مورد فریم ورک های شتابدهنده است مثل Starling یا genome2d بیشتر بگید؟ کجا میتونم اطلاعات خوبی بدست بیارم (متاسفانه صفحه جستوی انجمن تو سیستم من بد باز میشه و هیچ چیزی هر چی سرچ میکنم پیدا نمیکنه )
 

aliamel

کاربر فعال

پیوست ها

  • 00.jpg
    00.jpg
    79.6 کیلوبایت · بازدیدها: 15
آخرین ویرایش:

Mehrdad155

کاربر فعال
در مورد فریم ورک های شتابدهنده است مثل Starling یا genome2d بیشتر بگید؟ کجا میتونم اطلاعات خوبی بدست بیارم

Starling یه فریم ورک بسیار عالی جهت استفاده ی بهینه از کارت گرافیک شماست .یعنی با کد زدن توسط این فریم ورک شما زحمت CPU را تا حد بسیار بسیار زیادی میارید پایین و تحویلش میدید به GPU . و همین باعث میشه که بازی شما بسیار نرم و بدون استاتر یا تیک زدن اجرا بشه. و این شامل دیوایس های با سیستم عامل android و iOS و...هم هست

بازی Angry birds که روی فیس بوک قرار داره با Starling فلش ساخته شده . یه سر به سایت اصلیش بزن و ساختارشو ببین. کاملا هم مجانی است.

http://gamua.com/starling/

این بازی را هم حتما دانلود کن. برای دیدن بهترین نتیجه با آخرین نسخه ی firefox اجراش کن:

http://www.leebrimelow.com/whack-a-great-open-source-starling-game/

همچنین فریم ورک های قدیمی هم الان دارن خودشونو تحت Starling بهینه میکنن.نمونه اش Citrus Engine است که بیشتر جهت ساخت بازی های پلتفورمر به کار میرود.سایت زیر و مثال هاشو ببین . متوجه سرعت اجرا در مرورگرت میشی:

http://citrusengine.com/

همه ی توضیحات بالا در مورد Genome2D هم صادقه . گرچه Starling محبوبتره ولی این یکی ظاهرا ادعای سرعت بسیار بالاتری را داره. سایتش را ببین:

http://blog.flash-core.com/?tag=genome2d

موفق باشید _ مهرداد
 
آخرین ویرایش:

Arash-zr

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

در مورد اینکه بازی که میسازید و دچار افت فریم ریت میشه عرض کنم خدمتتوت که ؛ این موضوع به عوامل زیادی برمیگرده و بهترین راهکارش اینه که از یک فریم ورک برای ساخت بازی و برنامه تون استفاده کنید
که البته این راه رو من خودم نمیپسندم چون به نظرم تا وقتی که آدم تمام کار های یک بازی رو خودش انجام نده مالک واقعی و سازنده واقعی بازی نیست ،
پس با این حساب اگه شما نمیخواید از فریم ورک استفاده کنید باید تمام تلاشتون رو بکنید و تا با تکنیک های ساده کردن کد نویسی و ... آشنا بشید
این موضوع چیزی نیست که با یک خط کد بهش برسید!
توجه کنید که تا شما تجربه کافی رو به دست نیارید نمیتونید این بازی با حجم کدنویسی زیاد و گرافیک زیبا رو روی پردازنده های نسبتا ضعیف دیوایس های همراه اجرا کنید

راه کار من برای شما اینه که گرافیک بازیتون رو در مرحله اول تا جای ممکن ساده کنید (پولیگون کمتر = فریمریت بیشتر) از افکت های شادو و بلور و ... به هیچ وجه استفاده نکنید! sprite های سنگین و شلوغ رو به image تبدیل کنید

این ها رو انجانم بدید ، اگر به فریم ریت مطلوب نرسیدید بگید تا راهکار ساده کردن کد های as بحث کنیدم که بحثش خیلی مفصله
در خدمتتون هستم

در پناه حق :rose:
 

akherat

مدیر انجمن
دوستان کامل توضیح دادن

ببین تو هرچه قد که به as3 تسلط داشته باشی باز به نیتیو نرمیرسه

من 1 نرم افزار رو با 2 زبون واسه اندروید زدم - یکی فلش و دیگری جاوا (شبیه سازی متروی ویندوز)

با فلش سرعت کند و با 2.3.6 به بالا کار میکنه
با جاوا سرعت عالی و با 2.3.6 به پایین هم کار میکنه

اگه باز باید حتما پلتفرمت فلش باشه از flex استفاده کن اون سعی کرده مثل جاوا باشه یعنی مثل eclips یا intJ پروژت رو میسازه و activity داره
سرعتشم چه در توشتن و چه در اجرا بالاتر از flash IDE هست
 

++Hadi++

Active Member
اگه بازیتون 3 بعدی هست بهتره از امکانات molehill استفاده کنید و البته بهتره از فریم ورکهای سریعتر و قوی تر 3 بعدی سازی مثل minko یا away3d و ... استفاده کنید...استفاده از فلش بیلدر خیلی بهینه تر از فلش هست...به طور کامل مدیریت رم رو هم یاد بگیرید...
starling و ... هم برا استفاده از gpu مناسبتره البته برا گرافیک دو بعدی...
 

aminzamani68

New Member
ممنونم از راهنمایی تمامی دوستان ( به دنبال نکاتی که یادآور شدید میرم امیدوارم نتیجه مطلوب بگیرم )
و اما ...
1- کسی هست در مورد تنظیمات خروجی APK در قسمت AIR 3.2 for Android توضیحی در مورد تمامی قسمت هاش بده که چطور بهترین نتیجه رو بگیریم؟
2 و همچنین قست تنظیمات Publish Settings توضیحاتی اگر کسی میتونه بده
3 من به این مشکل برخوردم که وقتی صفحه کارمون رو بر روی AIR 3.2 for Android قرار داده ایم و میخواهیم کار کنیم حتی اگر یک کد stop(); هم بنویسیم در یک فریم بنویسیم و صفحه طراحی خالی هم باشد با زدن کنترل اینتر و Compiler که میکنیم در قسمت Output چنین نوشته میشود

[PHPS]

[SWF] Untitled-2.swf - 351393 bytes after decompression
[UnloadSWF] Untitled-2.swf
Test Movie terminated.



[/PHPS]




کسی نیست بگه این منظور چیه نام Untitled-2.swf نام همون فایلی که بازه و داری طراحی میکنی (توضیح بدید ممنون میشم) :-?

و وقتی خروجی APK رو گرفتم در حال ساخت فایل APK دو اخطار داده میشه و فایل APK هم ساخته میشه تصاویر رو ضمیمه کردم یه توضیحی بدید یکی در مورد USB هست و دیگری فایل APK و xml ممنون میشن . ( تشکر بابت تمام راهنمایی هایی که دوستان عزیز در این بابت به من کردم ) همتون گلید :rose:
 

پیوست ها

  • APK-xml-USB.zip
    46.3 کیلوبایت · بازدیدها: 2
آخرین ویرایش:

Arash-zr

Member
اگه تا الان به پاسخ سوالاتون رسیدید که هیچ ولی اگر هنوز پاسختون رو نگرفتید من یه پاسخی در حد توان خودم عرض کنم خدمتتون
در مورد تنظیمات ایر که تا جایی که من میدونم تنظیمات خیلی خاص وپیچیده ای نداره و همون تنظیمات پیشفرض کارتون رو راه میندازه (مهمترین قسمتش میتونه انتخاب رندرر و فول اسکرین و افقی یا عمودی بودن نرم افزار باشه)

در مورد اون بخش output
اون یک سری اطلاعات کلی که فلش میده تا نشون بده فایل کامپایل شد (حجم و نام فایل و ...)

یه پیشنهاد دوستانه هم بهت بدم :
سوال خوبه ، ولی سعی کن اول خودت دنبالش بری ... و فکر کنی که مثلا جواب فلان سوالت چی میتونه باشه! ... اگه به نتیجه نرسیدی سوال بپرس :)
موفق و سربلند باشی
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا