View Full Version : آیا #C زبان خوبی برای Game Programming هست ؟
mdssoft
جمعه 23 فروردین 1387, 19:40 عصر
با سلام به برو بچ برنامه نویس
چند تا سوال داشتم ، اینکه آیا #C زبان خوبی برای Game Programming هست یا نه ؟
آیا تا به حال بازی با زبان #C نوشته شده یا نه ؟
ممنون اگه جواب بدین .:لبخندساده:
Nima_NF
جمعه 23 فروردین 1387, 23:48 عصر
در حال حاضر با توجه به تلاش های فراوان مایکروسافت هنوز #C به عنوان یک زبان برنامه نویسی خوب و پرطرفدار برای ساخت بازی مطرح نشده هست (به دلیل کاهش چند درصدی کارآیی در کد های مدیریت شده، منابع کمتر ، جدید بودن تکنولوژی و ...) .
از جمله این پروژه ها XNA می باشد که به شما اجازه ساخت همزمان بازی بر روی Xbox360 و PC را می دهد که تا کنون به صورت نیمه تجاری بوده است و هنوز اجازه ساخت بازی به صورت تجاری برای XBox داده نشده است:
http://msdn2.microsoft.com/en-us/xna/aa937793.aspx
http://forums.xna.com/thread/10376.aspx
در هر حال بسیاری از شرکت ها و سازندگان موتور بازی شروع به حمایت از #C در کنار ++C و یا ارائه نسخه جدید مبتنی بر XNA کرده اند که امید می رود در سال های آینده ساخت بازی با این شیوه رونق بیشتری پیدا کند.
هرچند که با وجود سیستم های مختلف مبتنی بر C++ از جمله PS3 ، Wii و غیره تا سال ها نمی تواند جای چندین ساله ++C را چه از لحاظ سرعت و چه از لحاظ وجود امکانات و منابع بگیرد، اما در یک کلام با توجه به سریع و آسان کردن ساخت بازی در آینده در کنار ++C می تواند یک ابزار قدرتمند باشد.
از جمله این موتورها:
Torque X
mdssoft
شنبه 24 فروردین 1387, 00:57 صبح
ok
پس من اینطور متوجه شدم که #C کارا بهتر هست برن XNA یاد بگیرن ، نه DirectX
درسته ?
AliyerEdon
شنبه 24 فروردین 1387, 14:28 عصر
برای #C که کلا DirectX جم شد و XNA به جاش اومد. یعنی سازنده هاش همونند.
برای بازی سازی بهترین زبانی که می تونی انتخاب کنی تا پیشرفت کنی #C و XNA است. برای کار با DirectX نیاز به صرف وقت بسیار زیادی داری که این سبب می شه که هیچ کاری جز اینکه بتونی یه مدل رو نمایش بدی نمی تونی کنی. اما این کار در XNA در عرض چند خط کد است. می تونی از DirectX برای کلاس گذاشتن و یا تفریح کردن استفاده کنی.(مثل من! البته من فقط برای تفریح). همونتر که گغتم اگه بخوای کاری کنی، باید حتما از XNA استفاده کنی. چون کلی کتاب و سایت آموزشی توی اینترنت هست که می تونی از اونا استفاده کنی.
از نظر سرعت هم XNA به گفته ی یکی از بازی سازای معروف XNA، تنها 1 یا 2 درصد از DirectX کمتره و اون هم زیاد مهم نیست و از این نظر خیالت راحت. من خودم امتحان کردم و به صورت تجربی به این مطلب پی بردم. اونایی که ادعای سرعت می کنند و XNA رو محکوم می کنند پس چرا از OpenGL به جای DirectX استفاده نمی کنند؟ (OpenGl سه برابر سرعت DirectX رو داره).
اگه توی سایت ها بگردی و موتورهای ایرانی نوشته شده توسط DirectX رو ببینی، اگه دقت کنی می بینی که همشون درحد نشون دادن یک مدل هستند و یا کامپایل کردن یه شیدر(مثل KGE که چند سال روش کار شده). در حالی که این کارا تو XNA مال یه روزه! لااقل من خودم یه روزه این کار رو انجام می دم بدون اینکه به مغزم فشار بیارم یا داغ کنم و آخرش هم به جایی نرسم! اگه تو اینترنت بگردی چند تا بازی می بینی که نویسندش می گه من اونو تو چند هفته توی نمایشگاه با XNA از نقطه ی صفر نوشتم( بازی ای ماشین سواری در حد NFS). یا یه بازی شو م گفت تو چهار روز نوشته! در حالی که بازیش با کیفیت بسیار بالایی بود. این آقا یه بازی تجاری هم با .NET نوشته و ثابت کرده که با XNA هم می شه بازی ساخت.
من که DirectX رو کنار گذاشتم و رفتم سراغ XNA تا یه مدت دیگه کارام رو تو سایت می ذارم تا ببینید. آموزش های زیادی هم نوشتم که در همین چند روزه می ذارم.:چشمک:
بازی های XNA رو هم می تونی اینجا ببینی: http://xnaprojects.net/
Nima_NF
شنبه 24 فروردین 1387, 15:14 عصر
ok
پس من اینطور متوجه شدم که #C کارا بهتر هست برن XNA یاد بگیرن ، نه DirectX
درسته ?
بله ، با توجه به اینکه Managed DirectX دیگر توسعه داده نمی شود و XNA که یک wrapper جدید برای DirectX هست جایگزین آن شده است.
اما توجه داشته باشید که همچنان DirectX native با ++C/C همچنان انتخاب اول برای تیم های حرفه ای ساخت بازی در سطح دنیا می باشد.
برای کار با DirectX نیاز به صرف وقت بسیار زیادی داری که این سبب می شه که هیچ کاری جز اینکه بتونی یه مدل رو نمایش بدی نمی تونی کنی. اما این کار در XNA در عرض چند خط کد است. می تونی از DirectX برای کلاس گذاشتن و یا تفریح کردن استفاده کنی.همین طور که ایشون توضیح دادند اگر هدفتان تفریح و سرگرمی می باشد XNA بهترین انتخاب هست. اما برای استفاده در بازی های تجاری بزرگ هنوز راه زیادی باقی هست و نیازمند بررسی بیشتری هست.
اونایی که ادعای سرعت می کنند و XNA رو محکوم می کنند پس چرا از OpenGL به جای DirectX استفاده نمی کنند؟ (OpenGl سه برابر سرعت DirectX رو داره).این جمله کاملا غلط و غیر علمی هست (و البته بین سایت های فارسی زبان بسیار رایج نیز هست)!
در حال حاضر قدرت و سرعت DirectX و OpenGL تقریبا به یک اندازه می باشد و تفاوت در سرعت بین این دو بر می گردد در طراحی اشتباه موتور نه ضعف یکی از آن ها ، وقتی می خواهید تستی برای آن ها انجام دهید از دموی موتور بازی معروف و شناخته شده استفاده کنید ، یک موتور جدید و خوب باید کاملا مبتنی بر shader ها باشد.
همیشه در اینگونه موارد منبع معتبر و جدید معرفی کنید که حرف های شما را تصدیق کند نه اینکه با نظر شخصی و یا اینکه DirectX برای شما سخت هست اظهار نظر هایی به این شکل کنید.
AliyerEdon
شنبه 24 فروردین 1387, 15:56 عصر
همین طور که ایشون توضیح دادند اگر هدفتان تفریح و سرگرمی می باشد XNA بهترین انتخاب هست. اما برای استفاده در بازی های تجاری بزرگ هنوز راه زیادی باقی هست و نیازمند بررسی بیشتری هست.من گفتم که DirectX مال تفریح خوبه.
شما خودت اگه DirectX و XNA رو کار کردی نظر بده. من هردو رو کار کردم و این هایی که گفتم نظر منه. لطفا نظر من رو نقض نکنید و انتخاب رو بر عهده ی کاربر بگذارید.:چشمک:
همیشه در اینگونه موارد منبع معتبر و جدید معرفی کنید که حرف های شما را تصدیق کند نه اینکه با نظر شخصی و یا اینکه DirectX برای شما سخت هست اظهار نظر هایی به این شکل کنید.
من نظرم این است که آدم باید خودش تجربه کنه و منبع به درد نمی خوره. اصلا شما فرض کنید که من یه منبع هستم. منبع ها هم آدمایی مثل ما هستند دیگه. و به آدمایی مثل شما که خودشون هیچی رو تجربه نمی کنند و از دیگران فقط به صورت تئوری می شنوند اعتماد نمی کنم.
تازه فکر کردید که بازی سازای بزرگ عاشق DirectX هستند؟ نخیر اونا چون از اول با آن کار کردند و حجم زیادی کد دارند، در حال حاضر نمی توانند به XNA پورت کنند.
AliyerEdon
شنبه 24 فروردین 1387, 16:01 عصر
مشکل در DataBase سایت
AliyerEdon
شنبه 24 فروردین 1387, 16:02 عصر
مشکل در DataBase سایت
AliyerEdon
شنبه 24 فروردین 1387, 16:03 عصر
اشتباه در DataBase سایت
AliyerEdon
شنبه 24 فروردین 1387, 16:05 عصر
هرچند که با وجود سیستم های مختلف مبتنی بر C++ از جمله PS3 ، Wii و غیره تا سال ها نمی تواند جای چندین ساله ++C را چه از لحاظ سرعت و چه از لحاظ وجود امکانات و منابع بگیرد، اما در یک کلام با توجه به سریع و آسان کردن ساخت بازی در آینده در کنار ++C می تواند یک ابزار قدرتمند باشد.
نحوه ی بازی سازی برای کنسول ها به هیچ وجه دست کاربران عادی(مثلا ما ایرانی ها) قرار نمی گیره پس ما نیازی نداریم از ++C برای بازی سازی برای Ps3 و غیره استفاده کنیم.
در ضمن من پیشرفت های خود را در ضمینه ی XNA ارائه می دهم تا بفهمید که با XNA می شه کاری کرد. اگه کسی از DirectX حمایت می کنه، تمام کارهایی که با اون کرده رو بزاره من هم کارای XNA ام رو می زارم.:لبخندساده:
MeDiXNA
شنبه 24 فروردین 1387, 16:19 عصر
نخیر اونا چون از اول با آن کار کردند و حجم زیادی کد دارند، در حال حاضر نمی توانند به XNA پورت کنند.
تایید می کنم ، این دقیقا حرفی بود که توی فروم XNA یکی از مسئولان زده بود ، دلیل اینکه شرکتهای بزرگ بازی سازی از XNA استفاده نمی کنند یکی اینکه تکنولژی جدیدی هست و دیگری اینکه این شرکتها اکثر کدهاشون C++ هست و پورت کردن این کدها به C# کار چندان آسوده ای نیست.
ضمنا من هم فکر نمی کنم از نظر سرعت به XNA ایرادی گرفت ، فقط در صورتی میشه ایراد گرفت که شما یک محیط را با استفاده از DirectX رندر کنید و سپس همون محیط را با XNA ، اگه توی FPS ها فرقی وجود داشت اون وقت مقایسه صحیحه.
Nima_NF
شنبه 24 فروردین 1387, 17:10 عصر
تایید می کنم ، این دقیقا حرفی بود که توی فروم XNA یکی از مسئولان زده بود ، دلیل اینکه شرکتهای بزرگ بازی سازی از XNA استفاده نمی کنند یکی اینکه تکنولژی جدیدی هست و دیگری اینکه این شرکتها اکثر کدهاشون C++ هست و پورت کردن این کدها به C# کار چندان آسوده ای نیست.
بله دقیقا موضوع در مورد XNA همین هست.
من هم در پستم ،حرف کسی در مورد قدرت XNA را نقض نکردم و گفتم آینده دار هست و البته که در حال حاضر بهترین انتخاب کاربران #C.
همیشه انتقال از یک تکنولوژی به تکنولوژی دیگر زمان نیاز دارد و در جای خودش به مرور جای دیگری را خواهد گرفت اما در زمان خودش که می تواند چندین سال طول بکشد...
لطفا نظر من رو نقض نکنید و انتخاب رو بر عهده ی کاربر بگذارید.فقط در مورد نظری که در تفاوت سرعت OpenGL و DirectX مطرح کردید، نقض شد.
چرا حرفی که از پایه اشتباه هست و باعث گمراهی کاربران تازه کار می شود نباید نقض شود؟
در هر حال سری به تاپیک های مقایسه بین این دو در همین بخش بزنید و ببینید چند نفر مانند شما برداشت کرده اند (با تست موتور در حال توسعه KGE)،
بنده سال ها هست که با گرافیست سه بعدی آشنایی حرفه ای دارم و تخصصم نیز برنامه نویسی گرافیک و بازی هست (و البته نه برای تفریح).
برای اینکه به نتیجه درست رسید نیازی نیست فقط به حرف های دیگران تکیه کرد، بازی ها و دموی موتور های بسیاری در بازار با تکنولوژی های جدید وجود دارند که می توانید تفاوت بین سرعت را در آن ها امتحان کنید و مشاهد خواهید کرد که DirectX و OpenGL به یک شکل عمل خواهند کرد.
برای اینکه ببینید حتی یک نفر در این زمینه مخالف نیست این تاپیک جدید را در gamedev.net با دقت و به طور کامل مطالعه کنید:
http://www.gamedev.net/community/forums/topic.asp?topic_id=490093&whichpage=1� (http://www.gamedev.net/community/forums/topic.asp?topic_id=490093&whichpage=1%EE%8F%B3)
AliyerEdon
شنبه 24 فروردین 1387, 17:19 عصر
همیشه عذر خواهی بهتر از کشمکش است. پس از برخی از گفته هام که به مشام شما عزیز من خوش نیامد ببخشید.
[quote]سرعت OpenGL سه برابر DX است./QUOTE]
این مطلب رو من چون در بیشتر سایت ها دیدم اعلام کردم. ولی به هر حال هدف من این نبود.:لبخندساده:
AliyerEdon
شنبه 24 فروردین 1387, 18:42 عصر
نمونه ای از برنامه ها که هم تو DX و هم تو XNA نوشته شده:
http://rapidshare.com/files/106909403/Course.zip.html
مثال DX نیاز به DX زمان اجرا داره که تو وبلاگم آخرین نسخه اش هست:
www.directxsdk10.blogfa.com
همونطور که در این مثال ها می بینید از نظر کیفیت هیچ فرقی ندارند و فقط نوشتن کدهای DirectX بسیار خسته کننده تر است.
MeDiXNA
شنبه 24 فروردین 1387, 19:09 عصر
بی چاره ها تو این سایت هیچی بارشون نیست. تازه قرار من راهشون بندازم!
برات متاسفم ، خیلی پر مدعا هستی .
دلت خوش باشه.
از همگی بابت این پست عذر خواهی می کنم .
saied_hacker
شنبه 24 فروردین 1387, 21:00 عصر
با با UbiSoft بپا نزدنت
اگه با ما بچاره ها مشکل داری ...
نیازی به اموزش نیست ..
خدا پدر اون ادمایی رو که اینترنت رو به وجود اوردن رو بیامرزه تو اینترنت پر اموزشه از اینگلیسی گرفته تا انواع زبان ناشناخته ...
بای
mdssoft
شنبه 24 فروردین 1387, 22:34 عصر
بچه ها خواهشا دعوا نکنید
پس تا اینجا من اینو فهمیدم که DirectX کم کم کنار میره و XNA جاشو می گیره ؟
درسته؟
Goeezor
شنبه 24 فروردین 1387, 22:42 عصر
خدا همه ما رو عاقبت به خیر کنه
بعضی ها یه جوری در رابطه با تکنولوژی ها صحبت میکنند که انگار مال شرکت باباشون هست.
خدا به ما بیچاره ها هم صبر بده.
AliyerEdon
دوشنبه 26 فروردین 1387, 13:27 عصر
بی چاره ها تو این سایت هیچی بارشون نیست. تازه قرار من راهشون بندازم!
از این حرفم معضرت می خوام.
ولی الان یه عکس از سایت XNA تون بندازید و نگه دارید و بعد آخر تابستون با سایت مقایسه کنید.
این حرفایی که زدید منو ناراحت کرد ولی سعی می کنم که فراموش کنم.
تقصیر خودتونه چون تو سایت تمام مطالب درخواست بود و بهترین مطلبش به نظر خودتون ساختن Component بود که یاد گرفتنش چند ثانیه است و مطلب مهم محسوب نمی شه. البته از نظر من.:لبخندساده:
AliyerEdon
دوشنبه 26 فروردین 1387, 13:30 عصر
با با UbiSoft بپا نزدنت
اگه با ما بچاره ها مشکل داری ...
نیازی به اموزش نیست ..
خدا پدر اون ادمایی رو که اینترنت رو به وجود اوردن رو بیامرزه تو اینترنت پر اموزشه از اینگلیسی گرفته تا انواع زبان ناشناخته ...
آقای محترم شما تو اینترنت دنبال عکس دختری یا دنبال علم؟:چشمک:
mdssoft
سه شنبه 03 اردیبهشت 1387, 01:15 صبح
پس تا اینجا من اینو فهمیدم که DirectX کم کم کنار میره و XNA جاشو می گیره ؟
درسته؟
hadi mohammadi
چهارشنبه 04 اردیبهشت 1387, 19:43 عصر
-
محمد جان اینجوری نیست چون اگه DirectX کنار بره XNA چطور میخواد توسعه پیدا کنه .
فقط احتمالا از این پس بیشتر برای ساخت بازی از xna استفاده کنند تا DirectX .
-
mdssoft
چهارشنبه 04 اردیبهشت 1387, 20:02 عصر
ممنون ازت هادی جان . باز خدا پدرت رو بیا مرزه یه جوابی می دی .
حالا هادی جان تو خودت چی توصیه میکنی ، ما بریم ++C یاد بگیریم یا #C ؟
راستی هادی جان من game ت رو تو کد پلکس دیدم ، بابا دمت گرم :تشویق:
hadi mohammadi
چهارشنبه 04 اردیبهشت 1387, 21:14 عصر
-
خواهش میکنم .
از من میشنوی برو طرف #C چون مبتنی بر دات نت هستش و برای ساخت بازی هم امکانات خوبی داره و مطمئن باش آینده داره .
-
pswin.pooya
پنج شنبه 05 اردیبهشت 1387, 19:18 عصر
سلام
:AliyerEdon
همچین میگی روی KGE سه سال کار شده که انگار nتا برنامه نویس حرفه ای نشستن و یه قالب از قبل معلوم رو پیاده کردن.
کار کردن ما روی KGE تنها جنبه تحقیقاتی داره و به دنبال راههای موثرتر هستیم و مرتبا کد قسمتهای مختلف رو تغییر میدیم مثلا ما تا حالا چهار بار کد مربوط به کلاس کی بورد رو از اول نوشتیم که من تازه متوجه شدم بازم به اندازه کافی کارآمد نیستش و مساله دیگه ای که وجود داره اینه که ما دانش گرافیکیون خیلی بالاتر از اونی هست که توی KGE پیاده کردیم مثلا KGE از بافت زنی ساده پشتیبانی میکنه این در صورتی هستش که هم من و هم کوچول مدلهای زیادی از بافت زنی رو بلدیم اما دنبال یه راه میگردیم که علاوه بر آسون بودن شیوه کار به بهترین نحو ممکن جواب بده و با OGL و DX هم سازگار باشه یکی از این موارد تکنیک ساده bumpmap هستش که من خودم اون رو بارها پیادش کردم و حتی یه مقاله هم در موردش نوشتم که به دو شیوه پیاده سازیش رو آموزش میده (fixed function و با شیدر) . و یا مثلا برای پیاده سازی SkyBox بهترین حالت این هستش که از نوشتن داخل بافر عمق و تست عمق جلوگیری (به شرط اینکه اولین نود باشه) شه (چون عملا به تست عمق نیازی نیستش) این کار رو خیلی ساده در OpenGL تنها با دو دستور میشه پیاده سازی کرد ولی مثل اینکه داخل DX برای پیاده سازی این مورد حتما باید بافر عمق غیرفعال شه و همین داخل KGE ایجاد مشکل میکنه. مگر اینکه SkyBox اولین نود صحنه باشه که رندر میشه. مشکل دیگه توی همین مورد وضعیت نورپردازی و موارد مانند این هستش که باید با شرط بررسی شه بعد غیرفعال شه و بعد باز مثل قبل شه. اینکار داخل OpenGL به سادگی به کار بردن دو دستور هستش اما مثل اینکه داخل...
من فکر نکنم شما با این توصیفها بتونید کارکرد KGE رو به رندر چند نود یا کامپایل شیدر محکوم کنید. چون KGE عملا داخل تست بتا هست و هنوز تست آلفای لون ریلیز نشده.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.