نمایش نتایج 1 تا 29 از 29

نام تاپیک: مشکل با CPU Usage در ساخت بازی

  1. #1
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    مشکل با CPU Usage در ساخت بازی

    سلام دوستای من.
    من دارم یه بازی ساده می سازم. حالا وسط کار به یه مشکل بر خوردم! اینکه وقتی یکم بازی میکنی CPU Usage میره رو 100%! اگه میشه یه نگاهی به برنامم بندازین شاید تونستین کمکم کنین
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    848

    نقل قول: مشکل با CPU Usage در ساخت بازی

    دوست عزیز؛ من حوصله نکردم که کل کد رو بخونم؛ اما شما که حوصله داری سعی کن Game Programming رو اصولی یاد بگیری و با فریم ورکهای مناسب و ترجیحا مبتنی بر Net. مثل XNA کار کنی.
    ---
    با این یه تیکش اصلا حال نکردم؛
    foreach (IEnemy en in enemyList) // Check if an Enemy Passed the Finish Line
    {
    if (en.Object.Location.Y + en.Object.Height > gameField.Height - 100)
    {
    StopEnemies(sender, e);
    EndGame(sender, e);
    ClearEnemies(sender, e);
    break;
    }
    }



    شما میآین تو لیست کل Enemy هاتون Loop میزنید تا ببینید که کدوم یکی از خط رد شده ؟
    جالب نیست.
    ولی کلا بدک نبود

  3. #3
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    مرسی sia_2007 از نظرت.
    من دانشجوی ترم 2 نرم افزارم، اینم پروجه ی درس برنامه سازی پیشرفتمه! نمیتونم با XNA کار کنم.

    حالا که با اون تیکش حال نکردی بی زحمت یه راه حل هم پیشنهاد کن! غیر از این کار، چیکار میتونم بکنم؟

  4. #4
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    اون تیکه ای که باش حال نکردیو عوض کردم! حالا ببین حال میکنی؟ CPU Usage هم یکمی اوضاش بهتر شده، ولی بازم مشکل داره!
    فایل های ضمیمه فایل های ضمیمه

  5. #5
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    حالا CPU رو بیخیال! واسه بازی چه پیشنهادی دارین؟

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    848

    نقل قول: مشکل با CPU Usage در ساخت بازی


    موقعی که سمت راست رو مثلا نگه میداریم؛ نرمال حرکت میکنه
    اما اگه دکمه آتش رو بزنیم؛ کلید راست رو باید از نو فشار بدیم

  7. #7
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    مرسی از انتقادت. پیشنهادی نداری واسه حل این مشکل؟

  8. #8
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    848

    نقل قول: مشکل با CPU Usage در ساخت بازی

    نباد زیاد سخت باشه
    شاید رویدادهات رو بد انتخاب کردی
    در واقع مشکل نیست
    یه اشتباه سادست.

  9. #9
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    کسی نمیدونه مشکل از کجاس؟؟!
    اگه با BackgroundWorker قسمت Firing رو بنویسم مشکل حل نمیشه؟ اگه میشه یکی لطف کنه بگه چجوری میتونم از تایمر تو BackgroundWorker استفاده کنم؟

  10. #10
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    آذر 1387
    محل زندگی
    تهران
    پست
    848

    نقل قول: مشکل با CPU Usage در ساخت بازی


    ببین میتونی یه متغییر Boolean بذاری
    تو Down ؛ متغییر True میشه.
    نو Up ؛ متغییر False میشه.
    و تا زمانی که متغییر True است؛ حرکت در جهت آخرین دکمه ادامه میابد.
    شاید Performance برنامت هم بیشتر بشه.

  11. #11
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    خب کجای برنامه بنویسم تا زمانی که متغییر True است؛ حرکت در جهت آخرین دکمه ادامه میابد؟ تایمر بذارم؟

  12. #12
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    سلام اصلاً خوب نیست.اینو نگفتم که فکر کنی پر مدعا هستم گفتم که تمرکزت را بیشتر کنی.حرکت هواپیما خیلی بده چون از thread ها استفاده نکردی.باید یک thread بسازی که اگر بهش مثلا ورودی right دادی به سمت راست هواپیما را هدایت کنه و اگر left دادی برعکس و thread را موقع شروع بازی start کنی.اینطوری دیگه هواپیما تکه تکه حرکت نمی کنه و cpu usage هم تقریبا 0 میشه. و مشکلی هم که دوست خوبمون گفتند در رابطه با اینکه وقطی شلیک می کنی دیگه هواپیما حرکت نمی کنه و باید دوباره کلید جهت را فشار بدی حل میشه.به طور کلی استفاده از timer یعنی از اول اشتباه کردن.امید وارم از این پست من دوستانه برداشت کرده باشید.


    دوستان به خدا اینکه بی دلیل کسی رو تشویق کنیم باعث بیشرفتش نمیشه بیایید سعی کنیم به جای تشویق بی جا به دوستانمون کمک کنیم و مشکلات کد نویسی شون رو حل کنیم.ممنون



    I feared failure until I realized that I only fail when I don't try.



    از شكست مي ترسيدم اما سر انجام دريافتم تنها زماني شكستني هستم كه از تلاش دست بر مي دارم.



  13. #13
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    مرسی نوید جان از راهنماییت. منم میخاستم با Thread بنویسم ولی Thread نویسی بلد نیستم! میشه بگی چجوری باید بنویسم؟

  14. #14
    کاربر دائمی آواتار L u k e
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    قزوین
    سن
    30
    پست
    559

    نقل قول: مشکل با CPU Usage در ساخت بازی

    بازی تونو دانلود کردم روون نیست
    خیلی کند حرکت می کنه
    ولی ساختن همین هم با توابع .net هنره

  15. #15
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    L u K e جان مشکل اصلی من سر همین کندیش بود که خوشبختانه حل شد. وقتی بازی کامل شد میفرستم تا اون موقع نظرتونو بگین

  16. #16
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    سلام دوست من.ببین این می تونه در زمینه Thread کمکت کنه؟
    http://www.barnamenevis.org/sh...d.php?p=975067
    من خودم acrobat نداشتم که ببینمش

  17. #17
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    نوید جان من این PDF رو خوندم، خیلی مفید بود، مرسی. ولی نتونستم واسه بازیم Thread بنویسم!!

  18. #18
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    خوب پس این مطلب رو ببین
    برای کار با thread باید از کتابخانه زیر استفاده کنی.
    using System.Threading;
    حالا یک تابع می نویسی که داخل اون کد هایی را که مثلاً داخل تایمر نوشتی رو می نویسی.
    البته باد کد ها را داخل یک حلقه while بزاری که مدام اجرا بشه حالا باید داخل حلقه while اولین خط برنامه این باشه thread.sleep(time) که این Time همون مقدار Interval تایمر هست.
    و حالا به جای اینکه بگی timer1.enable=true; می نویسی
    Thread MyThread = new Thread(new ThreadStart (MyCallbackFunction));
    MyThread.Start();


    MyCallbackFunction نام هون تابع هست.کد ها رو برات ضمیمه می کنم

    فایل های ضمیمه فایل های ضمیمه

  19. #19
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    خب اینجا یه مشکلی هست! اینکه نمی شه از Control ای که تو Thread اصلی برنامه ساخته شده تو این Thread استفاده کنم! Error میده:

    Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.

  20. #20
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    خوشبختانه این مشکل هم حل شد! باید تو سازنده این کد رو بنویسیم :


    Control
    .CheckForIllegalCrossThreadCalls = false;

  21. #21
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    هر موقع از کنترل می داخل thread استفاده کنی باید از deligate ها استفاده کنی.خوب حالا بالاخره از thread ها استفاده کردی؟ یا اصلاً تونستی مفهوم thread را بفهمی؟

  22. #22
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    مفهوم Thread رو میدونستم، نمیدونستم چجوری باید Thread نویسی کنم! الان چیزای ابتداییه Thread نویسیو با کمک شما یاد گرفتم! مرسی!

    آره. حرکت Weapon رو با Thread نوشتم، Reload هم همینطور.

  23. #23
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    راستی اینو یادم رفت بگم! Deligate چیه؟

  24. #24
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    فلسفه وجودی Delegate
    بطور معمول وقتی شما یک فرمول ریاضی دارید ، می توانید از راه های مختلف آن را حل کنید و یا اینکه با گذاشتن مقادیر مختلف در یک فرمول خاص همیشه به یک جواب برسید . در حالت اول وقتی برای یک فرمول راه حل های مختلفی وجود دارد و یا اینکه پاسخ یک فرمول فقط و تنها فقط در این حالت خاص از یک روش خاص محاسبه می شود نیاز است تا کاربر روش خاص را مشخص کند و پس از تعیین ورودی های فرمول اعداد را جایگزین کرده و فرمول را با مشخصات آن حل کند ، به زبان ساده تر می توان گفت وقتی که بخواهیم روش انجام یک فرآیند را که در یک چارچوب مشخص انجام می شود ، کاربر تعیین کند ، باید به فرآیند مان که یک روال مشخص دارد یک زیرروال اضافه کنیم که آن زیرروال را کاربر تعیین کرده ، تا نه فرآیند به مشکل بخورد و نه درخواست کاربر نادیده گرفته شود . برای حل این مشکل در دنیای برنامه نویسی Delegate ها بوجود آمدند . Delegate چیست ؟
    ِDelegate درواقع یک متد است که مانند یک نوع داده ( مثل int ) برای ارسال به متدهای مختلف استفاده می شود .
    دلیگیت ها از خودشان چیزی ندارند و هر جای پروژه که تعریف بشوند در تمامی پروژه قابل مشاهده هستند . هر کسی می تواند مقدار دلخواهش را برای دلیگیت بفرستد . ( به مطالب پایین دقت کنید )
    چگونگی ایجاد یک Delegate
    برای ایجاد یک Delegate ابتدا باید نام و مقدار باز گشتی Delegate را مشخص کنید . این کار باید در سطح کلاس انجام شود به این معنی که شما نمی توانید یک Delegate را در داخل یک کلاس تعریف کنید و باید آن را خارج از کلاس و در سطحی برابر با سطح کلاس اقدام به ایجاد آنها کنید . برای مثال :
    پس از اینکه نام دلیگیت ، ورودی ها و خروجی آن را مشخص کردید باید دلیگیت را به عنوان ورودی به متد دلخواهتان بفرستید برای این کار باید مثل یک پارامتر ساده ، دلیگیت را صدا کنید ، مثلا اگر برای گرفتن یک پارامتر عددی می نویسید int i برای گرفتن دلیگیت باید نام دلیگیت و اسمی که می خواهید در متد از آن استفاده کنید را مشخص کنید برای مثال
    namespace Calculator
    {
    delegate int operation(int a, int b);
    class calc
    {
    int oper(int i , int j , operation o)
    {
    int z = 0;
    return z = o(i, j);
    }
    }
    }
    در متد Oper بالا دو ورودی i و j و نیز یک دلیگیت از نوع Operation که بالاتر تعریف کردیم با نام O از ورودی دریافت شده است پس از ، در داخل متد Oper یک متغیر با نام Z تعریف کردیم و بعد از آن مقدار برگشتی تابع دلیگیت را که بالاتر از نوع int ( نوع برگشتی ) تعریف کردیم داخل Z ریختیم . و برای دو پارامتر ورودی که دلیگیت ما می گرفت ، دو متغیر i و j را که از ورودی گرفته بودیم به O فرستادیم . تا اینجا هیچ چیزی مشکل ندارد بجز اینکه وقتی به دستور O می رسیم چه اتفاقی خواهد افتاد ؟ بجای O چه چیزی اجرا خواهد شد ؟ برای پاسخ به این سوال کمی صبر کنید .
    فرض کنید که در برنامه تان متدهای بسیار زیادی دارید که دو ورودی int از کاربر دریافت می کنند و یک خروجی int تولید می کنند مثلا متدهای زیر را در نظر بگیرید .
    int doSum(int i, int j)
    {
    return i + j;
    }
    public int dosub(int i, int j)
    {
    return i – j;
    }
    public int doMul(int i, int j)
    {
    return i * j;
    }
    public int doDiv(int i, int j)
    {
    return i / j;
    }
    متدهای بالا می توانند در هر کلاسی باشند هم در کلاسی که متد Oper تعریف شده و هم در کلاسی که بعدا متد Oper را صدا می کنیم و یا در کلاس دیگری که در جایی که کلاس Oper ایجاد شده (new) آن کلاس هم new شده .
    اما اتفاقی که هنگام رسیدن به دستور O خواهد افتاد . فرض کنید در کلاس x کلاس calc که متد Oper در آن قرار دارد new شده است . و می خواهیم در کلاس x از متد Oper استفاده کنیم . برای این کار باید به روش زیر عمل کنیم .
    C = new calc ();
    int a= 8,b=9;
    C.oper(a, b, anotherClassInstanceContainSumMethod.doSum);
    همانطور که ملاحظه می کنید دو متغیر a و b که بالاتر مقداردهی شده اند به متد Oper فرستاده شدند و برای اجرای دستور O که بالاتر سوال آن مطرح شد , در این حالت دستور doSum درنظر گرفته شد که در کلاس دیگری قرار دارد که متدهایی در آن وجود دارد . توجه کنید که همین مقادیر a و b برا اجرا به متد doSum که در کلاس Oper با نام O شناخته می شد ارسال خواهند شد . شما هنگام مقداردهی به متد می توانید از هر متد دیگری که delegate شما را ( از نوع ورودی و نوع خروجی ) پشتیبانی می کند ، استفاده کنید .
    گرچه مثالی که زده شد مثال خیلی سطح پایینی است و اصولا از دلیگیت ها اصلا در این موارد استفاده نمی شود اما به شما کمک می کند که درک صحیحی از نحوه پیاده سازی Delegate ها پیدا کنید .



    امید وارم که خوب متوجه بشی.
    فایل های ضمیمه فایل های ضمیمه

  25. #25
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    مرسی نوید جان! Example رو متوجه شدم ولی اینی که همینجا نوشتیو زیاد نفهمیدم! حالا واسه Control چجوری باید از Delegate استفاده کنم؟

  26. #26

    نقل قول: مشکل با CPU Usage در ساخت بازی

    اینو تا اینجاش داشته باش بقیشم میام برات ...
    فایل های ضمیمه فایل های ضمیمه

  27. #27
    کاربر دائمی آواتار hossein_ignore
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    بابلسر
    سن
    33
    پست
    132

    نقل قول: مشکل با CPU Usage در ساخت بازی

    دمت گرم exLord ولی مثل اینکه با 2010 نوشتی! من 2008 دارم

  28. #28

    نقل قول: مشکل با CPU Usage در ساخت بازی

    نقل قول نوشته شده توسط hossein_ignore مشاهده تاپیک
    دمت گرم exLord ولی مثل اینکه با 2010 نوشتی! من 2008 دارم
    اره 2010 ... فایهاشو بردار به پروژه خودت اضافه کن .......

  29. #29
    کاربر دائمی
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    Ram
    پست
    322

    نقل قول: مشکل با CPU Usage در ساخت بازی

    من فکر کنم اگه به شما بگن یه بازی مثل GTA 6 بساز ،برای اجرای بازی به سرور ناسا نیاز داری.اینونگاه کن ببین CPU بالای 1% نمیره.و شماhossein_ignore سعی کن فرق بین این پروژه و پروژه exlord را متوجه بشی.
    فایل های ضمیمه فایل های ضمیمه

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •