🧩 Zlib License مجوزی بسیار ساده و آزاد، مشابه MIT. اجازه استفاده تجاری، تغییر و توزیع را میدهد، بدون مسئولیت نویسنده. اغلب برای کتابخانههای فشردهسازی مانند zlib استفاده میشود.
#مطلب_کمکی
۵:۵۱
#سوالات_شما
چطوری در یادگیری توسعه بازی موفق باشیم؟
متاسفانه خیلی ها توسعه بازی رو فقط ساخت بازی میدونند. حتی گاها دیدگاه تخصصی و رشته ای تر ندارند.اگر میخواید توسعه بازی انجام بدید، پس قطعا بخش فنی با شماست. من اصولی ش رو خدمت همگی تون عرض میکنم، چون خیلی ها داخل ایران اصلا غیرتخصصی دارن آموزش میبینند یا آموزش رو ادامه میدن.
۱. ابتداء مبانی برنامه نویسی رو یاد بگیرید. الگوریتم و فلوچارت، حل مسئله و ...
۲. زبان و ریاضیات کامپیوتری تون رو کمی قویتر کنید طبق مباحث مهم (اجباری و متوقف کننده نیست ولی خوبه و همزمان انجام بدید). مباحث نظری بازیسازی هم اگر میتونید جمع و جور کنید تا یاد بگیرید، خوبه.
۳. یک انجین قوی رو انتخاب کنید و طبق اون برید جلو (معمولا توسعه دهندگان یونیتی که زبان سی شارپ رو پشتیبانی میکنه رو انتخاب میکنند. البته بعضی ها هم ابتداء سعی میکنند یک زبان رو به شکل قوی یاد بگیرن و بعد برن سراغ انجین که این هم خوبه، ولی خیلی وقت بره و گاها مطالب اضافی زیاد به شما یاد داده میشه، ولی از اونور برعکسش هم گاها باعث میشه شما خیلی چیزها رو یاد نگیرید)
۴. زبان برنامه نویسی و انجین رو که تا یک حدی مسلط شدید، شروع کنید پروژه های کوچک با گرافیک ساده زدن، بهبودش دادن، و یادگیری بیشتر سی شارپ و تکنیک های فنی بازیسازی
۵. همزمان کار با ابزارهای هوش مصنوعی مربوط به حوزه توسعه و کدنویسی رو هم یاد بگیرید.
۶. تکنیک های اشکالزدایی، بهینه سازی و ... رو همزمان یاد بگیرید. بااینکه پیشنهاد میکنم مباحث نظری فنی بازیسازی رو پیش از شروع بازیسازی بهتره یاد بگیرید، اما اینجا هم میتونید یاد بگیرید.
۷. تکنیک ها و tip های انجین و زبان برنامه نویسی اون رو یاد بگیرید. همزمان درخواست بدید به شرکت ها و کارآموزی کنید و تجربه تون رو افزایش بدید. لینکدین تون رو قوی کنید. همزمان پروژه هایی هم بزنید و روی گیتهاب بارگذاری کنید.
۸. بازیهای حرفه ای رو کلون کنید. حتی با گرافیک ساده. مکانیک های مختلف رو پیاده سازی کنید. مقالات و کتابهای حرفه ای حوزه فنی رو بخونید. از تجارب دیگران استفاده کنید.
۹. مهارت های فنی ارتباطی گسترش بدید. مثلا گیت و گیت لب (البته اگر وارد تیمی بشید، اینها رو یاد میگیرید از قبل)
۱۰. حوزه فنی تون رو گسترش بدید. VR ، شبکه ، ارتباط با سخت افزار ، Cloud و ...
۱۱. وارد مباحث حرفه ای مثل مهندسی معکوس، هوش مصنوعی(مثل شبکه های عصبی)، معماری شناسی بازی، دیکامپایل، هک اخلاقی بازیها و ... برای شناخت معماری بازیها و افزایش امنیت بازیها برید که معمولا اینطور موارد، بین رشته ای هست. مثلا مهندسی شبکه و مهندسی کامپیوتر و ...
۱۲. سعی کنید همزمان کمی گیم دیزاین هم بخونید. بازیسازی که گیم دیزاین میخونه و یاد میگیره، خیلی از دیگران فهیم تره.
همین موارد رو بصورت پشت سر هم یا همزمان وقت بگذارید. میانگینی ۳ ساعت در روز میتونه خوب باشه. مطالعات تون رو حتما از دست ندید، در انجمن ها و دیسکاسهای داخلی و خارجی و مجازی و حقیقی شرکت کنید، همیشه درحال آموزش دیدن و مشورت کردن باشید(خاضع باشید)، سورس پروژه بازیها رو تست و فضولی کنید، در گیتهاب و یوتیوب و مستندات انجین و زبان برنامه نویسی حتما بگردید، از هوش مصنوعی بعنوان راهنما استفاده کنید ولی بهش وابستگی ذهنی پیدا نکنید.
#تجربه_شخصی | #توصیه | #مطلب_کمکی
@Sajad_Ahmadi_Niat 🪔
متاسفانه خیلی ها توسعه بازی رو فقط ساخت بازی میدونند. حتی گاها دیدگاه تخصصی و رشته ای تر ندارند.اگر میخواید توسعه بازی انجام بدید، پس قطعا بخش فنی با شماست. من اصولی ش رو خدمت همگی تون عرض میکنم، چون خیلی ها داخل ایران اصلا غیرتخصصی دارن آموزش میبینند یا آموزش رو ادامه میدن.
۱. ابتداء مبانی برنامه نویسی رو یاد بگیرید. الگوریتم و فلوچارت، حل مسئله و ...
۲. زبان و ریاضیات کامپیوتری تون رو کمی قویتر کنید طبق مباحث مهم (اجباری و متوقف کننده نیست ولی خوبه و همزمان انجام بدید). مباحث نظری بازیسازی هم اگر میتونید جمع و جور کنید تا یاد بگیرید، خوبه.
۳. یک انجین قوی رو انتخاب کنید و طبق اون برید جلو (معمولا توسعه دهندگان یونیتی که زبان سی شارپ رو پشتیبانی میکنه رو انتخاب میکنند. البته بعضی ها هم ابتداء سعی میکنند یک زبان رو به شکل قوی یاد بگیرن و بعد برن سراغ انجین که این هم خوبه، ولی خیلی وقت بره و گاها مطالب اضافی زیاد به شما یاد داده میشه، ولی از اونور برعکسش هم گاها باعث میشه شما خیلی چیزها رو یاد نگیرید)
۴. زبان برنامه نویسی و انجین رو که تا یک حدی مسلط شدید، شروع کنید پروژه های کوچک با گرافیک ساده زدن، بهبودش دادن، و یادگیری بیشتر سی شارپ و تکنیک های فنی بازیسازی
۵. همزمان کار با ابزارهای هوش مصنوعی مربوط به حوزه توسعه و کدنویسی رو هم یاد بگیرید.
۶. تکنیک های اشکالزدایی، بهینه سازی و ... رو همزمان یاد بگیرید. بااینکه پیشنهاد میکنم مباحث نظری فنی بازیسازی رو پیش از شروع بازیسازی بهتره یاد بگیرید، اما اینجا هم میتونید یاد بگیرید.
۷. تکنیک ها و tip های انجین و زبان برنامه نویسی اون رو یاد بگیرید. همزمان درخواست بدید به شرکت ها و کارآموزی کنید و تجربه تون رو افزایش بدید. لینکدین تون رو قوی کنید. همزمان پروژه هایی هم بزنید و روی گیتهاب بارگذاری کنید.
۸. بازیهای حرفه ای رو کلون کنید. حتی با گرافیک ساده. مکانیک های مختلف رو پیاده سازی کنید. مقالات و کتابهای حرفه ای حوزه فنی رو بخونید. از تجارب دیگران استفاده کنید.
۹. مهارت های فنی ارتباطی گسترش بدید. مثلا گیت و گیت لب (البته اگر وارد تیمی بشید، اینها رو یاد میگیرید از قبل)
۱۰. حوزه فنی تون رو گسترش بدید. VR ، شبکه ، ارتباط با سخت افزار ، Cloud و ...
۱۱. وارد مباحث حرفه ای مثل مهندسی معکوس، هوش مصنوعی(مثل شبکه های عصبی)، معماری شناسی بازی، دیکامپایل، هک اخلاقی بازیها و ... برای شناخت معماری بازیها و افزایش امنیت بازیها برید که معمولا اینطور موارد، بین رشته ای هست. مثلا مهندسی شبکه و مهندسی کامپیوتر و ...
۱۲. سعی کنید همزمان کمی گیم دیزاین هم بخونید. بازیسازی که گیم دیزاین میخونه و یاد میگیره، خیلی از دیگران فهیم تره.
همین موارد رو بصورت پشت سر هم یا همزمان وقت بگذارید. میانگینی ۳ ساعت در روز میتونه خوب باشه. مطالعات تون رو حتما از دست ندید، در انجمن ها و دیسکاسهای داخلی و خارجی و مجازی و حقیقی شرکت کنید، همیشه درحال آموزش دیدن و مشورت کردن باشید(خاضع باشید)، سورس پروژه بازیها رو تست و فضولی کنید، در گیتهاب و یوتیوب و مستندات انجین و زبان برنامه نویسی حتما بگردید، از هوش مصنوعی بعنوان راهنما استفاده کنید ولی بهش وابستگی ذهنی پیدا نکنید.
#تجربه_شخصی | #توصیه | #مطلب_کمکی
۵:۵۲
*
جویسی (Juicy) در بازیسازی یعنی چی؟*
دیدم این روزا خیلی درمورد کلمه جویسی صحبت میشه. گفتم یک توضیحی بدم.اگه تا حالا یه بازی رو بازی کردی و از حرکت ساده یه دکمه یا پریدن یه کاراکتر کلی کیف کردی، احتمالاً اون بازی "جویسی(آبدار)" بوده!در #گیم_دیزاین ، جویسی یعنی اضافه کردن جزئیات بصری، صوتی و لمسی که تجربه بازی رو لذتبخشتر و زندهتر میکنه. این جزئیات ممکنه تأثیر مستقیمی روی گیمپلی نداشته باشن، ولی حس خوبی به بازیکن میدن و باعث میشن بازی "زنده" به نظر بیاد.
مثال:فرض کن تو یه بازی پلتفرمر، وقتی شخصیت میپره:
یه افکت نور کوچیک زیر پاهاش ظاهر میشه
صدای بامزهای پخش میشه
دوربین یه لرزش کوچیک داره
امتیاز با یه انیمیشن رنگی بالا میرههمه اینا باعث میشن حس کنی یه حرکت ساده، خیلی هیجانانگیز بوده. اینه قدرت جویسی!البته همه اینها به تجربه و مثالها و آزمون و خطا بستگی داره.
بازیهایی مثل Fruit Ninja یا Candy Crush پر از المانهای جویسی هستن. هر برش، هر انفجار آبنبات، یه جویسی بصریه.اگه بازیساز هستی، یادت باشه: جویسی بودن بازی، میتونه تفاوت بین یه بازی معمولی و یه بازی اعتیادآور باشه. هر جویسی، یک قلقلک ذهنی برای ادامه دادن بازی و به یادآوردن خاطره خوشه.
#مقاله | #علم_بازی | #طراحی_بازی | #game_designآموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
دیدم این روزا خیلی درمورد کلمه جویسی صحبت میشه. گفتم یک توضیحی بدم.اگه تا حالا یه بازی رو بازی کردی و از حرکت ساده یه دکمه یا پریدن یه کاراکتر کلی کیف کردی، احتمالاً اون بازی "جویسی(آبدار)" بوده!در #گیم_دیزاین ، جویسی یعنی اضافه کردن جزئیات بصری، صوتی و لمسی که تجربه بازی رو لذتبخشتر و زندهتر میکنه. این جزئیات ممکنه تأثیر مستقیمی روی گیمپلی نداشته باشن، ولی حس خوبی به بازیکن میدن و باعث میشن بازی "زنده" به نظر بیاد.
#مقاله | #علم_بازی | #طراحی_بازی | #game_designآموزش بازیسازی و برنامهنویسی
۱۶:۲۹
وقتی بازی میسازی، فقط طراحی گیمپلی و گرافیک مهم نیست؛ باید فکر پول درآوردن هم باشی! اینکه بازیات چطور پولساز بشه، یه تصمیم مهمه که روی تجربه بازیکن، میزان درآمد و حتی محبوبیت بازی تأثیر میذاره. توی این بخش میخوایم سه مدل معروف درآمدی رو بررسی کنیم که معمولا استفاده میشه: فریمیوم، پریمیوم و اشتراکی.
*
#مقاله_ | #مطلب_کمکی
۱۶:۳۰
*کمپین تولد 14 سالگی مکتبخونه! *
کمپین تولد مکتب خونه آغاز شده و تا پایان هفته ادامه خواهد داشت. حتی دوره دوره آموزش ساخت بازی Color Switch در یونیتی هم به مدت کوتاه رایگان شده!در این کمپین، کاربران میتوانند با استفاده از کد تخفیف HBD یک دوره را بهصورت کاملاً رایگان ثبتنام کرده و بدون پرداخت هیچ هزینهای یادگیری خود را آغاز کنند.
نکته مهم:برای دورههایی که گواهینامه مکتبخونه دارند، کاربران باید پیش از افزودن دوره به سبد خرید، تیک گزینهی دسترسی کامل را بردارند تا کد تخفیف بهدرستی اعمال شود.
لینک دوره آموزش ساخت بازی Color Switch در یونیتی:https://mktb.me/0mig/
لینک لندینگ همه دوره ها:https://mktb.me/i6un/
#کمپین | #تخفیف
@Sajad_Ahmadi_Niat 🪔
#کمپین | #تخفیف
۱۶:۳۰
۱۶:۳۱
آموزش بازیسازی و برنامه نویسی | سجاد احمدی نیت
* انجمن علمی دانشجویی بازیهای رایانهای دانشگاه شهید چمران اهواز با همکاری سایر انجمن های علمی کشور برگزار میکند:*
همه چی از یه دکمه Start شروع میشه...
اگه همیشه دلت میخواسته بدونی بازیها چطور ساخته میشن الان وقتشه وارد دنیای واقعی بازیسازی بشی!
* کارگاه ۱۴ جلسهای آموزش: مبانی فنی بازیسازی* با تدریس
مهندس سجاد احمدینیت (با چندین سال تجربه حرفهای در صنعت بازیسازی)
شروع دوره: ۱۷ آبان ۱۴۰۴
مکان: گوگل میت / اسکایروم
همراه با گواهی معتبر
این فقط یه کلاس نیست...شروع مسیرت برای تبدیل شدن به یه Game Developer واقعیه! این کارگاه بخشی از مجموعه دورههای توانمندسازی Level Up مخصوص علاقهمندان بازیسازی
برای ثبتنام و ارتباط با ما: Instagram: [@cgames_scu] Telegram: [@arezoo_0230]
️ آمادهای لِوِل بعدی خودتو باز کنی؟ بزن Start و وارد بازی شو! - - - - - - - - - - - - - -
انجمن علمی دانشجویی بازیهای رایانهای
@Sajad_Ahmadi_Niat 🪔
عزیزان این دوره، برای اولین بار در کشور با این تیتر و سرفصل هایی که اعلام شده درحال برگزاری است.قرار هست در این دوره به برخی از ابتداییات بخش فنی توسعه بازی بپردازیم.
مواردی که در تصویر بالا نوشته شده، سعی میشه که در دوره ان شاالله بهش اشاره بشه.
#دوره_آموزشی | #دوره_آنلاین
@Sajad_Ahmadi_Niat 🪔
مواردی که در تصویر بالا نوشته شده، سعی میشه که در دوره ان شاالله بهش اشاره بشه.
#دوره_آموزشی | #دوره_آنلاین
۱۶:۳۱
بازارسال شده از صنایع خلاق نسیم مهر
Avalaible NowOn itch.io:https://icerosestudio.itch.io/nomo-3d-apple-pack
@nasim_mehr_creative_industries
۱۶:۳۲
#پیکسل_آرت | #Pixel_Artآموزش بازیسازی و برنامهنویسی
۱۲:۴۹
#ارور_شناسی
پیغام Security Alert در یونیتی هاب ورژن های اخیر، برای هشدار مسیر دادن یونیتی هایی است که بصورت دستی(local) نصب شده اند. به این معنا، که ممکن است حاوی ویروس و trojan ها، یا تزریق وابستگی های مشکوک در ساختار نرم افزار باشند که پروژه شما و سیستم عامل و سخت افزارتان را تحت تاثیر قرار میدهند و شاید هم عامل جاسوسی باشند!
در کل این error ، مشکل خاصی نیست. صرفا یک هشدار عادی ولی قابل توجه است.
آموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
پیغام Security Alert در یونیتی هاب ورژن های اخیر، برای هشدار مسیر دادن یونیتی هایی است که بصورت دستی(local) نصب شده اند. به این معنا، که ممکن است حاوی ویروس و trojan ها، یا تزریق وابستگی های مشکوک در ساختار نرم افزار باشند که پروژه شما و سیستم عامل و سخت افزارتان را تحت تاثیر قرار میدهند و شاید هم عامل جاسوسی باشند!
در کل این error ، مشکل خاصی نیست. صرفا یک هشدار عادی ولی قابل توجه است.
آموزش بازیسازی و برنامهنویسی
۱۲:۴۹
تخفیف بلک فرایدی متخصص بازیسازی دانشجویاردوره های طلایی یونیتی(بنده) و آنریل انجین(سجاد میرشبی عزیز) رو + به همراه برخی از دوره های مهم بازیسازی سایتبا تخفیف بسیار عالی
بر روی سایت قرار گرفته. تقریبا 20 ساعت بیشتر مهلت نیست(البته احتمالا تمدید بشه)
حتما از کوپن ها استفاده کنید چون محدودیت تعداد هم دارن. فعلا که زیر 120 کوپن باقی مونده!
استفاده از تخفیف و ورود به سایت دانشجویار
آموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
حتما از کوپن ها استفاده کنید چون محدودیت تعداد هم دارن. فعلا که زیر 120 کوپن باقی مونده!
استفاده از تخفیف و ورود به سایت دانشجویار
آموزش بازیسازی و برنامهنویسی
۱۲:۴۹
بازیسازان ایرانی، سه واحد درسی باید "اخلاق حرفه ای" پاس کنند واقعا.تا نحوه استفاده از Asset ها + اخلاق استفاده از Asset های داخلی و خارجی + خط مشی پلتفرمها و انواع لایسنس ها و همه اینها رو بیاموزنحالا این بنده خدا شاید نه، ولی واقعا خیلی از کسانیکه به سرعت وارد بازیسازی ایران میشن بصورت غیرحرفه ای، اصلا از کپی رایت داخلی هم حتی چیزی نمیدونند!
#حرف_دلآموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
#حرف_دلآموزش بازیسازی و برنامهنویسی
۱۲:۴۹
مشکل Race Condition ، یکی از رایجترین اشتباهات در کدنویسی 🩺
گاها در توسعه بازی یا نرم افزار، مشاهده میکنید که کدهای شما به خوبی نوشته شده اند، اما به خوبی کار نمیکنند. گاها در وضعیتی، ممکن است اجرای کدها با یکدیگر رقابت کنند و اولویت اجرای آنها به هم بریزد.این مشکل زمانی رخ میدهد که چند پردازش یا نخ (Thread) بهطور همزمان به منابع مشترک دسترسی پیدا کنند و ترتیب اجرای آنها بر نتیجه نهایی تأثیر بگذارد. این وضعیت میتواند منجر به باگهای غیرقابل پیشبینی و (گاها) خطرات امنیتی شود.
مشکل Race Condition چیست؟مشکل Race Condition (وضعیت رقابتی) یک اشکال رایج در برنامهنویسی همزمان (Concurrent Programming) است که زمانی رخ میدهد که دو یا چند نخ (Thread) یا پردازش (Process) بهطور همزمان به یک منبع مشترک(مانند متغیر، فایل، پایگاه داده) دسترسی پیدا کنند و ترتیب اجرای آنها بر نتیجه نهایی تأثیر بگذارد. اگر این دسترسیها بهدرستی همگامسازی نشده باشند، ممکن است نتایج نادرست یا غیرمنتظرهای تولید شود.
مشکل Race Condition میتواند منجر به مشکلات زیر شود: خطاهای منطقی در برنامه: مانند محاسبات اشتباه یا دادههای نادرست. گاها یک چیزی باید اولویت داشته باشد اما در خروجی نمیتوان متوجه شد که چه روند اجرایی ای برتری پیدا کرده و شمارا به اشتباه می اندازد. آسیبپذیریهای امنیتی: هکرها میتوانند از این آسیبپذیری برای دور زدن کنترلهای امنیتی استفاده کنند. برای مثال، در برخی سیستمهای بانکی، مهاجمان با ارسال همزمان چند درخواست برداشت، موفق به برداشت چندباره از یک حساب شدهاند. خرابی دادهها: در سیستمهای چندنخی، دادههای مشترک ممکن است بهصورت ناقص یا نادرست ذخیره شوند. رفتار غیرقابل پیشبینی: برنامه ممکن است در برخی اجراها درست کار کند و در برخی دیگر نه، که اشکالزدایی را بسیار دشوار میکند.
چگونه Race Condition را تشخیص دهیم؟تشخیص Race Condition معمولاً دشوار است، اما روشهایی برای شناسایی آن وجود دارد:لاگ گیری(Log): بهترین و ساده ترین روش برای فهمیدن رقابت بین دستورات و شروط تستهای همزمانی (Concurrency Testing): اجرای چندباره برنامه با بار بالا برای آشکار شدن رفتارهای غیرمنتظره ابزارهای تحلیل استاتیک و داینامیک: مانند ThreadSanitizer، Helgrind یا ابزارهای مشابه در IDEها بررسی کد برای منابع مشترک بدون همگامسازی: اگر متغیر یا منبعی توسط چند نخ بدون قفل (Lock) استفاده شود، مشکوک به Race Condition است.
در وهله های سخت تر، برای جلوگیری یا رفع Race Condition، از تکنیکهای همگامسازی استفاده میشود:
اول Locks (قفلها): سادهترین روش برای جلوگیری از دسترسی همزمان به منابع مشترک. با استفاده از mutex یا synchronized در زبانهایی مانند Java یا threading.Lock در Python.
دوم Semaphores: برای کنترل تعداد نخهایی که به یک منبع دسترسی دارند.
سوم Atomic Operations: استفاده از عملیات اتمی که بهصورت ذاتی غیرقابل تقسیم هستند.
چهارم Thread-safe Data Structures: استفاده از ساختارهای دادهای که برای استفاده همزمان طراحی شدهاند.
پنجم Avoid Shared State: طراحی برنامه بهگونهای که نیاز به اشتراک منابع بین نخها به حداقل برسد.
(شرط اتمی (Atomic Condition) یا عملیات اتمی (Atomic Operation) به عملیاتی گفته میشود که بهصورت کامل و بدون امکان توقف یا مداخله توسط نخ یا پردازش دیگر انجام میشود. یعنی این عملیات یا بهطور کامل انجام میشود یا اصلاً انجام نمیشود، و هیچ حالت میانی یا ناقصی ندارد.)
🧪 مثال ساده از Race Conditionفرض کنید دو نخ بهطور همزمان مقدار یک متغیر counter را افزایش دهند:
counter = 0
def increment(): global counter for in range(1000):
counter += 1
در این حالت، مقدار نهایی counter ممکن است کمتر از مقدار مورد انتظار باشد، چون عملیات counter += 1 اتمی نیست. برای رفع این مشکل باید تکنیک زیر را انجام داد:
import threading
counter = 0
lock = threading.Lock()
def increment():
global counter
for in range(1000): with lock: counter += 1
البته گاها مشکل Race Conditon (شرط رقابتی) با جابجا کردن کدها در توابع اولویت دار حل میشود. ممکن است اسکریپتی بالاتر یا پایینتر باشد، یا در تابعی باشد که زودتر اجرا میشود، یا تابعی باشد که شرط اجرای آن دیرتر از تابعی دیگر اجرا میشود و ... که یکی از مهمترین مشکلها در بازیسازی و توسعه نرم افزار است و باید کمی وقت گذاشته شده و با log گیری حل شود.
#مطلب_کمکی | #مطلب_آموزشیآموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
گاها در توسعه بازی یا نرم افزار، مشاهده میکنید که کدهای شما به خوبی نوشته شده اند، اما به خوبی کار نمیکنند. گاها در وضعیتی، ممکن است اجرای کدها با یکدیگر رقابت کنند و اولویت اجرای آنها به هم بریزد.این مشکل زمانی رخ میدهد که چند پردازش یا نخ (Thread) بهطور همزمان به منابع مشترک دسترسی پیدا کنند و ترتیب اجرای آنها بر نتیجه نهایی تأثیر بگذارد. این وضعیت میتواند منجر به باگهای غیرقابل پیشبینی و (گاها) خطرات امنیتی شود.
مشکل Race Condition چیست؟مشکل Race Condition (وضعیت رقابتی) یک اشکال رایج در برنامهنویسی همزمان (Concurrent Programming) است که زمانی رخ میدهد که دو یا چند نخ (Thread) یا پردازش (Process) بهطور همزمان به یک منبع مشترک(مانند متغیر، فایل، پایگاه داده) دسترسی پیدا کنند و ترتیب اجرای آنها بر نتیجه نهایی تأثیر بگذارد. اگر این دسترسیها بهدرستی همگامسازی نشده باشند، ممکن است نتایج نادرست یا غیرمنتظرهای تولید شود.
مشکل Race Condition میتواند منجر به مشکلات زیر شود: خطاهای منطقی در برنامه: مانند محاسبات اشتباه یا دادههای نادرست. گاها یک چیزی باید اولویت داشته باشد اما در خروجی نمیتوان متوجه شد که چه روند اجرایی ای برتری پیدا کرده و شمارا به اشتباه می اندازد. آسیبپذیریهای امنیتی: هکرها میتوانند از این آسیبپذیری برای دور زدن کنترلهای امنیتی استفاده کنند. برای مثال، در برخی سیستمهای بانکی، مهاجمان با ارسال همزمان چند درخواست برداشت، موفق به برداشت چندباره از یک حساب شدهاند. خرابی دادهها: در سیستمهای چندنخی، دادههای مشترک ممکن است بهصورت ناقص یا نادرست ذخیره شوند. رفتار غیرقابل پیشبینی: برنامه ممکن است در برخی اجراها درست کار کند و در برخی دیگر نه، که اشکالزدایی را بسیار دشوار میکند.
در وهله های سخت تر، برای جلوگیری یا رفع Race Condition، از تکنیکهای همگامسازی استفاده میشود:
(شرط اتمی (Atomic Condition) یا عملیات اتمی (Atomic Operation) به عملیاتی گفته میشود که بهصورت کامل و بدون امکان توقف یا مداخله توسط نخ یا پردازش دیگر انجام میشود. یعنی این عملیات یا بهطور کامل انجام میشود یا اصلاً انجام نمیشود، و هیچ حالت میانی یا ناقصی ندارد.)
🧪 مثال ساده از Race Conditionفرض کنید دو نخ بهطور همزمان مقدار یک متغیر counter را افزایش دهند:
counter = 0
def increment(): global counter for in range(1000):
counter += 1
در این حالت، مقدار نهایی counter ممکن است کمتر از مقدار مورد انتظار باشد، چون عملیات counter += 1 اتمی نیست. برای رفع این مشکل باید تکنیک زیر را انجام داد:
import threading
counter = 0
lock = threading.Lock()
def increment():
global counter
for in range(1000): with lock: counter += 1
البته گاها مشکل Race Conditon (شرط رقابتی) با جابجا کردن کدها در توابع اولویت دار حل میشود. ممکن است اسکریپتی بالاتر یا پایینتر باشد، یا در تابعی باشد که زودتر اجرا میشود، یا تابعی باشد که شرط اجرای آن دیرتر از تابعی دیگر اجرا میشود و ... که یکی از مهمترین مشکلها در بازیسازی و توسعه نرم افزار است و باید کمی وقت گذاشته شده و با log گیری حل شود.
#مطلب_کمکی | #مطلب_آموزشیآموزش بازیسازی و برنامهنویسی
۱۲:۵۰
#معرفی_سایتآموزش بازیسازی و برنامهنویسی
۱۷:۱۸
SceneRefrence.cs
۲.۲۷ کیلوبایت
بعلت اینکه کلاس SceneAsset فقط در Unity Editor کاربرد داره و زیرمجموعه همین namespace هست، و تمامی کلاسها و توابع Unity Editor در خروجی و export هایی مثل ویندوز، اندروید و ... کارآیی ندارند، بنده یک کلاس مشابه SceneAsset نوشتم به اسم SceneRefrence تا بتونید برای خارج از یونیتی هم با asset های صحنه کار کنید و اونهارو به شکل لیست آرایه دربیارید.فقط لطفا کپی رایت رو رعایت کنید 

#اسکریپتآموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
#اسکریپتآموزش بازیسازی و برنامهنویسی
۱۷:۱۹
گاها متن شما در text mesh pro به این شکل در میاد. اگر مشکل شما با تعویض فونت حل نشد حتما بین حرف «قبل ر» و خود «ر» یک _ (همون کنترل J فارسی) قرار بدید تا مشکل حل بشه.
#حل_مشکل | #یونیتی | #unity
@Sajad_Ahmadi_Niat 🪔
#حل_مشکل | #یونیتی | #unity
۱۷:۲۰
میـلاد حضرت امیرالمومنیـن علی(ع) و بزرگداشت روز مرد مبارک باد 
🪻به حق این شب، ان شاالله که حال دل مردم ایران خوب باشه و هیچ مرد ایرانی ای شرمنده خانوادش نباشه ...
یک هدیه خوبی برای شما عزیزان دارم که خیلی روش وقت گذاشتم. اما قرار هست که براتون بصورت رایگان منتشرش کنم تا ازش استفاده کنید

@Sajad_Ahmadi_Niat 🪔
یک هدیه خوبی برای شما عزیزان دارم که خیلی روش وقت گذاشتم. اما قرار هست که براتون بصورت رایگان منتشرش کنم تا ازش استفاده کنید
۱۷:۲۱
شامل:- Nomo Playerprefs Monitorنمایش داده های playerprefs در حین بازی. نمایش و ویرایش آنها بصورت زنده.- Nomo Move To Scene Viewانتقال گیم آبجکت به نمای دید صحنه(Scene View) و جلوی چشم شما. فقط با یک کلیک یا میانبر ساده.- Nomo DLL Inspectorنمایش متدها، کلاسها و متغیرهای فایلهای کتابخانه ای DotNet به روش Reflection.- Nomo Mesh Pivot Utlityابزار تغییر Pivot در مش های سه بعدی به راحتی آب خوردن و به شکل حرفه ای.- Nomo URP Material Convertorتبدیل متریال های URP به Standard و Standard به URP. و تبدیل متریالها به Bi-Render.- Nomo Unity Package Listلیست نگهداری پکیج های یونیتی بصورت آسان و قابل دسترس. import پکیج موردنیاز با یک کلیک ساده! از کامپیوتر و اینترنت.- Nomo Unity Package Pro Toolsابزار نمایش محتوای داخلی پکیج، استخراج آن به داخل یا خارج پروژه، بسته بندی محتوای پروژه.- Nomo Asset Cleanerپاکسازی Asset های باحجم بالا و استفاده نشده در پروژه های یونیتی.- Nomo Asset Detectiveنمایش فایلها و دسته بندی asset ها. لیست کردن و حذف فایلهای استفاده نشده در پروژه.- Nomo Trash Toolsرهگیری فایلهای حذف شده. حذف ایمن فایلها در یونیتی.- Nomo ToDoتسک بندی کارها، برنامه ریزی، و لیست کردن کارهایی که باید انجام شود.- Nomo Autosaverذخیره ساز پروژه یونیتی، با قابلیت زمانبندی خودکار.- WorkTimeZone Offlineمناسب تیم ها و مدیران. برنامه آفلاین زمانبندی فعالیت کارمندان در یونیتی و تخصیص امتیاز به آنها.- WorkTimeZone Onlineمناسب تیم ها و مدیران. برنامه آنلاین زمانبندی فعالیت کارمندان در یونیتی و تخصیص امتیاز به آنها. به همراه پنل مدیریت یوزر ها- Github Easy Accessمناسب مبتدیان یا افرادی که میخواهند بصورت ساده و آسان با گیتهاب کار کنند. بارگذاری و Commit کردن، Pull، نمایش فایلهای پروژه و branch ها و افزودن Issue جدید.
لطفا با حفظ Copyright (لایسنس MIT) آنرا بین سایرین ایرانیانی که نیاز دارند، منتشر کنید.پکیج را میتوانید از itch.io دانلود کنید (https://icerosestudio.itch.io/nomo-unity-editor-tools) ، ولی رایگان نیست. اما برای تمامی ایرانیان و فارسی زبانان توسعه دهنده بازی در یونیتی، این ابزار بصورت کاملا رایگان قرار داده شده است و *میتوانید در ادامه این پست در کانال، آنرا دانلود کنید *
#پکیج | #یونیتی | #unity | #سورس_کدآموزش بازیسازی و برنامهنویسی
۱۷:۲۲
Nomo Editor Tools 1.0.unitypackage
۲.۷۹ مگابایت
پکیج Nomo Editor Tools نسخه 1.0اتمام در 6 دی 1404 | انتشار در 12 دی 1404توسعه دهنده: #سجاد_احمدی نیتاستودیو رز یخی و ماکیا استودیو
شامل:15 ابزار برای Editor یونیتی- Nomo Playerprefs Monitor- Nomo Move To Scene View- Nomo DLL Inspector- Nomo Mesh Pivot Utlity- Nomo URP Material Convertor- Nomo Unity Package List- Nomo Unity Package Pro Tools- Nomo Asset Cleaner- Nomo Asset Detective- Nomo Trash Tools- Nomo ToDo- Nomo Autosaver- WorkTimeZone Offline- WorkTimeZone Online- Github Easy Access
نحوه استفاده:- پکیج unity را در پروژه import کنید.- سپس میتوانید ابزارها را از منوی Tools ، یا از میانبر(Hotkey) موردنظر فراخوانی کنید.
برای توسعه این پکیج، خیلی وقت گذاشته شده. لطفا با حفظ Copyright (لایسنس MIT) آنرا بین سایرین ایرانیانی که نیاز دارند، منتشر کنید.
آموزش بازیسازی و برنامهنویسی
️:
@Sajad_Ahmadi_Niat 🪔
شامل:15 ابزار برای Editor یونیتی- Nomo Playerprefs Monitor- Nomo Move To Scene View- Nomo DLL Inspector- Nomo Mesh Pivot Utlity- Nomo URP Material Convertor- Nomo Unity Package List- Nomo Unity Package Pro Tools- Nomo Asset Cleaner- Nomo Asset Detective- Nomo Trash Tools- Nomo ToDo- Nomo Autosaver- WorkTimeZone Offline- WorkTimeZone Online- Github Easy Access
نحوه استفاده:- پکیج unity را در پروژه import کنید.- سپس میتوانید ابزارها را از منوی Tools ، یا از میانبر(Hotkey) موردنظر فراخوانی کنید.
برای توسعه این پکیج، خیلی وقت گذاشته شده. لطفا با حفظ Copyright (لایسنس MIT) آنرا بین سایرین ایرانیانی که نیاز دارند، منتشر کنید.
آموزش بازیسازی و برنامهنویسی
۱۷:۲۳
بازارسال شده از صنایع خلاق نسیم مهر
Avalaible NowOn itch.io (https://icerosestudio.itch.io/nomo-unity-editor-tools):https://icerosestudio.itch.io/nomo-unity-editor-tools
#Assets | #Editor | #Unity@nasim_mehr_creative_industries
۱۷:۳۰