# مباحث متفرقه برنامه نویسی > طراحی و ساخت بازی‌های کامپیوتری > سوال: بهترین روش برای ساخت انجین

## REZAsys

*سلام

میخواستم در مورد انجین نویسی هم یه سری اطلاعات داشته باشم ، اولین سوالی  که برام پیش اومد اینه که بهترین روش برای ساخت یک انجین کامل و بدون نقص چیه ؟ 

*

----------


## سپول

از اون سوالا بود ...

----------


## syntiberium

بهترین روش اینه که اول یه opengl یا directx یا حد اقل یه TV3D کامل بلد باشی بعدش اگه بلد بودی باید سعی کنی از یه موتور آماده ایده بگیری برای ساخت موتور و البته اینم بگم که اصلا و ابدا کار آسونی نیست و ممکن هست چند سال از عمرت رو صرف ساختنش کنی و مطمئن باش اگر از ساختنش لذت نبری که بعید می دونم ببری وسط کار ولش می کنی و بعد به خودت می گی که چرا عمرت رو برای یک چیز بی ارزش هدر دادی چون موتور نصفه کاره به درد هیچ کس نمی خوره حتی خودت دوست عزیز.

----------


## kochol

سلام
به نظر من این مقاله بسیار عالی هست برای شروع
Write games not engines
http://scientificninja.com/blog/write-games-not-engines

----------


## REZAsys

*این جور که شما میگید فکر میکنم کار خیلی سختی باشه.....*
*نظرتون در مورد این چیه:
http://forum.p30world.com/showthread.php?t=458823

*

----------


## kochol

> *این جور که شما میگید فکر میکنم کار خیلی سختی باشه.....*
> *نظرتون در مورد این چیه:
> http://forum.p30world.com/showthread.php?t=458823
> 
> *


من که نتونستم لینک رو باز کنم اجازه خواندن نمی ده حتی بعد از ثبت نام
کلا بازی سازی کار سختی هست

----------


## SeganX

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

----------


## REZAsys

*آقا من گفتم بهترین روشش چیه شما* *همتون میگید سخته ! 
Xna خوبه ؟ فکر میکنم بهترینش همین باشه ...

*

----------


## 1485159

> *Xna خوبه ؟ فکر میکنم بهترینش همین باشه ...
> *


واسه دوز، مینچ و... بهترینه.

----------


## REZAsys

*پس چی خوبه ؟؟
هرجا میرم یکی یه چیزی میگه :دی
*

----------


## kochol

xna چه ربطی اصلا به روش داره؟

----------


## REZAsys

> xna چه ربطی اصلا به روش داره؟


*مثل اینکه منظورم رو متوجه نشدید.
منظورم از روش راه های ساخت انجین بود 
*

----------


## pswin.pooya

> مثل اینکه منظورم رو متوجه نشدید.
> منظورم از روش راه های ساخت انجین بود


کوچول راست میگه

xnaُ، OpenGL و DirectX همگی ابزار هستند نه روش. فرق چندانی تو ابزار انتخابی وجود نداره و هر سه به اندازه کافی قوی هستند و شما تنها توی سرعت و چند مساله دیگه هستش که تفاوتها رو متوجه می شد. و هیچ وفت نمی تونین ترجیح خاصی رو نسبت به اونها ارائه بکنید مگر اینکه هدف خاصی داشته باشید و با یک شکل خاص نرم افزار همراه باشید. اما مهمتر از اون شیوه هستش یعنی اینکه به چه شکلی میخواید با API ارتباط برقرار بکنید. و یا از چه نوع دیزاینی برای انجین تبعیت می کنید. انتخاب شیوه درست مدیریت داده ها خیلی مهمتر از انتخاب ابزار کار مثل API گرافیکی و یا حتی زبان برنامه نویسی هستش. 

به نظر من شیوه و دیزاین تا حد زیادی بسته به تجربه و البته تحقیق و مطالعه داره و نمیشه یکشبه و یا اینکه حتی به یکباره در موردش تصمیم گرفتش. هرکسی دیزاین خودش رو داره و به نظرش درست هست و دیزاین هرکس نسبت به بقیه بعضی نکات خوب و بعضی نکات منفی داره. شما قبل از هر کاری باید بری سورس انجینهایی مثل irrlicht و kge رو بخونی و یاهاشون کار کنی که خیلی easy to use هستند و یا اینکه با انجینی مثل ogre سر و کله بزنی که دیزاین خوبی رو داره. به هر حال بهتره یکسری اهداف کوتاه مدت و کوچیک برای خودت تهیه کنی و جلو بری و کم کم با مطالعه بیشتر انجینت رو کامل کنی. 

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

----------


## REZAsys

> به نظر من شیوه و دیزاین تا حد زیادی بسته به تجربه و البته تحقیق و مطالعه  داره و نمیشه یکشبه و یا اینکه حتی به یکباره در موردش تصمیم گرفتش. هرکسی  دیزاین خودش رو داره و به نظرش درست هست و دیزاین هرکس نسبت به بقیه بعضی  نکات خوب و بعضی نکات منفی داره. شما قبل از هر کاری باید بری سورس  انجینهایی مثل irrlicht و kge رو بخونی و یاهاشون کار کنی که خیلی easy to  use هستند و یا اینکه با انجینی مثل ogre سر و کله بزنی که دیزاین خوبی رو  داره. به هر حال بهتره یکسری اهداف کوتاه مدت و کوچیک برای خودت تهیه کنی و  جلو بری و کم کم با مطالعه بیشتر انجینت رو کامل کنی.


*خیلی ممنون
یعنی نظر شما اینه که اول برم سراغ انجین های اوپن سورس ؟؟؟
بعد تو xna و دایرکت ایکس و اوپن جی ال مشغول بشم ؟؟
*

----------


## REZAsys

*سلام
نظرتون در مورد این چیه ؟

http://shop.bazisaz.com/index.php?ro...&product_id=58
*

----------


## syntiberium

اگه کاملا مطمئن هستی که می تونی با Directx یه کار های درست حسابی انجام بدی و این آموزش هم همه ی چیز های مورد نیازت رو یاد داده بود خوبه . اگه تست کردی دیدی خوبه به ما هم خبر بده شاید ما هم خریدیم .

----------


## pswin.pooya

> خیلی ممنون
> یعنی نظر شما اینه که اول برم سراغ انجین های اوپن سورس ؟؟؟
> بعد تو xna و دایرکت ایکس و اوپن جی ال مشغول بشم ؟؟


میتونی از همون اول هم سراغ اینا بری منتها اگر به صورت موازی هم با گیم انجین کار کنی و هم یه API خیلی بهتره. دایرکت یه کتاب خوب به اسم Introduction game programming with directx 9,10 ... (یا یه چیزی تو این مایه ها) که جون میده برا خوندن. اگر انتخابت دایرکت باشه حتما برو سراغ این کتاب و اگر OpenGL باشه اول ویرایش دوم کتاب Begining OpenGL game programming رو بخون و بعد هم باز همون کتاب رو بخون (یا حداقل یکسری از فصلهاشو مثل picking و particle system و ...)

سعی کن دنبال منبع فارسی نری چون اگر ترجمه باشن که هم قدیمی و هم از نظر ترجمه افتضاح میشن و اگر هم تالیف باشن که دیگه هیچی. من یکی از این بنده خداهایی که کتاب دایرکت رو نوشته بود (و استاد خودمم بود) رو دیدم طرف حتی نمی تونست بگه که ماتریس projection چی هست. حالا خودت میتونی حدس بزنی که اون کتاب چی هست؟!

----------


## mahdi1373

برای xna یه منبع بسیار خوب هست که نویسنده اش هم فارسیه. من پیشنهاد می کنم که بخریش:
http://www.naghoos-andisheh.ir/bookv...bookid=1485623

----------


## Slytherin

من یک پیشنهاد دارم (حرفه ام بازی سازی نیست، صرفا پیشنهاد تجربی هست.)
به نظر من شما شروع ساخت یک بازی رو با هر زبانی که بلدی (C#‎, C++‎, VB, ...) و بدون در نظر گرفتن هیچ رابط API ای (OpenGL, DirectX, ...) و بدون هدف قرار دادن ساخت موتور شروع کن. اینطوری فرض کن که می خواهی برنامه ای تحت ویندوز بنویسی که این برنامه یک بازی هست. بعد همینطوری که پیش میری کم کم میبینی که به بعضی امکانات برای بعضی کار ها نیاز داری، اون موقع بیا و روابط API مثل DirectX رو وارد برنامه تحت ویندوزت کن. اگر همین روال رو ادامه بدی در نهایت یک بازی نصفه نیمه خواهی داشت.
وقتی به این مرحله برسی تجربه ات خیلی زیاد شده، حالا زمان اون می رسه که بخوای یک موتور بازی مستقل بسازی. احتمالا این کار خیلی ساده تر از مرحله قبلی خواهد بود چون تجربه های لازم رو بدست آوردی و حتی در بعضی مواقع می تونی از کد های مرحله قبل در موتور جدید استفاده کنی.
یه چیز هم می گم که خیلی ها در موردش اشتباه می کنند و اون اینه که فکر می کنند که موتور بازی سازی صرفا باید یک برنامه ای باشه که مثلا بازی ساز با 4 تا کلیک بتونه بازی بسازه! خب همچین چیزی غلطه، من یادمه یک زمانی موتور بازی Max Payne رو دانلود کرده بودم، موتور این بازی چیزی بیشتر از یک مشت کد نبود! در واقع اگر شما مرحله اول رو هم به پایان برسونید، یک موتور ساده خواهید داشت!
در کل اینکه بخواهید از اول روی ساخت یک موتور تمرکز کنید به نظر من اشتباهه...
در هر صورت من همونطوری که گفتم بازی ساز نیستم و در کار های گرافیکی تخصصی ندارم. :چشمک:

----------


## sonixax

به نظر من بهتره شما صد هزار دلار بدي game brio كه يكي از خوفناك ترين انجين هاي دنياست رو بخري حالش رو ببري  :لبخند گشاده!: 
ولي سواي شوخي اگر شما استفاده از انجين هاي از قبل نوشته شده رو ياد بگيري خيلي بهتره تا نوشتن يك انجين از نو چرا كه نوشتن يك انجين خوب دست كمي از نوشتن يك سيستم عامل تمام و كمال و درست حسابي نداره.

----------


## REZAsys

> من یک پیشنهاد دارم (حرفه ام بازی سازی نیست، صرفا پیشنهاد تجربی هست.)
> به نظر من شما شروع ساخت یک بازی رو با هر زبانی که بلدی (C#‎, C++‎, VB,  ...) و بدون در نظر گرفتن هیچ رابط API ای (OpenGL, DirectX, ...) و بدون  هدف قرار دادن ساخت موتور شروع کن. اینطوری فرض کن که می خواهی برنامه ای  تحت ویندوز بنویسی که این برنامه یک بازی هست. بعد همینطوری که پیش میری کم  کم میبینی که به بعضی امکانات برای بعضی کار ها نیاز داری، اون موقع بیا و  روابط API مثل DirectX رو وارد برنامه تحت ویندوزت کن. اگر همین روال رو  ادامه بدی در نهایت یک بازی نصفه نیمه خواهی داشت.
> وقتی به این مرحله برسی تجربه ات خیلی زیاد شده، حالا زمان اون می رسه که  بخوای یک موتور بازی مستقل بسازی. احتمالا این کار خیلی ساده تر از مرحله  قبلی خواهد بود چون تجربه های لازم رو بدست آوردی و حتی در بعضی مواقع می  تونی از کد های مرحله قبل در موتور جدید استفاده کنی.
> یه چیز هم می گم که خیلی ها در موردش اشتباه می کنند و اون اینه که فکر می  کنند که موتور بازی سازی صرفا باید یک برنامه ای باشه که مثلا بازی ساز با 4  تا کلیک بتونه بازی بسازه! خب همچین چیزی غلطه، من یادمه یک زمانی موتور  بازی Max Payne رو دانلود کرده بودم، موتور این بازی چیزی بیشتر از یک مشت  کد نبود! در واقع اگر شما مرحله اول رو هم به پایان برسونید، یک موتور ساده  خواهید داشت!
> در کل اینکه بخواهید از اول روی ساخت یک موتور تمرکز کنید به نظر من اشتباهه...
> در هر صورت من همونطوری که گفتم بازی ساز نیستم و در کار های گرافیکی تخصصی ندارم.


*سلام
خیلی ممنون از پیشنهادتون....

*


> به نظر من بهتره شما صد هزار دلار بدي game brio كه يكي از خوفناك ترين انجين هاي دنياست رو بخري حالش رو ببري 
> ولي سواي شوخي اگر شما استفاده از انجين هاي از قبل نوشته شده رو ياد بگيري  خيلي بهتره تا نوشتن يك انجين از نو چرا كه نوشتن يك انجين خوب دست كمي از  نوشتن يك سيستم عامل تمام و كمال و درست حسابي نداره.


* udk رایگانه ، از گیم برو هم بهتره.....ممنون*

----------


## Slytherin

> به نظر من بهتره شما صد هزار دلار بدي game brio كه يكي از خوفناك ترين انجين هاي دنياست رو بخري حالش رو ببري 
> ولي سواي شوخي اگر شما استفاده از انجين هاي از قبل نوشته شده رو ياد بگيري خيلي بهتره تا نوشتن يك انجين از نو چرا كه نوشتن يك انجين خوب دست كمي از نوشتن يك سيستم عامل تمام و كمال و درست حسابي نداره.


کاملا مخالفم، اکثر بازی های جدیدی که وارد بازار می شوند یک انجین منحصر به فرد دارند و یا از نسخه ارتقا یافته سری ای قبلی خود استفاده می کنند.
مسلما هیچ بازی بازی دوست ندارد یک گیم پلی تکراری را با یک دکور جدید بازی کند.
وقتی پیش برخی بازی سازان نه چندان حرفه ای ایران می نشینید، مدام می گویند که: "چرخ را که دوباره اختراع نمی کنند!"
من می خواهم به این عزیزان بگم که کی گفته دوباره اختراع نمی کنند؟! خیلی خوبش هم می کنند، الان چرخ اولین خودرو یا کالسکه با چرخ های امروزی قابل مقایسه هست؟! آیا آن چرخ خای قدیمی قابلیت استفاده روی یک بنز آخرین سیستم رو دارند؟!! مسلما خیر :چشمک:

----------


## REZAsys

> کاملا مخالفم، اکثر بازی های جدیدی که وارد بازار می شوند یک انجین منحصر  به فرد دارند و یا از نسخه ارتقا یافته سری ای قبلی خود استفاده می کنند.
> مسلما هیچ بازی بازی دوست ندارد یک گیم پلی تکراری را با یک دکور جدید بازی کند.
> وقتی پیش برخی بازی سازان نه چندان حرفه ای ایران می نشینید، مدام می گویند که: "چرخ را که دوباره اختراع نمی کنند!"
> من می خواهم به این عزیزان بگم که کی گفته دوباره اختراع نمی کنند؟! خیلی  خوبش هم می کنند، الان چرخ اولین خودرو یا کالسکه با چرخ های امروزی قابل  مقایسه هست؟! آیا آن چرخ خای قدیمی قابلیت استفاده روی یک بنز آخرین سیستم  رو دارند؟!! مسلما خیر


*ولی باید قبول کرد که تا انجین های ما بخوان پیشرفت کنند ، خیلی طول میکشه ، حتی ممکنه* *انجینهامون** بعد از چند سال دیگه هم به قدرت UDK  نرسن !*
*ما میخوایم بازی خوب بسازیم نه انجین خوب ! و بازیکن بازی رو بازی میکنه نه انجین رو
*


> مسلما هیچ بازی بازی دوست ندارد یک گیم پلی تکراری را با یک دکور جدید بازی کند.


*مخالفم !  دو بازی که با یک موتور ساخته میشن ممکنه از زمین تا آسمون فرق کنند !
مثلا تو udk نباید حتما اول شخص ساخت ! میشه انواع سبکها رو ساخت با رندر بالای انجین....
*

----------


## Slytherin

من به واسطه یکی از دوستان با UDK کار کرده ام، درسته که برنامه نسبتا قوی برای بازی سازی هست اما در نهایت قدرت مانور شما رو محدود می کنه و ارزش مانور دادن نداره. از این بحث هم که بگذرم با یک مثال دیگه می شه این مسئله رو رد کرد، شما فرض کنید که مثلا از یک سالی تولید UDK متوقف شود و یا اصلا به هر دلیلی به اون دسترسی نداشتید (مثل سایق که غیر رایگان بود) اونوقت چاره چیست؟ این همه زحمتی که برای یادگیری این برنامه گرفتید چه می شود؟
شما در این انجمن اومدید مطرح کردید که چگونه موتور بسازم، من هم نظرم رو گفتم، اگر می گفتید چگونه بازی بسازم، شاید نظر دیگری می دادم!  ساخت یک موتور خوب کاملا با ارائه یک بازی خوب در ارتباط است.

----------


## Slytherin

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

----------


## sonixax

> کاملا مخالفم، اکثر بازی های جدیدی که وارد بازار می شوند یک انجین منحصر به فرد دارند و یا از نسخه ارتقا یافته سری ای قبلی خود استفاده می کنند.
> مسلما هیچ بازی بازی دوست ندارد یک گیم پلی تکراری را با یک دکور جدید بازی کند.
> وقتی پیش برخی بازی سازان نه چندان حرفه ای ایران می نشینید، مدام می گویند که: "چرخ را که دوباره اختراع نمی کنند!"
> من می خواهم به این عزیزان بگم که کی گفته دوباره اختراع نمی کنند؟! خیلی خوبش هم می کنند، الان چرخ اولین خودرو یا کالسکه با چرخ های امروزی قابل مقایسه هست؟! آیا آن چرخ خای قدیمی قابلیت استفاده روی یک بنز آخرین سیستم رو دارند؟!! مسلما خیر


ببینید این داستان نوشتن یک گیم انجین از نو درست مثل نوشتن سیستم عامل ملی میمونه !
خودتون هم اشاره کردید که از نسخه ارتقاء یافته ی سری قبل استفاده میکنند یعنی نمیاند یک کار رو دو بار بکنند بلکه بسته به نیازشون قابلیت های جدید بهش اضافه میکنند .
دلیل اینکه بازی ساز های تجاری انجین های منحصر به فرد خودشون رو دارند تجارت و به رخ کشیدن قدرت تکنولوژیشونه که در ایران ازش خبری نیست .
در مورد گرشاسپ هم من فکر میکنم که بهتون دروغ گفتند ، در بهترین حالت یک انجینی رو تهیه کردند و بسته به نیازشون دستکاریش کردند .
بازی های ایرانی کم نیستند و هیچ کدومشون هم انجین خودشون رو ندارند - خرید انجین هم زیاد سخت براشون در نمیاد شما کافیه برید فرم حمایت از صنایع الکترونیک صندوق وزارت صنایع و معادن رو پر کنید و از پروژتون دفاع کنید از 500 میلیون تا سقف 3 میلیارد وام بگیرید .

حتی برای بازی های بزرگی مثل God Of War انجین منحصر به فرد استفاده نشده و از انجین های از قبل ساخته شده استفاده شده : http://en.wikipedia.org/wiki/Kinetica

 یا انجین Prince Of Persia هم همین طور از یک انجین از قبل نوشته شده به اسم Jade استفاده کردند : http://en.wikipedia.org/wiki/Jade_engine

یا انجین گیم برایو : http://en.wikipedia.org/wiki/Gamebryo

که این بازی ها رو باهاش ساختند :

http://en.wikipedia.org/wiki/Gamebryo#Industry_use

و اگر نگاهی به لیست بازی هایی که باهاشون ساخته شده بندازید میبینید که گیم پلی تکراری ندارند .

برای همین شرکت های بزرگ وقتشون رو صرف نوشتن یک انجین نمیکنند و این کار رو واگذار کردند به شرکت هایی که کارشون انجین نویسی هست .

بازی هایی که انجین انحصاری خودشون رو دارند تک و توک هستند و معمولا بین دو نسخه ازشون سالها فاصله ی زمانی وجود داره و معمولا هم بازی های موفقی نیستند ، مثل : Sins of a Solar Empire

این هم یک لیست از گیم انجین ها : http://en.wikipedia.org/wiki/List_of_game_engines

که تعدادشون در مقابل بازی های موجود خیلی خیلی خیلی خیلی کمه و اگر در قسمت انجین های تجاری نگاه کنید میبینید معمولا با هر انجین بیش از یک بازی ساخته شده که گیم پلی مشابهی هم ندارند ، مثل Assassin Creed 2 و Prince Of Persia : Forgotten Sands که هر دوشون با یک انجین ساخته شدند : http://en.wikipedia.org/wiki/Anvil_%28game_engine%29

و دوست عزیز چرخ رو دو بار اختراع نمیکنند ، بلکه با گذشت و زمان بسته به نیاز کامل ترش میکنند و تکنولوژی های جدید تری روش پیاده میکنند و قطعا چرخی که بهینه سازی شده با چرخ گاری که مثال زدید فرق میکنه .

به همین دلایلی که برای شما شماردم ، با شما مخالفم .

----------


## سپول

بیشتر بازی های AAA و کیفیت بالا رو با موتور ساخته خود هموم استودیو درست می کنند !
http://www.tochalco.com/blog/?p=48

این هم آمار اگه excel دارید.
http://www.tochalco.com/blog/wp-cont.../10/games1.xls

اینقدر بحث چرخ و این چیزها نکنید، راه درستش نوشتن موتور هست، حالا توانش نیست، حوصله و صبرش نیست، تجربه اش نیست، هوشش نیست یا هر چیز دیگه اینقدر دلیل برای کار اشتباه نیاورید.

UDK، UDK ، UDK هم که در مجامع ایران تو دهن افتاده، برای مود سازها هست، نه بازی سازان حرفه ای. با Unreal مقایسه نمی شه کرد که بیشتر از نیم میلیون دلار قیمتش هست و با سورس و ساپورت و کلی منابع دیگه توسط  Epic ارائه می شه، و در واقع بازی هایی که لایسنس Unreal رو می خرن، خودشون یک تیم موتور نویس دارند و ابزارها و کدهای این موتور رو بر اساس نیاز بازی تغییر می دهند !

----------


## REZAsys

> UDK، UDK ، UDK هم که در مجامع ایران تو دهن افتاده، برای مود سازها هست،  نه بازی سازان حرفه ای. با Unreal مقایسه نمی شه کرد که بیشتر از نیم  میلیون دلار قیمتش هست و با سورس و ساپورت و کلی منابع دیگه توسط  Epic  ارائه می شه، و در واقع بازی هایی که لایسنس Unreal رو می خرن، خودشون یک  تیم موتور نویس دارند و ابزارها و کدهای این موتور رو بر اساس نیاز بازی  تغییر می دهند !


*مود سازی ؟؟ مود از چی ؟ نکنه منظورت اینه که سورس کدهایی که خود موتور پیش فرض داره رو تغییر بدیم میشه مود؟؟ 
نه دوست عزیز اصلا udk برای مودسازی نیست ! فرق خاصی هم با آنریل نداره.... منبع سایت udk:
* *What is it?*

                       UDK _is_ Unreal Engine 3 – a complete professional  development framework. All the tools you need to create great games,  advanced visualizations and detailed 3D simulations on the PC and iOS.  The best tools in the industry are in your hands.

*موتور UDK روز به روز داره گسترش پیدا میکنه ! و این کار اپیک حتی ممکنه باعث بشه موتورهای بزرگ دیگه هم دست به رایگان کردن kit از انجینشون بزنند! که اگر این کار صورت بگیره کاملا به ضرر انجین نویس های مستقل (مخصوصا ایرانی) میشه.....*



> اینقدر بحث چرخ و این چیزها نکنید، راه درستش نوشتن موتور هست، حالا توانش  نیست، حوصله و صبرش نیست، تجربه اش نیست، هوشش نیست یا هر چیز دیگه اینقدر  دلیل برای کار اشتباه نیاورید.


*فرض کنید حوصله و وقت و توان و تجربه هم داشتیم ، میتونیم با 5 نفر یا حداکثر 20 نفر یه انجین مثل UDK , Unity , Cryengine ,....... بسازیم ؟؟ یا حداقل یه انجین که یک چهارم قدرت این موتورها رو داشته باشه....مطمئنا نمیتونیم چون خیلی از انجین نویسهای جهانی عقب هستیم....ثانیا ما 20 نفر هستیم و انجین نویس های خارجی 50 نفر به بالا( البته آمار دقیق ندارم) هستن ....
*

----------


## Slytherin

بله من بازی گرشاسب رو مثال زدم که البته دوستان گفتند سازندگان دروغ می گویند!!!
مگه فکر کردید تیم گرشاسب چند نفر بود؟ کلیه برنامه نویسان، طراحان، و... این بازی 8 نفر بودند و 4 سال بر روی این اثر کار کردند. مسلما در کار های بعدی همین موتور را ارتقا خواهند داد.
در هر صورت من نمی دونم بحث چرا به انحراف کشیده شد!
REZAsys عزیز شما بالاخره تکلیفتون رو مشخص کنید، می خواهید در کدام قسمت ساخت بازی نقش داشته باشید؟! اگر می خواهید در بخضی غیر از موتور فعالیت کنید، پس چرا این انجمن رو زدید؟ پس ما چرا داریم بحث می کنیم؟
سپول عزیز کاملا درست می فرمایند، مطمئنا شما اگر موتور قارچ خور هم بنویسید نصبت به UDK ارزشمند تر هست!

----------


## sonixax

ببین دوست عزیز یک نفری و دو نفری و سه نفری نمیتونید یک موتور بازی بنویسید مگر اینکه جان کارمک باشید که اون هم توی دنیا یه دونست !

من شرکتها و تیمهایی رو میشناسم که با بودجه های چند میلیارد تومانی و کلی دک و پز و استخدام برنامه نویسان گردن کلفت موفق به این کار نشدند ، ولی به جاش یک تیمی مثل گرشاسپ هم هست که اومده یک موتور آمده رو برداشته و Modify کردتش و چیزهایی که میخواسته رو بهش اضافه کرده و تونسته یک محصول قابل قبول رو به بازار ارائه کنه که همون Modify موتور هم به گفته ی دوستان 4 سال وقتشون رو گرفته - شما یک بازی مثل Resident Evil 4 که نسبتا قدیمی هست و موتور خیلی قوی هم نداره یک نگاهی به تیم برنامه نویسیش بندازید فقط نزدیک 50 نفر روی رندر انجین کار کردند ، چند ده نفر روی فیزیک انجین و بیشتر از 30 نفر روی هوش مصنوعی و یک تیم چند نفری فقط و فقط موتور صداش رو نوشتند ، که همون موتور رو هم 100% خودشون ننوشتند و از موتور های دیگه استفاده کردند و بعدش با گسترش همین موتور در جنبه های مختلف اومدند و اویل 5 رو ساختند .

چون نوشتن یک موتور قابل قبول یک تیم مجرب و کارکشته ی چند نفری میخواد که معمولا تعدادشون بیشتر از 100 نفر هست ، در نتیجه هزینه و انرژی زیادی هم لازم داره . یه فتوشاپ رو شما نگاه میکنی N تا برنامه نویس داره دیگه چه برسه به یک موتور در حد Unreal که دوستان گفتند یا Game Bryo که بازی های بزرگ و غولی مثل FallOut یا The Elder Scrolls IV: Oblivion رو یاهاش ساختند و تمام پلتفرم ها مثل Ps3 و Ps2 و PC و Wii و 360 رو پشتیبانی میکنه !

http://en.wikipedia.org/wiki/Gamebryo

http://www.emergent.net/en/Products/Gamebryo/

برای همین به شما توصیه میکنم اول تکلیف خودتون رو با خودتون روشن کنید ، هدفتون صرفا ساختن یک بازی هست یا اینکه یک موتور میخواید بنویسید که بعدا دیگران بیاند از شما بخرند مثل همین شرکت Emergent که فقط شغلش نوشتنه موتور بازی هست .

اگر فقط میخواید بازی درست کنید به نظر من بهتره با یک موتور خیلی قوی مثل id Tech 4 که هم رایگانه و هم متن باز و هم سه تا از پلتفرم های مهم دنیا مثل 360 و Ps3 و PC رو پشتیبانی میکنه و بازی هایی مثل DOOM 3 رو باهاش نوشتند کار کنید و ازش سر در بیارید وقتی موتوری مثل این سر در بیارید میتونید تقریبا با هر موتوری کار کنید . یکی از دوستان من در مجارستان تحصیل کرده و الان در آمریکا مشغول به کاره در RockStar North وقتی SDK این موتور رو خونده بود کف کرده بود و داشت سر میرفت  :لبخند گشاده!: 

این هم لیست موتور های متن باز که خیلی از بازی های بزرگ دنیا رو با همینها نوشتند : http://en.wikipedia.org/wiki/List_of_game_engines

ولی اگر فقط و فقط میخواید موتور بنویسید اول از همه باید مشخص کنید که توی چه Genre  ای میخواید کار کنید و بعدش شروع کنید موتور رو بنویسید و البته سرمایه زیاد و نیروی ماهر و صد البته دانش کافی رو هم لازم دارید .

حالا اگر این وسط از کتابخانه ی DirectX استفاده کنید محدود میشید به Windows و 360 و اگر از OpenGL استفاده کنید این محدودیت از بین میره ولی به جاش کارتون خیلی خیلی سخت تر میشه .

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

مثلا اگر میخواید یک موتور بنویسید از یک موتور کراس مثل موتور همسایه جهنمی شروع کنید و بعدش نم نم خودتون رو ارتقاء بدید - اگر همی میخواید بازی بسازید که توضیح دادم دیگه  :لبخند گشاده!:

----------


## pswin.pooya

> دلیل اینکه بازی ساز های تجاری انجین های منحصر به فرد خودشون رو دارند  تجارت و به رخ کشیدن قدرت تکنولوژیشونه که در ایران ازش خبری نیست .
> در مورد گرشاسپ هم من فکر میکنم که بهتون دروغ گفتند ، در بهترین حالت یک انجینی رو تهیه کردند و بسته به نیازشون دستکاریش کردند .
> بازی های ایرانی کم نیستند و هیچ کدومشون هم انجین خودشون رو ندارند - خرید  انجین هم زیاد سخت براشون در نمیاد شما کافیه برید فرم حمایت از صنایع  الکترونیک صندوق وزارت صنایع و معادن رو پر کنید و از پروژتون دفاع کنید از  500 میلیون تا سقف 3 میلیارد وام بگیرید .


در حال حاضر بازی 12 رخ داره با اینجینی که توسط شرکت سورنا پردازش آریا طراحی میشه که همون kge هستش ساخته میشه:

http://sourenagames.com/

http://kge3d.org/

در مورد بازی گرشاسپ. این بازی از موتور گرافیکی ogre استفاده میکنه که یه موتور OpenSource هستش. بازسازهای گرشاسپ مابقی قسمتها رو خودشون نوشتن (مثل ادیتور، موتور هوش مصنوعی و فیزیک و ... )

سایت ogre:
http://www.ogre3d.org/





> چون نوشتن یک موتور قابل قبول یک تیم مجرب و کارکشته ی چند نفری میخواد که معمولا تعدادشون بیشتر از 100 نفر هست


از نظر مهنوسی نرم افزار یکی از عامل های شکست پروژه های نرم افزاری زمان هستش. اگر زمان فاکتور مهم باشه (که معمولا  توی بازیها با توجه به پیشرفت تکنولوژی هست) باید تعداد نیروی کار را تا یه حد مشخص افزایش داد (بیشتر از اون حد باعث ضربه به پروژه میشه). این یکی از عامل تعداد زیاد برنامه نویسهای انجین هست.
اما عامل دیگه مربوط reuse هست. چون بعضی از کدها از قبل نوشته شدن (توسط برنامه نویسها n سال پیش شرکت) و نیاز به تغییر ندارن و در انجین جدید استفاده میشن باید نام اون برنامه نویسها هم درج بشه. پس به صورت صعودی این نام ها با گذشت زمان زیاد میشه. این مورد رو خود من داخل سورس udk به وضوح دیدم من حتی هدرهایی رو دیدم که مربوط به 2001 و یا قبل از اون بودن.

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

----------


## sonixax

> این مورد رو خود من داخل سورس udk به وضوح دیدم من حتی هدرهایی رو دیدم که مربوط به 2001 و یا قبل از اون بودن.


البته در مورد پروژه های متن باز این حرف شما درسته ، نه در مورد پروژه های تجاری و از اونجایی که موتور بازی هایی که مثال زدم تجاری بوده و از اول نوشته شدند فکر نمیکنم زیاد حرف شما صحت داشته باشه .

مثلا اینها تیم برنامه نویسی  بازی Prince of Persia  هستند :

popteam.jpg

اینجا هم اسم 18 تاشون رو نوشته :

http://www.gamespot.com/pc/action/pr...tech_info.html

متاسفانه یک مقداری پیدا کردن عکسهای اینها سخته  :ناراحت: 

توی Games Com پارسال موقع معرفی کینکت و بازیهاش کنار هر بازی اسم و عکس برنامه نویس ها و گرافیست ها و کل تیم ساخت رو نوشته بودند - واسه بازی هایی با اون حجم کم در قبال هر بازی 50 تا 60 تا برنامه نویس فقط وجود داشت .

----------


## pswin.pooya

> البته در مورد پروژه های متن باز این حرف شما درسته ، نه در مورد پروژه های  تجاری و از اونجایی که موتور بازی هایی که مثال زدم تجاری بوده و از اول  نوشته شدند فکر نمیکنم زیاد حرف شما صحت داشته باشه .


من سورس کد unreal engine رو دارم. البته برای 2006 هستش و جدید حساب نمیشه  اما بازم خیلی توی طراحی انجین خودم تاثیر داشت تاجایی که باعث شد من برای  بار دوم یه shift+del روی همه کدهای قبلیم بکشم. بعضی از بچه های سایت هم  اولش مثل شما مشکوک بودن اما با دیدن سورس قانع شدن متونید از کوچول و یا  seganx بپرسید.

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

----------


## sonixax

> من سورس کد unreal engine رو دارم. البته برای 2006 هستش و جدید حساب نمیشه  اما بازم خیلی توی طراحی انجین خودم تاثیر داشت تاجایی که باعث شد من برای  بار دوم یه shift+del روی همه کدهای قبلیم بکشم. بعضی از بچه های سایت هم  اولش مثل شما مشکوک بودن اما با دیدن سورس قانع شدن متونید از کوچول و یا  seganx بپرسید.
> 
> اما اگر منظورتون از صحت در مورد تعداد برنامه نویسها هستش. معمولا افرادی که داخل پروژه های بازی هستند زیاد هستند چون مثلا  فقط یه موزیک کلاسیک ساده تقریبا پنج شیش نفر می خواد و یا تعداد مدلهای بازیهای امروزی خیلی زیاد هستن نتیجتا مدلرها باید زیاد باشن یا حتی افرادی که طراحی مراحل رو به عهده میگیرن اما فقط اگر بخواییم روی برنامه نویسهای انجین سوئیچ کنیم اون موقع برای یه انجین این رقم خیلی زیاده. یعنی این تعداد بدتر باعث کندتر شدن میشه. توی طول زمان ممکنه این رقم صحت داشته باشه اما همزمان نه. یعین من بعید می دونم. توجه کنید که کار برنامه نویسی فقط توی انجین خلاسه نمیشه ساخت ادیتورها، اسکریپتها و ... رو هم شامل میشه.


خوب راستش من در مورد خود انجین ها تجربه ی زیادی ندارم و برای همین در همون حدی که نظر خودم رو گفتم موضعم رو حفظ میکنم .

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

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

البته منظورم این نیست که ایرانی ها کند ذهنند یا همچین چیزی ولی دو تا ایرانی خیلی سخت با هم سر یک چیزی توافق میکنند چه برسه یک تیم برنامه نویس ایرانی که هیچ کدومشون اون یکی رو قبول ندارند ! و کار خودشون رو میکنند . کلا ایرانی ها در کار های تیمی موفق نیستند ولی در کارهای تک نفره خیلی کارشون درسته .

----------


## hi.alir

اون حرفی که پویا زد کاملا درسته. وقتی میگن ماکروسافت Windows 7 نوشته و الان ما بخوایم یه سیستم عامل بنویسیم صرف نمی کنه و ما ایرانی کارمون یکی نمی شه و ... زیاد درست نیست. دقت کنید که Windows 7 رو 5000 نفر نیومدن از اول بنویسند. بلکه ماکروسافت از زمان Dos، حدود 15 سال پیش ( شاید بیشتر یا کمتر، درست نمی دونم ) تجربه ی سیستم عامل داره. و شاید بسیاری از کد های Windows 7 پدرشون رو تو dos پیدا کنید. یعنی اینا میان فقط تغییر میدن. حالا بگیم dos دیگه خیلی قدیمیه ولی این قطعا در مورد Window 98 صدق می کنه. و قطعا بسیاری از روش های مهندسی نرم افزار هم روی این موضوع تاکید داره و هیچ وقت درست نمی بینه که مجبور شید برنامتون رو از اول بنویسید. اگر هم مجبور شید یا واسه برنامه های خیلی ساده هست یا اینکه کد شما بده و کسایی که موتوری مثل Unreal Engine رو می نویسند قطعا یکی از اصل هایی که باید رعایت کنند همین هست، چون اگر رعایت نکنند هزینه خیلی بالا میره. البته این موضوع در موتور بازی یه مقدار کمتر دیگه میشه به خاطر کنسول ها که وقتی از نسلی به یه نسل دیگه میرن تغیرات زیادی می کنند ولی در مورد PC بیشتره.
ولی در کل Epic Unreal Engine 3 از زمان شروع پروژه ی UE1 شروع به ساخت شده و ساختش 2 یا 3 سال وقت نبرده بلکه در واقع تغییر دادن UE2 دو یا سه سال وقت برده.

----------


## Doom-metal

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

----------


## ata_std

به نظرم شما از XNA چیزی نمیدونین که اینو میگین، XNA یک موتور پایه ی سه بعدی ساز خیلی قویه که حتی باهاش گیم انجین غولی مثل Visual3d رو ساختن.

----------

