خانه » مقالات بازی میزگرد اختصاصی با “پویا ایمان دار” برنامه نویس حرفهای در حوزه بازی × توسط علی فخار در ۱۳۹۰/۰۹/۲۲ , 11:41:45 98 با یکی دیگر از میزگردهای اختصاصی در خدمت شما هستیم. آقای پویا ایمان دار یکی از مسوولان استودیوی “بازی پرداز رفقای خوب” است. استودیویی که بر روی بازی”خاک” کار می کند و مطمئنا پیش نمایش این بازی را در ماهنامه بازی سازی خوانده اید. پویا ایمان دار کسی است که یک تنه موتور بازی را نوشته است. موتوری که نامش را “پرشین” گذاشته و به آن می بالد. در نمایشگاه رسانه های دیجیتال این استودیو از ادیتور یا ویرایشگر این موتور نیز رونمایی کرد تا نشان دهند که از لحاظ فنی و تکنیکی در سطح بالایی قرار دارند. زمانی که از ایمان دار می پرسید چرا به سراغ موتورهای آماده نرفت، جواب قانع کننده ای به شما می دهد. اول این که می گوید من خط به خط موتور خودم را حفظم به همین دلیل رفع مشکلات آن برایم بسیار آسان است. دوم این که به هر حال بازی سازان ایرانی از لحاظ فنی عقب هستند و این عقب ماندگی با استفاده کردن از موتورهای آماده جبران نمی شود. در زیر می توانید تعدادی از قابلیت های ادیتور موتور پرشین را ببینید: سازگاری کامل با Softimage و Maya قابلیت چیدمان اشیا در صحنه و دسترسی به رفتار هر شی در موتور، از قبیل تعیین موقعیت و سایز ، تعیین فیزیک، تعیین نحوه نمایش، مدیریت سینماتیک شی، دسترسی به asset های خروجی و … امکان استفاده از Duplicating برای هر مدل جهت بکار گیری Instance ای زیاد بدون افت فریم استفاده از Softbody برای شبیه سازی داینامیک لباس و زنجیر . Dynamic Soft Shadow and God Ray بهره گیری از شبیه ساز محیط از قبیل باد و باران ، برف ، آب و اقیانوس . بهره گیری از متد نورپردازی داینامیک Inferred Lighting جهت ایجاد نور پردازی و سایه پویا شبیه سازی روز و شب قابلیت سازگاری با فرمت های FBX 2010 ، X و Collada بهره گیری از Animation Mixer برای میکس انیمیشن ها Blend انیمیشن ها بسته به مقادیر دلخواه Swap کردن انیمشن بر روی Bone ها و همچنین تغییر مقادیر Bone ها از درون ادیتور اسکین کردن کاراکتر توسط CPU و GPU به طور مجزا تغییر سرعت اجرای انیمیشن ها اسکلت بندی تا ۸۹ bone استفاده از لایه MultiThreading جهت کنترل StateManager موتور و Loading تحت Background Thread سازگاری کامل FaceRobot جهت Facial Animation مدیریت LifeTime پارتیکل ها پشتیبانی از Bump Map ، Specular Map ، Enviroment Map ، Dispacement Map و … Post Processing برای شبیه سازی Blur ، Depth of Field و Glow و … بکار گیری و ترکیب الگوریتم های PathFinding ، Neural Network ، Genetic Algorithm و Finite State Machine و … برای پیاده سازی هوش مصنوعی بهره گیری از موتور فیزیک برای شبیه سازی فیزیک برای دیدن عکسها در اندازهی اصلی بر روی آنها کلیک کنید این میزگرد تا ۲۸ آذر ادامه خواهد داشت، از الان می توانید سوال های خود را از آقای ایمان دار بپرسید. نویسنده علی فخار Hi مقالات بازی 98 دیدگاه ثبت شده است سلام اقای ایماندار ممکنه آیدی یاهوی شمارو داشته باشم؟ اگه ممکنه آیدیتون رو به من پی ام کنید ۰۰ سلام. متاسفانه من اکانتی تو yahoo ندارم. اما تو google دارم. GFellas.Co@Gmail.com تو گوگل پلاس هم با همین میل اکانت دارم. خوشحال میشم از این طریق در ارتباط باشیم. ۰۰ با سلام خدمت شما آقای ایمان دار عزیز…واقعا به شما بابت این دستاورد جدیدتون تبریک می گم؛راستش من خیلی کوچک تر از این حرف هام که بخوام نظر شما رو بپرسم یا هر چیز دیگه :oops: راستش من ۱۵سال بیشتر سن ندارم و اول دبیرستان هستم…به شدت به بازیسازی علاقه دارم و از همین الآن هم روی بازیم کار می کنم و سعی در تجربه کسب کردن دارم؛در حال حاظر با متوتر game maker کار می کنم می دونم خیلی ضعیفه اما چه کنم فعلا با یک سیستم ضعیف و game maker و photoshop و کمترین امکانات موجود دارم این کار رو انجام می دم اما سعی می کنم با ارائه ایده ها و تمام خلاقیت های خودم بازی متفاوت از سایر عناوین ۲بعدی بازی بسازم؛شاید این حرف که بازی که من می سازم یکی از برترین گرافیک ها رو در میان بازی های ۲بعدی داره خالی از لطف نباشه(اون هم در جهان) و بدون ذره ای تردید این حرف رو می زنم(تعریف از خود نباشه) :-D …بالاخره روزی باید از کار با این انجین محدود بیرون بیام واسه همین سوالاتی داشتم:شما دقیقا از کجا شروع کردید؟چگونه شد که برنامه نویسی شما به بازیسازی رسید…من برای انتخاب رشته میرم ریاضی و وارد کامپیوتر میشم می خواستم بدونم برای رسیدن به بازیسازی به نظر شما از سخت افزار وارد بشم بهرته یا از نرم افزار؟…راستش منکلاس c# رفتم اما خب چیزهایی که آموختم مقداری هم ربطی به برنامه نویسی بازی نداره؛من در ساری زندگی می کنم واسه همین از جهت آموزش بازیسازی و اینها اینجا چیزی مرتبط باهاش وجود نداره پس همه چیز رو خودم به صورت تجربی دارم تو خونه ی خودم یاد می گیرم و همش در اینترنت می گردم تا به نتیجه برسم و روی بازیم کار می کنم و خیلی جاها برنامه هایی ساده برای بازیم می نویسم و خودم سعی می کنم کشفشون کنم و بازیم رو ارتقا بدم…لطفا کمکم کنید چون همیشه تو این فکرم که باید به چه رشته ای برم،می خوام بخوابم هم این تفکرات راهم نمی کنن؛منظورم از رشته همین نرم افزار یا سخت افزار که دقیق نمی دونم کدوم برای بازیسازی انتخاب بهتریه…شما خودتون چگونه برنامه نویسی برای یک game engine رو یاد گرفتید در حالی که فکر می کنم کارتون مرتبط با بازیسازی نبود…حتی خوشحال میشم یکی از محیط هایی که برای بازیم پدید آوردم رو براتون ارسال کنم :oops: دیگه بیش از این سرتون رو درد نمیارم؛آرزوی بهترین ها برای شما و استدیوی بازیسازیتون و شاهد بازی هایی در سطح بین المللی و جهانی باشیم در نهایت با تشکر از شما و عرض خسته نباشید خدمت شماو تمام همکاران زحمت کشتون؛موفق باشید! ۰۰ حرفهای شما منو یاد ۱۰ سال پیش خودم میندازه! پدر من علاقه داشت من پزشکی بخونم ، یعنی تجربی رو انتخاب کنم. اما من شدیدا علاقه به ریاضی داشتم. وقتی به انتخاب رشته رسیدم خیلی رو سخت افزار یا نرم افزار شک داشتم! یه مهندس سخت افزار تمامی رفرنسهای درس هاش زبانهای پایه هست یعنی اکثر پروژه های شما با زبانVHDL، Assembly یا C++ هست. پس در محدودیت کد نویسی میکنی نه با امکانات بالای VB یا C#!!! زمانی که در محدودیت کدنویسی کنی مجبوری فکر کنی و زمانی که فکر کنی الگوریتم نویس خوبی میشی! تمامی مهندسین سخت افزار به راحتی میتونن به هر زبانی که بخواهند سوییچ کنند ، VB ، C# ، QBasic و … چون پایه قوی تری دارن. حتی درک بهتری از مدار های الکترونیکی و روبوت ها و میکروکنترلر ها دارن! در مقابل مهندس نرم افزار در لایه بالاتری کدنویسی میکنه، تمامی درس هاشون در مورد پایگاه داده ، کامپایلر و … هست. خیلی ها هنوز فکر میکنن که مهندس سخت افزار وظیفه اش تعمیر کامپیوتره!!! اما اکثر دانشجویان سخت افزار هم باید بدونن چطور یه مدار برای یک روبوت بسازن هم بدونن چطور روبوتو برنامه نویسی کنن! یا پردازش تصویر رو با FPGA پیاده سازی کنن! حتی من خودم پروژه های پایان ترم برخی از دوستان نرم افزاری رو هم براشون کد میزدم! حالا من از شما سوال میپرسم برای ساخت یک موتور باید از لایه پایین برنامه نویسی کنی یعنی باید رفتار کارت گرافیک رو بدونی پس به نظرت با کدوم پایه میتونی موفق تر باشی؟؟؟در ضمن با توجه به شهری که سکونت داری ببین با کدوم رشته موفق تر خواهی بود.این انتخاب بر عهده خودت! یادت باشه هر رشته ای رو انتخاب کردی دلیل نمیشه از خوندن کتابهای رشته دیگه یا حضور درکلاس های اون غافل بشی! چه مهندسی سخت بگیری چه نرم ؛ برای ارشد گرفتن میتونی هوش مصنوعی ، معماری کامپیوتر ، نرم افزار یا IT ویا علوم کامپیوتر بخونی … منظورم اینه که برای ارشد محدودیتی وجود نداره. من برنامه نویسی گیم رو با خوندن کتابهایی که بالا اشاره کردم شروع کردم اما خوب پروژه هایی که تو دانشگاه انجام دادم پایه ای برای این کارم شد. متشکر ۰۰ سایت دومیه که خرابه ۰۰ سلام و خسته نباشید بیشتر کامنت هارو خوندم و به جواب خیلی از سوال هام رسیدم ببخشیدا ولی معنی land میشه زمین و dust میشه خاک (البته جهت اطلاع رسانی بود ) از دیروز که کامنت هارو خوندم به سرم زده در رابطه ساختن انجین بیشتر بدونم که به یه جا هایی هم رسیدم چرا ۳d max رو پشتیبانی نمیکنین ؟ شما قصد فروش این انجین رو دارین ؟ (اگه دارین یه قیمت بدین ممنون میشم )(دارم رو یه بازی مستقل با ۳d game studio کار میکنم میخواستم بدونم پرشین قوی تره یا ۳d game studio ) ۰۰ سلام. تو دیکشنری حییم و دیکشنری babylon معنی سوم چهارم کلمه Land به معنی خاک میباشد.البته خاک استعاره از سرزمین. به هر حال همانطور که کلمات در زبان فارسی تنها یک معنی ندارد در زبان اینگلیسی هم به همین منوال میباشد. عدم انتخاب معنی اول واژه Land صرفا به دلیل داستان بازی میباشد که بزودی از آن اطلاع پیدا خواهید کرد. همین جا باید از نویسنده بازی خاک جناب آقای علی مصلح حیدرزاده تشکر کنم واقعا به داستان بال و پر داد و از طرح اولیه ای که من به بنیاد دادم بخوبی داستان قوی درآورد با دیالوگهای کامل! از Max ساپورت نکردیم چون به کاملی Softimage نیست، برای هر چیز plugin جدا داره در صورتی که softimage یکپارچگی بالایی داره و نیازی به plugin نیست. در ضمن بزرگترین دلیلی که از مکس استفاده نکردیم اینه که من Softimage روحرفه ای بلدم ویه خورده Maya میدونم!!! به هر حال زمانی به سمت مکس میرم که کسانی در اطرافم باشن که مکس کار حرفه ای باشن، چون من زمان فراگیری مکس رو ندارم! قصد فروش موتور رو دارم، قصد ارائه نسخه مجانی موتور دوبعدی هم دارم که مطمئن باشین نسبت به gameMaker امکانات بالاتری براش ایجاد کردیم. قصد همکاری مشترک رو هم دارم به این صورت که dll ها و ادیتور رو در اختیارتون قرار میدم. من نمیتونم بگم موتورپرشین از چه موتوری قوی تره یا ضعیف تره چون انصافا با game studio یا unity اصلا کار نکردم. این شما هستین که با مقایسه خروجی کار و دیدن ادیتور متوجه میشین چی کم داره و چی اضافه داره! اما مطمئن باشین هر نیازی داشته باشین ما تو ورژن بعدی ایجاد میکنیم و نیازی به گشتن تو فروم ها و مواجه با محدودیت نیست، چون کد من در اختیار من هست و من به هر طریقی که بخواهم میتونم extension به کدم اضافه کنم! ۰۰ ممنون “کد من در اختیار من است” خیلی خوبه حداقل یه خوبیش اینه که کسی که از موتور شما استفاده میکنه اگه براش مشکلی پیش بیاد راحت میتونه از شما بپرسه به جایه این که تو ۱۰۰۰ تا فروم مطرحش کنه که اخر هم معلوم نیست جوابشو پیدا کنه یا نه ۰۰ همان طور که عرض شد بزودی انجمن مربوط به موتور پرشین راه اندازی می شه و نظرات و پیشنهادات و رفع اشکالات هم گنجانده خواهد شد و علی الخصوص بحث آموزش که احتمالا به صورت رایگان باشد و با برنامه ریزی که شده در نمایشگاه بازی های رایانه ای که دومین دوره اون هست به صورت رسمی از این موتور بازی سازی رونمایی خواهد شد ۰۰ سلام استفاده از میان افزارها برای پروژه های بزرگ کار لازم و بی چون و چرایی هست لطفا اگر اطلاعاتی در مورد این نرم افزار دارید ارائه کنید مثلا پسوندهای این نرم افزار و خروجی های اون و منابع اون و سایت پشتیبانش البته بزودی انجمنی راه اندازی می شود که دوستان در هر قسمتی که تخصص دارند بیایند و اطلاعاتشون رو به اشتراک بگذارند با تشکر ۰۰ این چرا اینجوری شد ؟ من یه بار زدم که یکی نصفه اومد یکی کامل :mrgreen: ۰۰ با سلام خدمت اقای ایماندار. من در حدود ۱.۵ سال پیش با XNA اشنا شدم و از همون موقع شروع به تحقیق و خواندن کتاب کردم و مهارتهایی را کسب کردم ولی فعلا به خاطر مشغله از XNA دور شدم که انشاالله دوباره به برنامه های مورد علاقم خواهم رسید.چند تا سوال از شما داشتم : ۱- به نظر شما ادامه کار با XNA عاقلانه می باشد یا بهتر است به DirectX سوییچ کنم.همونطور که گفتید تفاوت کارایی بین XNA و DirectX در سمت CPU می باشد و در سمت GPU هیچ نفاوتی با هم ندارن به غیر از Shader Model 4 و ۵ که فعلا چندان هم مهم نیست.ایا XNA اینده خود را حفظ می کند یا باید به سمت DirectX و سختی های Native C++ کوچ کنم? ۲- اگر ممکن است یک ایمیل برای ارتباط ارائه دهید تا در اینده اگر سوال یا مشکلی بود بتونم از شما راهنمایی بگیرم :wink: ۳- (نمی دونم طرح این سوال در اینجا درست باشه یا نه ولی من می پرسم :) ) من کمی در مورد تکنیک های پیاده سازی افکت Global Illumination تحقیق کردم.تقریبا از تعداد زیادی از انها چیزی متوجه نشدم ولی یکی از الگوریتم های ان به نام Reflective Shadow Map به نظرم برای پیاده سازی مناسب اومد.برای پیاده سازی به تعداد بسیار زیادی منبع نور نیاز است که نویسنده مطلب برای ارائه الگوریتم از Point Light استفاده کرده بود ولی برای استفاده از Spot Light به جای Point Light مشکل استفاده از World Matrix دارم. نحوه پیاده سازییه که در ذهن من است نیاز به ایجاد یک World Matrix برای هر کدام از Spot Light ها در شیدر دارد که به صورت انبوه و Instance شده رندر می شوند .چیزی که من می خواهم بدونم اینه که مقدار rotation یک مدل به چه صورت در World Matrix ذخیره می شود.برای مثال اگر بخواهیم یک مدل را ۲۰ درجه حول محور X ها و ۳۵ درجه حول محور Y ها و ۱۰ درجه حول محور Z ها بچرخانیم بدون استفاده از متدهای کمکی XNA به چه صورت باید ماتریس ان را تولید کنیم؟ راستی میشه یک مقدار در مورد DirectX with COM توضیح بدید. ممنون و با عرض شرمندگی جهت طولانی شدن. ۰۰ سلام Shawn Hargreaves که از MVP های ماکروسافته و سختگوی هسته developer xna هست در وبلاگ خودش از xna 5.0 صحبت کرده و گفته که هدف سازگاری directX 11 با C# خواهد بود. حتی در مقابل درخواست برخی از برنامه نویس ها از جمله بنده! که از نبودن content PipeLine در redistributable xna 4.0 گلایه به MSDN بردیم! در بلاگ خودش پاسخ داد که اولویت تیم XNA همگام شدن با DirectX Native هست ! پس معلومه حسابی رو xna قراره مانور بدن چون حتی silverLight5 هم با xna ترکیب شده!!! برای ارتباط با گوگل پلاس من یا میل GFellas.Co@Gmail.com ارتباط برقرار فرمایید. در مورد سوال فنی وظیفه ام میدونم اگه جوابو بدونم پاسخ بدم پس حتما بپرسین. اگه تو xna هستی یکراست از این دستور استفاده کن Matrix.createRotationX(float T) * Matrix.CreateRotationY(float T) * Matrix.CreateRotationZ(float T اگه حتما نیاز داری از متد xna کمک نگیری برای هر دستور بالا به ترتیب این ماتریس ها رو ایجاد کن Rx(T) = [1 0 0 ۰ cos(T) -sin(T ۰ sin(T) cos(T Ry(T) = [cos(T) 0 sin(T) ۰ ۱ ۰ -sin(T) 0 cos(T Rz(T) = [cos(T) -sin(T) 0 sin(T) cos(T) 0 ۰ ۰ ۱ بردار Translation هم میشه M41, M42, M43 ماتریس فقط یادت باشه T بر حسب رادیانه و درجه رو به رادیان تبدیل کن. COM دقیقا روی لایه ماشین کدنویسی میشه یعنی قبل از لایه سیستم عامل. پس سرعت بالایی نسبت به .Net داره. تو کد نویسی directX تحت COM شما خیلی از امکانات کد نویسی .Net در اختیارتون نیست… اگه ساختار رفتاری directX رو بدونی COM با XNA هیچ فرقی نداره چون هر دو توابعی یکسان دارن با نام متفاوت. تمامی سمپل کد های SDK DirectX با COMنوشته شده. اگه تنهایی کد نویسی میکنید دنبال COM نرید اما اگه تیم دارید حتما برید دنبالش. ۰۰ ممنون جهت پاسختون. کدهایی که نوشتید دچار بیماری جابجایی پرانتز شده بودن و اولش یه ذره گیج شدم ولی بعد از خوندن چندتا صفحه از سایت Riemer کاملا با نحوه عملکرد World Matrix ها اشنا شدم.به هر حال این جابجایی پرانتز سبب خیر شد و کاری که باید ۱ سال پیش انجام می دادمو الان انجام دادم. حالا برای ایجاد یک World Matrix کامل درون Shader همون جور که متوجه شدم باید ۴ تا ماتریس ۴×۴ را ضرب کنم که با ماتریس های View و Projection این عدد به ۶ تا ضرب ماتریس ۴×۴ میرسه. ضرب ۶ تا ماتریس در Vertex Shader باعث کاهش کارایی نمی شه؟با توجه به اینکه تعداد light ها زیاد هست. با توجه به چیزیم که من فهمیدم حتما باید این ۴ ضرب انجام بشه راستی ترتیب درست ضرب اینطوری می شه دیگه :-| Scale * RotationX * RotationY * RotationZ * Translation از دوستان هم به خاطر اینکه زیاد حرف می زنم عذر می خوام :oops: ۰۰ خواهش میکنم وظیفه ام بود پاسخ بدم. تایپ فارسی هم مشکلات خودشو داره!اما در مورد ماتریس World : تعداد light ها با fps رابطه مستقیم داره…یعنی در واقع از ماژولهای ضرب کننده و خونه های بیشتری از حافظه کارت گرافیک استفاده میکنی . به همین دلیل قضیه LightMap بوجود اومد که شما در Inferred Lighting یا deferred Lighting از اون استفاده میکنین. به نظر من شما اول این روش خودتو ادامه بده تا دقیقا متوجه عمق مسئله بشی بعد برو بدنبال ایجاد LightMap. Light Map در واقع موقیت نور هایی که در حیطه نمایش دوربین قرار داره رو محاسبه میکنه و در یک Buffer قرار میده.سپس شما ازاین بافر در مرحله بعد بعنوان یک Sampler استفاده میکنی و با Color مدلها ضرب میکنی. میدونم توضیحاتم ناقصه و ممکنه سردرگم بشی ولی خوب توضیحات باید با کد و تصویر یبان بشه که انصافا اینجا نمیشه. بله ترتیب ضرب رو درست فرمودین. ۰۰ سلام تکنولوژی امبرا سازنده Umbra Software یک میان افزار تاکید می کنم میان افزار برای اپتیمایز کردن پرفرمنسه . فکر کنم اونجا هم یه توضیح کوچیک دادم . اگه بخوام بحث رو تخصصیش کنم خداییش میشه دو طرفه و بقیه باید با چند تا علامت سوال رو کله شون اینا رو بخونن :mrgreen: در کل درسته این رو اپیک اختراع نکرده من هم همچین چیزی خداییش نگفتم . درضمن تکنیک Catmull-Clark Subdivision surface چه ربطی به این مسئله داره ؟ :mrgreen: اینی که شما هم می گین بحث جدا داره . شما سوال کردین فلان پلی گان رو توی اون امتحان کردم توی انجین های مشهور امتحان نکردین کسی امتحان کرده بگه خو منم گفتم فقط همین :wink: ۰۰ سلام حق با شماست من وقتی جواب پست شما رو میدادم فراموش کردم که یه سوال تو اینجا مطرح کرده بودم…ممنون که پاسخ دادین. باید رو این Umbra مطالعه و سرچ کنم … اطلاعات زیادی در موردش ندارم. در مورد اون تکنولوژی که من گفتم میشه با این الگوریتم کار کنیم که subDivision مدل بسته به distance اون با دوربین کم یا زیاد بشه. من رو این الگوریتم کار میکنم. ممنون بابت راهنماییتون…متشکر! ۰۰ سلام تکنولوژی امبرا سازنده Umbra Software یک میان افزار تاکید می کنم میان افزار برای اپتیمایز کردن پرفرمنسه . فکر کنم اونجا هم یه توضیح کوچیک دادم . اگه بخوام بحث رو تخصصیش کنم خداییش میشه دو طرفه و بقیه باید با چند تا علامت سوال رو کله شون اینا رو بخونن :mrgreen: در کل درسته این رو اپیک اختراع نکرده من هم همچین چیزی خداییش نگفتم . درضمن تکنیک Catmull-Clark Subdivision surface ۰۰ انشالله شما یک کاری واسه بازی سازی ایران کنین. یه روزی هم با گرافیک خوب برای کنسول ها بازی بسازین. ۰۰ انشا… ۰۰ نمایش بیشتر دیدگاهها بسته هستند.
سلام. متاسفانه من اکانتی تو yahoo ندارم. اما تو google دارم. GFellas.Co@Gmail.com تو گوگل پلاس هم با همین میل اکانت دارم. خوشحال میشم از این طریق در ارتباط باشیم. ۰۰
با سلام خدمت شما آقای ایمان دار عزیز…واقعا به شما بابت این دستاورد جدیدتون تبریک می گم؛راستش من خیلی کوچک تر از این حرف هام که بخوام نظر شما رو بپرسم یا هر چیز دیگه :oops: راستش من ۱۵سال بیشتر سن ندارم و اول دبیرستان هستم…به شدت به بازیسازی علاقه دارم و از همین الآن هم روی بازیم کار می کنم و سعی در تجربه کسب کردن دارم؛در حال حاظر با متوتر game maker کار می کنم می دونم خیلی ضعیفه اما چه کنم فعلا با یک سیستم ضعیف و game maker و photoshop و کمترین امکانات موجود دارم این کار رو انجام می دم اما سعی می کنم با ارائه ایده ها و تمام خلاقیت های خودم بازی متفاوت از سایر عناوین ۲بعدی بازی بسازم؛شاید این حرف که بازی که من می سازم یکی از برترین گرافیک ها رو در میان بازی های ۲بعدی داره خالی از لطف نباشه(اون هم در جهان) و بدون ذره ای تردید این حرف رو می زنم(تعریف از خود نباشه) :-D …بالاخره روزی باید از کار با این انجین محدود بیرون بیام واسه همین سوالاتی داشتم:شما دقیقا از کجا شروع کردید؟چگونه شد که برنامه نویسی شما به بازیسازی رسید…من برای انتخاب رشته میرم ریاضی و وارد کامپیوتر میشم می خواستم بدونم برای رسیدن به بازیسازی به نظر شما از سخت افزار وارد بشم بهرته یا از نرم افزار؟…راستش منکلاس c# رفتم اما خب چیزهایی که آموختم مقداری هم ربطی به برنامه نویسی بازی نداره؛من در ساری زندگی می کنم واسه همین از جهت آموزش بازیسازی و اینها اینجا چیزی مرتبط باهاش وجود نداره پس همه چیز رو خودم به صورت تجربی دارم تو خونه ی خودم یاد می گیرم و همش در اینترنت می گردم تا به نتیجه برسم و روی بازیم کار می کنم و خیلی جاها برنامه هایی ساده برای بازیم می نویسم و خودم سعی می کنم کشفشون کنم و بازیم رو ارتقا بدم…لطفا کمکم کنید چون همیشه تو این فکرم که باید به چه رشته ای برم،می خوام بخوابم هم این تفکرات راهم نمی کنن؛منظورم از رشته همین نرم افزار یا سخت افزار که دقیق نمی دونم کدوم برای بازیسازی انتخاب بهتریه…شما خودتون چگونه برنامه نویسی برای یک game engine رو یاد گرفتید در حالی که فکر می کنم کارتون مرتبط با بازیسازی نبود…حتی خوشحال میشم یکی از محیط هایی که برای بازیم پدید آوردم رو براتون ارسال کنم :oops: دیگه بیش از این سرتون رو درد نمیارم؛آرزوی بهترین ها برای شما و استدیوی بازیسازیتون و شاهد بازی هایی در سطح بین المللی و جهانی باشیم در نهایت با تشکر از شما و عرض خسته نباشید خدمت شماو تمام همکاران زحمت کشتون؛موفق باشید! ۰۰
حرفهای شما منو یاد ۱۰ سال پیش خودم میندازه! پدر من علاقه داشت من پزشکی بخونم ، یعنی تجربی رو انتخاب کنم. اما من شدیدا علاقه به ریاضی داشتم. وقتی به انتخاب رشته رسیدم خیلی رو سخت افزار یا نرم افزار شک داشتم! یه مهندس سخت افزار تمامی رفرنسهای درس هاش زبانهای پایه هست یعنی اکثر پروژه های شما با زبانVHDL، Assembly یا C++ هست. پس در محدودیت کد نویسی میکنی نه با امکانات بالای VB یا C#!!! زمانی که در محدودیت کدنویسی کنی مجبوری فکر کنی و زمانی که فکر کنی الگوریتم نویس خوبی میشی! تمامی مهندسین سخت افزار به راحتی میتونن به هر زبانی که بخواهند سوییچ کنند ، VB ، C# ، QBasic و … چون پایه قوی تری دارن. حتی درک بهتری از مدار های الکترونیکی و روبوت ها و میکروکنترلر ها دارن! در مقابل مهندس نرم افزار در لایه بالاتری کدنویسی میکنه، تمامی درس هاشون در مورد پایگاه داده ، کامپایلر و … هست. خیلی ها هنوز فکر میکنن که مهندس سخت افزار وظیفه اش تعمیر کامپیوتره!!! اما اکثر دانشجویان سخت افزار هم باید بدونن چطور یه مدار برای یک روبوت بسازن هم بدونن چطور روبوتو برنامه نویسی کنن! یا پردازش تصویر رو با FPGA پیاده سازی کنن! حتی من خودم پروژه های پایان ترم برخی از دوستان نرم افزاری رو هم براشون کد میزدم! حالا من از شما سوال میپرسم برای ساخت یک موتور باید از لایه پایین برنامه نویسی کنی یعنی باید رفتار کارت گرافیک رو بدونی پس به نظرت با کدوم پایه میتونی موفق تر باشی؟؟؟در ضمن با توجه به شهری که سکونت داری ببین با کدوم رشته موفق تر خواهی بود.این انتخاب بر عهده خودت! یادت باشه هر رشته ای رو انتخاب کردی دلیل نمیشه از خوندن کتابهای رشته دیگه یا حضور درکلاس های اون غافل بشی! چه مهندسی سخت بگیری چه نرم ؛ برای ارشد گرفتن میتونی هوش مصنوعی ، معماری کامپیوتر ، نرم افزار یا IT ویا علوم کامپیوتر بخونی … منظورم اینه که برای ارشد محدودیتی وجود نداره. من برنامه نویسی گیم رو با خوندن کتابهایی که بالا اشاره کردم شروع کردم اما خوب پروژه هایی که تو دانشگاه انجام دادم پایه ای برای این کارم شد. متشکر ۰۰
سلام و خسته نباشید بیشتر کامنت هارو خوندم و به جواب خیلی از سوال هام رسیدم ببخشیدا ولی معنی land میشه زمین و dust میشه خاک (البته جهت اطلاع رسانی بود ) از دیروز که کامنت هارو خوندم به سرم زده در رابطه ساختن انجین بیشتر بدونم که به یه جا هایی هم رسیدم چرا ۳d max رو پشتیبانی نمیکنین ؟ شما قصد فروش این انجین رو دارین ؟ (اگه دارین یه قیمت بدین ممنون میشم )(دارم رو یه بازی مستقل با ۳d game studio کار میکنم میخواستم بدونم پرشین قوی تره یا ۳d game studio ) ۰۰
سلام. تو دیکشنری حییم و دیکشنری babylon معنی سوم چهارم کلمه Land به معنی خاک میباشد.البته خاک استعاره از سرزمین. به هر حال همانطور که کلمات در زبان فارسی تنها یک معنی ندارد در زبان اینگلیسی هم به همین منوال میباشد. عدم انتخاب معنی اول واژه Land صرفا به دلیل داستان بازی میباشد که بزودی از آن اطلاع پیدا خواهید کرد. همین جا باید از نویسنده بازی خاک جناب آقای علی مصلح حیدرزاده تشکر کنم واقعا به داستان بال و پر داد و از طرح اولیه ای که من به بنیاد دادم بخوبی داستان قوی درآورد با دیالوگهای کامل! از Max ساپورت نکردیم چون به کاملی Softimage نیست، برای هر چیز plugin جدا داره در صورتی که softimage یکپارچگی بالایی داره و نیازی به plugin نیست. در ضمن بزرگترین دلیلی که از مکس استفاده نکردیم اینه که من Softimage روحرفه ای بلدم ویه خورده Maya میدونم!!! به هر حال زمانی به سمت مکس میرم که کسانی در اطرافم باشن که مکس کار حرفه ای باشن، چون من زمان فراگیری مکس رو ندارم! قصد فروش موتور رو دارم، قصد ارائه نسخه مجانی موتور دوبعدی هم دارم که مطمئن باشین نسبت به gameMaker امکانات بالاتری براش ایجاد کردیم. قصد همکاری مشترک رو هم دارم به این صورت که dll ها و ادیتور رو در اختیارتون قرار میدم. من نمیتونم بگم موتورپرشین از چه موتوری قوی تره یا ضعیف تره چون انصافا با game studio یا unity اصلا کار نکردم. این شما هستین که با مقایسه خروجی کار و دیدن ادیتور متوجه میشین چی کم داره و چی اضافه داره! اما مطمئن باشین هر نیازی داشته باشین ما تو ورژن بعدی ایجاد میکنیم و نیازی به گشتن تو فروم ها و مواجه با محدودیت نیست، چون کد من در اختیار من هست و من به هر طریقی که بخواهم میتونم extension به کدم اضافه کنم! ۰۰
ممنون “کد من در اختیار من است” خیلی خوبه حداقل یه خوبیش اینه که کسی که از موتور شما استفاده میکنه اگه براش مشکلی پیش بیاد راحت میتونه از شما بپرسه به جایه این که تو ۱۰۰۰ تا فروم مطرحش کنه که اخر هم معلوم نیست جوابشو پیدا کنه یا نه ۰۰
همان طور که عرض شد بزودی انجمن مربوط به موتور پرشین راه اندازی می شه و نظرات و پیشنهادات و رفع اشکالات هم گنجانده خواهد شد و علی الخصوص بحث آموزش که احتمالا به صورت رایگان باشد و با برنامه ریزی که شده در نمایشگاه بازی های رایانه ای که دومین دوره اون هست به صورت رسمی از این موتور بازی سازی رونمایی خواهد شد ۰۰
سلام استفاده از میان افزارها برای پروژه های بزرگ کار لازم و بی چون و چرایی هست لطفا اگر اطلاعاتی در مورد این نرم افزار دارید ارائه کنید مثلا پسوندهای این نرم افزار و خروجی های اون و منابع اون و سایت پشتیبانش البته بزودی انجمنی راه اندازی می شود که دوستان در هر قسمتی که تخصص دارند بیایند و اطلاعاتشون رو به اشتراک بگذارند با تشکر ۰۰
با سلام خدمت اقای ایماندار. من در حدود ۱.۵ سال پیش با XNA اشنا شدم و از همون موقع شروع به تحقیق و خواندن کتاب کردم و مهارتهایی را کسب کردم ولی فعلا به خاطر مشغله از XNA دور شدم که انشاالله دوباره به برنامه های مورد علاقم خواهم رسید.چند تا سوال از شما داشتم : ۱- به نظر شما ادامه کار با XNA عاقلانه می باشد یا بهتر است به DirectX سوییچ کنم.همونطور که گفتید تفاوت کارایی بین XNA و DirectX در سمت CPU می باشد و در سمت GPU هیچ نفاوتی با هم ندارن به غیر از Shader Model 4 و ۵ که فعلا چندان هم مهم نیست.ایا XNA اینده خود را حفظ می کند یا باید به سمت DirectX و سختی های Native C++ کوچ کنم? ۲- اگر ممکن است یک ایمیل برای ارتباط ارائه دهید تا در اینده اگر سوال یا مشکلی بود بتونم از شما راهنمایی بگیرم :wink: ۳- (نمی دونم طرح این سوال در اینجا درست باشه یا نه ولی من می پرسم :) ) من کمی در مورد تکنیک های پیاده سازی افکت Global Illumination تحقیق کردم.تقریبا از تعداد زیادی از انها چیزی متوجه نشدم ولی یکی از الگوریتم های ان به نام Reflective Shadow Map به نظرم برای پیاده سازی مناسب اومد.برای پیاده سازی به تعداد بسیار زیادی منبع نور نیاز است که نویسنده مطلب برای ارائه الگوریتم از Point Light استفاده کرده بود ولی برای استفاده از Spot Light به جای Point Light مشکل استفاده از World Matrix دارم. نحوه پیاده سازییه که در ذهن من است نیاز به ایجاد یک World Matrix برای هر کدام از Spot Light ها در شیدر دارد که به صورت انبوه و Instance شده رندر می شوند .چیزی که من می خواهم بدونم اینه که مقدار rotation یک مدل به چه صورت در World Matrix ذخیره می شود.برای مثال اگر بخواهیم یک مدل را ۲۰ درجه حول محور X ها و ۳۵ درجه حول محور Y ها و ۱۰ درجه حول محور Z ها بچرخانیم بدون استفاده از متدهای کمکی XNA به چه صورت باید ماتریس ان را تولید کنیم؟ راستی میشه یک مقدار در مورد DirectX with COM توضیح بدید. ممنون و با عرض شرمندگی جهت طولانی شدن. ۰۰
سلام Shawn Hargreaves که از MVP های ماکروسافته و سختگوی هسته developer xna هست در وبلاگ خودش از xna 5.0 صحبت کرده و گفته که هدف سازگاری directX 11 با C# خواهد بود. حتی در مقابل درخواست برخی از برنامه نویس ها از جمله بنده! که از نبودن content PipeLine در redistributable xna 4.0 گلایه به MSDN بردیم! در بلاگ خودش پاسخ داد که اولویت تیم XNA همگام شدن با DirectX Native هست ! پس معلومه حسابی رو xna قراره مانور بدن چون حتی silverLight5 هم با xna ترکیب شده!!! برای ارتباط با گوگل پلاس من یا میل GFellas.Co@Gmail.com ارتباط برقرار فرمایید. در مورد سوال فنی وظیفه ام میدونم اگه جوابو بدونم پاسخ بدم پس حتما بپرسین. اگه تو xna هستی یکراست از این دستور استفاده کن Matrix.createRotationX(float T) * Matrix.CreateRotationY(float T) * Matrix.CreateRotationZ(float T اگه حتما نیاز داری از متد xna کمک نگیری برای هر دستور بالا به ترتیب این ماتریس ها رو ایجاد کن Rx(T) = [1 0 0 ۰ cos(T) -sin(T ۰ sin(T) cos(T Ry(T) = [cos(T) 0 sin(T) ۰ ۱ ۰ -sin(T) 0 cos(T Rz(T) = [cos(T) -sin(T) 0 sin(T) cos(T) 0 ۰ ۰ ۱ بردار Translation هم میشه M41, M42, M43 ماتریس فقط یادت باشه T بر حسب رادیانه و درجه رو به رادیان تبدیل کن. COM دقیقا روی لایه ماشین کدنویسی میشه یعنی قبل از لایه سیستم عامل. پس سرعت بالایی نسبت به .Net داره. تو کد نویسی directX تحت COM شما خیلی از امکانات کد نویسی .Net در اختیارتون نیست… اگه ساختار رفتاری directX رو بدونی COM با XNA هیچ فرقی نداره چون هر دو توابعی یکسان دارن با نام متفاوت. تمامی سمپل کد های SDK DirectX با COMنوشته شده. اگه تنهایی کد نویسی میکنید دنبال COM نرید اما اگه تیم دارید حتما برید دنبالش. ۰۰
ممنون جهت پاسختون. کدهایی که نوشتید دچار بیماری جابجایی پرانتز شده بودن و اولش یه ذره گیج شدم ولی بعد از خوندن چندتا صفحه از سایت Riemer کاملا با نحوه عملکرد World Matrix ها اشنا شدم.به هر حال این جابجایی پرانتز سبب خیر شد و کاری که باید ۱ سال پیش انجام می دادمو الان انجام دادم. حالا برای ایجاد یک World Matrix کامل درون Shader همون جور که متوجه شدم باید ۴ تا ماتریس ۴×۴ را ضرب کنم که با ماتریس های View و Projection این عدد به ۶ تا ضرب ماتریس ۴×۴ میرسه. ضرب ۶ تا ماتریس در Vertex Shader باعث کاهش کارایی نمی شه؟با توجه به اینکه تعداد light ها زیاد هست. با توجه به چیزیم که من فهمیدم حتما باید این ۴ ضرب انجام بشه راستی ترتیب درست ضرب اینطوری می شه دیگه :-| Scale * RotationX * RotationY * RotationZ * Translation از دوستان هم به خاطر اینکه زیاد حرف می زنم عذر می خوام :oops: ۰۰
خواهش میکنم وظیفه ام بود پاسخ بدم. تایپ فارسی هم مشکلات خودشو داره!اما در مورد ماتریس World : تعداد light ها با fps رابطه مستقیم داره…یعنی در واقع از ماژولهای ضرب کننده و خونه های بیشتری از حافظه کارت گرافیک استفاده میکنی . به همین دلیل قضیه LightMap بوجود اومد که شما در Inferred Lighting یا deferred Lighting از اون استفاده میکنین. به نظر من شما اول این روش خودتو ادامه بده تا دقیقا متوجه عمق مسئله بشی بعد برو بدنبال ایجاد LightMap. Light Map در واقع موقیت نور هایی که در حیطه نمایش دوربین قرار داره رو محاسبه میکنه و در یک Buffer قرار میده.سپس شما ازاین بافر در مرحله بعد بعنوان یک Sampler استفاده میکنی و با Color مدلها ضرب میکنی. میدونم توضیحاتم ناقصه و ممکنه سردرگم بشی ولی خوب توضیحات باید با کد و تصویر یبان بشه که انصافا اینجا نمیشه. بله ترتیب ضرب رو درست فرمودین. ۰۰
سلام تکنولوژی امبرا سازنده Umbra Software یک میان افزار تاکید می کنم میان افزار برای اپتیمایز کردن پرفرمنسه . فکر کنم اونجا هم یه توضیح کوچیک دادم . اگه بخوام بحث رو تخصصیش کنم خداییش میشه دو طرفه و بقیه باید با چند تا علامت سوال رو کله شون اینا رو بخونن :mrgreen: در کل درسته این رو اپیک اختراع نکرده من هم همچین چیزی خداییش نگفتم . درضمن تکنیک Catmull-Clark Subdivision surface چه ربطی به این مسئله داره ؟ :mrgreen: اینی که شما هم می گین بحث جدا داره . شما سوال کردین فلان پلی گان رو توی اون امتحان کردم توی انجین های مشهور امتحان نکردین کسی امتحان کرده بگه خو منم گفتم فقط همین :wink: ۰۰
سلام حق با شماست من وقتی جواب پست شما رو میدادم فراموش کردم که یه سوال تو اینجا مطرح کرده بودم…ممنون که پاسخ دادین. باید رو این Umbra مطالعه و سرچ کنم … اطلاعات زیادی در موردش ندارم. در مورد اون تکنولوژی که من گفتم میشه با این الگوریتم کار کنیم که subDivision مدل بسته به distance اون با دوربین کم یا زیاد بشه. من رو این الگوریتم کار میکنم. ممنون بابت راهنماییتون…متشکر! ۰۰
سلام تکنولوژی امبرا سازنده Umbra Software یک میان افزار تاکید می کنم میان افزار برای اپتیمایز کردن پرفرمنسه . فکر کنم اونجا هم یه توضیح کوچیک دادم . اگه بخوام بحث رو تخصصیش کنم خداییش میشه دو طرفه و بقیه باید با چند تا علامت سوال رو کله شون اینا رو بخونن :mrgreen: در کل درسته این رو اپیک اختراع نکرده من هم همچین چیزی خداییش نگفتم . درضمن تکنیک Catmull-Clark Subdivision surface ۰۰
انشالله شما یک کاری واسه بازی سازی ایران کنین. یه روزی هم با گرافیک خوب برای کنسول ها بازی بسازین. ۰۰