Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> اصول اولیه در طراحی بازیهای کامپیوتری -> ++C به علاوه SDL میشه یه بازی خوب
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2, 3, 4, 5, 6, 7  بعدي

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


5 شنبه 17 آبان 1386 - 10:30
پاسخ بصورت نقل قول
نقل قول:
براي چي بيد ؟؟!


متغير loops داخل کلاس GameEngine به شکل const تعریف شده ؛ این طوری مقدار اولیه ورودی (loops) رو به متغیر میده ، اگه const نبود می تونست بنویسه :

كد:
GameEngine::GameEngine(vector<GameLoop*> loops)
{
 this->loops = loops;
   display = SDL_SetVideoMode(800, 600, 32, SDL_DOUBLEBUF|SDL_HWSURFACE);
}

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

یه سوال
نويسنده
پيغام
Pswin
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: جمعه 29 دي 1385
تعداد ارسالها: 261
محل سكونت: پشت کامپیوترم


شنبه 19 آبان 1386 - 20:27
پاسخ بصورت نقل قول
سلام
چه شکلی میشه یه فایل cur رو به کمک SDL لود کرد و بعدش شکل اشاره گر ماوس رو با اون عوض کرد؟!

_________________
سمینار تخصصی بازی سازی و گرافیک کامپیوتری (یکشنبه 29 آذر 1388 - 9:30 صبح تا 13 بعد از ظهر ):
http://barnamenevis.org/forum/forumdisplay.php?f=28
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


شنبه 19 آبان 1386 - 20:40
پاسخ بصورت نقل قول
نقل قول:

چه شکلی میشه یه فایل cur رو به کمک SDL لود کرد و بعدش شکل اشاره گر ماوس رو با اون عوض کرد؟!


اينو نمي دونم ...!
ولي براي عكس ها ( يعني وقتي قراره بجاي اشاره گر از عكس استفاده كنن!‌ ) مكان موس رو مي گيرن و اون عكس رو اونجا رندر مي كنن...
وقتي انيميشني مي شه خيلي جالب در مياد..!

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


شنبه 19 آبان 1386 - 21:36
پاسخ بصورت نقل قول
نقل قول:

متغير loops داخل کلاس GameEngine به شکل const تعریف شده


من const نديدم !


Pswin,

تنها تابعي كه تونستم در اين مورد پيدا كنم :

كد:
SDL::Mouse.setCursor(bitmap,white,black,transparent,inverted,hot_x=0,hot_y=0)
SDL::Mouse.set_cursor(bitmap,white,black,transparent,inverted,hot_x=0,hot_y=0)
Change mouse cursor. bitmap is form of cursor,instance of SDL::Surface.The cursor width must be a multiple of 8. The cursor is created in black and white according to bitmap and white,black,transparent,inverted. white,black,transparent,inverted represents that elements in bitmap as pixel value.


اينجا رو هم ببين :

http://www.gamedev.net/community/forums/topic.asp?topic_id=297710

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


1 شنبه 20 آبان 1386 - 13:09
پاسخ بصورت نقل قول
براي مجتبي:
ما براي همون رسم ها و ثابت كرد frame rate ازش استفاده كرديم.
براي اطلاعات درباره vector از اينترنت استفاده كن. msdn هم بايد مناسب باشه.
درباره فايلهاي پروژه شرمنده دوباره آپ مي كنم.
اون براي چي بيد هم خوب يه انتساب ساده است. مي تونستي داخل بدنه سازنده انتسابش بدي.

درباره cursor هم اون كرسري كه مجتبي گفت سياه و سفيده. مي تونيد كرسر رو حذف كنيد و كرسر خودتون رو در هر لوپ حلقه در محل موس بكشيد.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


1 شنبه 20 آبان 1386 - 13:22
پاسخ بصورت نقل قول
فايل ها رو گرفتم نيازي به آپلود نيست ...

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


2 شنبه 21 آبان 1386 - 22:12
پاسخ بصورت نقل قول
Rolling Eyes

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


جمعه 25 آبان 1386 - 23:56
پاسخ بصورت نقل قول
اين هم انجين من !
با قابليت لود عكس ثابت و انيميشن
حركت با شتاب ثابت
تشخيص حركت و كليك بر روي عكس يا انيميشن
چه قدر امكانات!!
http://rapidshare.com/files/70202524/Engine.rar.html
حجم 10 كيلو بايت
براي اجرا بايد كتابخونه هاي sdl و sdl_image رو داشته باشيد ...
الان ديگه مخم كار نمي كنه . چند تا سوال داشتم كه يكيش در مورد سرعت بود :

كد:
   // for Move
   if ( velocityX > 0 && (signed)( ::SDL_GetTicks() - lastTx) >= 1000 / velocityX ) {
      offset.x +=1;
      lastTx = ::SDL_GetTicks();
   }
   else if ( velocityX < 0 && (signed)( ::SDL_GetTicks() - lastTx) >= 1000 / -velocityX ) {
      offset.x -=1;
      lastTx = ::SDL_GetTicks();
   }

   if ( velocityY > 0 && (signed)( ::SDL_GetTicks() - lastTy) >= 1000 / velocityY ) {
      offset.y +=1;
      lastTy = ::SDL_GetTicks();
   }
   else if ( velocityY < 0 && (signed)( ::SDL_GetTicks() - lastTy) >= 1000 / -velocityY ) {
      offset.y -=1;
      lastTy = ::SDL_GetTicks();
   }


من از فرمول بالا استفاده كردم ( واحد سرعتم پيكسل در ثانيه هستش ... ) ولي سرعت هيچ وقت از سرعت fps بازي بيشتر نمي شه . اگه بخوام مقدار تغيير رو زياد كنم باز مشكل هست چون اون وقت اشيايي كه سرعت پايين دارند تيك مي زنند مشكل با يك if هم حل نمي شه . من سعي كردم - بايد 10 تا بازه تعريف كني ! كه تو سرعت هاي مختلف از فرمول هاي مختلف استفاده كنه . يه فكر ديگه اي هم كه به ذهنم رسيد محاسبه مقدار جا به جايي هست كه نياز به كتابخونه math داشت و راهش مشخصه ولي مي خواستم بدونم راه ديگه اي هم هست كه بشه حركت رو چه در سرعت هاي بالا و چه در سرعت هاي پايين تعريف كرد و مشكلي پيش نياد ؟!
اگه موضوعي باشه كه طراحي انجين رو بهتر بكنه خوشحال مي شم بگيد ( البته فكر كنم فقط پيمان و احسان و X ! اين مطالب رو دنبال كنند ... )

ويرايش :

من مي خوام يه كلاس به اسم level داشته باشم و هر وقت خواستم آبجكت هايي كه بايد رندر شوند با آبجكتهايي كه در هر مرحله مشخص شده اند جايگزين شوند . از كجا شروع كنم ؟؟!

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


شنبه 26 آبان 1386 - 00:25
پاسخ بصورت نقل قول
good...!

مجموعه فرمول حرکت رو از if بردار، به جاش برای تمام اجسام ، چه ساکن و چه متحرک ، بردار سرعت تعریف کن ( برداری که شامل اندازه سرعت و جهت حرکت جسم باشه... )
با توجه به شکل حلقه اصلی توی SDL فکر نمی کنم ، FPS مشکل کار باشه ، در هر حال تعداد Update های حلقه اصلی محدودت می کنه ...

اما به جای نوشتن if ، این کار ها رو در ادامه انجام بده :
1 - وقتی یک شی setVelocity می شه ، برداد سرعت رو تغییر بده ،
2 - توی update شی از نسبت زمان به سرعت برای بدست آوردن جایه جایی استفاده کن:

كد:

V = delta Pos / delta Time
delta Pos = delta Time * V //   IN MOADELE BARAYE MOHASEBE MAKAN AST
''
current Pos += delta Pos
current X = current Pos.x
current Y = current Pos.y
....


بنابراین اگر V = 0 باشد ، مجموعه ثابت میشه ، اما اگه یه if کلی برای هر شی بزاری تا اگه V != 0 این عملیات رو انجام بده بهتره ...
اینطوری از FPS و حلقه اصلی جدا می شی و کاملا با زمان حرکت می کنی ، فقط مشکل اینجاست که اگه مثلا یه جا برنامه pouse شد ، باید زمان هم puase شه ، وگرنه ، شی مجازا به راه خودش ادامه می ده ( هر جند رندر نمی شه )
اگه sdl کنترل زمان انجام داد که هیچ ، وگرنه باید یه timer بنویسی...

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
Pswin
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: جمعه 29 دي 1385
تعداد ارسالها: 261
محل سكونت: پشت کامپیوترم


2 شنبه 28 آبان 1386 - 18:41
پاسخ بصورت نقل قول
سلام
برای کار کلاس level می تونی از پشته استفاده بکنی و برای هر شی یه تابع (مثلا به اسم render) تعریف بکنی و هر وقت که لازم باشه اطلاعات رو از روی پشته برداری و کلاس مورد نظر رو با اون تابع فراخوانی کنی. اگر به کد ScenceManager داخل KGE نگاه بندازی میبینی که اون دقیقا همین کار رو میکنه

_________________
سمینار تخصصی بازی سازی و گرافیک کامپیوتری (یکشنبه 29 آذر 1388 - 9:30 صبح تا 13 بعد از ظهر ):
http://barnamenevis.org/forum/forumdisplay.php?f=28
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 5 از 7 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه قبلي  1, 2, 3, 4, 5, 6, 7  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |