چگونه ساخت یک موتور طراحی بازی را شروع کنیم؟

Mahdi_Rashed

Well-Known Member
:Open File Database
Open File Database یکی از انواع پایگاه های داده هست که میتونه رایگان و متن باز یا غیر رایگان و فقط دارای SDK باشه . اما چیزی که در Open File Database مهمه اینه که سیستم پایگاه داده به گونه ای طراحی شده که فایلها و عناصری که در بازی استفاده میشه مخصوصاً تکسچرها و صدا ها و موسیقی ها به صورت کامل باز و قابل استفاده توسط بقیه هست . شبیه پایگاه داده بازی counter strike که همه باهاش آشنا هستین. Open File Database معمولاً برای بازی هایی استفاده میشه که یکی از این دو حالت رو هدف بازی کردن قرار بدن . اول این که کلاً دوست دارن سروس بازی رو در اختیار بقیه بذارن و این جور بازی ها قالباً متن باز و رایگاه هستن. حالت دوم اینه که قصد داشتن بازیی رو طراحی کنن که موقع بارگذاری اطلاعات و عناصر بازی وقت زیادی رو به Unpack کردن این عناصر نکنه . حالت دوم برای بازی های آنلاین و تحت شبکه خیلی مهمه چون سرعت ping کاربری که هنوز کامل بازی رو load نکرده با کسی که load کرده در اونور خطوط اینترنت یا یک کامپیوتر دیگه بالا میره.

ساختار سیستمی Open File Database شبیه ساختار Open Source Database هست ولی معمولاً تغییرات زیادی روی اون اعمال میشه تا سرعت ارسال اطلاعات یا ثبت داده ها مخصوصاً برای بازی تحت شبکه یا اینترنت بیشتر و بهینه تر بشه.

ساختار اجرایی Open File Database معمولاً به صورت ساختار های درختی کار میکنه ولی چون ساختارهای درختی حجم پردازشی رو بالا میبره این ساختار توسط توسعه دهنده های نرم افزاری تغییر میکنه بنابراین نمیشه یک ساختار مناسب ارائه کرد.
 

Mahdi_Rashed

Well-Known Member
Regular Database:

Regular Database ها از ساده ترین پایگاه های داده هستن که از ساختار معمولی یک پایگاه داده یعنی دریافت، پردازش و انتشار استفاده میکنن . Regular Database ها از نظر امنیت در سطح پایینی قرار دارن و معمولاً از اونها در پروژه های آموزشی و دانشگاهی که باید در کوتاهترین زمان ممکن بهترین نتیجه حاصل بشه استفاده میشن . یکی از معروف ترین نوع از انواع مختلف و بسیار زیاد Regular Database ها Microsoft Access Database هست که شاید تا به حال در هر زمینه کاری از اون استفاده کرده باشید ولی این پایگاه داده بسیار اسیب پذیر میتونه در طراحی بازی های رایانه هم به کار بره . البته هیچکس هیچوقت همچین پیشنهادی رو به کسی نمیکنه چون Access واقعاً از نظر امنیت در سطح پایینی قرار داره . بحث سرعت و دقت عمل پایگاه داده هم قابل بحثه . در بین کاربران Gamedev.net ایجاد شده سیستم و ساختار پایگاه داده Access از نظر امنیت از 10 نمره 3 نمره دریافت کرده و از نظر سرعت 6 نمره ولی همین پایگاه داده ساده دقت عمل عجیبی داره و نمره 8 رو به خودش اختصاص داده. همچنین در برخی از مطالبی که مطالعه کردم از پایگاه داده Access به عنوان یک Open File Database یاد کرده و گفته فرق بین Regular Database مخصوصاً Access با Open File Database ها یک قدم و اون استفاده از یک نرم افزار رمز یابی فایل Access هست که میتونه به سادگی داده های بازی رو در اختیار کاربران قرار بده . Access نمیتونه فایلها و عناصر بازی رو در خودش ذخیره کنه بلکه فقط میتونه مقادیر رو ذخیره و بازخوانی کنه . برای حل این مشکل طراحانی که از این پایگاه داده استفاده میکنند فایلها و عناصر بازی رو با کدها و ساختارهای مقداری قفل یا encrypt میکنن و در محیط بازی این داده های به فایلها اعمال میشه و عناصر بازی در محیط بازی بارگذاری میشن. البته این بخش باید تحت نظارت زیادی طراحی بشه چون در برخی مواقع دیده شده که سورس و فایلهای بازی بعد از decrypt شدن درون فولدر temp سیستم عامل ویندوز ریخته شدن و به سادگی قابل استفاده هستند. بازی 25tolife یکی از نمونه های این بازی هست که با سیستم پایگاه داده access طراحی شده و در نسخه رمی 1.01 دارای مشکل ذخیره فایلها در فولدر تمپ بود که بعد توسط نسخه های به روز رسانی درست شد.
 

persian_sky

New Member
گفتم که از دید من C# خیلی بهتر از C++ هست و من پایینی سرعت رو احساس نمیکنم . به شما هم پیشنهاد میکنم که برای نوشتن موتور طراحی بازی از طریق زبان C# یک framework طراحی کنید و از طریق اون یک موتور طراحی بازی بسازید . من هم این کار رو کردم و واقعاً نتایج خوبی گرفتم . استفاده از C++ هم خوبه ولی C# خیلی سطح وسیعی رو پوشش میده . از دید سرعت من جاهایی خوندم که C# سرعت پایینتری داره نسبت به C++ ولی من این رو قبول ندارم چون در مقایسه هایی که خودم انجام دادم C# هم سرعت بیشتری داره و هم آسونتر و بهتره.

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

موتور طراحی بازی Main Core رایگان نیست و نسخه تستی رو براش طراحی نکردیم . به همین دلیل هست که نمیتونم برای دانلود قرار بدم . در حال حاظر داریم روی نسخه 1.2 کار میکنیم که اگر بتونیم یک سری از محدودیت ها رو حل بکنیم یک نسخه Sandbox رایگان و محدود برای دانلود قرار میدیم.

موفق باشید:rose:
به هیچ وجه قابل قبول نیست که c# در بازیسازی به c++ برتری داره... این یک موضوع پذیرفته شده و مورد تایید همه ی بازیسازان بزرگ ایران و جهانه که برای طراحی موتور c++ در راس همه ی زبانهای برنامه نویسیه... تجربه ی شما در این مورد که در مقیاس کوچکی کار می کنید ملاک نیست...c# در زمینه ی گرافیک کامپیوتری در رده ی پایینتری از C++ قرار داره... زبان c# فقط برای کسانیکه با xna که محصول مایکروسافت هست کار می کنند، مناسبه و اون هم بعید میدونم سرعت بهتری نسبت به زبان c++ داشته باشه!
اخیراً هم زبان c++ox با تلفظ او ایکس که نسخه ی جدید استاندارد c++ هست برای ساخت و طراحی بازی پیشنهاد میشه ....
 
آخرین ویرایش:

Mahdi_Rashed

Well-Known Member
به هیچ وجه قابل قبول نیست که c# در بازیسازی به c++ برتری داره... این یک موضوع پذیرفته شده و مورد تایید همه ی بازیسازان بزرگ ایران و جهانه که برای طراحی موتور c++ در راس همه ی زبانهای برنامه نویسیه... تجربه ی شما در این مورد که در مقیاس کوچکی کار می کنید ملاک نیست...c# در زمینه ی گرافیک کامپیوتری در رده ی پایینتری از C++ قرار داره... زبان c# فقط برای کسانیکه با xna که محصول مایکروسافت هست کار می کنند، مناسبه و اون هم بعید میدونم سرعت بهتری نسبت به زبان c++ داشته باشه!
اخیراً هم زبان c++ox با تلفظ او ایکس که نسخه ی جدید استاندارد c++ هست برای ساخت و طراحی بازی پیشنهاد میشه ....

گفتم که از دید من C# خیلی بهتر از C++ هست و من پایینی سرعت رو احساس نمیکنم . به شما هم پیشنهاد میکنم که برای نوشتن موتور طراحی بازی از طریق زبان C# یک framework طراحی کنید و از طریق اون یک موتور طراحی بازی بسازید . من هم این کار رو کردم و واقعاً نتایج خوبی گرفتم . استفاده از C++ هم خوبه ولی C# خیلی سطح وسیعی رو پوشش میده . از دید سرعت من جاهایی خوندم که C# سرعت پایینتری داره نسبت به C++ ولی من این رو قبول ندارم چون در مقایسه هایی که خودم انجام دادم C# هم سرعت بیشتری داره و هم آسونتر و بهتره.

موفق باشی :rose:
 
  • Like
Reactions: .ir

persian_sky

New Member
گفتم که از دید من c# خیلی بهتر از c++ هست و من پایینی سرعت رو احساس نمیکنم . به شما هم پیشنهاد میکنم که برای نوشتن موتور طراحی بازی از طریق زبان c# یک framework طراحی کنید و از طریق اون یک موتور طراحی بازی بسازید . من هم این کار رو کردم و واقعاً نتایج خوبی گرفتم . استفاده از c++ هم خوبه ولی c# خیلی سطح وسیعی رو پوشش میده . از دید سرعت من جاهایی خوندم که c# سرعت پایینتری داره نسبت به c++ ولی من این رو قبول ندارم چون در مقایسه هایی که خودم انجام دادم c# هم سرعت بیشتری داره و هم آسونتر و بهتره.

موفق باشی :rose:
من هم به همین دید شما انتقاد کردم....لطفاً یا دید خودتو عوض کن یا اونو به عنوان یک اصل به دیگران معرفی نکن!
تو هم موفق باشی...
 

Mahdi_Rashed

Well-Known Member
فکر نکنم معرفی کردن یا پیشنهاد کردن دیدگاه من به فرد دیگه به این معنی باشه من دارم یکی رو مجبور میکنم به استفاده یا قبول کردن روش و دیگاه من. پیشنهاد کردن یعنی اینکه من فلان روش رو امتحان کردم و برای من جواب خوبی داده و حالا به شما هم پیشنهاد میکنم تا بین روشهای فعلی و روش مورد نظر من یک مقایسه بذارین و خودتون تصمیم بگیرین که چی بهتره یا بدتره.
 
  • Like
Reactions: .ir

Mahdi_Rashed

Well-Known Member
Secure Database:

Secure Database همون نوع پایگاه داده ای هست که امروزه توسط بسیاری از شرکتهای بزرگ طراحی بازی استفاده میشه. Secure Database ها معمولاً توسط کمپانی مورد نظر و یا شرکت سازنده موتور بازی طراحی میشه و بسته به بودجه اونها سیستم امنیتی اون میتونه توسعه یافته یک سیستم متن باز باشه یا اینکه مهندسان نرم افزار مخصوص طراحی یک سیستم امنتیی استخدام کنند. ساختار Secure Database از یک نوع تا نوع دیگه فرق داره و معمولاً ساختار اون در دسترس عموم قرار نمیگیره چون هکر ها میتون با استفاده از ساختار یک دیتابیس به هسته اون راحتتر و زودتر نفوذ کنن. البته این ساختارها در اختیار تعدادی از هکرهای با تجربه قرار میگیره تا از لحاظ امنیتی ارتقا پیدا کنه. هکرهایی که استخدام شدن یک حفره امنیتی رو پیدا میکنن و با رفع اون پایگاه داده رو امن تر میکنن. معمولاً ساختار اجرایی Secure Database ها به صورت پیاده سازی لایه ای یا پیاده سازی کلی هست. در جاهایی هم میشه از تکنیکهای real time memory loading استفاده کرد که حجم پردازشی و سرعت بارگذاری رو کمتر میکنه. Secure Database ها معمولاً به صورتی ساخته میشن تا علاوه بر نگه داری داده های عددی، داده های غیر عددی شبیه فایلها و ... رو نگه داری و فشرده سازی کنند. همچنین بحث خارج کردن از حالت فشرده سازی در طراحی Secure Database در یک کمپانی طراحی بازی یا موتور طراحی بازی بسیار مهم هست.
 

جدیدترین ارسال ها

بالا