ورود

View Full Version : گفتگو: کمک برای تکمیل گیم پلی بازی



AliyerEdon
جمعه 26 تیر 1388, 23:04 عصر
سلام دوستان
همونطور که می دونید یا نمی دونید ما داریم یه بازی می سازیم. تا پیک هم داشت برای پرسیدن چند سوال برای طراحی بازی. حالا می خوام اینجا در مورد تکنیک های برنامه نویسی برای تکمیل گیم پلی از دانش اساتید استفاده کنم. موتور بازی هم موتور قوی و ساده ای هست و شما لطف کنید به زبون DX یا الگوریتم بگید خیلی راحت می شه تبدیل کرد به زبون موتور بازی.
خب الان به نظرم در مورد پیاده کردن اهداف زیر کمک کنید بهتره. البته سعی می کنم یه هدف رو تعیین کنم و بعد تکمیل اون بریم سر هدف بعدی:
هدف فعلی:
قصد من فعلا پیاده کردن لرزش دوربین هنگام انفجار های بازیه. خب برای لرزش دوربین به نظر خود من باید دید دوربین رو بالا و پایین و همچنین چپ و راست کرد. خب مشکلم اینه که مقدار x و y رو چطور کم و زیاد کنم به مقدار کم و همچنین چطور ضرب در مقدار TimeDelta کنم تا دوربین روان لرزش داشته باشه.
برای پاسخ به این سوال فرض کنید از موتوری مثل KGE خودمون استفاده می کنید. منظورم از دوربینه اونه. چون نزدیک DX هست راحتتر می شه تبدیل کرد به زبان موتور بازی. زبان هم جاوا یا سی پ پ یا شارپ.

pswin.pooya
جمعه 26 تیر 1388, 23:31 عصر
آه KGE:‌با این که مدت زیادی میگذره که روش کار نکردم ولی هنوز خیلی بهش علاقه دارم.

توی KGE از کلاس Camera باید برای کنترل دوربین استفاده کنی. این کلاس و کلا کلاس های sn دارای یک متد به نام SetPosition هستن که موقعیت دوربین رو ست می کنه. مثال زیر نحوه تنظیم موقعیت دوربین توی KGE رو نشون میده:


cam->SetPosition(math::Vector(x,y,z));

خوب حالا باید دو تا موقعیت برای لرزش در نظر بگیری و بین اونها یه interpolation نسبت به زمان انجام بدی که دوربین جابجا بشه. از یک مقدار شروع میکنی میری به دوی و دوباره بر میگردی به اولی اما حتما گرفتن مقدار میانه بین این دو مقدار رو نسبت به زمان یادت نره چون اصل نرم نشون دادن حرکت همینه. یکی از مزیتهای که موتور KGE برای رندر اسکلتهای انیمیشنی و نرم بودن انیمیشن اونها داره استفاده از همین تکنیک هستش که تا مدت زیادی داخل موتور معروفی مثل ایرلیخت نبوده و بعدا اضافه شده. توی این مورد کوچول بهتر از من میتونه توضیح بده. ولی اگه نظر من رو بخوای جابجا کردن target دوربین میتونه موثرتر باشه. ضمنا میزان حرکت دوربین رو بهتره با توجه به فاصله انفجار از اون در نظر بگیری.

kochol
شنبه 27 تیر 1388, 21:19 عصر
سلام
اول از همه بگم که طبق قوانین فروم باید هر سوال رو تو یک تاپیک بپرسی و بهتره که عنوان تاپیک رو هم تغییر بدی به یه چیزی مثل لرزش دوربین.

1- به نظر من تغییر دادن دید دوربین حالت لرزش بوجود نمی یاره یه چیزی شبیه چرخش می شه و باید مکان دوربین رو هم تکون بدی.

2- نمی تونی فقط x,y دوربین رو تکون بدی بلکه باید دقیقا دوربین رو در راستای بردار راست و بالای دوربین تکون بدی.

3- اما در مورد TimeDelta و حرکت بین دو نقطه.
fInterp = مقدار زمانی که باید بین دونقطه طی شود / TimeDelta
x = x1 + (x2 - x1) * fInterp

AliyerEdon
یک شنبه 28 تیر 1388, 14:18 عصر
در مورد موتور KGE اول بگم که من از این موتور استفاده نمی کنم و فقط گفتم که بهتره کدهاتون رو به زبان اون بنویسید.
بعد اینکه بهتره یه کد آماده برای این کار بنویسی و بعد روی اون کد توضیحات بدید تا بهتر درک بشه.
از Kochol هم واقعا ممنونم چون اون توضیحات شماره ی 3 خیلی به درد خورد.

حالا اگه یه کد کامل بنویسید با موتور KGE و بزارید واقعا ممنون می شم. البته فقط کد مربوط به لرزش دوربین در تابعی مثل Update(). که اون تابع رو من در وقتی که انفجاری شد اجراکنم. تئوری آدم رو یه مقدار گیج می کنه.

AliyerEdon
یک شنبه 28 تیر 1388, 14:25 عصر
خوب حالا باید دو تا موقعیت برای لرزش در نظر بگیری و بین اونها یه interpolation نسبت به زمان انجام بدی که دوربین جابجا بشه. از یک مقدار شروع میکنی میری به دوی و دوباره بر میگردی به اولی اما حتما گرفتن مقدار میانه بین این دو مقدار رو نسبت به زمان یادت نره چون اصل نرم نشون دادن حرکت همینه. یکی از مزیتهای که موتور KGE برای رندر اسکلتهای انیمیشنی و نرم بودن انیمیشن اونها داره استفاده از همین تکنیک هستش که تا مدت زیادی داخل موتور معروفی مثل ایرلیخت نبوده و بعدا اضافه شده. توی این مورد کوچول بهتر از من میتونه توضیح بده. ولی اگه نظر من رو بخوای جابجا کردن target دوربین میتونه موثرتر باشه. ضمنا میزان حرکت دوربین رو بهتره با توجه به فاصله انفجار از اون در نظر بگیری.

در مورد اولی کوچول جواب دادن. در مورد میزان فاصله با دوربین هم اگه یه متغیر اضافه بشه مشکل حل می شه. حالا به نظر شما position دوربین باید هنگام انفجار عوض بشه یا Target؟ یا هر دو؟
به نظر شماها تو بازی های معروف مثل GTA یا COD از کدوم تکنیک های ذکر شده در جملهی قبل استفاده شده؟ Target یا position ؟ به نظر خودم تو GTA هر دو تکون می خورد ولی تو بازیه اول شخص جالب در نمیاد فکر کنم.

kochol
دوشنبه 29 تیر 1388, 15:26 عصر
در مورد موتور KGE اول بگم که من از این موتور استفاده نمی کنم و فقط گفتم که بهتره کدهاتون رو به زبان اون بنویسید.
بعد اینکه بهتره یه کد آماده برای این کار بنویسی و بعد روی اون کد توضیحات بدید تا بهتر درک بشه.
از Kochol هم واقعا ممنونم چون اون توضیحات شماره ی 3 خیلی به درد خورد.

حالا اگه یه کد کامل بنویسید با موتور KGE و بزارید واقعا ممنون می شم. البته فقط کد مربوط به لرزش دوربین در تابعی مثل Update(). که اون تابع رو من در وقتی که انفجاری شد اجراکنم. تئوری آدم رو یه مقدار گیج می کنه.

شرمنده کسی برات کد نمی زنه ما فقط می تونیم الگوریتم بدیم.

این که باید مکان یا تارگت دوربین جا به جا بشه رو خوب تست کن ببین کدوم بهتره

AliyerEdon
سه شنبه 30 تیر 1388, 10:23 صبح
باشه عیبی نداره. همین الگوریتم هم خیلی کمک کرد. از همتون متشکرم.:چشمک::قلب: