PDA

View Full Version : گفتگو: اندکی تامل برروی XNA



hector2000
پنج شنبه 22 اسفند 1387, 19:00 عصر
با سلام
این تاپیک را باز کردم تا بتوانیم در مورد XNA به تبادل اطلاعات بپردازیم.
بعوان شروع سوالی که همیشه برای من وجود داشته اینست که ایا با XNA میتوان بازیهای امروزی همچون War Craft ویا Company of Heroes را با همان سرعت و کیفیت نوشت؟
سرعت در بازی های سنگین ساخته شده با XNA چگونه خواهد بود؟
مولفه سرعت در طول بازی ساده و بازی تحت شبکه محلی بسیار پر اهمیت است
ادامه دارد....
سپاس

littledemon
دوشنبه 26 اسفند 1387, 11:26 صبح
منم به شخصه از گفتگو در این باب بدم نمیاد ..ولی معمولا این جور تاپیک ها بعد از یه مدت با اختلال یه فرد داغون میشه ...

بگذریم : اگه فقط گفتگو باشه خوبه !

من طبق چیزایی که دیدم و شنیدم میتونم یه نظر شخصی بدم : "xna برای کارهای سه بعدی مناسب نیست " . حالا بحث مناسب بودن و نبودنش باز به یه موضوع ختم نمیشه .خیلی علت ها داره ولی اگه واقعا روی xna و توسعه اش کار بشه و براش عرق ریخته بشه به نظر من میشه یه چیز جالب سه بعدی ازش کشید بیرون .حرف شما اینه که ایا میشه باهاش اون بازی ها رو نوشت یا نه !؟؟ و بنده با توجه به نظر شخصیم میگم نوشتنشو میشه نوشت . اما راه سختیه و حوصله و نبوغ میخواد . xna به دلیل استفاده از directX به نظر من در حال حاضر تونسته در عرصه 2D خوب خودشو نشون بده . این دلیل نمیشه که بگیم در عرصه 3D قدرت نداره ! نه . قدرت داره ولی به موازاتش نیاز به توسعه و کار روی هسته داره .
:متفکر:

hector2000
دوشنبه 26 اسفند 1387, 12:58 عصر
با سلام و تشکر از شما
می خواستم دلیل این حرفتون را بدونم که می فرمایید "xna برای کارهای سه بعدی مناسب نیست " بر اساس گفته ماکروسافت "برنامه نویسان با استفاده از xna می توانند بازیهای سه بعدی بسیار سنگینی را در گاراژ خونشون بنویسند" ؟!
تنها مساله ای که من را تا حدودی نگران می کند بحث سرعت است.همانگونه که دوستان مستحضر هستن بیشتر بازی های بزرگ با ویژال سی نوشته می شود ولی نمی توان به سادگی گفت که xna هم به همان نتایج می رسد.برای مثال یک بازی استراتژیک را در نظر بگیرید که انبوهی از ابجکتها در بازی وجود دارند و می بایست هر کدام حرکات و فرامین خودشون را انجام دهند(همانند بازی ژنرال) حال سوال من اینست که ایا چنانچه از بهترین الگوریتمها استفاده شود در چنین بازی سنگینی از لحاظ سرعت و سایر مولفه ها دچار مشکل نمی شویم؟
ایا می توان سرعت برنامه های نوشته شده با دات نت را با سرعت کدهای نوشته شده با ویژال سی(native) هم سرعت دانست؟

littledemon
سه شنبه 27 اسفند 1387, 09:14 صبح
می خواستم دلیل این حرفتون را بدونم که می فرمایید "xna برای کارهای سه بعدی مناسب نیست "
دلیلش رو شاید نوشته باشم : نظر شخصی بر اساس تجربه شخصی ! ببینید سرعت تو بازی های کامپیوتری و موتور های مختلف نسبیه . نمیتونیم بگیم حتما و همیشه با native ها اگه نوشته بشه سرعت بالاتره ! به نظر من : اگه از الگوریتم های فوق العاده بهینه استفاده بشه میتونید با 3d خوب کار کنید . کسی هم منکرش نیست ! یعنی من! بنده خودم 3d کارهایی اندک رو میشناسم که پیشرفت فوق العاده ای داشتن و دارن ! ولی بحث افت فریم همه جا و همیشه بوده و هست حتی با همون native هاش هم ! چرا ؟ چون یه کد که بهینه نباشه به علاوه گرافیک های غیر بهینه در بازی ، به نظر من اگه /00001 هم از سیستم اضافه تر بکشه از سیستم چند جای دیگه هم این ها تبدیل به /0001 میشه ! و این به نظر من برای حافظه یه فاجعه هست! پس افت فریم رو تا حدی میشه با استفاده از تکنیک های گرافیکی رفع کرد !
اینا نظرات شخصی منه .ممکنه اشتباه باشه پس اگه کسی نقض کرد اونا رو ، تعجب نکنید.
و اما :

ایا می توان سرعت برنامه های نوشته شده با دات نت را با سرعت کدهای نوشته شده با ویژال سی(native) هم سرعت دانست؟

سوال خود بنده هم هست ! که فکر میکنم جناب kochol باید تشریف بیارن یکم راهنمائیمون کنند!

Nima_NF
سه شنبه 27 اسفند 1387, 16:49 عصر
وقتی می خواهید از حالت native به .Net بروید و کار کنید، باید بدانید که شما در آینده می خواهید از چه تکنولوژی ها یا ابزارهایی استفاده کنید.
ساخت بازی حرفه ای یعنی ساخت یک game engine با استفاده از تکنولوژی ها کنونی (شامل شتابدهنده های سه بعدی، صوت، فیزیک، ارتباطلات سرور ها برای بازی های آنلاین، ابزارهای ارتباطی سه بعدی و ده ها plugin که برای کار سایر نرم افزارهای مورد نیاز وجود دارد و یا باید ساخته شود)

مثلا Havok و NVIDIA PhysX کتابخانه های تجاری/رایگان حرفه ای برای بازی های حرفه ای هستند، به صورت رسمی فقط برای برنامه نویسی native وجود دارند، همین طور صدها کتابخانه معروف فیزیک رایگان دیگر که open source هستند و در بسیاری از بازی ها استفاده می شوند. حال آنکه در XNA بسیاری از این محصولات وجود ندارد.

یا در مورد صوت مثلا OpenAL یا FMOD هم به همین شکل هستند.

در مورد ابزارهای مورد نیاز برای ارتباطات بازی های آنلاین نیز به همین شکل است، بسیاری از شرکت ها مانند gamespot ابزارها و سرور های خود را برای انجام بازی آنلاین به شرکت های سازنده بازی لایسنس می دهند که باز هم Native هستند. (راه اندازی سرور ها در سطح وسیع نیارمند ارتباطات و امکانات وسیعی است)

پس در بحث بازی وقتی می خواهید انتخاب پلتفرم و برنامه نویسی کنید فقط بحث کاهش performance یا کاهش fps مطرح نیست، بلکه باید با دید وسیع تری ابتدا ابزارهای مورد نیاز خود را از قبل انتخاب کنید. بنابراین اگر در پروژه خود به هیچ کدام از این کتابخانه ها احتیاج ندارید (یا مثلا می خواهید همه آن ها را خودتان بنویسید !!!! ) آنگاه قضیه فرق می کند.


نکته دیگری این است که سعی کنید چنین سوالاتی را هرگز مطرح نکنید (حتی در فروم های مطرح دنیا) که هرگز به جواب درستی نخواهید رسید. هر کس با توجه به دید خود از ساخت بازی مطالب را مطرح می کند، ممکن است بنده در آینده و در نسخه های بعدی پلتفرم PS3 را برای عرضه بازی هایی در سطح بین الملی نیز مدنظر داشته باشم (با توجه به شرایط ،ارتباطات و امکانات شخصی) آنگاه عملا پروژه XNA برای من کاربردی نخواهد بود و انتخاب از ابتدا برایم اشتباه بوده است.
و یا برعکس شاید فردی قصد ساخت یک بازی ساده و کوتاه مدت برای یک برنامه تلویزون ایران را داشته باشد آنگاه XNA حتی اگر در صدی کاهش کارآیی داشته باشد برای او به صرف تر خواهد بود.

پس قبل از هر کاری ابتدا خودتان تمامی این تکنولوژی ها را بررسی کنید و نتیجه گیری کنید که آیا برای کار شما، با هزینه شما و با نیروی کار شما کدام بهتر و بهینه هست.

hector2000
سه شنبه 27 اسفند 1387, 23:31 عصر
از نظر من برای کسی که می خواهد بازی سازی را شروع کند xna بهتر است ولی همچنان بر روی سوال خودم پافشاری می کنم و می خواهم بدانم ایا سرعت xna از native کمتر است ؟.
بازی سازی با ویژال سی(native) بسیار مشکل است و واقعا عده ای خبره و نابغه نیاز دارد
من پروژه های خوبی دیدم که با xna نوشته شده بود و از لحاظ صدا و افکت و سایر موارد از پروژه های بزرگ چیزی کم نداشت حال چنانچه اینگونه فرض کنیم که خود برنامه نویس xna انها را پیاده سازی خواهد کرد(صدا،افکت و..) شما کدامیک را پیشنهاد می کنید؟کد نویسی تحت xna و یا ویژال سی (native)؟

littledemon
چهارشنبه 28 اسفند 1387, 09:21 صبح
جناب Nima_NF :
فرمایشات شما درست ! حرفی هم توش ندارم بنده ! اما این طریقه صحبت کردن شخص بنده رو بزارید پای بی تجربگی بیش از حد !
برای خود من واقعا یه معذل بود این بحث fps و افت فریم و ... و همچنین native که برام هم کسی این مسله رو باز نکرد اون طور که میخواستم ! راستش به خاطر همین مشکل من در طی 2 سال هیچ چی از gameنفهمیدم و lib ها وengine های مختلف رو برای کار انتخاب کردم.اخرشم هیچ چی . ولی به یه نتیجه کوچولو رسیدم!
چیزی که hector2000 عرض کرد خدمتتون از نظر من هم یکم تائید شده هست. یعنی xna در عین سادگیش قدرت مورد نیاز برای یه کاربر تازه کار رو داره ! حالا اون تکنولوژی هایی که عرض کردی شما دیگه به نظر من حرفه ای میشه ! شاید بهتر باشه وقتی بحث برای یه تازه کار این قدر ها هم حرفه ای نباشه دیگه جزئیات رو مورد بحث قرار ندیم ! چون یه تازه کار معمولا برای کار و تمرین میخواد با یه چیزی مثل xna کار کنه پس نیاز به تخمین منابع و تکنولوژی های مورد نیاز در اینده نداره ! داره ؟
از نظر من باید یکم بیشتر بحث بشه ! من هنوز سر در گمم ! با تشــــــــــــــکر

Nima_NF
چهارشنبه 28 اسفند 1387, 15:26 عصر
شاید بهتر باشه وقتی بحث برای یه تازه کار این قدر ها هم حرفه ای نباشه دیگه جزئیات رو مورد بحث قرار ندیم ! چون یه تازه کار معمولا برای کار و تمرین میخواد با یه چیزی مثل xna کار کنه پس نیاز به تخمین منابع و تکنولوژی های مورد نیاز در اینده نداره ! داره ؟
فردی که شما مطرح کردید به او "تازه کار" نمی گویند بلکه شخصی که مدنظر شماست فردیست که می خواهد "بازی برای تفریح بسازد" نه حقیقتا رسیدن به یک مجموعه تحت عنوان Game engine.

در تمامی دانشگاه های دنیا در واحد درسی گرافیک دانشگاهی برای رشته computer science (یا درس اختیاری طراحی game engine )، در کارگاه باید یک پروژه با DirectX یا OpenGL توسط C++/C بنویسند. این افراد مبتدی نیستند؟

همیشه به خاطر داشته باشید که ما در بحث پیشرفته فقط برای ساخت یک نسخه از بازی، کد نمی نویسیم، ما یک game engine به همراه ابزارهای آن می سازیم. پس اگر قرار هست زمانی صرف شود و درآمدی داشته باشیم فروش خود موتور نیز به اندازه همان عرضه بازی درآمدزا است.

اگر هدف شما فقط ساختن یک بازی هست، (همانطور که مثال زدم برای یک برنامه تلویزیونی) لزوما شروع یک پروژه native مقرون به صرفه نیست، مگر این که هدف تیم سازنده ایجاد یک game engine کامل برای ساخت بازی های مختلف هست نه فقط یک بازی.
کلا اگر پروژه باز هم کوچک تر از این بحث ها هست، اصلا دست بردن تنها به کدنویسی بیهوده هست، در این موارد بهتر هست از یک موتور آماده تجاری و ارزان قیمت استفاده شود. مثل بازی quest of persia

کسی که می خواهد با XNA برای شروع کار کند، اگر روزی تصمیم بگیرید به شکل حرفه ای به سمت native برود باید تقریبا تمامی اطلاعات را که کسب کرده دور بریزد و دوباره ده ها تکنولوژی متفاوت و سخت تر را یاد بگیرد. پس وقتی می گویم باید از قبل برنامه ریزی شود به همین منظور هست.

در کل من همچنان هیچ نظری دیگری درباره انتخاب کردن یا نکردن یا حتی کیفیت XNA نمی دهم، چون هیچ وقت بحث بر روی این مسائل ما را به جایی نمی رساند. بنده خودم تحقیق کردم(بر اساس اصولی که 99% سازندگان بازی در سراسر دنیا می روند)، به طور جدی کتاب های نسخه اصل را خریداری کردم، مطالعه کردم و همچنان نیز مطالعه می کنم تا با تکنولوژی های روز به پیش بروم.

littledemon
چهارشنبه 28 اسفند 1387, 15:44 عصر
Nothing to say . . .
تسلیم !!! شما درست میگید ! با عقل جور در میاد ! منتظر حرف جناب hector میمونم .ببینم حالا ایشون چی دارند !!!

hector2000
چهارشنبه 28 اسفند 1387, 17:58 عصر
والا من یادم نمیاد خواسته باشم اصول بازی سازی و مبانیشو کسی بهم بگه و یا اینکه چطور تجارت کنیم
من فقط بر روی سرعت محصول نهایی سوال داشتم .
ما یکسال است که داریم با xna روی یک پروژه سنگین کار می کنیم و قصد اینکه بخواهیم روی native سوئیچ کنیم را نداریم چون برنامه نویسش تو ایران گیر نمیاد.و اصطلاحا به قول شاعر گاو نر می خواهد و مرد کهن و بازی سازی در مملکتمون را نمی تونیم لنگ این افراد بزاریم.باید با چیزها و امکانات روزی که داریم کار کنیم.با حلوا حلوا کردن هم دهن شیرین نمیشه.فقط من از دوستانی که احیانا با ویژال سی بازی ساختند و نه اینکه تحلیل کرده باشندو به xna هم اشنا باشند سوال دارم که اگر از یک الگوریتم خوب استفاده بشود (در xna) ایا واقعا محصول نهایی مون از لحاظ سرعت دچار نقص است؟
سپاس

AliyerEdon
چهارشنبه 28 اسفند 1387, 22:32 عصر
والا من یادم نمیاد خواسته باشم اصول بازی سازی و مبانیشو کسی بهم بگه و یا اینکه چطور تجارت کنیم
من فقط بر روی سرعت محصول نهایی سوال داشتم .
ما یکسال است که داریم با xna روی یک پروژه سنگین کار می کنیم و قصد اینکه بخواهیم روی native سوئیچ کنیم را نداریم چون برنامه نویسش تو ایران گیر نمیاد.و اصطلاحا به قول شاعر گاو نر می خواهد و مرد کهن و بازی سازی در مملکتمون را نمی تونیم لنگ این افراد بزاریم.باید با چیزها و امکانات روزی که داریم کار کنیم.با حلوا حلوا کردن هم دهن شیرین نمیشه.فقط من از دوستانی که احیانا با ویژال سی بازی ساختند و نه اینکه تحلیل کرده باشندو به xna هم اشنا باشند سوال دارم که اگر از یک الگوریتم خوب استفاده بشود (در xna) ایا واقعا محصول نهایی مون از لحاظ سرعت دچار نقص است؟
سپاس

نمی خوام بحث کنم. فقط یه نکته رو از روی تجربه بگم و برم.
با سختی native کنار اومدن خیلی راحت تر از گشتن الگوریتم ساده تر برای بالا بردن کارایی در XNA است. native در ابتدا وحشتناک و بعد لذت بخش و در نهایت عشق به اون رو به دنبال داره. شما وقتی با ++C کار کردن رو روون یاد گرفتی دیگه کار با #C برات سخت تره!!!! من اینرو از روی تجربه می گم! این رو هم در نظر داشته باشید که اگه قرار بود XNA بتونه بازی اجرا کنه تا حالا طی اینهمه سال کرده بود. حتی بازی های دو بعدی هم با ++C نوشته شدن!! اونم با جدیدترین ورژن DX9!! مثل World of Goo و خیلی های دیگه.

hector2000
پنج شنبه 29 اسفند 1387, 17:29 عصر
با تشکر از شما بخاطر اینکه باز هم بحث به جاهای دیگری منحرف شد
من تجربه کد نویسی با native را دارم و واقعا کار با این زبان مشکل است.یکی از مشکلات اینه که حتی اگر یک ارور سینتکسی ایجاد می شود متاسفانه ویرایشگر نمی تواند ان را پیدا کند و به کدهای خودش گیر می دهد و.. قصد بیان مشکلات ویژال سی را ندارم ولی به نظرم دنیا عوض شده ما نباید از اول به دنبال اختراع چرخ باشیم.ابزارها و زبانها جدیدی بوجود امدند و می توانیم کار را با انها انجام دهیم.
من همچنان بدنبال سوال فراموش شده خودم هستم

Nima_NF
جمعه 30 اسفند 1387, 13:27 عصر
با تشکر از شما بخاطر اینکه باز هم بحث به جاهای دیگری منحرف شد...
من همچنان بدنبال سوال فراموش شده خودم هستم
ابتدا فکر می کردم هدف از ایجاد این تاپیک "گفتگو" هست نه تنها یک سوال بله یا خیر...

گفتگو: اندکی تامل برروی XNA
همانطور که در سایر پاسخ های خود گفتید قصد مهاجرت مجدد به native را ندارید، سوال من این هست که با توجه به اینکه شما در این زمینه تجربه قبلی دارید، پس هدف شما از دانستن این مطلب چه هست؟
امیدوارم به این سوال پاسخ دهید.


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

با این حال طبق تجربه خودم:
XNA از لحاظ کیفیت خیلی بهتر از سری قبل خود managed DirectX هست، از لحاظ performance هم خیلی نزدیک به Native هست.

در کل شما حتی نمی توانید FPS دو پروژه یکسان را که با DirectX native و OpenGL نوشته شده است را با هم مقایسه کنید (مثل موضوعی که برای KGE پیش آمده بود و اشتباها تفاوت FPS سه برابر شده بود!)، چون هر کسی کد متفاوت می نویسد. مثلا یکی به جای استفاده از shader ها (که از GPU استفاده می کند) از قابلیت های قدیمی fixed function استفاده می کند که بیشتر از CPU استفاده می کنند آن وقت در یک سخت افزار برنامه را تست می کند و تفاوت کارآیی مشاهده می کند. پس هرگز نمی توانید دقیق بگویید یک پروژه یکسان XNA دقیقا چقدر با DirectX Native تفاوت دارد.

در هر صورت در بازی های مختلف از حدود 2% کاهش FPS (در صورت رعایت کیفیت کدها) تا نهایت 20% کاهش FPS (شاید در بدترین حالت ها که معمولا نادر هست و به دلیل کیفیت بد کدنویس می باشد) مشاهد شده است.
معمولا در بازی ها توافق بر سر همان در صدهای پایین هست.

البته خارج از بحث بازی این وضع به این خوبی نیست، در مورد نرم افزارهایی سه بعدی که از همین شیوه managed برای طراحی محیط سه بعدی توسط #C استفاده کرده اند (مانند ابزار های Nvidia) کاهش فوق العاده performance محسوس هست به طوری که واقعا کندی در تمامی قسمت ها احساس می شود و به شخصه اصلا نمی توانم کار با این سری از ابزار را (که رایگان اما قدرتمند هستند) تحمل کنم! مثلا فرض کنید یک Level Editor به همین شکل باشد...

در بحث بازی کاهش احتمالی و اندک performance در XNA با توجه به سخت افزارهای پیشرفته امروزه آنقدر زیاد نیست که افراد آن را جز نقص هایش بشمارند، موارد دیگری که در تاپیک های قبل ذکر کردم و همین طور عدم امکان port آن به سایر پلتفرم ها و نبود حقیقی #C در سایر پلتفرم ها از ضعف آن هست که باعث دوری اکثر شرکت ها شده است نه ذاتا تکنولوژی مدیریت شده آن یا فقط performance آن.

hector2000
جمعه 30 اسفند 1387, 15:21 عصر
با تشکر از شما و تبریک سال نو و ممنون که یک پاسخ فنی دادید
من سابق native کار می کردم اما نه در حد نوشتن یک بازی سنگین و پیچیده و بعد از مشاهده پیچیدگی زیاد و user friend نبودن native را بوسیدم و گذاشتم کنار و همواره برای نوشتن یک بازی این سوال که همان سوال اول من است برای من مطرح است.

این تاپیک دقیقا یک گفتگو است(و این سوال و جواب است که یک گفتگوی مفید را میسازد) و این را بدانید که در یک گفتگو بهتر است تا پاسخ یک سوال داده نشده باشد سراغ سوال دیگری برویم.اینطوری دچار سردرگمی برای خواننده مطلب هم می شود. و خستگی نویسنده.

من خدایی نکرده قصد توهین به هیچ کاربر و یا مدیر محترمی را ندارم ولی از یک مطلب خیلی در عذابم.برای شرح این مطلب تصمیم دارم یک مطلبی را بگویم.همانطور که میدانید ژاپن و المان بعد از جنگ جهانی دوم تقریبا با خاک یکسان شدند اما بعد از گذشت 50 سال نه تها این ویرانیها را جبران نکردند بلکه در حال حاضر به قطبهای اقتصادی تبدیل شدند.من یک دوست المانی دارم که همش به من میگه ایرانیها تحلیل گران خوبی هستند اما مجریان خوبی نیستند.حالا این بماند از کجا به کجا رسیدیم در این تاپیک

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

Nima_NF
جمعه 30 اسفند 1387, 16:34 عصر
من خدایی نکرده قصد توهین به هیچ کاربر و یا مدیر محترمی را ندارم ولی از یک مطلب خیلی در عذابم.برای شرح این مطلب تصمیم دارم یک مطلبی را بگویم.همانطور که میدانید ژاپن و المان بعد از جنگ جهانی دوم تقریبا با خاک یکسان شدند اما بعد از گذشت 50 سال نه تها این ویرانیها را جبران نکردند بلکه در حال حاضر به قطبهای اقتصادی تبدیل شدند.من یک دوست المانی دارم که همش به من میگه ایرانیها تحلیل گران خوبی هستند اما مجریان خوبی نیستند.حالا این بماند از کجا به کجا رسیدیم در این تاپیک

سری به سایت زیر بزنید:
http://www.wto.org/english/theWTO_e/whatis_e/tif_e/org6_e.htm

تا زمانی که اسم ایران در لیست Observer governments وجود داشته باشد هرگز نباید انتظار داشته باشید که ما بتوانیم همانند 153 کشور عضو دیگر عمل کنیم. باید بدانید که بیش از 95% تجارت در دنیا از طریق WTO هست.

این سرنوشت کنونی کشور و مردم ما هست و چاره ای نداریم جز انتظار کشیدن... مطمئن باشید شخصا به اندازه کافی افراد متخصص برای همین کار (مخصوصا native کار) را می شناسم که در صورت فراهم شدن شرایط آن، حرف ها و این پروژه های نصفه نیمه و تقریبا بدون هدف واقعا به عمل تبدیل شوند. حقیقتا بسیاری از مشکلات ما، بابت مسائل فنی یا مالی نیست.

hector2000
جمعه 30 اسفند 1387, 23:49 عصر
من حرف شما را قبول دارم ولی مطمئن باشید راهش دست روی دست گذاشتن نیست و باید با نوشتن پروژه های ناتمام تحسین دنیا را در این مورد بر انگیزیم.
اگر در ایران امروز قانون کپی رایت رعایت نمی شود در المان و ژاپن بعد از جنگ حقوق شهروندی و امنیت نوامیس و اعتقادات این کشورها رعایت نمی شد(توسط اشعالگران) اما انها به کجا رسیدن و ما به کجا..
مطمئن باشید راهش این است که خود را نشان دهیم.

hector2000
یک شنبه 02 فروردین 1388, 23:00 عصر
بعنوان سوال دوم :ما تصمیم داریم برای هر چه طبیعی تر شدن کارمون تا حد توان قوانین فیزیک (از جمله جاذبه،برخورد،حرکت و..) را در بازیمون وارد کنیم خواستم از دوستان بپرسم ایا برای این کار کد اماده و یا راهنمایی وجود دارد که در xna از ان بهره ببریم؟
سپاس

Nima_NF
یک شنبه 02 فروردین 1388, 23:56 عصر
بعنوان سوال دوم :ما تصمیم داریم برای هر چه طبیعی تر شدن کارمون تا حد توان قوانین فیزیک (از جمله جاذبه،برخورد،حرکت و..) را در بازیمون وارد کنیم خواستم از دوستان بپرسم ایا برای این کار کد اماده و یا راهنمایی وجود دارد که در xna از ان بهره ببریم؟
سپاس
برای این کار باید به دنبال یک کتابخانه فیزیک باشید (حال رایگان یا تجاری) نه الگوریتم یا قطعه کد.
متاسفانه تعداد کتابخانه های خوب برای XNA بسیار کم هست، با این حال لیستی از آن ها:

BEPU physics (http://www.bepu-games.com/BEPUphysics/)

JigLibX Physic (http://www.codeplex.com/JigLibX)

Oops! 3D Physics Framework (and more) for XNA (http://www.codeplex.com/OopsFramework)

JellyPhysics (http://www.walaber.com/index.php?action=showitem&id=16)

Farseer Physics Engine(فقط برای دو بعدی) (http://www.codeplex.com/FarseerPhysics)
و غیره

حتما لیسانس و شرایط استفاده از آن ها را مطالعه کنید. ضمنا هر کدام از این کتابخانه ها شامل یک SDK هست که از طریق آن می توانید از توابع نوشته شده استفاده کنید.

hector2000
دوشنبه 03 فروردین 1388, 12:36 عصر
با تشکر از شما
ایا اطلاع دارید این کتابخانه هایی که گذاشتید شامل چند قانون فیزیک است؟
من که در خود سایتشون چیزی دستگیرم نشد

Nima_NF
دوشنبه 03 فروردین 1388, 15:13 عصر
همه قابلیت های در خود سایت ها یا در بخش features یا در بخش documents و یا در بخش Overview بیان می شود. فقط از قبل باید با اصطلاحات آن آشنا باشید.

این بستگی به کتابخانه دارد که آیا همه موارد را دارد یا نه. البته همه موارد مورد نیاز در یک بازی همراه این کتابخانه ها هست، فقط ممکن هست سرعت آن ها نسبت به بقیه کند تر باشد یا مثلا بعضی از مباحث پیشرفته را نداشته باشد، مثلا یک کتابخانه ragdoll (برای حرکات خودکار اعضای انسان) را نداشته باشد یا حرکات پیشرفته ماشین را نداشته باشد و ...

معمولا این موارد اولیه مورد نیاز اصلی شما است:
- Collision (برای تصادم ها و تمامی برخورد ها ، راه رفتن بر روی زمین و ...)
- forces (برای انواع باد و جاذبه و حرکات پرتابی زاویه دار و ...)
- پشتیبانی انواع اشکال ساده مانند دایره یا مربع و... و انواع پیشرفته تر مانند convex hull و ...

مباحث پیشرفته تر:
حرکات ماشین، spring یا همان حالت فنری برای طناب ها و غیره ، ragdoll ، حرکات دینامیک لباس (cloth) و ...

(ضمنا تقریبا تمامی بازی های کامپیوتری و حتی حرفه ای ترین و گران قیمت ترین موتورهای بازی دنیا از کتابخانه های آماده و معمولا تجاری استفاده می کنند. باز هم بگردید کتابخانه های دیگری هم هست)

Editali
دوشنبه 03 فروردین 1388, 16:38 عصر
سلام به همه دوستان ارجمند

همونطور که میدونید الان بشیتر بازی های مطرح دنیا مثل Fifa, Splinter Cell, Ghost Recon, Need For Speed, Silent hill و خیلی بازیای دیگه توسط DirectX نوشته میشه. به گفته مایکروسافت، XNA همون DirectX است ولی به زبون قابل فهم تر و ساده تر. پس تو سرعتش شک نکن. اگه هم تا حالا زیاد بهش توجه نشده یه دلیل اقتصادی داره.

بر فرض شما رییس بخش Fifa تو کمپانی EA. تمام کارمنداتون تا الان با directX کار میکردن و همه مسلط شدن. مطمئنا ترجیح میدین همون dx رو ادامه بدین نه این که کارمند جدید استخدام کنین یا بهشون xna یاد بدین.

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

hector2000
دوشنبه 03 فروردین 1388, 23:08 عصر
با تشکر از شما
من حرف شما را قبول دارم
البته شنیدم ماکروسافت یک ابزار بنام gdk را به جهت بازی سازی در سی روانه بازی کرده البته بازم فکر کنم xna راحتتر باشد

hector2000
سه شنبه 04 فروردین 1388, 18:33 عصر
خوب اگر موافق باشید مسائل بعدی را مطرح می کنم
1-دوستان برای مدیریت اشیاء بر روی زمین بازی ایا یک کالکشن را پیشنهاد می کنن و یا اینکه این کالکشن را به چند کالکشن بشکنیم؟برای مساله برخورد و تصادف و.. ما باید حرکت لحظه به لحظه اشیاء و موقعیت انها را داشته باشیم و بررسی کنیم و لازم است حلقه تکرارمون را به تعداد اشیاء مون تشکیل بدیم حال این مساله مطرح است که چک کردن تمام اینا بدین صورت باشد که اطلاعات این اشیا در یک کالکشن باشد و یا اینکه محیط بازی را به ناحیه های کوچک بشکنیم و انگاه این عمل را انجام دهیم؟کدام سرعت بیشتری دارد؟(در یک بازی استراتژیک که نیروها و اشیاء زیادن این مساله بیشتر مطرح است)
2-سیستم ذرات و یا پارتیکل یکی از مسائل پیچیده و بسیار مهم است.برای بوجود اوردن اتش و دود و انفجار در بازی از این سیستم استفاده می شود.ایا دوستان با اصول پارتیکل در xna اشنایی دارند؟ ویا می توانند راهنمایی کنن؟من چندتا مثال از این سیستم دارم ولی کمک چندانی نمی کند

hector2000
سه شنبه 11 فروردین 1388, 23:28 عصر
پاسخی؟نظری؟
هیچی؟

kochol
پنج شنبه 03 اردیبهشت 1388, 22:33 عصر
سلام
1- اره حتما باید صحنه به بخش های کوچکتری تقسیم بشه مگرنه از نظر سرعت بسیار مشکل پیش می یاد.
الگوریتم octree رو سرچ کن برای این کار خیلی خوبه

donamin
یک شنبه 06 اردیبهشت 1388, 05:08 صبح
من با xna یه بازی دو بعدی تقریبا سنگین ساختم. البته با کمک سه تا از دوستام. xna برای کارای دو بعدی خیلی باحاله. ولی فکر کنم برای سه بعدی کار کردن باید دنبال چیز دیگه ای رفت. چون بازی خیلی سنگین می شه و xna نمی تونه اینقدر سنگین کار کنه.

hector2000
یک شنبه 06 اردیبهشت 1388, 15:06 عصر
سلام
1- اره حتما باید صحنه به بخش های کوچکتری تقسیم بشه مگرنه از نظر سرعت بسیار مشکل پیش می یاد.
الگوریتم octree رو سرچ کن برای این کار خیلی خوبه

با تشکر
امیدی نداشتم بتونم جچواب سوالمو اینجا بگیرم
ممکنه یک مقدار بیشتر توضیح بدید؟


من با xna یه بازی دو بعدی تقریبا سنگین ساختم. البته با کمک سه تا از دوستام. xna برای کارای دو بعدی خیلی باحاله. ولی فکر کنم برای سه بعدی کار کردن باید دنبال چیز دیگه ای رفت. چون بازی خیلی سنگین می شه و xna نمی تونه اینقدر سنگین کار کنه.
به نظرم سنگینکار کردن به انتخاب نکردن الگوریتم خوب و سدیع و همچنین پایین بودن سیستم ربط مستقیم داره

kochol
پنج شنبه 10 اردیبهشت 1388, 12:41 عصر
سلام

کلا این طوری که صحنه رو تقسیم به باکس های بزرگتر می کنند و اگه باکسی با باکس بزرگ برخورد نداشت پس با باکس های داخل اون هم برخورد نداره.
ولی اگر با باکس بزرگ برخورد کرد پس با باکس های کوچکتر هم ممکن است برخورد بکنه.

تو گوگل سرچ کن مطالب خوبی پیدا می کنی

hector2000
شنبه 12 اردیبهشت 1388, 22:25 عصر
نسبت به قضیه پیاده سازی فیزیک چه نظری دارید؟
ایا انجام پروسه فیزیک(از جمله برخورد،جاذبه و..) را توصیه می کنید در یک ریسمان جدید اجرا کنیم؟

kochol
سه شنبه 15 اردیبهشت 1388, 01:44 صبح
سلام
نه من توصیه نمی کنم که فیزیک بره تو یک ریسمان جدید چون اکثر محاسباتی که فیزیک انجام می ده.
بلافاصله برای اپدیت صحنه باید به قسمت گرافیک فرستاده بشه پس گرافیک باید منتظر محاسبات فیزیکی بمونه درسته؟
البته یه راهی که به ذهنم می رسه اینه که شما بیای یه فریم تاخیر بندازی مثلا الان تو یه thread دیگه فیزیک رو حساب کنی و بعد تو فریم بعدی نتیجه محاسبات رو برای اپدیت صحنه به بخش گرافیک بدی.

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