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





صفحه اول انجمنها -> برنامه نويسي تخصصي DirectX و اصول برنامه نويسي تحت ويندوز -> ساختمان Game Engine
 

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

ساختمان Game Engine
نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


جمعه 15 مهر 1384 - 20:30
پاسخ بصورت نقل قول
هدف من از ايجاد اين تاپيك رساندن اطلاعات صحيح به دوستان در مورد ساختمان يك Game Engine هست كه در چندين بخش اموزش داده ميشه .

نكته : اين اموزش برگرفته از يك مقاله انگليسي زبان است.
اميد به اين كه مفيد واقع بشه .


قسمت 1 مقدمه :

همان طور كه ميدونيد Doom اولين بازي سه بعدي كه توسط كمپاني ID Software ساخته شد
كه تكنولوژي جديدي رو به دنياي game عرضه كرد !
ولي doom فقط يک بازي نبود بلکه يک مدل برنامه نويسي جديد را هم ابدا كرد كه "Engine" نام دارد.
اين مدل طراحي كاملا انعط‌اف‌ پذير و قابليت هاي فراواني را داراست به عنوان مثال برنامه نويس ها به راحتي ميتوانند بازي جديدي را از Engine درست كنند و يا مدل هاي جديد به بازي اضافه كنند و يا حتي engine را گسترش دهند .

counter strike , Quake , Tactical ops نمونه هايي از بازيهاي ساخته شده به وسيله اين مدل برنامه نويسي هستند.

از تفاوت Game Engine با خود Game شروع ميكنيم.
بيشتر مردم engine رو با كل بازي اشتباه ميگيرند اين مانند اين هست كه يك ماشين رو با موتورش اشتباه بگيريم. ما ميتونيم موتور يك ماشين رو بيرون بياوريم و يك ماشين ديگه از اون بسازيم.Game Engine هم مانند موتور ماشين هست يعني به راحتي از يك موتور بازيهاي جديدي رو ميشه ساخت .

خود گيم كل محتويات بازي رو در بر ميگيره ( مدل ها و صداها و هوش مصنوعي و فيزيك و ... كه به اينها assets هم ميگن ) به اضافه كد هايي كه براي راه اندازي بازي به كار ميره مانند وروي كي برد و ...

براي مثال اگر به folder بازي Quake نگاه کرده باشيد Quake.exe ميتونه خود موتور باشه و صداها و file هايي مثل QAGame.dll و CGame.dll ميتونه بدنه بازي رو تشكيل بده .

در حقيقت چه اتفاقي در پشت صحنه اين دنيا مجازي مي افته ؟ اين موضوع كامل بحث ما هست كه در قسمت هاي بعد به صورت كامل تشريح ميشه Arrow

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

نويسنده
پيغام
Ali
مدیر کل
مدیر کل


تاريخ عضويت: شنبه 20 تير 1383
تعداد ارسالها: 2983
محل سكونت: On the edge


شنبه 16 مهر 1384 - 21:23
پاسخ بصورت نقل قول
GameOver عزیز

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

گذشته از این صحبتها امیدوارم که بحت در مورد این مبحث شیرین و فنی رو ادامه بدین... Surprised



علی

_________________
پی سی گیمرز - آرشيو بزرگ بازی های کامپیوتری
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


2 شنبه 18 مهر 1384 - 18:26
پاسخ بصورت نقل قول
منو ببخشيد ولي من نميدونستم که اينطوري هست PDT_004
به هر حال
اين مقاله مال سايت www.flipcode.com هست که الان بسته شده ! Crying or Very sad
اسم اصليش اينه Game Engine Anatomy 101
با تشكر
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


2 شنبه 18 مهر 1384 - 18:26
پاسخ بصورت نقل قول
راستي در اولين فرصت ادامه مطلب رو مينويسم
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

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


تاريخ عضويت: شنبه 1 مرداد 1384
تعداد ارسالها: 298


2 شنبه 18 مهر 1384 - 21:11
پاسخ بصورت نقل قول
سلام
من هم استقبال می کنم و این پست را برای تشکر از شما زدم و خواستم یهو دلسرد نشید که کسی استقبال نمی کنه.

_________________
Kochol Game Engine

[img]http://barnamenevis.org/forum/image.php?type=sigpic&userid=6875&dateline=1258101798[/img]
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
pepeland
در حال رشد
در حال رشد


تاريخ عضويت: 3 شنبه 4 مرداد 1384
تعداد ارسالها: 95
محل سكونت: شيراز


3 شنبه 19 مهر 1384 - 02:20
پاسخ بصورت نقل قول
بحث جالبیه ، ادامه بدید...

_________________
www.pepeland.net
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


3 شنبه 19 مهر 1384 - 15:41
پاسخ بصورت نقل قول
قسمت 2 ارائه‌ دهنده‌ يا Renderer :

بحث طراحي موتور رو با Renderer يا مترجم شروع ميکنيم . اين بحث رو از ديد يک برنامه نويس ارائه ميدم .

دقيقا يک Renderer چي هست و چرا مهم هست ؟
خوب بدون اون شما روي صفحه مانيتور چيزي رو نميبينيد! Renderer تصوير رو براي بيننده اماده ميكنه تا بازيكن يا بيننده بتونه تصميم بگيره كه بر اساس اون چيزي كه نمايش داده ميشه كاري رو انجام بده.

اولين و مهمترين چيزي كه در ساختن Engine بايد به اون توجه بشه Renderer هست.
اگر شما در مانيتور چيزي رو نبينيد چطور مخواهيد بدونيد كه كدتون كار ميكنه ؟
Renderer بيشتر از 50٪ از CPU رو براي محاسباتش استفاده ميكنه و بيشتر برنامه نويس ها توجه زيادي بر روي اين مساله دارند چون با يك Renderer بد تمام بازي به كندي اجرا ميشه و اين بازي هيچوقت به بازي خوبي تبديل نميشه.

تجارت نقاشي كردن بر روي صفحه احتياج به كارتهاي گرافيك پرسرعت و 3D API , رياضيات سه بعدي و دانستن اين كه چگونه اين كارتها كار ميكنه رو داره. براي كنسول هم تقريبا همين طور هست ولي سخت افزار كنسول يخ زده يعني هر كنسول مشخصات ثابتي رو داره و تقريبا هيچوقت تغيير نميكنه برعكس كامپيوتر كه هميشه در حال تغيير هست.

در کل Renderer كار ساختن تصاوير رو بر عهده داره كه يك بازي رو از بقيه جدا ميكنه و باعث ميشه كه اون بازي منحصر به‌ فرد باشه و اين كار احتياج به خلاقيت خيلي خيلي زياد داره.
اين كه چگونه بتونيم از CPU و پهناي باند Ram به خوبي استفاده كنيم و به نتايج دلخواه برسيم يك هنر هست و در اصل گرافيك سه بعدي يعني هنر ساختن جزئيات‌ با بيشترين كارايي.


در قسمت بعد در باره چگونگي ترسيم شدن اشياء در كارت گرافيك بحث ميكنيم .

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

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 20 مهر 1384 - 01:53
پاسخ بصورت نقل قول
نميگيرم ؟ ها ؟ Shocked

اسماعيل جان عزيز:
هدف اين تاپيک بيان‌ كردن‌ ساختمان يک Engine هست نه خود کد. و من سعي كردم تا حد ممكن اين بحث رو ساده بيان كنم .
ولي درباره كد هم به زودي در تاپيك جدا کاملا بحث ميکنيم.(OpenGl , Direct3D)

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

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 20 مهر 1384 - 15:19
پاسخ بصورت نقل قول
براي اين که بتوني به خوبي از پس رياضيات سه بعدي بر بياي (چه Direct3D چه OpenGl) بايد اين ها رو به خوبي بلد باشي : (بردارها و ماتريکس ها) که در هر برنامه سه بعدي استفاده ميشن (براي انتقال اشياء و تغيير اندازه و ...) پس هر چه قدر ميتوني در مورد اينا ياد بگير . البته در اموزش ها اين هارو هم ياد ميدم . Mr. Green
البته بگم كه فقط اينا نيست ولي اون دو تا از همه مهمتر هستند .

موفق باشي Evil or Very Mad
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

نويسنده
پيغام
GameOver
بازی ساز
بازی ساز


تاريخ عضويت: 2 شنبه 11 مهر 1384
تعداد ارسالها: 131


4 شنبه 20 مهر 1384 - 16:45
پاسخ بصورت نقل قول
قسمت سه : ساختن اشياء سه بعدي

در اين قسمت به چگونگي ساخته شدن اشياء ميپردازيم.

هر شيء سه بعدي به وسيله نقطه ها ذخيره ميشوند كه به اونها رئس يا Vertex ميگن. كه به وسيله رابطه اين نقاط كامپيوتر ميتونه خطي رو بين دو نقطه بكشه يا حتي سطح بين اونها رو پر كنه! اين مقدمه شروع ساخت دنياي سه بعدي هست !
حالا برايي مثال يه جعبه از 8 نقطه درست شده : هر نقطه براي يك گوشه و شامل 6 سطح هم هست كه يك سطح براي هر طرف .اين يك مثال ساده از اين نقاط هست ولي وقتي ما در باره مرحله بازيي مثل Counter Strike صحبت ميكنيم از صدها هزار يا شايد چند صد هزار نقطه صحبت ميكنيم كه بسيار زياد هست .

چگونگي ذخيره ساختن اين مدل ها و نقشه ها(Map) يكي از وظايف مترجم يا Renderer هست و بيشتر جزء وظايف بازي به حساب مياد. بازي احتياجي به دانستن اين كه اشياء چگونه در حافظه Ram ذخيره ميشند يا چگونه اونارو نمايش بده رو نداره . بازي فقط احتياج به دانستن اين داره كه مترجم (Renderer) درست اين اشياء رو نمايش ميده و يك مدل رو در فريم (عكس) مناسبي نمايش ميده .

در يك Engine خوب شما به راحتي ميتونيد مترجم (Renderer) رو با يکي ديگه عوض کنيد و يک خط کد بازي هم عوض نشه . بيشتر انجين هاي قابل حمل (Cross-Platform Engine) مانند Unreal tournament اين قابليت رو دارا هستند . منظور از كراس پلتفرم اين هست كه يك برنامه قابليت اجرا بر روي چندين كنسول رو داشته باشه مانند Play Station , XBox, Game Cube و ...

به كار كرد داخلي يك مترجم ميپردازيم. چندين راه براي ذخيره كردن يك شيء در Ram وجود داره كه در انسوي مختصات قرار دارند . ميتونيد از رياضيات استفاده كنيد و يا از معادلات براي تقسيم كردن خط يا كج كردن خط استفاده نماييد كه بيشتر كارتهاي گرافيك اين شيء هاي اوليه رو ساپورت ميكنند .
شيء هاي اوليه يا Primitive كوچكترين واحدي هست كه يك كارت گرافيك ميتونه رندر كنه كه معمولا مثلث ها را به عنوان Primitive به حساب مياوريم . كارت هاي جديد مثل Nvidia و ATI به شما اجازه رندر كردن به صورت رياضي وار را ميدهند ولي اين يك چيز استاندارد در بين بقيه كارت ها نيست و بر اين استراتژي هم نميشه تكيه كرد چون از لحاظ محاسبات به CPU فراواني احتياج داره ولي اين بار ها پايه اي براي پروژه هاي تحقيقاتي شده مثل شبيه سازي عوارض و كوه ها كه لبه هي فراواني رو دارا هستند .

در قسمت بعد در مورد تكنيك انتخاب چند ضلعي ها توضيح ميدم اميدوارم كه مفيد واقع شده باشه .
تا بعد Arrow
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي شماره ICQ
 

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


 
پرش به:  


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


unity3d

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