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





صفحه اول انجمنها -> اصول اولیه در طراحی بازیهای کامپیوتری -> محدوده پلیگانی برای ساخت بازی
 

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

محدوده پلیگانی برای ساخت بازی
نويسنده
پيغام
Quarantine
در حال رشد
در حال رشد


تاريخ عضويت: 4 شنبه 2 فروردين 1391
تعداد ارسالها: 48


شنبه 9 ارديبهشت 1391 - 13:52
پاسخ بصورت نقل قول
سلام...
از اونجاییکه مسئله پلیگان ها، موتور محور نیست و سیستم محوره (یعنی هر چقدر سیستمت بتونه بکشه (که بیشتر بحث کارت گرافیکه)) دیگه موتوری رو مثال نمی زنم. به هر حال موتوری که دارم باهاش کار می کنم یونیتی هستش. من اولش تحقیقاتمو به صورت خلاصه می گم و انتهای کار سوالاتمو می پرسم. امیدوارم این تحقیقات به کارتون بیاد.

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

مباحثی که تو ساخت بازی مطرح میشن:

1. DrawCalls:
برای اینکه مدلی تو صحنه به تصویر کشیده بشه باید DrawCall ی به GPU صادر بشه. بیشتر شبیه یک Call برای هر بافت مدله. پس اگه شما مدلی با 5 Sub-mesh داشته باشین میشه 5 تا DrawCalls. موضوع به اینجا ختم نمیشه.. اگه از per pixel lighting هم استفاده می کنین، DrawCall ی برای عبور هر light دریافت می کنین.
یا اگه از افکت هایی مثل dynamic reflections استفاده می کنین تعداد DrawCall ها و همینطور رندر کردن صحنه دو برابر میشه.

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

3. Bandwidth Limited:
که این روزا جای نگرانی نداره و بیشتر اطلاعات توی GPU ذخیره میشه اما هنوز راه هایی برای اشباع کردن پهنای باند وجود داره (مثلا آپلود مقدار زیادی دیتا به کارت گرافیک در یک فریم)


البته تخمین پلیگانی که زده میشه به این صورته :
1. محیط 50% پلیگان رو تشکیل میده.
2. شخصیت ها 25%
3. ایفکت ها 25%

جای دیگه گفته شده برای اینکه بازی 60 فریم روی کنسول ها اجرا بشه میان مقدار ورتکس رو 150000 در هر فریم در نظر میگیرن و این مقدار رو برای کامپیوتر دو برابر می کنن.

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

حالا من موندم. مثلا دارم حفاظی درست می کنم که تو 5 طبقه ساختمون کپی میشه. و جمعا میشه 70000 پلیگان و برای تمام ساختمونا میشه 200000... آیا این منطقیه ؟ چجوریاس ؟

اگه کمی در مورد مسائل تکنیکی کار توضیح بدین ممنون میشم. میترسم بسازم و بعدا با اضافه کردن ایفکتای دیگه با افت فریم و مشکلات زیادی مواجه بشم..
منبع توضیحات بالا:
unity3d.com
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

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


تاريخ عضويت: 4 شنبه 31 تير 1388
تعداد ارسالها: 531
محل سكونت: مشهد


شنبه 9 ارديبهشت 1391 - 14:23
پاسخ بصورت نقل قول
سلام دوست عزیز چند نکته
اولا در گرافیک سه بعدی مقیاس ورتکس و مثلث هستش
دوما خوب اینکه چه تعداد ورتس بشه رندر کرد دقیقا به ساختار انجین و شیدر مورد استفاده یستگی داره
در مورد drawcall و fillrate هم باید بگم که نوع استفاده و تعداد اون شدیدا به انجین بستگی داره
در ضمن نکته به نام cull test در انجین ها وجود داره که فقط اشیا داخل کادر دوربین داخل فوریستم) رو وارد پروسه رندر می کنه

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

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


تاريخ عضويت: 4 شنبه 2 فروردين 1391
تعداد ارسالها: 48


شنبه 9 ارديبهشت 1391 - 16:19
پاسخ بصورت نقل قول
سلام...

نقل قول:
اولا در گرافیک سه بعدی مقیاس ورتکس و مثلث هستش

کاملا اما تو بحث سنجش اونجوری که دیدم بیشتر از واحد پلیگان برای شمارش استفاده می کنن.
مثلا این تاپیکو ببین. تعداد پلیگان های شخصیت بیشتر بازی ها توش براساس واحد پلیگان سنجیده شده:
http://forum.beyond3d.com/showthread.php?t=43975
و حتی خیلی جاهای دیگه...


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

اونجوری که متوجه شدم انجین ها محدوده خاصی ندارن و همه چیز تقریبا گرافیک محوره... (البته Unity برای هر مش فقط تا 65000 پلیگان رو ساپورت می کنه) یعنی هر چقدر که کارت گرافیکت قوی تر باشه میشه تعداد پلیگان های بیشتر برای سطحی Smooth تر استفاده کرد. البته همه چیز هم پلیگان نیست. استفاده از شیدر ها و Normal ها و پیچیدگی اسکریپت ها هم می تونه تاثیر زیادی تو رندر و فریم و غیره داشته باشه...

نقل قول:
در مورد drawcall و fillrate هم باید بگم که نوع استفاده و تعداد اون شدیدا به انجین بستگی داره

drawcall ها هم در واقع CPU محورن که البته با پردازش ورتکس ها و tri های کارت گرافیک هم رابطه مستقیم دارن. مشکل drawcall ها رو میشه با استفاده از ترکیب mesh ها و اتلس ها برطرف کرد.
http://answers.unity3d.com/questions/14578/whats-the-best-way-to-reduce-draw-calls.html
نقل قول:

در ضمن نکته به نام cull test در انجین ها وجود داره که فقط اشیا داخل کادر دوربین داخل فوریستم) رو وارد پروسه رندر می کنه

درسته... سوال منم همینه.. می گم ممکنه که بخوام بازی مو با پلیگان های بالا بسازم و بشه با تکنیک های occlusion culling و اتلس بازی رو حتی رو سیستم های قدیمی هم اجرا کرد ؟
از اونجایی که کارت گرافیکم GeForce 9500 ه اومدم حدود 400.000 پلیگان رو وارد موتور Unity کردم و به راحتی با 800 DrawCalls رو فریم 80 قابل اجرا بود و دچار افت فریم نشدم..

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

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

مشکل اینجاست که حد درستی وجود نداره و تقریبا همه چیز آزمون و خطاست..
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


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


شنبه 9 ارديبهشت 1391 - 18:57
پاسخ بصورت نقل قول
Quarantine ,

سلام دوست عزیز بحث خوبی رو شروع کردی ، فقط اول یه چیز بگم و اون اینه که تو موتورهایی مثل یونیتی همه چیز دست شما نیست ! Idea اما بهرحال بریم سراغ بحث :

نقل قول:
کاملا اما تو بحث سنجش اونجوری که دیدم بیشتر از واحد پلیگان برای شمارش استفاده می کنن.
مثلا این تاپیکو ببین. تعداد پلیگان های شخصیت بیشتر بازی ها توش براساس واحد پلیگان سنجیده شده:
http://forum.beyond3d.com/showthread.php?t=43975
و حتی خیلی جاهای دیگه...


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

نقل قول:
اونجوری که متوجه شدم انجین ها محدوده خاصی ندارن و همه چیز تقریبا گرافیک محوره... (البته Unity برای هر مش فقط تا 65000 پلیگان رو ساپورت می کنه) یعنی هر چقدر که کارت گرافیکت قوی تر باشه میشه تعداد پلیگان های بیشتر برای سطحی Smooth تر استفاده کرد. البته همه چیز هم پلیگان نیست. استفاده از شیدر ها و Normal ها و پیچیدگی اسکریپت ها هم می تونه تاثیر زیادی تو رندر و فریم و غیره داشته باشه...


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

نقل قول:
درسته... سوال منم همینه.. می گم ممکنه که بخوام بازی مو با پلیگان های بالا بسازم و بشه با تکنیک های occlusion culling و اتلس بازی رو حتی رو سیستم های قدیمی هم اجرا کرد ؟
از اونجایی که کارت گرافیکم GeForce 9500 ه اومدم حدود 400.000 پلیگان رو وارد موتور Unity کردم و به راحتی با 800 DrawCalls رو فریم 80 قابل اجرا بود و دچار افت فریم نشدم..

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

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

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


همونطور که خودت گفتی مشکل فقط تعداد پلی ها نیست ، تعداد Drawcall ها و پیچیدگی شیدرها و ... مهمتر هست اتفاقا

تکنیک های زیادی برا کاهش تعداد پلی ها و drawcall ها وجود داره که تو همون یونیتی هست
برا کاهش تعداد پلی ها باید از LOD و سیستم Umbra Occlusion culling استفاده کنی
برا کاهش تعداد drawcall ها باید آبجکتهایی که ثابت اند رو static کنی تا static batch بشن


نقل قول:
3. Bandwidth Limited:
که این روزا جای نگرانی نداره و بیشتر اطلاعات توی GPU ذخیره میشه اما هنوز راه هایی برای اشباع کردن پهنای باند وجود داره (مثلا آپلود مقدار زیادی دیتا به کارت گرافیک در یک فریم)


فکر کنم توضیحتون اشتباهه ...
منظور از Memory Bandwidth ارسال اطلاعات از VRAM و RAM به GPU هست و اتفاقا این روزا به خاطر تکنیک هایی مثل Deferred Shading و Light Pre Pass مهمه ...


اما در مجموع اینطور نیست که شما یه ضرب و تقسیم بکنی و تعداد پلی های یه صحنه رو در بیاری و آزمون و خطا به اون معنی که شما فکر میکنی هم نه ...
چون دیگه همه چیز که دست برنامه نویس نیست و باید دست level designer ها تا حدودی باز باشه ... کاری که شما باید بکنی اینه که اول لول رو طراحی کنی ( به اون صورتی که فکر میکنی برای کار مناسب باشه هم از نظر زیبایی هم از نظر performance ) و بعد هم باید Profile کنی هم GPU رو هم CPU رو و هم Memory رو ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

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


تاريخ عضويت: 4 شنبه 31 تير 1388
تعداد ارسالها: 531
محل سكونت: مشهد


شنبه 9 ارديبهشت 1391 - 19:29
پاسخ بصورت نقل قول
تایید میشه

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

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


تاريخ عضويت: 4 شنبه 2 فروردين 1391
تعداد ارسالها: 48


1 شنبه 10 ارديبهشت 1391 - 00:23
پاسخ بصورت نقل قول
نقل قول:
کلا تو کارهای realtime وقتی صحبت از پلیگان میشه ، منظور همون مثلث هست ...
سخت افزارهای گرافیکی امروزی برای رندر مثلث ها بهتر بهینه شدن ضمن اینکه رندر چند ضلعی ها مشکلاتی رو داره که خودتون میدونید ، توی موتورهای بازی موقع import مدلها چند ضلعی ها تبدیل به مثلث میشن ...

سلام.. منتظر توضیحات خوبت بودم..
کاملا درسته .. چند ضلعی ها از ترکیب مثلثات درست میشن. حتی خود یه مربع از ترکیب دو تا مثلث درست میشه.


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

متوجه منظورت نشدم که از چند تا Vertex Buffer Object استفاده کنم...
برای ساخت شخصیت ها به عنوان مثال پیشنهادشده بود که بشه تا حدی از Normal ها و شیدر ها و ایفکتای دیگه استفاده کرد تا اینکه شخصیتمون بخواد جزئیات پلیگانی بیشتری داشته باشه.
مثلا یه شخصیت با 7000 پلیگان و اضافه کردن افکتای مذکور می تونه خیلی بهتر از یه شخصیت با 10000 پلیگان به نظر برسه.
حالا سوال من اینه که من برای ساخت هر چیزی باس از این افکتا استفاده کنم ؟
مثلا برای ریل های پله ها هم همینطور ؟
یا نه.. می تونم همونطور که شما گفتی بیام و از لحاظ زیبایی طراحی کنم. اما مشکل کار همینجاست که نمی دونم چطور باس از لحاظ Performance طراحی کنم. مثلا ریل های پله های مارپیچ ابتدا 12000 پلیگان بود که بعد از Fine-Tuning شد 3500 تا و دو تاش میشه 7000 تا و واسه 5 طبقه 49000 پلیگان.. منظورتون از Performance همین بود ؟ اما همین 49000 تا زیاد نیس ؟ الان مشکلی ندارم اما می ترسم مدل ها رو بسازم و آخرش بعد از اضافه کردن ایفکت ها بیام با افت Performance مواجه شم.
از طرف دیگه چون می خوام که بازی ساخته شده روی کنسول های PS3 و 360 هم اجرا بشن واقعا الان موندم که چجوری بسازم که واسه کنسول های مذکور هم بعدا مشکلی به وجود نیاد...

واقعا کار سختیه. بازی سازی به همین راحتی نیست که 4 تا مدل طراحی کنی و there u go...
مسائل تکنیکیش مطمئنا نیاز به تجربه بالایی خواهد داشت...


آموزش های occlusion گروه 3DBuzz خیلی باحال بود... اگه تکنیک occlusion بخواد به این صورت عمل کنه گمون نکنم دیگه جای نگرانی برای polygon و غیره وجود داشته باشه چون نمای دوربین همون مسیری رو که می بینه رندر می کنه. درست می گم ؟
با این حساب آیا بازم باید نگران Polygon بود ؟


نقل قول:
بعد هم باید Profile کنی هم GPU رو هم CPU رو و هم Memory رو ...

اینو اگه یه نمه توضیح بدی بعدش میرم تحقیق می کنم...


نقل قول:
فکر کنم توضیحتون اشتباهه ...
منظور از Memory Bandwidth ارسال اطلاعات از VRAM و RAM به GPU هست و اتفاقا این روزا به خاطر تکنیک هایی مثل Deferred Shading و Light Pre Pass مهمه ...

به هر حال چیزی بود که ترجمه کردم حالا ممکنه اشتباه کرده باشن شما ببخش Very Happy

بازم ممنون از توضیحات مفیدت... اما یونیتی جان میشه یه توضیح تکمیلی دیگه هم بدی تا منو از این نگرانی خارج کنه ؟ الان کار مدلسازی رو متوقف کردم و کل سایتای خارجی رو شخم زدم و همه شون اعتقادشون به سیستم محور بودن کاره و جواب درستی ندارن. واقعا فکر می کردم که سنجش و معیار خاصی وجود داره...
Crying or Very sad
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


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


1 شنبه 10 ارديبهشت 1391 - 03:29
پاسخ بصورت نقل قول
نقل قول:
متوجه منظورت نشدم که از چند تا Vertex Buffer Object استفاده کنم...


منظورم اینه که اگه تعداد ورتکس ها بالا هست ، مدل رو به 2 یا چند بخش تقسیم کن ، یعنی هر کدوم یه Mesh جدا بشه ...

نقل قول:
برای ساخت شخصیت ها به عنوان مثال پیشنهادشده بود که بشه تا حدی از Normal ها و شیدر ها و ایفکتای دیگه استفاده کرد تا اینکه شخصیتمون بخواد جزئیات پلیگانی بیشتری داشته باشه.
مثلا یه شخصیت با 7000 پلیگان و اضافه کردن افکتای مذکور می تونه خیلی بهتر از یه شخصیت با 10000 پلیگان به نظر برسه


برا شخصیت های بازی بستگی داره به نوع بازی مثلا بازی استراتژی مسلما با بازی FPS فرق داره ...
اما اون چیزی که فرمودین Next-Gen Modeling هست و یعنی نمونه highpoly کارکتر رو توی نرم افزاری مثل zbrush با تمامی جزییات درست میکنید ( معمولا به چند میلیون پلی میرسه ) و بعد مدل رو Retopo میکنید و نمونه Lowpoly رو در میارید و از highpoly روی lowpoly نرمال مپ رو در میارید ...
حالا اینکه همه چیز رو حتی کوچکترین اشیا رو بخواید از این روش استفاده کنید بستگی داره به بودجه ، زمان و نیروی تیم تون ...

نقل قول:
می تونم همونطور که شما گفتی بیام و از لحاظ زیبایی طراحی کنم. اما مشکل کار همینجاست که نمی دونم چطور باس از لحاظ Performance طراحی کنم. مثلا ریل های پله های مارپیچ ابتدا 12000 پلیگان بود که بعد از Fine-Tuning شد 3500 تا و دو تاش میشه 7000 تا و واسه 5 طبقه 49000 پلیگان.. منظورتون از Performance همین بود ؟ اما همین 49000 تا زیاد نیس ؟ الان مشکلی ندارم اما می ترسم مدل ها رو بسازم و آخرش بعد از اضافه کردن ایفکت ها بیام با افت Performance مواجه شم.


خب بنده کار شما رو ندیدم و کاری که ندیدم رو که نمیتونم نظر دقیق بدم ، ضمن اینکه نمیدونم حتی از چه تکنیکی برا ساخت محیط هاتون استفاده میکنید ...
حداقل یه screenshot چیزی بگذارید Very Happy

نقل قول:
از طرف دیگه چون می خوام که بازی ساخته شده روی کنسول های PS3 و 360 هم اجرا بشن واقعا الان موندم که چجوری بسازم که واسه کنسول های مذکور هم بعدا مشکلی به وجود نیاد...


دوست من ، ابزارها و SDK مخصوص این کنسول ها رو در اختیار ما قرار نمیدن هم به خاطر تحریم و هم اینکه فقط به شرکتهایی که سابقه کافی رو دارن میدن ...

نقل قول:
اگه تکنیک occlusion بخواد به این صورت عمل کنه گمون نکنم دیگه جای نگرانی برای polygon و غیره وجود داشته باشه چون نمای دوربین همون مسیری رو که می بینه رندر می کنه. درست می گم ؟


اگه محیط تون indoor هست بله بسیار تاثیر میگذاره اگه ازش درست استفاده کنید

نقل قول:
اینو اگه یه نمه توضیح بدی بعدش میرم تحقیق می کنم...


خب یونیتی که خودش ابزار Profiling داره و شما اگه از نظر Performance مشکلی داشته باشی میتونی فعالش کنی و موقع اجرای بازی تو محیط راه بری از زوایای مختلف محیط رو ببینی و بعد توی Profiler بیایی و bottleNeck ها رو پیدا کنی و رفعشون کنی

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


یه نکته که باید بگم اینه که مطمئنا توی کار اول و دوم همه از نظر performance به مشکل برمیخورن ، اما بالاخره تجربه ای کسب میشه و تو کارهای بعدی جبران میشه ...
فعلا دنبال ایده آل ترین حالت نباشید ، هرچند که خودتون گفتید فریم روی 80 هست و احتمالا که مشکلی به وجود نمیاد ( انشالله Very Happy )
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

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


تاريخ عضويت: 4 شنبه 2 فروردين 1391
تعداد ارسالها: 48


1 شنبه 10 ارديبهشت 1391 - 16:59
پاسخ بصورت نقل قول
نقل قول:
منظورم اینه که اگه تعداد ورتکس ها بالا هست ، مدل رو به 2 یا چند بخش تقسیم کن ، یعنی هر کدوم یه Mesh جدا بشه ...

یعنی اون چیزی که واسه سیستم Expensive هستش در واقع یک مش با پلیگان بالا هستش درسته ؟ Shocked و تیک تیکه کردن اون می تونه تاثیر خیلی زیادی روی Performance داشته باشه.
حالا چند تا سوال پیش میاد:
1. اگه مشی رو تیکه تیکه کنیم و بخوایم به هم attach شون کنیم، آیا تیکه های attach شده بازم یک مش به حساب میان ؟ یا نه بعد از تیکه تیکه کردن نباس attach شون کرد.

2. اگه تعداد مش های توی صحنه زیاد بشه اونوقت تعداد DrawCall ها بیشتر نمیشه ؟
گمون کنم گزینه دوم با استفاده از تکنیک های ترکیب مش و اتلس قابل رفع باشه.

وای این نکته ت فوق العاده بود.. مرسی.


نقل قول:
برا شخصیت های بازی بستگی داره به نوع بازی مثلا بازی استراتژی مسلما با بازی FPS فرق داره ...
اما اون چیزی که فرمودین Next-Gen Modeling هست و یعنی نمونه highpoly کارکتر رو توی نرم افزاری مثل zbrush با تمامی جزییات درست میکنید ( معمولا به چند میلیون پلی میرسه ) و بعد مدل رو Retopo میکنید و نمونه Lowpoly رو در میارید و از highpoly روی lowpoly نرمال مپ رو در میارید ...

کاملا...

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

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


نقل قول:
خب بنده کار شما رو ندیدم و کاری که ندیدم رو که نمیتونم نظر دقیق بدم ، ضمن اینکه نمیدونم حتی از چه تکنیکی برا ساخت محیط هاتون استفاده میکنید ...
حداقل یه screenshot چیزی بگذارید Very Happy

با عکس که نمیشه چیزی رو توضیح داد. چون همه ش یکدست به نظر میاد. Smile فعلا هم دارم مدل های خام رو آماده می کنم. اما چشم اگه مدل ها تقریبا آماده شد عکسی از محیط کار ارائه میدم و شاید حتی بعدا دمویی از بازی هم ارائه دادم تا بشه بهتر جزئیات کار رو دید.
اما تکنیکی که تو کارم برای ساخت مدل ها و محیط استفاده می کنم و قراره که استفاده کنم اینه که تا حد ممکن میام مدل ها رو تیکه تیکه می کنم و بعد اونا رو به قسمتهای مورد نظر attach می کنم تا هم تعداد پلیگان ها فوق العاده کمتر شن و هم اینکه بشه به راحتی قسمت ها مورد نظر رو جدا کرد تا بشه ویرایش های آتی رو به راحتی روشون اعمال کرد.
و بیشتر سعیمم اینه که بیام قسمت های پیچیده کار رو با تکنیک نرمال روی یک سطح پیاده کنم تا هم عمق کار حفظ بشه و هم از لحاظ performance مشکلی به وجود نیاد.
شخصیت ها هم با تکنیک Cage Projection ساخته میشن.
حالا واقعا نمی دونم روند کار تو آینده چطور میشه اما فعلا دارم فرآیند کار رو این مدلی میبرم جلو. امیدوارم مشکلی پیش نیاد.

نقل قول:
دوست من ، ابزارها و SDK مخصوص این کنسول ها رو در اختیار ما قرار نمیدن هم به خاطر تحریم و هم اینکه فقط به شرکتهایی که سابقه کافی رو دارن میدن ...

جالب بود... مرسی...


نقل قول:
خب یونیتی که خودش ابزار Profiling داره و شما اگه از نظر Performance مشکلی داشته باشی میتونی فعالش کنی و موقع اجرای بازی تو محیط راه بری از زوایای مختلف محیط رو ببینی و بعد توی Profiler بیایی و bottleNeck ها رو پیدا کنی و رفعشون کنی


Wow ... Shocked در نگاه اول یونیتی خیلی ساده به نظر میاد اما واقعا تو همین سادگیش ابزارهای قدرتمندی داره. حالا من موتورای دیگه رو تست نکردم و نمی تونم در مورد قدرتش نظر نهایی مو بدم اما همینکه می بینم به راحتی نیازمو برآورده می کنه خب این می تونه قدرتشو ثابت کنه.


نقل قول:
یه نکته که باید بگم اینه که مطمئنا توی کار اول و دوم همه از نظر performance به مشکل برمیخورن ، اما بالاخره تجربه ای کسب میشه و تو کارهای بعدی جبران میشه ...
فعلا دنبال ایده آل ترین حالت نباشید ، هرچند که خودتون گفتید فریم روی 80 هست و احتمالا که مشکلی به وجود نمیاد ( انشالله Very Happy )

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

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

نويسنده
پيغام
Unity3D
مدیر انجمن
مدیر انجمن


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


1 شنبه 10 ارديبهشت 1391 - 18:59
پاسخ بصورت نقل قول
نقل قول:
یعنی اون چیزی که واسه سیستم Expensive هستش در واقع یک مش با پلیگان بالا هستش درسته ؟ و تیک تیکه کردن اون می تونه تاثیر خیلی زیادی روی Performance داشته باشه.
حالا چند تا سوال پیش میاد:
1. اگه مشی رو تیکه تیکه کنیم و بخوایم به هم attach شون کنیم، آیا تیکه های attach شده بازم یک مش به حساب میان ؟ یا نه بعد از تیکه تیکه کردن نباس attach شون کرد.

2. اگه تعداد مش های توی صحنه زیاد بشه اونوقت تعداد DrawCall ها بیشتر نمیشه ؟
گمون کنم گزینه دوم با استفاده از تکنیک های ترکیب مش و اتلس قابل رفع باشه.

وای این نکته ت فوق العاده بود.. مرسی.


نه نه ، منظور بنده این نبود که همه مدل ها رو تیکه تیکه کنید ! Very Happy

بنده گفتم که اون محدودیت 65536 علتش اینه که Index ها به صورت عدد صحیح 16 بیتی ذخیره میشن حالا شما اگر مدلت بیشتر از این مقدار ورتکس داره مجبوری به 2 یا چند قسمت تقسیم اش کنی و بیاری توی انجین ...

1- وقتی توی مکس یه mesh رو با یه mesh دیگه attach میکنی از اسمش پیداس دیگه یعنی attach شدن Very Happy یعنی 1 مش محسوب میشه

2- بله ، اگه بتونی مدلهات رو طوری بسازی که مثلا چند تا مدل از یک تکسچر و متریال استفاده کنن ، این به Batch Rendering کمک میکنه ... یعنی مثلا شما مدل میز ، صندلی و در رو جوری UV بگیری که همشون رو با یک تکسچر داشته باشی ...
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

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


تاريخ عضويت: 3 شنبه 20 شهريور 1386
تعداد ارسالها: 1844
محل سكونت: USS Terra Nova


1 شنبه 10 ارديبهشت 1391 - 21:11
پاسخ بصورت نقل قول
سلام. من از دیروز دارم این تاپیک رو میخونم ولی همش یه چیزی بنظر من اشتباهه.

Quarantine, وقتی یه موتور گرافیکی میخواد رندر کنه، حالت استاندارد باید Occlusion کنه در غیر اینصورت فکر نکنم از چند تا ساختمون و خیابون بیشتر چیزی رو بتونی وارد محیط کنی چون انقدر حجم پردازش میره بالا که سیستم نمیکشه. حالا این بحث جدا، شما دارید میگید که تعداد پلیگان ها باید استاندارد باشه، حرف شما درسته ولی وقتی میگید مثلا فلان قدر پلیگان باید داشته باشیم، خوب انجین Back-face Occlusion داره، بهینه سازی scene graph رو داره و ... اینطوری دیگه لازم نیست که آدم نگران تعداد polygon یا مثلث ها باشه.

در مورد DrawCall ها من میتونم یه راهنمایی خوب کنم البته توی دو بعدی. یادمه Unity براش یه اسکریپت نوشته بودن که اسمش فکر کنم SpriteHandler بود، این کلاس کارش اینبود که کل اسپرایت ها که قرار نمایش داده بشن رو میومد میکرد یه اسپرایت و به اینصورت فقط با یه DrawCall کلی اسپرایت رو نمایش میداد. احتمالا همچین چیزی هم توی سه بعدی وجود داره و با توجه به گفته های امین جان! Twisted Evil

_________________
I have a dream that little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. I have a dream today
هیچ راه فراری نیست!
http://www.dreamfactory.ir
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي
 

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


 
پرش به:  


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


unity3d

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