تا ۱ آذر نکته ها زمانگذاری شدن فعلا ، هر روز ۱ نکته ساعت ۱۴:۱۴ براتون میاد
This media is not supported in your browser
VIEW IN TELEGRAM
سلام دوستان
بلاخره موفق شدم یک چیز با JobSystem بزنم که فریم خوب بده
(حدود 10000 تا سیاره مثلا دارن دور خورشید میچرخن)
(هر آموزشی هم یک سازی میزد😑)
بلاخره موفق شدم یک چیز با JobSystem بزنم که فریم خوب بده
(حدود 10000 تا سیاره مثلا دارن دور خورشید میچرخن)
(هر آموزشی هم یک سازی میزد😑)
سلام دوستان از اونجایی که میدونید دارم آموزش DOTS میبینم ، گفتم هر وقت دوست داشتم بیام و در مورد برخی چیز ها توضیح بدم (اگه جایی رو اشتباه توضیح دادم ، کامنت بدید)
موضوع : نگاه کلی به ECS و DOTS
DOTS = Data oriented technology stack
داتس (DOTS) یک تکنولوژی یا یک معماری هست که ما با اون میتونیم بازیمون رو بهینه کنیم
بیشتر برای بازی هایی با تعداد آبجکت بالا به کار میره
داتس از ۳ قسمت تشکیل شده
1-ECS
که یک شیوه کد نویسی داده محور هست که باعث قرار گیری منظم داده ها در RAM میشه و سرعت بازی بالا میره
2-JobSystem
که با اون میتونیم اجرا شدن کد هامون رو به جای استفاده از main thread (رشته اصلی) اون رو multi thread (چند رشته ای) کنیم که وظایف یا همون job هامون تقسیم بشن و سرعت کار افزایش پیدا کنه
3- Burst Compiler
یک کامپایلر هست که بایت کد های IL/.NET رو با استفاده از LLVM به کد های بسیار بهینه شده تبدیل میکنه
خب ECS چیست؟
ECS = Entity Component System
( کاری فعلا به Component و System نداشته باشید)
توی یونیتی دو جور چیز داره
یکی آبجکت هست که شما بهش اسکریپت میدید (کلاس MonoBehavior) و یکی Entity ، این Entity شاید تقریباً مثل آبجکت باشه ولی خب تفاوت داره ، مثلا توی Hierarchy دیگه نمیتونی Entity ها رو ببینی و باید از طریق EntityDebugger کامپوننت هاش یا ... رو ببینی
توضیح قرار گیری Entity ها در RAM :
اگه به فرض چند تا گیم آبجکت با چند تا کامپوننت ایجاد کنی این ها به صورت نامنظم توی رم قرار میگیرن و تا یونیتی بیاد این ها رو از جا های مختلف برداره و پردازش کنه و... طول میکشه
ولی Entity به صورت منظم داخل RAM قرار میگیره و با مقادیر اختصاصی و کوچکتر ، در نتیجه کنترل روی RAM راحت تر میشه و سرعت میره بالا
به طور مثال ، کامپوننت Transform یک آبجکت با همون کامپوننت در Entity فرق داره ،
مثلا همین کامپوننت Transform شامل مختصات ، چرخش و اندازه هست ولی داخل Entity به چند بخش تقسیم شده و هر کدوم شدن یک کامپوننت تا فضای کمتری رو داخل رم بگیره
در Entity :
Translation = برای مختصات
Rotation = برای چرخش
NonuniformScale =
برای اندازه های (scale) مخالف عدد یک
(هر کدوم از این ها یک کامپوننت محسوب میشوند)
فرض کنید یک Entity داریم که چند کامپوننت داره ، Rotation ، Translation و RenderMesh (اولی برای مختصات ، دومی برای چرخش و سومی برای رندر شدن (یه چیز توی مایه های Mesh Renderer حالت عادی))
حالا اگه ما هزار تا Entity داشته باشیم که دقیق همین کامپوننت ها رو داشته باشن (نه کمتر و نه زیاد تر) و حتی اگه مقادیرشون هم متفاوت باشه (مثلا مختصات متفاوتی داشته باشند) میشن یک Archetype
ولی اگه یک کامپوننت NonuniformScale به یکی از این Entity ها اضافه شد این Entity یک Archetype جدید تشکیل میده
مثلا اولی میشه
Archetype (A)
(شامل ۹۹۹ Entity)
و دومی میشه
Archetype (B)
(شامل ۱ Entity)
#یونیتی #ecs
#dots
#آموزش #فارسی
👉 @UnityEngine3D 👈
موضوع : نگاه کلی به ECS و DOTS
DOTS = Data oriented technology stack
داتس (DOTS) یک تکنولوژی یا یک معماری هست که ما با اون میتونیم بازیمون رو بهینه کنیم
بیشتر برای بازی هایی با تعداد آبجکت بالا به کار میره
داتس از ۳ قسمت تشکیل شده
1-ECS
که یک شیوه کد نویسی داده محور هست که باعث قرار گیری منظم داده ها در RAM میشه و سرعت بازی بالا میره
2-JobSystem
که با اون میتونیم اجرا شدن کد هامون رو به جای استفاده از main thread (رشته اصلی) اون رو multi thread (چند رشته ای) کنیم که وظایف یا همون job هامون تقسیم بشن و سرعت کار افزایش پیدا کنه
3- Burst Compiler
یک کامپایلر هست که بایت کد های IL/.NET رو با استفاده از LLVM به کد های بسیار بهینه شده تبدیل میکنه
خب ECS چیست؟
ECS = Entity Component System
( کاری فعلا به Component و System نداشته باشید)
توی یونیتی دو جور چیز داره
یکی آبجکت هست که شما بهش اسکریپت میدید (کلاس MonoBehavior) و یکی Entity ، این Entity شاید تقریباً مثل آبجکت باشه ولی خب تفاوت داره ، مثلا توی Hierarchy دیگه نمیتونی Entity ها رو ببینی و باید از طریق EntityDebugger کامپوننت هاش یا ... رو ببینی
توضیح قرار گیری Entity ها در RAM :
اگه به فرض چند تا گیم آبجکت با چند تا کامپوننت ایجاد کنی این ها به صورت نامنظم توی رم قرار میگیرن و تا یونیتی بیاد این ها رو از جا های مختلف برداره و پردازش کنه و... طول میکشه
ولی Entity به صورت منظم داخل RAM قرار میگیره و با مقادیر اختصاصی و کوچکتر ، در نتیجه کنترل روی RAM راحت تر میشه و سرعت میره بالا
به طور مثال ، کامپوننت Transform یک آبجکت با همون کامپوننت در Entity فرق داره ،
مثلا همین کامپوننت Transform شامل مختصات ، چرخش و اندازه هست ولی داخل Entity به چند بخش تقسیم شده و هر کدوم شدن یک کامپوننت تا فضای کمتری رو داخل رم بگیره
در Entity :
Translation = برای مختصات
Rotation = برای چرخش
NonuniformScale =
برای اندازه های (scale) مخالف عدد یک
(هر کدوم از این ها یک کامپوننت محسوب میشوند)
فرض کنید یک Entity داریم که چند کامپوننت داره ، Rotation ، Translation و RenderMesh (اولی برای مختصات ، دومی برای چرخش و سومی برای رندر شدن (یه چیز توی مایه های Mesh Renderer حالت عادی))
حالا اگه ما هزار تا Entity داشته باشیم که دقیق همین کامپوننت ها رو داشته باشن (نه کمتر و نه زیاد تر) و حتی اگه مقادیرشون هم متفاوت باشه (مثلا مختصات متفاوتی داشته باشند) میشن یک Archetype
ولی اگه یک کامپوننت NonuniformScale به یکی از این Entity ها اضافه شد این Entity یک Archetype جدید تشکیل میده
مثلا اولی میشه
Archetype (A)
(شامل ۹۹۹ Entity)
و دومی میشه
Archetype (B)
(شامل ۱ Entity)
#یونیتی #ecs
#dots
#آموزش #فارسی
👉 @UnityEngine3D 👈
👍1
کانال تخصصی یونیتی ( آموزش و نکته )
سلام دوستان از اونجایی که میدونید دارم آموزش DOTS میبینم ، گفتم هر وقت دوست داشتم بیام و در مورد برخی چیز ها توضیح بدم (اگه جایی رو اشتباه توضیح دادم ، کامنت بدید) موضوع : نگاه کلی به ECS و DOTS DOTS = Data oriented technology stack داتس (DOTS) یک تکنولوژی…
سوال : EntityArchetype به کدام یک شبیه تره؟
Anonymous Quiz
30%
GameObject
11%
URP
6%
Shader
1%
int
10%
PlayerPrefs
16%
Prefab
3%
Burst
22%
DOTS
کانال تخصصی یونیتی ( آموزش و نکته )
سوال : EntityArchetype به کدام یک شبیه تره؟
اشکالی داشت کامنت بدید
سلام دوستان
سه تا پکیج داخل است استور به مدت محدود با کد SYNTY2021 رایگان شدن
لینک : https://assetstore.unity.com/publisher-sale
👉 @UnityEngine 👈
سه تا پکیج داخل است استور به مدت محدود با کد SYNTY2021 رایگان شدن
لینک : https://assetstore.unity.com/publisher-sale
👉 @UnityEngine 👈
This media is not supported in your browser
VIEW IN TELEGRAM
سلام
دوستان ۲۵۰ هزار مکعب سه بعدی میرن اون آخر و دوباره بر میگردن اول (یعنی متحرک هستن) و با ECS و JobSystem زدم
به پنجره stats دقت کنید حدود ۲۷ و ۲۸ فریم هم داد توی ادیتور
(و اینکه رزولوشن پنجره Game رو هم همینطور که میبینید گذاشتم روی 4K)
(۲۵۰ هزار تا خیلیه😑)
دوستان ۲۵۰ هزار مکعب سه بعدی میرن اون آخر و دوباره بر میگردن اول (یعنی متحرک هستن) و با ECS و JobSystem زدم
به پنجره stats دقت کنید حدود ۲۷ و ۲۸ فریم هم داد توی ادیتور
(و اینکه رزولوشن پنجره Game رو هم همینطور که میبینید گذاشتم روی 4K)
(۲۵۰ هزار تا خیلیه😑)
بهترین ویرایشگر کد برای یونیتی از نظر شما کدومش هست؟
Anonymous Poll
43%
Visual Studio
19%
Visual Studio Code
13%
Jetbrains Rider
5%
Script Inspector 3
0%
Super Editor
5%
Notepad
4%
Notepad ++
0%
XCode
9%
MonoDevelop
3%
سایر موارد (کامنت)
سلام دوستان
توی این قسمت میخوایم بریم سراغ وارد کردن پکیج های مورد نیاز برای DOTS
اول اینکه نسخه ای که من الان استفاده میکنم 2022.1.0a3 هست و شما هم سعی کنید از نسخه های جدید یونیتی برای این آموزش استفاده کنید تا به مشکلی بر نخورید
موضوع : وارد کردن پکیج های مورد نیاز DOTS
اول اینکه وارد پکیج منیجر بشید و روی تنظیمات بالا (علامت چرخ دنده) کلیک کنید و روی گزینه Advanced Project Settings کلیک کنید تا وارد قسمت تنظیمات پکیج منیجر بشید . گزینه Enable Pre-realse Packages رو فعال کنید و برگردید به پکیج منیجر و اینترنت خودتون و فیلترشکن رو روشن کنید ( ترجیحا یک بار پکیج منیجر رو ببندید و دوباره بازکنید و روی Refresh کلیک کنید ) چهار تا پکیج Jobs و Entities و Hybrid Renderer و Burst رو فعال کنید .
البته نسخه ای که من استفاده میکنم Burst رو به صورت پیش فرض داره و حذف هم نمیشه
اگر این چهار تا رو پیدا نکردید روی گزینه + بالای پکیج منیجر کلیک کنید و گزینه Add git from URL... رو بزنید و
com.unity.entities
com.unity.jobs
com.unity.rendering.hybrid
com.unity.burst
و ADD رو بزنید و بعد از وارد شدن هر پکیج ، بعدی رو بگذارید ADD رو بزنید
#یونیتی #ecs
#dots
#آموزش #فارسی
(قسمت های بعدی انشاءالله به زودی)
👉 @UnityEngine3D 👈
توی این قسمت میخوایم بریم سراغ وارد کردن پکیج های مورد نیاز برای DOTS
اول اینکه نسخه ای که من الان استفاده میکنم 2022.1.0a3 هست و شما هم سعی کنید از نسخه های جدید یونیتی برای این آموزش استفاده کنید تا به مشکلی بر نخورید
موضوع : وارد کردن پکیج های مورد نیاز DOTS
اول اینکه وارد پکیج منیجر بشید و روی تنظیمات بالا (علامت چرخ دنده) کلیک کنید و روی گزینه Advanced Project Settings کلیک کنید تا وارد قسمت تنظیمات پکیج منیجر بشید . گزینه Enable Pre-realse Packages رو فعال کنید و برگردید به پکیج منیجر و اینترنت خودتون و فیلترشکن رو روشن کنید ( ترجیحا یک بار پکیج منیجر رو ببندید و دوباره بازکنید و روی Refresh کلیک کنید ) چهار تا پکیج Jobs و Entities و Hybrid Renderer و Burst رو فعال کنید .
البته نسخه ای که من استفاده میکنم Burst رو به صورت پیش فرض داره و حذف هم نمیشه
اگر این چهار تا رو پیدا نکردید روی گزینه + بالای پکیج منیجر کلیک کنید و گزینه Add git from URL... رو بزنید و
com.unity.entities
com.unity.jobs
com.unity.rendering.hybrid
com.unity.burst
و ADD رو بزنید و بعد از وارد شدن هر پکیج ، بعدی رو بگذارید ADD رو بزنید
#یونیتی #ecs
#dots
#آموزش #فارسی
(قسمت های بعدی انشاءالله به زودی)
👉 @UnityEngine3D 👈