اقا مرسی
ولی این هم نشد که نشد کسه دیگه ای می تونه کمک کنه.
اقا مرسی
ولی این هم نشد که نشد کسه دیگه ای می تونه کمک کنه.
کسی نیست کمک کنه ؟
دوستان سلام
این بحث که یکی از بچه ها درخواست کرده بود رو اول نمی خواستم توی خود تاپیک بزنم، ولی بعد که تایپیدم دیدم به UDK کارها هم مربوط میشه. در ثانی مثال ها رو تا جیی که می شد با استفاده از متریال ادیتور UDK پیش بردم که راحت تر ازشون استفاده کنین.
با این همه این پست کلیه و صرف نظر از اینکه با چه انجینی کار می کنین، می تونین از راه حل هاش استفاده کنید.
-----
خب در مورد اون بحث تکسچر قبل هر چیز بگم، اینا باعث نمی شن که دیگه شما بیخیال سایز تکسچر ها بشی، اونا سر جاشه، این روش ها مال مرحله ی دوم هست که دیگه نمی خوای بیشتر سایز تکسچر ها رو کم کنی. پس حواست باشه به عنوان یه راه جایگزین نیستن، باید به عنوان مکمل بهشون نگاه کنی.چه جوری بدون کم کردن ابعاد تکسچر، استفاده از رم گرافیک رو برای تکسچر ها کم کنیم؟
در کل بحثای Performance که به تکسچر مربوط میشن، دو تا جنبه دارن. یه سری مربوطن به فضایی که تکسچر توی رم گرافیک می گیره، و یه سری دیگه می شن Texture Streaming که با کانال های ارتباطی گرافیک سر و کار داره.
مواردش هم خیلی زیاد هست. من یه سری پرکاربردتراشو الان واست میگم:
- تا جایی که امکان داره از یه تکسچر به صورت تکراری استفاده کن. مواردی رو مثل بازی های استراتژی در نظر بگیر. هر مدل که طراحی می کنی توی بازی مثلا 8 رنگ داره برای 8 تیم. راهی که معمولا اول کار به ذهنت میاد اینه که 8 تا تکسچر برای هر مدل درست کنی. اصلا نباید از این راه بری. به جاش یه تکسچر برای مدل طراحی می کنی و اون رنگ رو توی Material Instance که روی مدل می ندازی باید ست کنی.
- یه مورد دیگه زمانیه که یه سری تکسچر فقط یه قسمت کوچیکشون با هم فرق می کنه. مثلا توی یه بازی اکشن شما یه سری لپ تاپ داری که هم شکل هستن ولی روی مانیتور هر کدوم عکس های مختلف می خوای بذاری، مثل Crysis یا Fear. دوباره اینجا راه اول اینه که بیای برای هر کدوم یه تکسچر جدا بدی. باز ابدا این کار رو نکن. شما باید یه تکسچر کلی برای لپ تاپ بیاری توی انجین و بعد اون اسکرین های متفاوت رو جدا جدا بیاری. بعد توی Material اون لپ تاپ با استفاده از یه Mask یه Sample Texture روی اسکرین لپ تاپ می ندازی. و به راحتی برای هر کدوم از لپ تاپ ها یه Material Instance متفاوت ست می کنی.
- یه مورد هم در مورد عکس هایی که داخلشون تکرار وجود داره. مثلا یه بازی شطرنج سه بعدی رو فرض کن که دوربین میاد نزدیک صفحه، در نتیجه کیفیت صفحه شطرنج مهمه. شما معمولش اینه که یه تکسچر بزرگ می ندازی روی مدل صفحه شطرنج. باز این کاریه که نباید انجام بدی. ببین، صفحه 64 تا مربع داره که یکی در میون، یکیش یه عکس تیره داره و یکیش روشن. راهی که باید بری اینه که دو تا عکس تیره و روشن رو جدا ایمپورت می کنی و توی متریال اونا رو با دو تا Mask یکی در میون می کنی که کار 5 دقیقس. این طوری به جای یه عکس 2048 در 2048، دو تا عکس 256 در 256 آوردی. یعنی به همین راحتی سایز تکسچر صفحه شطرنج رو 32 برابر کوچیک کردی
بدون این که ذره ای کیفیت تکسچر نهایی تغییر بکنه. و این وقتی توی یه بازی کامل استفاده میشه، تفاوتش خیلی زیاده.
توی هر سه راهی که گفتم هم فضای مورد نیاز تو رم خیلی کم می شه هم Texture Streaming کمتری انجام میشه یعنی از هر دو جنبه سود کردی.
همون طور که می بینی Mask های مختلف استفاده های زیادی توی ساخت یه بازی کامل دارن ولی متاسفانه گروه های کوچیک خیلی کم ازشون استفاده می کنن، همین قدر بگم که ساخت این مسک ها توی Photoshop یا حتی Paint.Net بین 1 دقیقه تا دیگه تو بردترین حالت 1 ربع طول می کشه.
یه مورد دیگه هم که باید یادت باشه اینه که تمامی این روش ها هزینه بر هستن، مخصوصا از نظر زمان، ولی توی نتیجه ی نهایی تاثیر خوبی دارن.
البته گفتم، متد های این جوری زیاد هست که بدون اینکه سایز تکسچر رو کم کنی، استفاده از رم گرافیک رو به صورت قابل ملاحظه ای کاهش می دن، ولی خب فعلا همینا بسه واست.
اینا صرفا متدایی هست که با تجربه و یه مقدار ابتکار به دست اومدن، با این همه احتمالا می تونی یه سریشونو با جزئات رو نت پیدا کنی، به همراه چنتا متد دیگه. خود شما هم به عنوان طراح توی حالات خاص اگه روش فکر کنی، گاها روش های جدیدی به ذهنت میاد که با این که کلی نیس ولی بعضی جاها می تونی باهاشون Performance رو بالا ببری.در ضمن تعدادی از متد ها مال ساخت انجین هست که اشاره نکردم. اونا باید زمان ساخت انجین رعایت بشن. دو تا انجین معروف هست که سیستم تکسچر چندان خوبی ندارند، یکی انجین خیلی معروف IW که باهاش Call Of Duty رو می سازن . یکی هم که کار کردی Unity. توی این دو تا قسمت تکسچر خیلی جای کار داره تا به پای انجینای دیگه برسه. ولی نمی دونم چرا روش کار نکردن. گیم استودیو هم همین طوره ولی خب اونو کسی ازش انتظار نداره.
اگه با یکی از این سه تا کار می کنی، تنها کاری که میشه کرد اینه که فعلا متد های مربوط به طراح رو استفاده کنی. البته جای متدهای مربوط به انجین رو نمی گیرن، ولی چاره ی دیگه ای نداری.بقیه ی انجین ها مثل UDK هم با اینکه اون متدها توشون پیاده شدن، ولی باز با این متدها می تونی Performance رو بهتر کنی.
تا بعد.![]()
Last edited by tovamohammad; 03-12-2010 at 22:22.
سلام
همون طور که Aeolus جان گفت تعدادی از افراد این مشکلو داشتن. شما یکی مدل دقیق CPU رو بگو. یکی اینکه بیلد های اکتبر و سپتامبر کدوم رو نصب کردی؟ با کدوم همین مشکلو داشتی؟
چرا نبود؟ دو تا مپ اضافه شده توی این بیلد. FoliageMap و NightAndDayMap به جای GDC_FeaturesDemo اومدن. بله از نظر یه کاربر کامپیوتر اینا با هم فرقی ندارن غیر سیستم شب و روز و خود مپ ها یکی هستن. ولی اصلا این طور نیست.
اینا زمین تا آسمون با هم فرق دارن. همین قدر بگم که NightAndDayMap یه مپ GPU Bound هست و FoliageMap یه مپ CPU Bound. اگه معنی اینا رو می دونی که خب فهمیدی چقدر با هم فرق می کنن. در کل هم روند ساختشون متفاوته و هم نتیجه ی نهایی متفاوته. یکیش GPU رو می ترکونه به CPU کاری نداره، یکی دیگه قاتل CPU هست و با گرافیک کاری نداره.
این چیزی که شما گفتی مثالش میشه لامپ کم مصرف آفتابی. این لامپا با لامپای تنگستن از نظر یه بیننده فرقی ندارن، جفتشون نور زرد می دن. ولی هم روند ساختشون زمین تا آسمون فرق می کنه، هم بعدا به عنوان نتیجه یکیش پولتو از بین میبره، یکیش جونتو.
بای.![]()
Last edited by tovamohammad; 03-12-2010 at 22:26.
سلام
محمد جان بات اون پست خیلی ممنون و لطف کردی . یه سوال دیگه هم دارم ؟
اینی که بالا گفتید رو از کجا متوجه میشید ؟ چه جوری میشه ایجادش کرد . ممنونهمین قدر بگم که NightAndDayMap یه مپ GPU Bound هست و FoliageMap یه مپ CPU Bound
میدونم سرتون خیلی کار رخته ولی اگه اینم هر وقت کردی جواب بدی ممنون میشم .
بازم بابت کمکها و آموزش هاییی که میدی از ممنونم .![]()
اقا شرمنده یه سوال دیگه برام پیش اومد :
چه مواردی تو Performance موثر هست ؟
ممنون![]()
سلام
مدل سی پی و من
Amd Sempron le -1100
بیلد یو دی کی هم اخری بود ماهش رو یادم رفت
سلام
چند تا سوال دارم اینجا ردیفشون می کنم .
1- اینا به چه درد ی میخورن . تا اینجاش می دونم که اینا واسه تنظیمات کلاسه
WITHIN CLASSNAME
The Within specifier designates that instances of this class can only be created within an instance of the ClassName class, meaning that an object of type ClassName must be assigned as the new instance’s Outer property at the time of creation. An example of this might be a MaterialExpression. It would have no reason to exist outside of a Material so that class is declared using the Within specifier and the Material ClassName making it impossible for a MaterialExpression to be created anywhere but within a Material.
INHERITS(CLASSNAME[,CLASSNAME,...])
The Inherits specifier allows a class to extend, or inherit, from multiple parent classes. This specifier is only applicable to native classes. When specifying multiple classes to inherit from, this can be done in a single Inherits statement or a separate Inherits statement can be used for each class to inherit from.
IMPLEMENTS(CLASSNAME[,CLASSNAME,...])
The Implements specifier allows a class use, or implement, one or more Interfaces. Interfaces and how to use them will be discussed in a subsequent chapter. When specifying multiple Interfaces to implement, this can be done in a single Implements statement or a separate Implements statement can be used for each Interface to implement.
NOEXPORT
The NoExport specifier causes the native declaration for this class to be excluded from the automatically generated C++ header file. When using this specifier, the native class declaration must be created manually in a separate header file. This specifier is only applicable to native classes.
یکی ایناست
دوم من اصلا منظور از کلاس های native رو نفهمیدم . اونجا نوشته بود که این کدها کدهای c++ خود انجین هستند . خب به چه دردی می خورن . توی یه جاش نوشته بود (یا من بد ترجمه کردم) سرعت کامپایل و این جور چیزها رو بالا میبره یعنی کارایی مثل زبان اسمبلی داره .
سوم
توابعی مثل Timer توی خود زبان هست یا ما خودم با استفاده از شروط اون رو اجرا می کنیم .
چهارم
کد زیر رو مثال میزنم
Begin Object Name=FirstPersonMesh
SkeletalMesh=SkeletalMesh'WP_ShockRifle.Mesh.SK_WP _ShockRifle_1P'
AnimSets(0)=AnimSet'WP_ShockRifle.Anim.K_WP_ShockR ifle_1P_Base'
Animations=MeshSequenceA
Rotation=(Yaw=-16384)
FOV=60.0
End Object
این کد که برای تعریف و اوردن یه شیئ هست . توی این کد
Begin Object Name=FirstPersonMesh
قسمت Firest Peresin Mesh از قبل تعریف شده و یه چیز ثابته یا ما باید اون رو اضافه کنیم .
یه چیز اخر
مثلا کلاس زیر
Class M Extends Mutator
Default Properties
}
GrupName[0]=' palymod'"
{
خب Grupname که یه ارایه باشه توی اینجا فقط نقش نام گذاری Mutator رو داره . توی توضیحاتش که اینطوری نوشته بود . خب اگه
اینطوریه اگه ارایه GrupName[1]="Play" باشه چی این چیکار می کنه .
سوال هام رو جم کردم که یهو بگم .
کلا ممنون میشم اگه جواب بدین
سلام، خواهش می کنم
بحث GPU Bound و CPU Bound یه راه کلی داره که استفاده از نرم افزار های بنچمارک هست.
ولی خب یه راه ساده تر داره که نه همیشه ولی معمولا جواب میده هست، که تو این مورد هم من از این راه متوجه شدم.
این راه در حقیقت دمای GPU و CPU هستن. شما به عنوان یه متخصص بازی دیگه قاعدتا دمای GPU و CPU سیستمی که باهاش کار می کنی رو می دونی تو زمان های عادی چقدر هست. حالا وقتی که یه بازی رو اجرا می کنی یا یه مپ رو توی ادیتور باز می کنی کافیه بعد از یکی دو دقیقه دما ها رو چک کنی، اگه دمای گرافیکت به صورت غیر عادی زیاد شده بود میشه GPU Bound و همین طور برای CPU.
البته همون طور که گفتم این راه کلی نیست، مثلا اگه یه سیستم با یه CPU و GPU خفن داشته باشی دیگه نمی شه از این راه بری.
ساختش هم تو این مورد که بحث Improved Foliage هست اپیک هنوز صحبتی روی روند کار نکرده، باید صبر کنیم تا خودش یه داکیومنتی براش بده. فقط توی ویدئوی آخری که لینکشو دادم یه اشاره ای بهش می کنه.
شما به عنوان یه بازی ساز باید مپ های جدیدی که می گیری، FPS شون رو هم یه نگاه بکنی، که دیگه ویدئوها رو دیده باشی می دونی کجاس.
اون مپ NightAndDayMap البته یکی از قسمتهایی که به GPU Bound شدنش کمک کرده تنظیمات سنگینی هست که برای Post Process انتخاب کردن توش. خودم زمانی که اون تنظیمات رو برداشتم فریم ریتم دو برابر شد.
دو کلمه: همه چیز.
هر چیزی که شما توی بازیت می یاری، چه از کد، چه از کانتنت. و همین طور هر چیزی که انجین برای بازی شما استفاده می کنه.
این بحث یه بحث کلی هست. اونی که می بینی در مورد Performance در زمان ساخت یه بازی صحبت می شه، مواردی هست که بیشترین تاثیر رو روی این قضیه دارن. اگه خواستی با جزئیات تر بدونی، اول یه سرچی بکن در مورد قانون هشتاد بیست.
سلام
خب شما اگه از همون اول مدلو داده بودی سریع جواب می گرفتی، جواب دو تا سوال دیگمم که ندادی.
با این همه، CPU شما تک هسته ای هست نه دو هسته ای و 3-2 بیلد آخر UDK با CPU های Single Core مشکل داره. حتی با CPU هایی که به صورت نرم افزاری دو هسته ای می شن مثل CPU های تک هسته ای اینتل که HT رو ساپورت می کنن.
شما فعلا کاری نمی تونی بکنی. باید صبر کنی تا تو بیلد های بعدی مشکل حل بشه. البته اپیک قولی نداده ولی گفته سعی می کنیم تو بیلد دسامبر که یه مدت دیگه میاد مشکل رو رفع کنیم.
-----
اون سوال آخرتم خیلی گنده منده شده که، یعنی جدا با خود داکیومنتها اینا رو متوجه نشدی؟
حالا اشکال نداره، یه 3-2 روز صبر کنیم ببینیم کسی جواباتو می دونه، اگه بعد اون جواب نگرفتی خودم یه وقتی می ذارم می تایپم واست.
تا بعد.![]()
سلام
من کاملا تازه کارم
یه سوال داشتم
تو اون آموزشی که توی صفحه ی اول گذاشتین قسمت اولش یه جا هست که L رو نگه میداریم و با موس رو صفحه کلیک چپ کرده و نور رو به وجود میاریم. من اون نور رو درست در وسط اون مکعب قرار دادم ولی وقتی play from here رو میزنم فقط اسلحه دیده میشه (صفحه سیاهه).جالب اینه که وقتی رنگ نور رو عوض میکنم وقتی هنوز بازی شروع نشده نور روی زمین و در رو دیوار می افته ولی وقتی بازی شروع میشه نور فقط رو تفنگ تاثیر میذاره
چیکار کنم؟
Last edited by عادل سلیمی 20; 04-12-2010 at 17:05.
هم اکنون 3 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 3 مهمان)