<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های مهدی رحمتی</title>
        <link>https://virgool.io/feed/@MahdiiRii</link>
        <description>موسس تیم BlueAge - بازیساز</description>
        <language>fa</language>
        <pubDate>2026-04-15 10:26:24</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/190534/avatar/WAIfD0.jpg?height=120&amp;width=120</url>
            <title>مهدی رحمتی</title>
            <link>https://virgool.io/@MahdiiRii</link>
        </image>

                    <item>
                <title>مهارت افزایی و پیدا کردن شغل (از یادگیری تا کاریابی)</title>
                <link>https://virgool.io/@MahdiiRii/skillandjob-dqpzgcwq1lyw</link>
                <description>اگه تصمیم گرفتی مهارت‌هات رو ارتقا بدی یا وارد بازار کار بشی، با ابزارها و روش‌هایی که امروزه در دسترسه، می‌تونی راحت‌تر و هدفمندتر حرکت کنی.این متن یه نقشه راه ساده از یادگیری تا پیدا کردن کار رو ترسیم می‌کنه:1. قدم اول، یادگیری مهارت‌:درخصوص آموزش، بزرگترین دانشگاه مجازی جهان درحال حاضر یوتیوب هست.خیلی راحت دوره های 0 تا 100 خیلی خوبی داخلش پیدا میکنی که معمولا پروژه محور هستن و مطالب خوبی آموزش میدن.پس برای آموزش و ارتقای اسکیل ها بهترین گزینه بنظر من یوتیوب هست و فقط کافیه بدونی دنبال چی هستی...حالا درخصوص ارتباط گیری با فضای کار، ابتدا نیازه رزومه ای از خودتون تهیه کنید و خودتون و استعدادهاتون رو کامل معرفی کنید.2. قدم دوم، ساخت رزومه:قبل از هر چیزی یه رزومه منظم و با جزئیات آماده کن. تو رزومه حتماً مهارت‌ها، تجربیات و توانایی‌هات رو به‌خوبی توضیح بده. یه رزومه قوی اولین قدم برای جلب نظر کارفرماست.بعضی سایت های کاریابی (مثل جابینجا و جاب ویژن) یه قالب آماده رزومه دارن که با پر کردن فیلد ها میتونی به راحتی اولین روزمه کاری ات رو بسازی.مرحله بعدی، باید جایی رو پیدا کنید که شرکت ها در اونجا آگهی استخدام قرار میدن (فرد یا شرکت)3. قدم سوم، پیدا کردن کار:برای پیدا کردن موقعیت شغلی مناسب، می‌تونی از سایت‌هایی مثل جابینجا ، جاب ویژن و...استفاده کنی. داخل این سایت ها کاربران چه در رول کارفرما و چه در رول کارجو پروفایل خودشون رو میسازن و اطلاعاتشون رو وارد میکنن.داخل این سایت ها لیست آگهی‌ها و جاب ها رو میتونی بررسی کنی و شغل‌هایی که به مهارت‌هات می‌خورن رو پیدا کنی و درخواستت رو براشون ارسال کنی.غیر از سایت های ایرانی، قطعات بسترهای غیر ایرانی با کاربران بیشتر برای ارتباط گیری وجود داره. مثل لینکدین که خودش یه مقاله جدا می‌طلبه!راه دیگه ای غیر از استخدام هست؟!4. روش‌های جایگزین:اگه به کار فریلنس علاقه داری، سایت‌هایی مثل پونیشا و کارلنسر وجود دارن. داخل این سایت‌ها کارفرمایان پروژه‌هایی تعریف میکنن که می‌تونی براشون پیشنهاد ارسال کنی و سر قیمت و زمان توافق کنی. البته توی این سایت ها ممکنه قیمت های الکی و غیرمنطقی هم زیاد ببینی!یک راه دیگه هم گروه های تلگرامی هست. معمولا در هر حوزه ای گروه هایی وجود داره برای اتصال کارفرما و پیمانکار.درنهایت به طور خلاصه اولین کاری که باید انجام بدی اینه که بتونی خودت رو در چندصفحه A4 توضیح بدی و بعد از طرق مختلف پوزیشن موردنظر خودت رو پیدا کنی و پیشنهاد بفرستی.</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Tue, 19 Nov 2024 14:03:34 +0330</pubDate>
            </item>
                    <item>
                <title>روش حل مشکل عدم سازگاری Visual Studio با Unity</title>
                <link>https://virgool.io/@MahdiiRii/%D8%B1%D9%88%D8%B4-%D8%AD%D9%84-%D9%85%D8%B4%DA%A9%D9%84-%D8%B9%D8%AF%D9%85-%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C-visual-studio-%D8%A8%D8%A7-unity-depvuxmzymew</link>
                <description>1. داخل یونیتی، وارد Edit → Preferences... → External Tools شوید و قسمت External Script Editor را بررسی نمایید. باید ویژوال استودیو آنجا ست شده باشد:2. به ویژوال استودیو بروید و در Tools → Options... → Tools for Unity باید چند گزینه را فعال (True) کنید مانند گزینه ی Show connectivity icon :3. ویژوال استودیو را ببندید و دوباره باز کنید.4. پروژه یونیتی را ری-ایمپورت کنید:5. بعد از ری-ایمپورت کردن پروژه، حال از منوی Assets گزینه Open c# project را انتخاب کنید.اگر با انجام موارد بالا همچنان مشکل وجود داشت:آن اسکریپتی که مشکل دارد را انتخاب کرده و روی آن کلیک راست کنید. سپس گزینه include in project را بزنید:موفق باشید ✅</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Sun, 04 Aug 2024 20:53:00 +0330</pubDate>
            </item>
                    <item>
                <title>اهمیت مشارکت کاربران در مراحل توسعه پروژه های نرم افزاری و بازی ها</title>
                <link>https://virgool.io/@MahdiiRii/%D9%85%D8%B4%D8%A7%D8%B1%DA%A9%D8%AA-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%A7%D9%86-%D8%AF%D8%B1-%D9%85%D8%B1%D8%A7%D8%AD%D9%84-%D8%AA%D9%88%D8%B3%D8%B9%D9%87-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1%DB%8C-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C-%D9%87%D8%A7-av84xlaikxnd</link>
                <description>در گذشته، مراحل توسعه نرم افزار (مثل نیازسنجی‌ها، اسکریپت و تست برنامه) به شکلی محرمانه انجام می‌شد و به هر حال کاربران نمی‌فهمیدند ما طی فرایند توسعه برنامه چه کاری انجام می‌دهیم.در پایان پروژه، پارچه سحرآمیز ما کنار می رفت و با اینکه انتظار میرفت با تشویق کاربران برای ارائه کارمان روبرو شویم، واکنش ها چنین بود، &quot;خب، میدونم که زحمت کشیدین، اما چیزی که می‌خواستم این بود که...&quot;.امروزه راز موفقیت در پروژه این است که به محض اینکه خروجی مناسب و قابل ارائه‌ای برای نشان دادن به کاربران داشتید، به آن ها نشان داده و آن‌ها را در پیشبرد پروژه سهیم کنید. اینکه که در مراحل اولیه توسعه به وجود مشکلات آن پی ببریم بسیار بهتر است تا اینکه پس از تکمیل پروژه متوجه وجود مشکل شویم!هرچه از جدول زمانبندی پروژه بیشتر بگذرد، هزینه تغییرات به طور صعودی بیشتر خواهد شد.زمان مورد نیاز برای برنامه نویسی دوباره، تست دوباره، بهینه سازی و... موجب تاخیر اساسی در پروژه می شود.به نقل از باربی دیویس (کارشناس ارشد pmp) :یک شرکت آموزشی را به یاد دارم که برای تغییر در یک نرم افزار سفارشی، مبلغ 5 میلیون دلار را هزینه کرده بود. ماجرا از این قرار بود که قبلا کدهایی اختصاص داده شده به هر محصول، رابطه منطقی با محصولات سفارش داده شده داشتند. برای مثال، 9100 می‌توانست نشان دهنده دستور العمل برای آموزگار باشد، 9400 سر فصل دروس برای مقاصد بازاریابی بود و خلاصه شما می‌توانستید تمام اقلام مورد نیاز خود را در سری 9x00 در همان صفحه نمایش سفارش دهد. هر روز، مدیران اجرایی شعب شرکت از نقاط مختلف دنیا محصولات آموزشی مشابهی را به طور مرتب سفارش می‌دانند و به سرعت کد مربوط به هر یک را حفظ میشدند. مثلا اگر شما شماره کد موردنیاز برای سفارش دفترچه راهنمای دانشجو را می دانستید، شماره های دیگر مربوط به سایر محصولات وابسته به آن به سرعت در ذهن‌تان ردیف می‌شدند و سفارش مورد نظر را در کوتاه‌ترین زمان انجام می‌دادید.در طراحی دوباره، تیم پروژه فراموش کردند سفارش دهی مورد استفاده کاربران در محیط واقعی را درنظر بگیرند.در طراحی جدید، هیچ رابطه منطقی بین محصولات وجود نداشت. بالفرض کد 3871 (که قبلا 9100 بود) کد دفترجه دانشجو بود، و کد دیسک دانشجو 6430 شده بود و کد دستوراعمل مربوط به آموزگار همان کلاس 2345 شده بود. در طراحی جدید نه تنها کاربر مجبور بود که هر محصول را دوباره جستجو کند، بلکه باید شماره های پیشین را هم فراموش می‌کرد چون در طرح جدید هر محصول در صفحه ای جداگانه قرار داشت.در نهایت، مدیران به خاطر اینکه در طراحی جدید، سفارش ها به کندی پیش‌ می‌رفت، عصبانی شده بودند و برای اصلاح این مشکل، هزینه و زمان از معیار مشخص شده فراتر رفت.و در پایان، به عنوان مدیر پروژه باید طوری برنامه ریزی کنید که کاربران با تیم توسعه دهنده در ارتباط باشند و به طور پیوسته در جریان روند توسعه قرار گیرند...به امید موفقیت های روز افزون#پروژه #مدیریت_پروژه #کاربران</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Sun, 28 Mar 2021 16:48:12 +0430</pubDate>
            </item>
                    <item>
                <title>نکاتی برای خواب بهتر برنامه نویسان</title>
                <link>https://virgool.io/@MahdiiRii/%D9%86%DA%A9%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AE%D9%88%D8%A7%D8%A8-%D8%A8%D9%87%D8%AA%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%D8%A7%D9%86-uxcthfl60b65</link>
                <description>سلام. شما به دلیل شغلی که داری، هر روز و یا هرساعت داری از ذهن خودت استفاده میکنی. نکته مهم اینه که عملکرد ذهن ما به نوع رفتار و نوع زندگی ما وابسطه است و با موظف هستیم که اون(ذهنمون) رو سالم نگهداریم. حالا این قضیه با خوردن غذای سالم، ورزش، مطالعه و بازی کردن امکان پذیره.اما این وسط یک چیز مهم جا افتاد، خواب کافی! بعضیهاحتیعادتدارنوقتیبهرختخوابمیرنتازهشبکههایاجتماعیروچککننوتقریبا1ساعتبعدتازهچشمشونگرممیشهودقتنمیکننکهدارنبههورمونملاتونینآسیبواردمیکنن. ملاتونین: هورمونی است که در غده صنوبری در مغز تولید می‌شود و به تنظیم چرخهٔ خواب و بیداری بدن کمک می‌کند.(ویکی پدیا)اگر زمان خواب شما رسیده باشه و در اون هنگام شما از موبایل، کامپیوتر ویا امثال اینها استفاده کنین، به دلیل نور آبی رنگی که از اینها ساطع میشه، از آزاد شدن هورمون ملاتونین جلوگیری میکنه و این قضیه به خواب شما آسیب میزنه!اینا یکسری از دلایل کم خوابی بود که برای هر کسی میتونه رخ بده. حالا ما به عنوان یک توسعه دهنده، بعضی اوقات مجبوریم طبق زمانبندی ای که داریم، فشرده کار کنیم، اما نباید بذاریم کار کردن مانع خواب ما بشه، چون همین کم خوابی خودش میتونه باعث عقب افتادن پروژه بشه...برخی از نکات مثبت خواب کافی:میزان خوابی که برای ما توصیه شده، بین 7 تا 8 ساعت خواب در شب است. اما این عدد برای برنامه نویسها (و حرفه های مشابه) شاید به 2 یا 3 ساعت وشاید هم به 0 ساعت برسه!!!! (این مشکل رو هممون داریم)* یک نکته جالب! خواب و استراحت کافی، یادگیری و یادسپاری کلمات رو تقویت میکنه. مثلا اگر وظایفی دارین که باید در مدت 2 هفته انجام بشه، استراحت کافی به شما کمک میکنه که تمام اونها رو بدون اینکه بنویسین حفظ کنین.استراحت کافی همچنین در تصمیم گیری ها کمک می کنه (یک مهارت بسیار مهم برای برنامه نویس ها)، چون بخش عمده ای از کدی که می نویسیم بر پایه تصمیم گیری ها و استفاده از منطق است. استراحت مناسب همچنین میتونه به از بین بردن سموم بدن کمک کنه و ذهن شما رو از نظر جسمی پاک کنه.در هنگام خواب، وسایل الکترونیکی رو سریع خاموش کنیدوقتی که قصد کردین به رختخواب برین، دیگه باید بیخیال موبایل و کامپیوتر بشین؛ مگر اینکه مثلا به یک موزیک خاص علاقه دارین و برای شنیدنش نیاز به موبایل دارین. اون هم باید طوری باشه که نور صفحه به شدت پایین باشه و زیاد جلوی چشم قرار نگیره که خواب شما رو مختل کنه.وقت کمتری رو به شبکه های اجتماعی اختصاص بدینمتاسفانه خیلی ها به این اعتقاد دارن که زندگی بدون اینستاگرام و یا هر شبکه اجتماعی دیگه خسته کننده اس و جدا شدن از اون یعنی جدا شدن از دنیا!!! این حرف قطعا چرته! قطعا میدونید که استفاده از رسانه های اجتماعی باعث ضعیف شدن مهارت ارتباط جمعی میشه و همچنین اختلالات پیش فعالی رو بوجود میاره. پیشنهاد میکنم ویدئو زیر که درباره (ترک رسانه اجتماعی) هست رو حتما ببینید:https://youtu.be/3E7hkPZ-HTkمدیتیشنبرخی از انواع مدیتیشن:Heart Rhythm :در این روش همانطور که از اسمش معلومه، با قلب و گردش خون کار داریم. این روش تنفس، گردش خون و سیستم عصبی بدن رو با هم هماهنگ میکنه و باعث ادغام روح، قلب، بدن و ذهن میشه.Guided Visualization :در این روش که یک تکنیک جدید است، با تصاویر و تصورات هدایت شده برای بهبود معنوی و کاهش استرس استفاده میشه.Qi Gong:این نوع مدیتیشن برای بهبود وضعیت تنفس و &quot;استراحت با آرامش بیشتر&quot; انجام میشه.Zazen:این همان مدیتیشن نشسته است. این سبک از مدیتیشن، به شما کمک میکنه تا افکار و تصوراتتون رو فراموش کنین.Mindfulness favorite:این روش خوراک برنامه نویس هاست و این امکان رو به ذهن میده تا آزادانه سرگردان بشه.انواع و اقسام دیگر مدیتیشن وجود داره که میتوانید از آنها برای آرامش روح و روان خودتون استفاده کنین.ملاتونینملاتونین یک ماده شیمیایی طبیعی در بدن شماست که به شما کمک میکنه تا بخوابید. اگر شما مجبورین که بدون خواب و یک شیفت &quot;مثلا 24 ساعتی&quot; کار کنید، استراحت کردن به دلیل از بین رفتن ملاتونین در طول روز (طبق تحقیقات انجام شده توسط دانشگاه مریلند) برای شما سخت تر میشه.چندتا نکته در مورد حفظ ملاتونین:استفاده نکردن از دارو بدون نسخه پزشکاگر نیاز داشتین که درطول روز استراحت کنین و نور مانع اینکار میشه، از چشم بند استفاده کنین.نور آبی ای که در دستگاه ها وجود داره (دارای طول موج کوتاه است)، هورمون تحریک کننده خواب (ملاتونین) رو بیش تر هر طول موج دیگری تحت تأثیر قرار میده.اگه مشکلی ندارید، هنگام خواب موسیقی آرام پخش کنینپخش موسیقی آرام در شب میتونه به شما در استراحت کمک کنه. به طور کلی موسیقی های آرام، به کاهش ضربان قبل، کاهش استرس و برخی هورمون ها کمک میکنه.نویسنده : Raymond Bryant Jrدر پایان...به عنوان یک دوست، از شما میخوام که اول به سلامتی خودتون فکر کنین بعد به پروژه هایی که تمومی ندارن! ?ما وقتی میخوایم یک خودروی سالم رو بخریم، انتظار داریم داخل اون سالم و تمیز باشه وگرنه انتخابش نمیکنیم. بدن ما هم همیطوره، اگه داخلش رو تمیز و سالم نگه نداریم، ارزش خودش رو از دست میده.به این نکته توجه کنین که ذهن شما منحصر به فرده و به هیچ کس دیگه ای جز شما داده نشده. پس ازش مراقبت کنیم.آرزو میکنم که سلامت و با عزت باشید...</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Tue, 19 May 2020 14:49:13 +0430</pubDate>
            </item>
                    <item>
                <title>سبک IDLE، ساده اما قوی</title>
                <link>https://virgool.io/cafegame/%D8%B3%D8%A8%DA%A9-idle-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A7%D9%85%D8%A7-%D9%82%D9%88%DB%8C-xrdxqghokw0j</link>
                <description>توی این پست قصد داریم درمورد سبک idle (سبکی که در این سال ها با سرعت در حال اوج گیری است) و همچنین 7 تا از بهترین مکانیک های سبک Idle (که هنوز اشباع نشده و میتونه درآمد چشمگیری رو برای شما ایجاد کنه) صحبت کنیم.پیش گفتارسبک Idle، سبک نو ظهوری نیست و حتی در سال 2014 هم شاهد بازی هایی از جمله Cookie Clicker و Adventure Capitalist بودیم، اما چیزی که کاملا مشهوده، این سبک از سال 2016 اوج گیری خودش رو آغاز کرد:Source: Sensor Tower Estimates با نیم نگاهی به آمار بازی های Idle، میتوان روند رو به رشدی رو برای تعداد دانلود و درآمد در این ژانر مشاهده کرد که این مورد در بیشتر ژانرها صدق نمی کنه. مثلا پازل، شبیه سازی، کازینو و استراتژی همه به بازار تقریبا تثبیت شده (و یا حتی به رشد نزولی) رسیدند. طبق گفته ها، Idle همچنان کانون نوآوری در بازار موبایل است.سبک idle چیست❓https://youtu.be/Lu-RjxeDpU8بازی Idle، به بازی ای میگن که بدون ارتباط با Player هم جلو بره. برای مثال، شما شروع به استخراج سنگ از معدن میکنید اما بعد از اینکه چند سنگ را خارج کردین، سنگ ها خود به خود استخراج میشوند بدون آنکه شما دخالتی داشته باشین!بازی های Idle در هر زمان درحال اجرا هستن و دارن منابع جمع میکنن و خلاصه خودشون بازی رو جلو می برن. پس این یعنی، چه Player داخل بازی هست و چه داخل بازی نیست، این بازی داره اجرا میشه و هر زمانی که Player خواست، میتونه بازی رو ادامه بده. این چه حسی میده؟ این حس رو به Player القا میکنه که در هر دو صورت فعالیت و عدم فعالیت، داره جایزه میگیره...? مقایسه: Player A در روز اول پیشرفت بیشتری نسبت به Player B که تا روز 7 صبر کرده داشته چرا بازی idle محبوب است؟دلایل بسیار مختلفی وجود داره، اما به یکسری از دلایل عمده میشه اشاره کرد:حس موفقیت هر بار که به بازی برگردید.پیشرفت های زود به زود.حرکات فیزیکی بسیار کمی از کاربر میخواد.اهداف بسیار واضح و روشن در بازی.به طور کلی، مردم عاشق تماشای اعداد در حال افزایش هستن. (البته به غیر از قیمت ها)اولین بازی Idle چه بود؟?هرچند که پیدا کردن اولین بازی سخته، اما تصور خیلی ها اینه که Progress Quest اولین بازی Idle بود که در سال 2002 ساخته شد:Progress Quest 7 تا از بهترین مکانیک های سبک Idle1. Clicker Idleاین بازی ها معمولاً هسته ساده دارن: با نهایت سرعت برای تولید درآمد ضربه بزن!اولش خیلی حال میده اما بعد از یه مدت، خسته کننده میشه. ?پس برای اینکه یکم قضیه جذاب تر بشه، توسعه دهندگان تصمیم به ارتقای بازی گرفتن: از یه جایی به بعد باید تصمیم بگیری که پولت رو صرف چه چیز های کنی:* آیا می خواهید برای خرید بزرگی که باعث افزایش ده برابر درآمد شما می شود، پس انداز کنید؟* آیا ارتقا های ارزان قیمت را می خواهید انجام دهید؟و...با گذشت زمان، توسعه دهنده ها تغییراتی رو در گیم پلی اصلی امتحان کردند. مثلا Make It Rain! از Swipe بجای Tap استفاده کرده و اون رو نرم تر کرده. با این حال، مکانیک اصلی هیچ تغییری نکرده.2. Arcade Idleیعنی توی دنیای Idle، جز کلیک کردن هیچی چیزی وجود نداره؟ اگه این سوال برای شما پیش اومده، باید بگم که اصلن اینطور نیست. voodoo به جای اینکه از کلیک استفاده کنه، برای اولین بار بازی های ساده ای رو برای جمع آوری امتیاز طراحی کرده. مثل Planet Bomber:3. Merge Idleمکانیک Merge برای اولین بار در بازی هایی مثل Triple Town اجرا شد، اما با Merge Dragons و Merge Town به موفقیت دست پیدا کرد.Merge Town   /   Merge Planeخلاصه، موارد مشابه رو درون هم بکشید تا ادغام بشن و سطح بالا بره.یه اعتیاد عجیب و غریب! چون در دوره های زمانی کوتاه مدت، ذهن شما دستور میده که اینکار ساده رو بارها و بارها انجام بدین تا یه شیء جدیدتر رو خلق کنین!!!یه نکته جالب: معمولا Session Length این نوع بازی بالاست، چون ادغام ساختمان ها و خلق یه ساختمان بزرگتر، کاملا قانع کننده و منطقیه.دوباره بررسی میکنیم =&gt; من توی این بازی یک هدف دارم، منتظر یه ساختمان تکراری میمونم و به محض دریافت، اونها رو ادغام می کنم و این حلقه رو بینهایت بار تکرار می کنم...4. Idle Simulationبازی هایی مثل &quot;HayDay  - SimCity - پرسیتی&quot; رو قطعا بازی کردین. Idle، با الهام از ژانر شبیه سازی، تونسته یک مکانیک جدید رو خلق کنه.نام بازی هایی مثل Idle Factory Tactoon و Tycoon Idle Miner رو شنیدین؟اینها تقریبا تنها بازی های موفق این نوع سبک هستن اما بدین معنی نیست که بقیه جای پیشرفت نداشته باشن...اتفاقا این مکانیک، هنوز منتظر ایده های جدیده...?Tycoon Idle Minerدر Idle Simulation، دیگه سرعت برای شما فایده ای نداره و میشه گفت از خیلی لحاظ با مکانیک های قبلی فرق داره؛ بازی از شما می خواد که فقط بروز رسانی ها (ارتقا ساختمان ها) رو مدیریت کنید. فرایندهای ارتقا سریع، اما بسیار استراتژیک هستن.در بازی Tycoon Idle Miner، بروز رسانی معدن، به این معنی است که معدن در هر ثانیه درآمد بیشتری کسب کنه.سیستم این نوع بازی های طوری پیش میره که با گذر زمان، احساس ناکامی به شما دست میده و مجبور به ارتقای معدن میشید.5. Idle Managementبازی Groundhog Life، یک شبیه ساز مدیریت زندگی و همچنین Idle است.Groundhog Lifeتوی این بازی، شما میتونید چگونگی زندگی خودتون رو مشخص کنید، مثلا چندساعت در روز می خوابید؟ ویا اینکه آیا بیشتر وقت خود را در حال کار هستید یا درحال تحصیل؟Adam Telfer:با اینکه بسیاری از بازی های Idle از این مکانیک استفاده نکرده اند، این اعتیاد آورترین بازی idle است که من تا به حال بازی کرده ام!6. Story-driven IdleTrailer Park Boys: Greasy Moneyهمانطور که از اسم این مکانیک پیداست، اینجا قراره از داستان ها استفاده کنیم.بازی Trailer Park Boys که برای East Side Games هست، با استفاده از IP فیلم Trailer Park Boys، تونست به موفقیت برسه.7. Idle RPGرسیدیم به آخرین و سخت ترین مکانیکی که قراره دربارش صحبت کنیم...حتما بازی های Clicker Heroes و Tap Titans رو بررسی کنید. اینها جز قدیمی ترین بازی های این سبک بودن و نشون دادن که میشه مکانیک نبرد رو با Idle ترکیب کرد.ولی عنوان بهترین بازی این بخش، به Idle Heros میرسه.Idle Herosتیمی از قهرمانان رو جمع کنین، اونها رو با بهترین تجهیزات ممکن تجهیز کنین و با دوستانتان رقابت کنید.(نگه داشتن یک گیم پلی ساده و قانع کننده، اما ایجاد استراتژی بیشتر در نحوه مدیریت تیمی از قهرمانان و مدیریت منابع)(یک نمونه دیگر) Non-stop Knightدر پایان...همانطور که دیدین، مکانیک های idle محدوده عظیمی رو پوشش میدن و صرفا Clicker تنها مکانیک موجود نیست و Idle برخلاف بیشتر ژانرهای بازی های موبایلی، فضای زیادی برای نوآوری داره.به امید موفقیت های روز افزون...</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Mon, 18 May 2020 08:02:14 +0430</pubDate>
            </item>
                    <item>
                <title>بهینه سازی بازی (1) : &quot;Object Pool&quot; به زبان ساده (بخش 2) + پیاده سازی</title>
                <link>https://virgool.io/@MahdiiRii/%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-1-object-pool-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-%D8%A8%D8%AE%D8%B4-2-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-lih5zqqvmzok</link>
                <description>در بخش قبلی، از اینکه چرا از &quot;Object Pool&quot; استفاده میکنیم و چطور استفاده میکنیم، پرداخته شد. حالا میرسیم به بخش دوم:نکته آغازین: از اونجایی که Pool همچنان مجموعه ای از آبجکت هارو همراه خودش داره، وقتی هم که باهاش کاری نداریم همچنان در حافظه باقی است و جلوی Garbage Collector رو میگیره. پس برای اینکه این اتفاق نیافته، هر موقع با Pool کاری نداشتیم، بهتره که تمامی اتصالات و Reference هایی که به Pool مربوط میشن رو از بین ببریم.آیا ایجاد و حذف آبجکت ها، به CPU ربطی داره؟قطعا همینطوره! فرایند Instantiate() و Destroy() برای انجام کارشون نیازمند یک کمک کوچیک از سمت CPU هستن.حالا فکر کنید چندین آبجکت مرتب درخواست Instantiate() و Destroy() رو ارسال کنن. فاجعه رخ میده.پس فرایند Object Pooling، هوای CPU رو هم داره!object Pool در یک نگاه:پیاده سازی Object Pool در موتور Unity 3D (نمونه ساده)0. قبل از هر چیز، باید یک فایل C# در یونیتی ایجاد کنیم :)using UnityEngine;
using System.Collections.Generic;

public class Object_Pooler : MonoBehaviour
{
      
}1. چندتا متغییر کوچیک رو باید وارد کنیم:public class Object_Pooler : MonoBehaviour
{
        //آبجکتی که قصد داریم ازش در بازی زیاد استفاده کنیم
        public GameObject obj;
        
        //حد و مرز برای ایجاد آبجکت
        public int amount = 20;
        
        //آبجکت هایی که در ابتدای بازی ساخته میشن، داخل این لیست ذخیره و استفاده میشن
        public static List&lt;GameObject&gt; pooledObjects;}2. حالا در نقطه استارت بازی، دستور میدیم که تمام آبجکت هارو ایجاد کن و در حالت &quot;استراحت (غیرفعال)&quot; قرار بده:public class Object_Pooler : MonoBehaviour
{    
   //آبجکتی که قصد داریم ازش در بازی زیاد استفاده کنیم    
   public GameObject _obj;
        
   //حد و مرز برای ایجاد آبجکت
   public int _amount = 20;
        
   //آبجکت هایی که در ابتدای بازی ساخته میشن، داخل این لیست ذخیره و استفاده میشن
   public static List&lt;GameObject&gt; _pooledObjects;

   void Start()   
   {
         _pooledObjects = new List&lt;GameObject&gt;();
         
        for (int i=0; i &lt; _amount; i++)      
        {
           // ایجاد اولیه           
           GameObject new_obj = (GameObject)Instantiate(_obj);
                   
           // آبجکت رو روی حالت &amp;quotاستراحت(غیرفعال)&amp;quot میگذاریم           
           new_obj.SetActive(false);
           
           // آبجکتی که ایجاد کردیم رو به لیست اضافه میکنیم          
           _pooledObjects.Add(new_obj);
         }   
     }
}3. یک تابع برای استفاده از آبجکت های &quot;درحال استراحت&quot;، اضافه میکنیم:public class Object_Pooler : MonoBehaviour
{     
     public static GameObject GetPooledObject()
     {
         for (int i=0; i &lt; _pooledObjects.Count; i++)
         {
             //چک میکنیم که آبجکت مورد نظر غیرفعال باشد
             if (!_pooledObjects[i].activeInHierarchy)
                 return _pooledObjects[i];
         }

         return null;
     }
}4. حالا در یک اسکریپت دیگر، میتوانیم از Object Pool استفاده کنیم:public class Gun : MonoBehaviour
{       
   void Update()   
   {  
      if (Input.GetMouseButtonDown(0))           
          Shoot();
    }
      
    void Shoot()    
    {       
        // آبجکتی که در لیست وجود دارد و درحال استراحت است        
        GameObject obj = Object_Pooler.GetPooledObject();
        
        if (obj != null)        
        {
            obj.transfrom.position = Vector3.zero;
            
            //فعالسازی
            obj.SetActive(true);        
         }    
      }
}5. در آخر، به آبجکتی که از Gun شلیک میشه، میگیم بعد از فلان کار انجام شده، غیرفعال شود:مثلا بعد از 5 ثانیه، یا بعد از برخورد و...توی این مثال، برخورد رو در نظر گرفتم:public class Bullet : MonoBehaviour
{
	private void OnTriggerEnter(Collider other)
	{
		if (other.tag == &amp;quotPlayer&amp;quot)
			gameObject.SetActive(false);
	}
}توی این مثال، زمان رو در نظر گرفتم:public class Bullet : MonoBehaviour
{
    void OnEnable()
    {
        Invoke(&amp;quotDestroy&amp;quot, 5f);
    }

    private void Destroy()
    {
        gameObject.SetActive(false);
    }

    private void OnDisable()
    {
        CancelInvoke();
    }
}
مبحث Object Pool یکی از مباحث مهم بهینه سازی بازی است که امیدوارم به پیاده سازی بهتر اون کمک کرده باشم.</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Sun, 17 May 2020 01:39:19 +0430</pubDate>
            </item>
                    <item>
                <title>نکاتی برای کسانی که پشت کامپیوتر می نشینند</title>
                <link>https://virgool.io/@MahdiiRii/%D9%86%DA%A9%D8%A7%D8%AA%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%DA%A9%D8%B3%D8%A7%D9%86%DB%8C-%DA%A9%D9%87-%D9%85%D8%AF%D8%A7%D9%88%D9%85-%D9%BE%D8%B4%D8%AA-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D9%86%D8%B4%D8%B3%D8%AA%D9%86-xz2sztbryjvk</link>
                <description>چطوره این چندتا نکته ای که از چندتا دکتر و سایت‌های سلامت شنیدم رو جدی بگیریم :)1. آبرسانی به بدن: خیلی از ما بعضی اوقات اینقدر درگیر کار و غرق در مانیتور می‌شیم که اصلا یادمون نمیاد امروز چند لیوان آب خوردیم!! نکات زیر شاید یکم بدردمون بخوره:مشکلاتی که &quot;نرساندن آب&quot; برای بدن ما بوجود میاره:سردرد و سرگیجه.خواب آلودگی و عدم تولید اشک که این فشار زیادی رو به چشم وارد میکنه.کلیه سنگ (دراز مدت).و...راه حل:نوشیدن آب هر روز صبحکنترل نوشیدن آب (در روز بین 6 تا 8 لیوان)2. سندروم تونل کارپال:این سندروم تونل کاپال چیه؟ سندرم تونل کارپال یک بیماری شایع است که باعث درد، بی حسی و سوزن شدن در دست و بازو میشه.چطور این سندروم ایجاد و رشد میکنه؟موقعیت نادرست دستها هنگام استفاده از صفحه کلید.غلط گرفتن ماوس.راه حل:استفاده از یک صفحه کلید ارگونومیک و یک ماوس ارگونومیک.انجام ورزش 2 دقیقه ای عصب مدیان (عصب مدیان؟ عصب میانی یا مدیان از اعصاب مهم اندام فوقانی است که در ناحیه گردن از شبکه بازویی منشا گرفته و پس از طی مسیری طولانی در بازو و ساعد تا نوک انگشتان دست طی طریق میکند)ویدئو ورزش برای عصب مدیان: (حتما و حتما ببینید) https://youtu.be/uCW0rAdBcx0 3. کمر و گردن درد: لعنت به نشستن‌های طولانی. اما چه میشه کرد، مجبوریم...علایم:به اصطلاح &quot;خالی شدن پا&quot; و یا &quot;سوزن سوزن شدن&quot; در بالای یا زیر زانو.درد مستمر در قسمت میانی یا پایین کمر.درد شدید گردن.درد شانه.درد شدید در ناحیه کمر.از جا برخاستن دشوار میشه.راه حل:انجام تمرینات هوازی.کشش اندام.مصرف ویتامین D و کلسیم کافی.4. استرس: رسیدیم به چیزی که خیلی از ما دچارش هستیم چون بعد از چندین ساعت برنامه نویسی، حالا میخوای پروژه رو تحویل بدی و یکدفعه با یک باگ عجیب و غریب روبه رو میشی. لعنت بهش :(در چه موقعیت‌هایی استرس سراغمون میاد؟معمولا وقتی که سرعت اینترنت داغون میشه و ناامیدی میاد سراغمون.مدیریت ضعیف پروژه‌ها.محیط کاری ناسالم و مزخرف.و...راه حل:انجام ورزش منظم.خواب کافی.تنظیم نور صفحه نمایش!و در آخر، استرش نداشته باشید :|5. رژیم غذایی: قبول دارین شما آنچه می‌خورید هستید؟ رژیم غذای سالم باعث میشه مغز به بهترین عملکرد خودش دست پیدا کنه.مضرات رژیم غذای ناسالم:اضافه وزن.خطر ابتلا به بیماری‌ها بسیار بالاتر میره (مثل فشار خون و...)پایین اومدن بهره وری.ایجاد استرس!!!!راه حل:میوه و سبزیجات زیاد مصرف کنید. من خودم وقتی رفتم دکتر تغذیه، به زور بهم فهموند که باید روزی 2 واحد میوه بخورم. (هر 1 واحد؟ حدودا یک سیب متوسط)مصرف ماهی، ویتامین C، ویتامین B، ویتامین D و...آبرسانی منظم به بدن.6. استراحت‌های دوره ای: دیدین بعضی وقتا که دستتون رو از روی کیبورد برمیدارین و همراه یک حرکت کششی میگین &quot;آخیشش!! :)&quot; چه لذت خوبی داره؟خطراتی که اگر میان کارمون وقته نندازیم، سراغمون میان:کاهش جریان خون در قسمتهایی مانند ریه‌ها.افزایش فشار خون.چاقی.فشار اومدن به بدن و از دست دادن فرم بدن.درد و بیچارگی.راه حل :)هر 5 تا 10 دقیقه یه استراحت کوچولی انجام بدین.زیاد آب بخورید تا مجبور بشین به خاطر اون برین دستشویی.-----تصاویر و ویدئو ضمیمه: https://youtu.be/Fc-Csmlv1b0  https://virgool.io/p/xz2sztbryjvk/%F0%9F%93%B7 امیدوارم به دوستانی که مثل خودم از کامپیوتر زیاد استفاده میکنن و ممکنه به فکر خودشون نباشن، کمکی کرده باشم. روز خوش.</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Fri, 15 May 2020 13:36:28 +0430</pubDate>
            </item>
                    <item>
                <title>بهینه سازی بازی (1) : &quot;Object Pool&quot; به زبان ساده (بخش اول)</title>
                <link>https://virgool.io/@MahdiiRii/%D8%A8%D9%87%DB%8C%D9%86%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A8%D8%A7%D8%B2%DB%8C-1-object-pool-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%D8%A7%D8%AF%D9%87-gz2hwyhmb9fe</link>
                <description>با این کار، قصد داریم عملکرد بازی و memory رو بهبود بدیم؛ منظور این است که بجای اینکه memory  رو برای ایجاد یک شیء جدید خرج کنیم، یک شیء رو چندبار استفاده میکنیم. این قابلیت به ما اجازه میده تمرکز و نگرانی خودمون رو بیشتر روی افکت های بصری بذاریم تا عملکرد این قضیه.وقتی که ما برای کنسول ویا موبایل ها بازی میسازیم حسابش باPC کاملا جداست چون ما توی موبایل محدودیت حافظه داریم و از طرفی کاربر از ما انتظار داره که بهترین عملکرد رو بهش ارائه بدیم.حال فکر کنید با این محدودیتی که داریم، حافظهmemory به بخش های کوچک تقسیم بشه(تکه تکه بشه)... فاجعه اس.تکه تکه شدن(Fragmentation) یعنی اینکه کل فضای آزادی که در اختیار داریم، به قسمت های کوچکتر حافظه شکسته بشه. کل فضای ما ممکنه زیاد باشه اما وقتی حافظه تکه تکه بشه مشکل سازه. مثلا اگر ما 32 بایت آزاد داریم، اون به دو قسمت 16 بایتی تقسیم میشه و وقتی بخوایم یک آبجکت 24 بایتی رو بهش اختصاص بدیم، قطعا نمی تونیم.توجه کنید که حتی اگه این fragmentation جزئی هم باشد، بازهم میتونه به بازی آسیب بزنه.پس از اونجایی که این fragmentation ممکنه عملکرد بازی روی پایین بیاره، باید خیلی مراقب باشین که چطور از حافظه دارین استفاده میکنین.حالا یک کار ساده برای اینکه ای قضیه اتفاق نیافته چیه؟یک تکه بزرگ رو از همون اول بازی از حافظه بردارید و تا آخر بازی اون رو آزاد نکنید. (?)حالا دیگه میتونیم توی اون قسمتی که ایجاد کردیم، آزادانه آبجکت ها رو ایجاد و نابود کنیم.شفاف تر شدن قضیه:یک کلاس برای pool تعریف کنید که مجموعه ای از آبجکت هارو توی خودش داره و اون آبجکت ها از دو حالت تبعیت می کنن: &quot;درحال استفاده&quot; یا &quot;در حال استراحت&quot;(منظور از درحال استراحت این است که آبجکت درحال حاضر استفاده نمیشود). با شروع بازی(استارت اولیه)، کل مجموعه ایجاد میشه و حالت اولیه همه روی &quot;در حال استراحت&quot; قرار میگیره.حالا وقتی میخواید از یک آبجکت جدید استفاده کنین، Pool رو برای اینکار صدا میزنید. Pool حالت آبجکت مورد نظر رو روی &quot;درحال استفاده&quot; قرار میده و در بعد از کار اون به &quot;در حال استراحت&quot; برمیگردونه. با این حساب، بدون استفاده اضافی از حافظه، ما میتونیم چندین آبجکت رو ایجاد و ازبین ببریم.توجه کنین که برای Pool (با توجه به نیاز های بازی) حد و مرزی رو قائل بشین وگرنه حافظه رو الکی برای آبجکت های غیر ضروری هدر میده. همچین یادتون باشه که از یک Pool وحشتناک بزرگ استفاده نکنین، هرچی Pool کوچکتر باشه، فضای حافظه برای چیزهای دیگه آزاد تره.کجا Object Pool  استفاده میشه؟1. از این قابلیت بیشتر برای جلوه های بصری (مثل Particle System) استفاده میشه.2. موقعی که باید به طور مکرر آبجکت بسازید و از بین ببرید.3. موقعی که با آبجکت های هم اندازه طرف هستید.و...</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Fri, 15 May 2020 08:24:01 +0430</pubDate>
            </item>
                    <item>
                <title>پنج کشور برتر برای فرایند Soft-Launch بازی های Hyper Casual (سال 2020)</title>
                <link>https://virgool.io/@MahdiiRii/%D9%BE%D9%86%D8%AC-%DA%A9%D8%B4%D9%88%D8%B1-%D8%A8%D8%B1%D8%AA%D8%B1-%D8%A8%D8%B1%D8%A7%DB%8C-%D9%81%D8%B1%D8%A7%DB%8C%D9%86%D8%AF-soft-launch-%D8%A8%D8%A7%D8%B2%DB%8C-%D9%87%D8%A7%DB%8C-hyper-casual-a0wgu9mrztmi</link>
                <description>بازی های Hyper-Casual مزایای منحصر به فردی نسبت به بقیه ژانرها دارند. برای مثال، طراحی بسیار ساده آنها، حداقل نیاز به بومی سازی دارد و همچنین میانگین CPI آنها 10 برابر ارزانتر از سایر ژانرها است!!حال به بررسی اطلاعات زیر که محصول تلاش تیم تحقیقات Tenjin است می پردازیم.1- برزیل:نرخ CPI پلتفرم Android: حدود 8 سنتنرخ CPI پلتفرم IOS: حدود 11 سنتبرزیل در سالهای اخیر به دلیل مالیات بالا، تحریم ها و نوسانات اقتصادی سال های سختی را از نظر بازار موبایل سپری کرده است. اما خوشبختانه، هیچ یک از این چالش ها مانع ورود کشور به بازی های موبایل نشده است. بر اساس مطالعات، برزیل یکی از فعال ترین بازار ها در جهان است و در ایالات متحده، مقام دوم را از دیدگاه تعداد نصب دارد.2- مکزیک:نرخ CPI پلتفرم Android: حدود 4 سنتنرخ CPI پلتفرم IOS: حدود 11 سنتدر این کشور، حدود 45 درصد مردم، از تلفن های هوشمند استفاده می کنند که حدود 71 درصد این بازار را بازی های موبایل پوشش می دهد.صنعت بازی های ویدیویی مکزیک در سال 2018، حدود 1.6 میلیارد دلار درآمد تولید کرد و آن را به دوازدهمین بازار بزرگ بازی در جهان تبدیل کرد.3- ترکیه:نرخ CPI پلتفرم Android: حدود 5 سنتنرخ CPI پلتفرم IOS: حدود 10 سنتبا توجه به اینکه موبایل بخش کمتری از بازار بازی ترکیه را در مقایسه با سایر کشورهای این لیست دارد، در این کشور، بازی های موبایل در سال 2017، حدود 372 میلیون دلار درآمد داشته اند که می شود 45 درصد از کل درآمد بازی های ویدیویی ترکیه.بیشتر بازیکنان تلفن همراه در این کشور، در سنین 15 تا 65 سال قرار دارند.بازیکنان ترکیه ای همچنین ترجیح می دهند به جای پرداخت پول، تبلیغات را در بازی تماشا کنند.4- هند:نرخ CPI پلتفرم Android: حدود 8 سنتنرخ CPI پلتفرم IOS: حدود 11 سنتهند در حال حاضر یک مرکز قدرتمند بازی های موبایل در جهان است. این کشور همچنین یکی از بیست کشور برتر بازی های موبایل می باشد و درآمد آن در سال 2018 بالغ بر 1.1 میلیارد دلار بوده است.5- آرژانتین:نرخ CPI پلتفرم Android: حدود 3 سنتنرخ CPI پلتفرم IOS: حدود 11 سنتآرژانتین دارای مخاطبان بازی قابل توجهی در تمامی پلتفرم ها است که عنوان بیست و پنجم بازار را به خود اختصاص داده است.این کشور دربحث درآمد بازی های موبایل، در رتبه 19 قرار دارد و پیش بینی می شود تا سال 2022 به ارزش 332 میلیون دلار برسد. در این میان، 87 درصد بازیکنان، کاربران موبایل محسوب شده و 93٪ این جامعه، خواهان تبلیغات ویدیویی جایزه ای هستند.</description>
                <category>مهدی رحمتی</category>
                <author>مهدی رحمتی</author>
                <pubDate>Wed, 13 May 2020 01:14:35 +0430</pubDate>
            </item>
            </channel>
</rss>