PDA

View Full Version : کامپایلر مورد استفاده در انجین بازی ها



mazdadoost
چهارشنبه 07 اسفند 1387, 12:59 عصر
با سلام :
یه سوال : کامپایلری که باش انجین بازی ها رو کامپایل میکنن از نوع کامپایلر های مرسوم هست (که به شکل اپن سورس و تجاری ) و احتمالا همشون C و ++C باشند .یا نوع انحصاری که فقط سازنده اون انجین کامپایلر خاصی طراحی میکنه؟یا سفارش میده براش بسازند؟
ممنون.

Nima_NF
چهارشنبه 07 اسفند 1387, 15:48 عصر
جواب سوال بسیار سر راست هست.

به سایت هر موتوری که مد نظر شماست بروید و در بخش دریافت SDK یا کلا دانلود سورس کد موتور بروید و پیش نیاز ها را مطالعه کنید. همه ذکر می شوند مثلا برای Torque Game Engine به لینک زیر بروید و با کلیک بر روی requirement موارد را مشاهده کنید:
http://www.garagegames.com/products/tge

در بحث بازی چیزی که معمولا طراحی می شود ساختن یک کامپایلر داخلی برای یک زبان اسکریپتی هست تا برای هوش مصنوعی یا سایر موارد از آن استفاده شود. معمولا هم از زبان های معروف مثل lua و ... استفاده می کنند که embed کردن آن ها نیاز به نوشتن یک کامپایلر جدید ندارد.
درست هست که بحث بازی نسبت به سایر برنامه نویسی ها سخت است اما آنقدر ها هم که فکر می کنید وحشت ناک نیست، فکر نکنید که همه چیز باید اختراع شود، خیر. یک بازی از ده ها کتابخانه ها آماده استفاده می کند که در آن ها سخت افزارهای مختلف پشتیانی می شوند از OpenGL و DirectX گرفته برای گارفیک تا صوت و تصویر و فیزیک و... پس سازنده به ناچار باید تابع پیش نیاز های آن ها باشد.

در ویندوز تقریبا 99.9% موتورها رسما با ++VC هستند (معمولا در open source ها mingW و به ندرت ++builder C هم پشتیبانی می شوند )
در ویندوز gcc (به همراه کتابخانه های مورد نیاز و نسخه آن ها)
در Mac هم Xcode

mazdadoost
پنج شنبه 08 اسفند 1387, 10:16 صبح
ضمن تشکر :
میشه گفت که انجین ها به عنوان یه وارپر برای API سطح پایین تره DirectX یا OpenGL یا Direct3D استفاده میشن + آلگوریتم های هوش مصنوعی + قوانین فیزیکی؟
(راستی ابستراکش روی لایه های سخت افزاری مثل کارت گرافیک -صدا و غیره توی مثلا DirectX یا OpenGL پیاده سازی میشه؟)
بازم ممنون Nima_NF جان.هر وقت وقت داشتی جواب بده.

seyedof
پنج شنبه 08 اسفند 1387, 11:40 صبح
سلام

اکثر بازیهای PC با Visual C++ یا Intel C++ کمپایل میشوند، یکی از دلایل مهمش سرعت کد خروجی تولید شده در این کمپایلرهاست که در بازیها سرعت نقش حیاتی داره.

ممنون علی

Nima_NF
جمعه 09 اسفند 1387, 01:06 صبح
ضمن تشکر :
میشه گفت که انجین ها به عنوان یه وارپر برای API سطح پایین تره DirectX یا OpenGL یا Direct3D استفاده میشن + آلگوریتم های هوش مصنوعی + قوانین فیزیکی؟

تقریبا بله. البته خیلی مباحث بیشتری علاوه بر آن ها هست. (در این سطح شما یک SDK ساخته اید)

اگر برای موتور خود علاوه بر SDK ای که می نویسید ابزارهای لازم را تولید کنید (چیزی که تمامی انجین های حرفه ای باید داشته باشند) آن وقت دیگر کدنویسی مستقیم و استفاده مستقیم از SDK برای کسی که بازی را تولید می کند لازم نیست، کاربر در مواقع نیاز می تواند از محیط اسکریپتی برای بسیاری از موارد در داخل این ابزار استفاده کند.
مثلا مواردی برای ساختن مراحل (level editor ) و یا قسمتی برای طراحی GUI بازی یا محیطی برای تولید مواد اجسام (material ) و ...



(راستی ابستراکش روی لایه های سخت افزاری مثل کارت گرافیک -صدا و غیره توی مثلا DirectX یا OpenGL پیاده سازی میشه؟)

متوجه نشدم منظورتان از این سوال چی بود، اما اگر منظورتان ارتباط با سخت افزار هست بله.
از طریق زبان های شیدرنویسی مانند HLSL در DirectX و GLSL در OpenGL و Nvidia Cg و... برای اجرا بر روی کارت گرافیک کد می نویسیم.
برای صوت اگر قصد پشتیبانی سخت افزاری هست از OpenAL (رایگان) یا fmod (تجاری) و غیره استفاده می کنیم . DirectX از صوت پشتیانی می کند اما در نسخه های اخیر حالت سخت افزاری را دیگر پشتیبانی نمی کند.
اگر قصد پشتیبانی سخت افزاری فیزیک داریم از کتابخانه های NVIDIA PhysX یا havok یا ... استفاده می کنیم یا لیسانس آن ها را خریداری می کنیم.

mazdadoost
یک شنبه 11 اسفند 1387, 14:19 عصر
تقریبا بله. البته خیلی مباحث بیشتری علاوه بر آن ها هست. (در این سطح شما یک SDK ساخته اید)

اگر برای موتور خود علاوه بر SDK ای که می نویسید ابزارهای لازم را تولید کنید (چیزی که تمامی انجین های حرفه ای باید داشته باشند) آن وقت دیگر کدنویسی مستقیم و استفاده مستقیم از SDK برای کسی که بازی را تولید می کند لازم نیست، کاربر در مواقع نیاز می تواند از محیط اسکریپتی برای بسیاری از موارد در داخل این ابزار استفاده کند.
مثلا مواردی برای ساختن مراحل (level editor ) و یا قسمتی برای طراحی GUI بازی یا محیطی برای تولید مواد اجسام (material ) و ...


متوجه نشدم منظورتان از این سوال چی بود، اما اگر منظورتان ارتباط با سخت افزار هست بله.
از طریق زبان های شیدرنویسی مانند HLSL در DirectX و GLSL در OpenGL و Nvidia Cg و... برای اجرا بر روی کارت گرافیک کد می نویسیم.
برای صوت اگر قصد پشتیبانی سخت افزاری هست از OpenAL (رایگان) یا fmod (تجاری) و غیره استفاده می کنیم . DirectX از صوت پشتیانی می کند اما در نسخه های اخیر حالت سخت افزاری را دیگر پشتیبانی نمی کند.
اگر قصد پشتیبانی سخت افزاری فیزیک داریم از کتابخانه های NVIDIA PhysX یا havok یا ... استفاده می کنیم یا لیسانس آن ها را خریداری می کنیم.

بازم ممنون. مواردی رو که گفتی مطالعه کردم. بازم چند تا سوال برام پیش اومد :(نیما هر وقت تونستی و حال داشتی اگه خواستی جواب بده!)
1-انجین وطنی هم داریم؟
2-خودتون تجربه ای در این زمینه دارین(البته این سوال شخصیه و و به حریم خصوصیتون مربوطه . شرمنده)
بازم ممنون.

Nima_NF
یک شنبه 11 اسفند 1387, 21:17 عصر
1-انجین وطنی هم داریم؟بله،
اعضای همین سایت مانند kochol (http://www.barnamenevis.org/forum/member.php?u=6875) و pswin.pooya (http://www.barnamenevis.org/forum/member.php?u=34511) چند سالی هست که بر روی نسخه کدباز موتور KGE دارند کار می کنند. البته فعلا به صورت SDK هست.

شرکت های بازی سازی مختلفی هم در ایران وجود دارند که معمولا بازی های بین المللی می سازند و برای بازی ها موتور خودشان را طراحی کرده اند، به همین خاطر موتور خود را اعلان عمومی نمی کنند. متاسفانه وب سایت های آن ها را نتوانستم پیدا کنم.

در کل، تا زمانی که بحث بازی سازی برای خارج از مرزهای ایران و فروش بین المللی در کار نباشد (یا امکان پذیر نباشد) معمولا به صرفه نیست که خودمان موتور را به طور کامل طراحی کنیم.

همیشه به یاد داشته باشید که برخلاف تصور اکثر مردم ما، کسی که یک game engine کامل می سازد بسیاری از درآمد خود را از فروش و لیسانس دادن game engine تامین می کند تا فقط ساخت یک بازی با آن. معمولا دست کم بین 10 تا 100 بازی با هر موتور حرفه ای/کامل توسط شرکت های مختلف تولید می شود. (قیمت لیسانس موتور حرفه ای اکثرا بین 5،000 $ تا 1 میلیون دلار هست)


2- خودتون تجربه ای در این زمینه دارینخودم یک game engine کوچک با DirectX و HLSL نوشته ام که قابلیت های اولیه و ساده یک موتور را انجام می دهد (نورپردازی، سایه، مواد، بافت، نرمال ، ورود اشیا، Skin، انیمیشن و... ). کلا به بحث گرافیک کامپیوتری و توسعه آن ها علاقه دارم.


درکل اگر می خواهید اطلاعات بیشتری در مورد افرادی که در ایران این حوزه فعالیت می کنند و بازی تولید می کنند، پیشنهاد می کنم سری به سایت های فارسی بازی سازی برنید مانند persian-designers.com ، متاسفانه مطالب اشتباه زیادی در آن فروم ها بیان می شود، لذا در مواردی که قصد یادگیری دارید حتما از منابع انگلیسی و سایت های مطرح انگلیسی مانند gamedev.net استفاده کنید.
در فروم جستجو کنید قبلا بارها مطرح شده اند.