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





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> بحث در رابطه با ساخت انجین
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2

نويسنده
پيغام
sajad83
کاربر جدید
کاربر جدید


تاريخ عضويت: 2 شنبه 2 آذر 1388
تعداد ارسالها: 6


2 شنبه 2 آذر 1388 - 15:23
پاسخ بصورت نقل قول
به به چه بحث خوبی راه انداختید. دستتون درد نکه.
من مدتی است که روی پلان موتورها کار می کنم. البته هنوز خیلی کوچیکم که نظر کارشناسی بدهم.
من پیشنهاد می کنم که قبل از طراحی موتور سعی کنیم به اطرافمون و طبیعت نگاهی بندازیم تا ذهنمون باز بشه
امیدوارم نظرهایی که میدهم به درد کسی هم بخوره:
در ابتدا سعی کنید پایه و اساس مناسبی برای مدیریت اجزای موتور طراحی کنید. رندرینگ تنها جزئی از موتور است و می تواند در اولویت های آخر قرار گیرد. اگر موتور شما پلان خوبی داشته باشد هر تکنیک رندرینگی را می توانید بدون دردسر پیاده کنید.
نکته مهم این است که تا حد امکان سعی کنید اشیا موتور را مستقل از هم طراحی کنید. برای مثال ریسورسها( شامل تکسچرها، جئومتریها، متریالها، اجسام صلب ... ) را کاملا مستقل از هم طراحی کنید.
سعی می کنم مرحله به مرحله پلان ذهنی خود را توضیح دهم.
قبل از هر چیز یک مدیریت فایل خوب طراحی کنید که برای دسترسی به هر فایلی از آن استفاده کنید. مدیر فایل می تواند چندین کتگوری داشته باشد ( مثلا کتگوری تکسچرها، جئومتری ها، ... ). برای خواندن محتویات یک فایل کافیست نام فایل ( بدون مسیر ) و نام کتگوری را به مدیریت فایل بدهید تا محتویات آن را به شما تحویل دهد.
اگر کلاس منابع را ( تکسچر، چئومتری، ...) خوب طراحی کنید به طوری که کاملا مستقل از بقیه اجزا باشند براحتی می توانید سیستم Multithread را برای بارگزاری منابع پیاده سازی کنید. همچنین اشیا صحنه شما که در آینده ساخته خواهند شد می توانند به طور مشترک از یک کلاس ریسورس استفاده کنند. کافیست در کنار مدیریت فایل یک مدیریت منابع هم داشته باشید که از ساخت منابع تکراری جلوگیری کند. به این صورت که فرض کنید نام فایل ریسورس مربوطه ( بدون مسیر ) را به همراه جنس درخواستی ( مثلا تکسچر ) به مدیریت منابع ارجاع دهید. در صورت موجود بودن ریسورس، مدیر منابع همان را به شما تحویل خواهد داد و در غیر این صورت مدیر منابع یک کلاس ریسورس جدید می سازد و تحویل شما می دهد.
این ریسورس ها به اشیا داخل صحنه متصل خواهند شد. اشیا داخل صحنه نیز ریسورس های خود را تنها با نام منبع آنها می شناسند و برای دریافت ریسورس خود هنگام بارگزاری صحنه و ...، نام فایل مربوطه را ( بدون مسیر ) به مدیر منابع ارجاع خواهند داد.

* نکته: برای مدیریت منابع خود می توانید از Hash-Table جهت جستجوی سریع ریسورسها با نام آنها استفاده کنید.
* نکته: ارجاع نام فایل اختصاصی ریسورس به مدیر منابع توسط اشیا صحنه فقط یک بار اتفاق می افته و اشیا شما پس از دریافت ریسورس خود، آدرس ( pointer ) ریسورس ساخته شده را نگه داری خواهند کرد.

_________________
Conflict Of Dimensions
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

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


تاريخ عضويت: جمعه 29 دي 1385
تعداد ارسالها: 261
محل سكونت: پشت کامپیوترم


شنبه 7 آذر 1388 - 18:48
پاسخ بصورت نقل قول
sajad83 نوشته:
به به چه بحث خوبی راه انداختید. دستتون درد نکه.
من مدتی است که روی پلان موتورها کار می کنم. البته هنوز خیلی کوچیکم که نظر کارشناسی بدهم.
من پیشنهاد می کنم که قبل از طراحی موتور سعی کنیم به اطرافمون و طبیعت نگاهی بندازیم تا ذهنمون باز بشه
امیدوارم نظرهایی که میدهم به درد کسی هم بخوره:
در ابتدا سعی کنید پایه و اساس مناسبی برای مدیریت اجزای موتور طراحی کنید. رندرینگ تنها جزئی از موتور است و می تواند در اولویت های آخر قرار گیرد. اگر موتور شما پلان خوبی داشته باشد هر تکنیک رندرینگی را می توانید بدون دردسر پیاده کنید.
نکته مهم این است که تا حد امکان سعی کنید اشیا موتور را مستقل از هم طراحی کنید. برای مثال ریسورسها( شامل تکسچرها، جئومتریها، متریالها، اجسام صلب ... ) را کاملا مستقل از هم طراحی کنید.
سعی می کنم مرحله به مرحله پلان ذهنی خود را توضیح دهم.
قبل از هر چیز یک مدیریت فایل خوب طراحی کنید که برای دسترسی به هر فایلی از آن استفاده کنید. مدیر فایل می تواند چندین کتگوری داشته باشد ( مثلا کتگوری تکسچرها، جئومتری ها، ... ). برای خواندن محتویات یک فایل کافیست نام فایل ( بدون مسیر ) و نام کتگوری را به مدیریت فایل بدهید تا محتویات آن را به شما تحویل دهد.
اگر کلاس منابع را ( تکسچر، چئومتری، ...) خوب طراحی کنید به طوری که کاملا مستقل از بقیه اجزا باشند براحتی می توانید سیستم Multithread را برای بارگزاری منابع پیاده سازی کنید. همچنین اشیا صحنه شما که در آینده ساخته خواهند شد می توانند به طور مشترک از یک کلاس ریسورس استفاده کنند. کافیست در کنار مدیریت فایل یک مدیریت منابع هم داشته باشید که از ساخت منابع تکراری جلوگیری کند. به این صورت که فرض کنید نام فایل ریسورس مربوطه ( بدون مسیر ) را به همراه جنس درخواستی ( مثلا تکسچر ) به مدیریت منابع ارجاع دهید. در صورت موجود بودن ریسورس، مدیر منابع همان را به شما تحویل خواهد داد و در غیر این صورت مدیر منابع یک کلاس ریسورس جدید می سازد و تحویل شما می دهد.
این ریسورس ها به اشیا داخل صحنه متصل خواهند شد. اشیا داخل صحنه نیز ریسورس های خود را تنها با نام منبع آنها می شناسند و برای دریافت ریسورس خود هنگام بارگزاری صحنه و ...، نام فایل مربوطه را ( بدون مسیر ) به مدیر منابع ارجاع خواهند داد.

* نکته: برای مدیریت منابع خود می توانید از Hash-Table جهت جستجوی سریع ریسورسها با نام آنها استفاده کنید.
* نکته: ارجاع نام فایل اختصاصی ریسورس به مدیر منابع توسط اشیا صحنه فقط یک بار اتفاق می افته و اشیا شما پس از دریافت ریسورس خود، آدرس ( pointer ) ریسورس ساخته شده را نگه داری خواهند کرد.


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

مساله ای که الان درگیر اون هستم نوشتن یک ماشین اسکریپت برای متریالها هستش. میخوام متریالها رو مثل OGRE به صورت اسکریپت به موتور بدم تا موتور انعطاف بیشتری رو داشته باشد. برای همین هم دارم یه زبون اسکریپت رو طراحی میکنم.

_________________
سمینار تخصصی بازی سازی و گرافیک کامپیوتری (یکشنبه 29 آذر 1388 - 9:30 صبح تا 13 بعد از ظهر ):
http://barnamenevis.org/forum/forumdisplay.php?f=28
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sajad83
کاربر جدید
کاربر جدید


تاريخ عضويت: 2 شنبه 2 آذر 1388
تعداد ارسالها: 6


1 شنبه 8 آذر 1388 - 00:34
پاسخ بصورت نقل قول
Pswin نوشته:

مساله ای که الان درگیر اون هستم نوشتن یک ماشین اسکریپت برای متریالها هستش. میخوام متریالها رو مثل OGRE به صورت اسکریپت به موتور بدم تا موتور انعطاف بیشتری رو داشته باشد. برای همین هم دارم یه زبون اسکریپت رو طراحی میکنم.


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

_________________
Conflict Of Dimensions
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

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


تاريخ عضويت: جمعه 29 دي 1385
تعداد ارسالها: 261
محل سكونت: پشت کامپیوترم


1 شنبه 8 آذر 1388 - 02:23
پاسخ بصورت نقل قول
سلام
میتونی یگی برای طراحی ماشین اسکریپت دقیقا چه کارهایی رو انجام دادی و از چه روشهایی استفاده کردی؟؟؟

من خودم فعلا BNF زبان متریالم رو نوشتم که فعلا هیچ معادله ریاضی رو قبول نمی کنه ( این یه ضعفه، اما نمی خوام برای شروع کار پیچیده بشه) بعدا هم میخوام به کمک FSM اون رو پیاده سازی کنم. فعلا در حال کشیدن دیاگرامهای FSM و تست نرم افزار اونها هستم.

_________________
سمینار تخصصی بازی سازی و گرافیک کامپیوتری (یکشنبه 29 آذر 1388 - 9:30 صبح تا 13 بعد از ظهر ):
http://barnamenevis.org/forum/forumdisplay.php?f=28
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
sajad83
کاربر جدید
کاربر جدید


تاريخ عضويت: 2 شنبه 2 آذر 1388
تعداد ارسالها: 6


2 شنبه 9 آذر 1388 - 02:56
پاسخ بصورت نقل قول
اولش سعی کردم خیلی استاندارد کارکنم. اما بعدش بیخیال شدم. چون تنهایی باید قسمت های مختلف سه گان رو می ساختم و استاندارد سازی قسمت اسکریپت، زمان خیلی زیادی ازم می گرفت. بخاطر محدود بودن زمان کاریم تصمیم گرفتم حتی از پیدا کردن و مطالعه و تست و بکارگیری یک زبان آماده هم صرفنظر کنم و بشینم پشت صندلی و به سرعت یک زبان اسکریپت ساده طراحی کنم. نمی دونم ایده هایی که به ذهنم رسیدن نو بودن یا نه؟ ( که بعید میدونم نو باشه ) و از اونجا که الگوریتمها رو به سرعت طراحی کرد بودم، الان نمی دونم در دنیای اسکریپت با چه نامی مورد استفاده قرار می گیرن.
واسه سه گان یک interpreter ساده درست کرده بودم که شامل BNF ساده ای شبیه به VB ، یک FSM که شامل name, property, value و یک حلال معادله مندرواوردی بود که در مجموع خیلی خوب کار کرد. بعد از اینکه کار تموم شد و هنگامی که به آخر کار رسیده بودم ایده هایی به ذهنم رسید که دیگه واسه پیاده سازیشون دیر بود بنابراین دیگه او نسخه را ادامه ندادم و گذاشتم واسه کار بعدیم.
اگه موافق باشی می تونیم یک تاپیک در رابطه با طراحی زبان اسکریپت راه بندازیم تا هم کسانی که تا حدودی در این زمینه کار کردن از تجربیاتشون صحبت کنن و هم کسانی که ایده ای دارند اما از مباحث اکادمیک این مقوله بی اطلاع هستند بتونن ایده هاشون رو بیان کنن.

_________________
Conflict Of Dimensions
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

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


تاريخ عضويت: جمعه 29 دي 1385
تعداد ارسالها: 261
محل سكونت: پشت کامپیوترم


2 شنبه 9 آذر 1388 - 13:17
پاسخ بصورت نقل قول
sajad83 نوشته:

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


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

_________________
سمینار تخصصی بازی سازی و گرافیک کامپیوتری (یکشنبه 29 آذر 1388 - 9:30 صبح تا 13 بعد از ظهر ):
http://barnamenevis.org/forum/forumdisplay.php?f=28
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

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


تاريخ عضويت: 5 شنبه 19 شهريور 1388
تعداد ارسالها: 523
محل سكونت: داخل کد


2 شنبه 9 آذر 1388 - 15:50
پاسخ بصورت نقل قول
با سلام . من تازه می خواهم یه موتور بسازیم . کار با c++هم زیاد بلد نیستم. و می خواهم موتور نسبتا خوبی بسازم. می خواهم از opengl و c++ استفاده کنم ولی نمی دونم باید از کجا شروع کنم. اول باید چه برنامه ای بنویسم. کجا را به کجا ارتباط بدم و ...
اگه می شه طریقه ساخت موتور ( نه اینکه مطالب کلی بگید) را به طور کامل برای شروع کار بگید و بگید من بایه چیکار کنم.
ممنون. Mr. Green

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

نويسنده
پيغام
sajad83
کاربر جدید
کاربر جدید


تاريخ عضويت: 2 شنبه 2 آذر 1388
تعداد ارسالها: 6


3 شنبه 10 آذر 1388 - 23:54
پاسخ بصورت نقل قول
Pswin نوشته:

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


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

m_basij نوشته:

اگه می شه طریقه ساخت موتور ( نه اینکه مطالب کلی بگید) را به طور کامل برای شروع کار بگید و بگید من بایه چیکار کنم.
ممنون. Mr. Green


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

_________________
Conflict Of Dimensions
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

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


 
پرش به:  


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


unity3d

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