<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Shamim Sanisales</title>
        <link>https://virgool.io/feed/@mimahs</link>
        <description>اسم من شمیمه ، یه دختر ۲۲ ساله برنامه نویس که تصمیم گرفته نوشتن را توی این روزای خاکستری بهاری شروع کنه و تجربه کسب کنه :)</description>
        <language>fa</language>
        <pubDate>2026-06-22 06:20:44</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/12825/avatar/FSe1tW.png?height=120&amp;width=120</url>
            <title>Shamim Sanisales</title>
            <link>https://virgool.io/@mimahs</link>
        </image>

                    <item>
                <title>یادگیری ماشین با پایتون - sklearn(قسمت دوم)</title>
                <link>https://virgool.io/@mimahs/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AF%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-sklearn-%D9%82%D8%B3%D9%85%D8%AA-%D8%AF%D9%88%D9%85-di0walvp71gj</link>
                <description>پایتون در ماشین لرنینگنیازی نیست که برای آموزش یادگیری‌ماشین برنامه‌نویس حرفه‌ای پایتون باشید. همانطور که می‌دانید اگر به یکی از زبان‌های برنامه‌نویسی و اصول و پایه برنامه‌نویسی آشنا باشید به سرعت می‌توانید سینتکس پایتون را آموخته و به پروگرمینگ با آن بپردازید.در این پست به معرفی کلی چند مفهوم اساسی در پایتون پرداخته شده که اطلاعات کافی برای فهم مثال‌های ساده با زبان پایتون را به شما می‌دهد.هنگام کار با پایتون برای درک کدهای آن نیاز است با چند نکته کلیدی این زبان برنامه‌نویسی آشنا باشید که شامل موارد زیر هستند :مقداردهی به متغیرها (assignment)شرط‌ها و حلقه‌ها (flow control)ساختمان داده‌ها (Data structures)توابع (functions)در ادامه ابتدا به توضیح موارد بالا میپردازیم.مقداردهی به متغیرها:در پایتون نیازی به تعریف تایپ برای متغیرها نیست و تنها کافی‌ست مقدار مورد نظر را در آن بریزیم که چند مورد از دیتاتایپ‌ها و نحوه مقداردهی به آن‌ها در زیر آمده‌است:متغیر رشته‌ای (string) :# Strings
data = &#039;hello world&#039;
print(data[0])
print(len(data))
print(data)پس از اجرا نتایج زیر را مشاهده خواهید کرد:h
11
hello worldمتغیر عددی:print(&#039;Numbers&#039;)
value = 123.1
print(value)
value = 10
print(value)پس از اجرا نتایج زیر را مشاهده خواهید کرد:Numbers
123.1
10بولین:# Boolean
a = True
b = False
print(a, b)پس از اجرا نتایج زیر را مشاهده خواهید کرد:(True, False)مقداردهی چندگانه:# Multiple Assignment
a, b, c = 1, 2, 3
print(a, b, c)پس از اجرا نتایج زیر را مشاهده خواهید کرد:(1, 2, 3)متغیر خالی:# No value
a = None
print(a)پس از اجرا نتایج زیر را مشاهده خواهید کرد:None کنترل جریان:در پایتون 3 تایپ اصلی برای کنترل جریان برنامه وجود دارد که شامل شرط if-then-else،  حلقه for  و حلقه while می‌باشد که به شکل زیر تعریف می‌شوند:شرط if-then-Else:value = 99
if value &gt;= 99:
        print(&#039;That is fast&#039;)
elif value &gt; 200:
	print(&#039;That is too fast&#039;)
else:
	print(&#039;That that is safe&#039;)پس از اجرا نتایج زیر را مشاهده خواهید کرد:That is fastحلقه for:# For-Loop
for i in range(10):
	print(i)پس از اجرا نتایج زیر را مشاهده خواهید کرد:0
1
2
3
4
5
6
7
8
9حلقه while:# While-Loop
i = 0
while i &lt; 10:
	print(i)
	i += 1پس از اجرا نتایج زیر را مشاهده خواهید کرد:0
1
2
3
4
5
6
7
8
9 ساختمان‌داده‌ها:چندین ساختمان داده مختلف در پایتون وجود دارد که در اینجا فقط به معرفی Tuple، List و Dictionary اکتفا میکنیم.Tuple:دیتااستراکچر Tuple از نوع فقط خواندنی است و به شکل زیر تعریف می‌شود:a = (1, 2, 3)
print(a)پس از اجرا نتایج زیر را مشاهده خواهید کرد:(1, 2, 3)List:مانند آرایه‌ها می‌توان با استفاده از ایندکس به عناصر لیست دسترسی پیدا کرد:mylist = [1, 2, 3]
print(&amp;quotZeroth Value: %d&amp;quot % mylist[0])
mylist.append(4)
print(&amp;quotList Length: %d&amp;quot % len(mylist))
for value in mylist:
print(value)پس از اجرا نتایج زیر را مشاهده خواهید کرد:Zeroth Value: 1
List Length: 4
1
2
3
4Dictionary:این نوع ساختمان‌داده به کلید-مقدار نیز معروف است و به شکل زیر تعریف می‌شود:mydict = {&#039;a&#039;: 1, &#039;b&#039;: 2, &#039;c&#039;: 3}
print(&amp;quotA value: %d&amp;quot % mydict[&#039;a&#039;])
mydict[&#039;a&#039;] = 11
print(&amp;quotA value: %d&amp;quot % mydict[&#039;a&#039;])
print(&amp;quotKeys: %s&amp;quot % mydict.keys())
print(&amp;quotValues: %s&amp;quot % mydict.values())
for key in mydict.keys():
print(mydict[key])پس از اجرا نتایج زیر را مشاهده خواهید کرد:A value: 1
A value: 11
Keys: [&#039;a&#039;, &#039;c&#039;, &#039;b&#039;]
Values: [11, 3, 2]
11
3
2توابع:وایت‌اسپیس‌ها یا فضاهای خالی در پایتون بسیار بااهمیت است و بلوک‌ها با اسپیس مشخص می‌شوند.در زیر مثالی برای محاسبه جمع 2 عدد با استفاده از یک تابع آورده‌شده‌است:# Sum function
def mysum(x, y):
return x + y
# Test sum function
print(mysum(1, 3))پس از اجرا نتیجه زیر را مشاهده خواهید کرد:4در پست بعدی به معرفی کتابخانه های پایه پایتون مانند Pandas، NumPy و MatPlotLib برای استفاده در ماشین لرنینگ خواهیم پرداخت.منابع : https://machinelearningmastery.com/crash-course-python-machine-learning-developers/ </description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Fri, 17 Apr 2020 19:03:39 +0430</pubDate>
            </item>
                    <item>
                <title>یادگیری ماشین با پایتون - sklearn (قسمت اول)</title>
                <link>https://virgool.io/coderlife/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-%D8%AF%D8%B1-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D9%85%D8%A7%D8%B4%DB%8C%D9%86-scikit-learn-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-axaocgdewusn</link>
                <description>امروزه کمتر کاربردی از تکنولوژی را می‌توان یافت که از یادگیری ماشین و هوش مصنوعی بهره نگرفته باشد. از شناسایی چهره و تحلیل احساسات گرفته تا تشخیص عیب در سیستم‌های صنعتی و نظارت‌های تصویری در زمینه‌های مختلف، همه و همه با به کارگیری یادگیری ماشین شاهد پیشرفتی غیرقابل وصف بوده اند.پایتون یکی از سریع‌ترین و قوی‌ترین پلتفرم‌ها در زمینه یادگیری ماشین است که این روزها با سرعت زیادی درحال رشد است و کتابخانه‌ها و ماژول‌های متعددی برای توسعه در زمینه‌ی یادگیری ماشین وجود دارد که از جمله آن‌ها می‌توان به ‌‌Pandas و Scikit Learn اشاره کرد که در این آموزش به معرفی و نحوه استفاده از کتابخانه Scikit learn اشاره‌هایی خواهیم کرد.قدم اول : معرفی Scikit Learn – کتابخانه مورد استفاده پایتون در یادگیری ماشینتاریخچه :اگر شما با اصول برنامه نویسی پایتون آشنایی دارید و به دنبال استفاده از کتابخانه قوی‌ای برای یادگیری ماشین هستید Scikit Learn کتابخانه مناسبی برای این کاربرد است. این کتابخانه اولین بار در سال 2007 توسط دیوید کورناپئو به عنوان یک پروژه تابستانه گوگل توسعه یافت. پیوستن متیو بروچر به این پروژه و شروع استفاده او از این کتابخانه به عنوان بخشی از پایان‌نامه خود و سپس پیوستن INRIA به پروژه در سال 2010 منجر به انتشار نسخه اولیه (نسخه بتا 0.1) این کتابخانه  به صورت عمومی در اواخر ژانویه 2010 شد.این پروژه در حال حاضر بیش‌از 30 مشارکت‌کننده فعال دارد و از طرف شرکت‌های بزرگی مانند INRIA، گوگل، TINYclues و بنیاد نرم‌افزار پایتون حمایت‌ مالی شده‌است.کتابخانه Scikit_Learn چیست ؟همانطور که می‌دانید برای یادگیری ماشین از روش‌های مختلفی شامل یادگیری بانظارت، یادگیری بدون‌نظارت، یادگیری نیمه‌نظارتی و یادگیری تقویتی استفاده می‌شود که کتابخانه Scikit Learn برای پیاده‌سازی  طیفی از الگوریتم‌های بانظارت و بدون‌نظارت در پایتون مناسب است.لایسنس این کتابخانه تحت مجوز BSD است و در بسیاری از توزیع‌های لینوکس و در زمینه‌های مختلف علمی و تجاری استفاده شده‌است.این کتابخانه زیرمجموعه کتابخانه SciPy [1]در پایتون می‌باشد که باید قبل از استفاده از Scikit Learn نصب گردد.پشته‌ی[2] کتابخانه‌های موردنیاز شامل موارد زیر هستند:·       NumPy : اساس این پکیج برای کار با آرایه‌های چند بعدی است·       SciPy : کتابخانه اساسی برای محاسبات علمی می‌باشد·       Matplotlib : برای رسم نمودارهای 2 بعدی و 3 بعدی استفاده می‌شود·       IPython : یک کنسول تعاملی پیشرفته برای کار با پایتون است·       Sympy : برای کار با نمادهای ریاضیات[3] استفاده می‌شود·       Pandas : برای کار با ساختمان داده‌ها و آنالیز داده‌ها کاربرد داردماژول‌ها و افزونه‌های ‌SciPy معمولا با Scikits نامگذاری می‌شوند؛ به همین دلیل کتابخانه ارائه شده برای یادگیری ماشین نیز با نام Scikit Learn نامگذاری شده‌است.قبل از استفاده از هر ماژول داشتن یک دید کلی از کتابخانه‌های مورد نیاز برای فهمیدن سطح پشتیبانی و کاربرد آن‌ها توصیه می‌شود. به این معنی که قبل از استفاده تمرکز و مطالعه‌ای بر روی حل نگرانی‌هایی از جمله استفاده راحت از کدهای ماژول، کیفیت کدها، مستندات و پرفورمنس آن کتابخانه داشته باشیم.اگرچه اینترفیس و رابط اصلی کار ما پایتون است ولی از کتابخانه‌های C مانند NumPy برای آرایه‌ها و عملیات ماتریسی، LAPACK، LibSVM و Cython نیز در مواردی استفاده می‌شود.صفات[4] چه چیزهایی هستند ؟تمرکز این کتابخانه فقط بر روی مدل‌سازی داده‌ها است و عمل لودکردن داده‌ها، دستکاری و جمع‌بندی داده‌ها را انجام نمی‌دهد. برای اضافه کردن این ویژگی‌ها به پروژه می‌توان از کتابخانه‌های دیگری مانند NumPy و Pandas استفاده کرد.چند مورد از مدل‌های معروف با استفاده از Scikit Learn شامل موارد زیر است: مدل Clustring: برای گروه‌بندی داده‌های بدون برچسب مانند KMeans استفاده می‌شود.مدل Cross Validation: برای تخمین عملکرد مدل‌های تحت‌نظارت بر داده‌های ناپیدا مورد استفاده قرار می‌گیردمدل Datasets:  برای آزمایش مجموعه داده‌ها و برای ایجاد مجموعه داده‌ها با ویژگی‌های خاص برای بررسی رفتار مدل استفاده می‌شود.مدل Dimensionality Reduction: برای کاهش تعداد ویژگی‌ها در داده برای خلاصه‌سازی، تصویرسازی و انتخاب برخی ویژگی‌ها استفاده می‌شود.مدل Ensemble methods: برای ترکیب پیش‌بینی‌ها از چندین مدل تحت نظارت استفاده می‌شود.مدل Feature Extraction: برای تعریف ویژگی‌ها در داده‌های تصویر و متن استفاده می‌شود.مدل Feature selection: برای شناسایی ویژگی‌های معنی‌دار و استفاده از آن‌ها برای مدل‌های تحت نظارت استفاده می‌شود.مدل Parameter Tuning: برای به‌دست آوردن بهترین خروجی از مدل‌های تحت‌نظارت استفاده می‌شود.مدل Manifold Learning: برای خلاصه‌سازی و ترسیم داده‌های چندبعدی پیچیده استفاده می‌شود.مدل Supervised Models: گستره‌ی بزرگی از متدها است که شامل مدل‌های خطی تعمیم‌یافته، متدهای تنبل، روش‌های تجزیه و تحلیل داده، شبکه عصبی، ماشین‌های بردار پشتیبان و درخت تصمیم می‌باشد.مثال: کلاس بندی و رگرسیون با درخت‌هادر اینجا با مثالی ساده کارکرد این کتابخانه را نشان می‌دهیم.در این مثال از الگوریتم کلاس‌بندی درخت تصمیم بر روی دیتاست iris استفاده می‌کنیم. دیتاست iris دیتاستی شامل 150 دیتا با 4 ویژگی است که با توجه به این صفات، 150 گل زنبق موجود در دیتاست را به 3 کلاس تقسیم‌بندی می‌کند.کلاس‌بندی را ابتدا بر روی داده‌های آموزشی انجام می‌دهیم و در ادامه با داده‌های تست موجود صحت مدل ساخته شده را مورد سنجش قرار می‌دهیم؛ و در آخر دقت کلاس‌بندی و ماتریس درهم‌ریختگی چاپ می‌شود.پس از اجرای کدهای بالا خروجی ما به صورت زیر نمایش داده می‌شود:به عنوان کاربران پر استفاده از این کتابخانه می‌توان به Inria، Mendeley، wise.io، Evernote،Telecom ParisTech  و AWeber اشاره‌کرد. اگرچه این آمار مربوط به شرکت‌هایی است که استفاده خود از این کتابخانه را اطلاع داده‌اند، به طور کلی صدها کمپانی کم یا زیاد از این ماژول در پروژه‌های خود استفاده می‌کنند زیرا این کتابخانه نتیجه مناسبی دارد و برای  پروژه‌های پیش‌تولید و پروژه‌های کامل مناسب است و آن‌ها را تحت پوشش قرار می‌دهد.مراجع:https://scikit-learn.org/https://machinelearningmastery.com/a-gentle-introduction-to-scikit-learn-a-python-machine-learning-library/[1]Scientific Python[2] Stack[3]Symbolic mathematics[4] features</description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Wed, 15 Apr 2020 22:23:52 +0430</pubDate>
            </item>
                    <item>
                <title>داستان یه دختر معمولی ...</title>
                <link>https://virgool.io/@mimahs/%D8%AF%D8%A7%D8%B3%D8%AA%D8%A7%D9%86-%DB%8C%D9%87-%D8%AF%D8%AE%D8%AA%D8%B1-%D9%85%D8%B9%D9%85%D9%88%D9%84%DB%8C-okaolrjl4yn2</link>
                <description>امروز میخواستم به جای نوشتن مطالب فنی داستان بگم ، داستان یه دختر معمولی ...ممکنه برای خیلی از ماها پیش اومده باشه که یه کاری را با ذوق و امید به آینده شلوغ می‌کنیم ولی در وسط های راه اتفاقاتی میوفته که به رویا و هدفمون شک می‌کنیم ، بعد کم کم ازش دلسرد می‌شیم تا جایی که دیگه حتی از اون هدف خوشمونم نمیاد بلکه فقط بنابه عادت ، ترس از تغییر یا ... ادامش می‌دیم ولی حالمون باهاش خوب نیست. دختر قصه ما این اتفاق براش افتاد ، با ذوق فراوان شروع کرد به یادگیری بازی سازی ولی وسط های راه انگیزش تموم شد، البته دلایل زیادی بود که چیشد که انگیزش تموم شد و یه بازه چندماهه همه چیز را رها کرد و سعی کرد بفهمه چی میخواد . دختر قصه ما اون موقع هنوز کوچیک بود و از تغییر می‌ترسید پس تصمیم گرفت یه شانس دیگه به انتخاب قبلیش بده ، پس دوباره به سمت هدف اولیش برگشت و انگیزش را تقویت کرد و دوباره شروع به کار کرد ، داستان خوب پیش میرفت براش ولی حس میکرد پیشرفتی از خودش نمیبینه اونجوری که راضیش کنه پس تصمیم گرفت اندروید شروع کنه ولی اینقدر انرژی منفی از اطراف دریافت کرد که تو شروع بیخیالش شد و دوباره بی انگیزگیش را مخفی کرد و به کارش ادامه داد .بعد مدت ها شرایط جوری شد که ناخوداگاه از اون شرایط دور شد و این بهش کمک کرد که بتونه قوی باشه و یه تصمیم مهم بگیره برای زندگیش که نتیجش شد مهم ترین تصمیم ۲۲ سال زندگیش.حالا دختر قصه ما داره با هدف و انگیزه یه چیز جدید را امتحان می‌کنه و تو این راه خوشحاله فقط تنها نگرانیش اینه که تو مسیر رسیدن به اون راه چه نقشه جایگزینی داشته باشه .تو این پست فقط می‌خواستم بگم اگر هر جایی از زندگیتون به هدفتون شک کردید مثل دختر قصه ما نباشید و قوی عمل کنید چون قوی نبودن و تصمیم نگرفتن تو طولانی مدت براتون عادت میشه و یهو چشم باز می‌کنید و می‌بینید خود واقعیتون فراموش شده و این دیگه شما نیستید ، یک آدمی هستید که با افسرده شدن و روتین شدن زندگیش فقط چند قدم فاصله داره .سعی کنید همیشه با آدمای خوشبین و مثبت ارتباط داشته باشید ، آدمای منفی نیاز به کمک دارن و باید بهشون کمک کرد ولی کمک بیش از حد باعث میشه خودتون به یکی از اونا تبدیل بشید .دختر قصه ما الان ما چند ماه پیش خیلی متفاوته و دوباره داره خود واقعیش و هدف و آیندش را پیدا میکنه و بی نهایت خوشحاله :) امیدوارم هر کس این متن را خوند و به چیزی شک کرد یا تصمیمی اومد داخل ذهنش بدون معطلی بره سمتش...این جمله را مدت هاست بهش رسیدم و خیلی دوسش دارم : &quot;‏میگه :یه سری از خستگیا هم هستن که واس خلاص شدن از شرشون فقط باید تصمیم گرفت؛ بعد از یه پیاده روی طولانی یا بعد از خوردن یه لیوان چایی گرم یا بعد از ایستادن زیر آخرین بارون... باید تصمیم گرفت.&quot;تو این روزای بارونی بعد از یه پیاده روی طولانی و نوشیدن یه لیوان چایی گرم تصمیم بگیرید :))</description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Sat, 11 Apr 2020 15:56:32 +0430</pubDate>
            </item>
                    <item>
                <title>Procedural Content Generation یا PCG</title>
                <link>https://virgool.io/@mimahs/procedural-content-generation-%DB%8C%D8%A7-pcg-ndgdft8f3yc7</link>
                <description>روند ساخت اجزای بازی بسیار پرهزینه و زمان‌بر است؛ و در این راه ما دچار چالش‌های فنی و مالی و زمانی زیادی خواهیم شد که در بعضی موارد بسیار آزاردهنده است و گاهی نیز همین مشکلات باعث شکست پروژه می‌شود.در این گزارش ما یک الگوریتم به نام PCG را معرفی خواهیم کرد که پایه آن بر اساس هوش مصنوعی و یادگیری ماشین است و به بازی‌سازان در طراحی مراحل بازی کمک بسیار زیادی می‌کند و علاوه بر حل چالش‌ها باعث بهترشدن کیفیت کار و یادگیری بیشتر نیز می‌شود.یک گروه بازی‌سازی به‌طورکلی از 4 قسمت تشکیل‌شده است: تیم دیزاین که وظیفه‌ی ارائه داستان اصلی بازی، چیدمان معماها، هدف نهایی بازی و ... را بر عهده دارد. تیم فنی و برنامه‌نویسی که وظیفه تولید کد اصلی بازی و ساخت پایه و اساس بازی را برعهده دارند. تیم هنری که وظیفه طراحی گرافیک بازی و اماده‌سازی محیط و شخصیت‌ها و ... را عهده دارد. تیم فروش و بازاریابی که وظیفه این تیم پس از اتمام پروژه آغاز می‌شود و بر روی تبلیغات و فروش برنامه تمرکز دارند.گروه‌های بازی‌سازی را می‌توان به دودسته کلی تقسیم کرد: بازی‌سازان مستقل گروه‌های بزرگکه چالش‌های این دو گروه در مواردی با یکدیگر متفاوت هستند.در گروه‌های مستقل چالش‌هایی از قبیل پرهزینه بودن روند تولید، در دسترس نبودن افراد متخصص به تعداد کافی و دشواری تولید پروژه و ... وجود دارد که ما برای بهبود این چالش‌ها به معرفی PCG خواهیم پرداخت.کاربردهای PCG در صنعت بازی‌سازی :این روش به تولید محتوای بازی به‌صورت خودکار توسط الگوریتم نوشته‌شده منجر می‌شود؛ همچنین باعث کاهش هزینه تولید می‌شود.در هنگام تولید و استفاده از این الگوریتم باید به این نکته دقت داشت کاهش هزینه تولید باعث افت کیفیت بازی نشود و همواره کاهش هزینه‌ها هم‌راستا و در جهت افزایش کیفیت بازی باشد.استفاده از PCG همچنین به همه‌ی اعضای گروه و مخصوصاً تیم دیزاین در جهت خلاق شدن کمک زیادی می‌کند و در مواردی باعث یادگیری بیشتر اصول دیزاین بازی‌ها نیز می‌شود، زیرا فرد با مشاهده‌ی خروجی از این روش به تحلیل آن پرداخته و موارد زیادی را از آن می‌آموزد و می‌تواند به‌صورت دستی قسمت‌هایی را برای بهتر شدن کیفیت به بازی اضافه یا از کم کند و حتی برای تولید محتوای بهتر در الگوریتم ساخت PCG تغییراتی به وجود آورد.این روش به تولید محتوای بازی به‌صورت خودکار توسط الگوریتم نوشته‌شده منجر می‌شود؛ همچنین باعث کاهش هزینه تولید می‌شود.در هنگام تولید و استفاده از این الگوریتم باید به این نکته دقت داشت کاهش هزینه تولید باعث افت کیفیت بازی نشود و همواره کاهش هزینه‌ها هم‌راستا و در جهت افزایش کیفیت بازی باشد.استفاده از PCG همچنین به همه‌ی اعضای گروه و مخصوصاً تیم دیزاین در جهت خلاق شدن کمک زیادی می‌کند و در مواردی باعث یادگیری بیشتر اصول دیزاین بازی‌ها نیز می‌شود، زیرا فرد با مشاهده‌ی خروجی از این روش به تحلیل آن پرداخته و موارد زیادی را از آن می‌آموزد و می‌تواند به‌صورت دستی قسمت‌هایی را برای بهتر شدن کیفیت به بازی اضافه یا از کم کند و حتی برای تولید محتوای بهتر در الگوریتم ساخت PCG تغییراتی به وجود آورد.لغت PCG در لغت از سه کلمه procedural به معنای استفاده از الگوریتم، generation به معنای تولید و content به معنای همه‌ی المان‌های مرتبط با بازی است.برای توضیح بهتر این واژه می‌توان procedural و  generation را به معنای استفاده از الگوریتم برای تولید معنا کرد ولی content تعریف گسترده‌تری دارد؛ می‌توان صحنه بازی، زمین‌بازی، نقشه بازی، داستان، هدف نهایی، ماموریت های داخل بازی، جایزه‌ها، مرحله‌ها، شخصیت‌ها، سلاح‌ها، جایزه‌ها، موسیقی، تکسچر، گرافیک و ... را زیرمجموعه content در نظر گرفت.این Content را می‌توان به چند دسته تقسیم کرد:واحدهای ابتدایی و بی‌تأثیر در بازی که شامل مواردی است که در هدف و داستان بازی هیچ‌گونه تأثیری ندارند و فقط جهت زیبایی محیط درصحنه قرارگرفته‌اند. در ساخت این موارد محل قرارگیری اهمیت زیادی ندارد زیرا کاربر تعاملی با آن‌ها ندارد ولی باید به این نکته توجه کرد که بر اساس منطق درصحنه گذاشته‌شده باشند برای مثال سنگ روی زمین و ابر در آسمان باشد و نه بالعکس.فضای بازی یا همان صحنه اصلی بازیسیستم بازی: این مورد نسبت به موارد قبلی از اهمیت بیشتری برخوردار است، زیرا کاربر در تعامل با سیستم بازی است. به‌عنوان‌مثال برای سیستم بازی می‌توان اکوسیستم محیطی یا همان تغییر آب‌وهوا در بازی به‌صورت رندوم، به این صورت که در هر بار بازی جدید کاربر با یک آب‌وهوای جدید مانند برفی، آفتابی، بارانی، ابری و ... روبه‌رو شود؛ یا شبکه‌های جاده که مناسب بازی‌هایی است که بین چند محل در حال انتقال هستند و هر بار با کمک الگوریتم جاده‌ی بین دو محل متفاوت از دیگری است را نام برد.داستان بازی که شامل اتفاقات بازی، مأموریت‌ها، جورچین‌ها و ... در هر مرحله است و باید دقت کافی در ساخت و تولید آن‌ها رعایت شود زیرا به بازی مسیر و هدف می‌دهند و اگر ضعیف ساخته شوند باعث از دست رفتن کاربر می‌شود.قواعد و اهداف بازی که یکی از مهم‌ترین قسمت‌ها برای تولید توسط PCG است. اگر هدف بازی و مجموعه قوانین آن خوب و سرگرم‌کننده نباشد، پروژه شکست‌خورده به‌حساب می‌آید و کاربری به آن جذب نمی‌شود. پس طراحی هدف بازی مناسب مهم‌ترین بحث در این روش است.نمونه کاربردهای PCG :ساخت دشمن‌ها در یک بازی و ایجاد مرحله جدید با آن‌ها، به این صورت که در هر بار اجرای بازی دشمن‌های جدید و درجاهای متفاوت ساخته شوند.تولید اسلحه و ویژگی‌های کمکی با توجه به ویژگی‌هایی که سایر بازیکنان در بازی به دست آورده‌اند، این قابلیت دربازی‌های آنلاین کاربرد دارد؛ به‌عنوان‌مثال در بازی به بازیکن شماره یک اسلحه‌ای داده می‌شود که برد آن قوی است و به‌راحتی می‌تواند حریف را با کمک آن شکست دهد، در عوض به بازیکن شماره دو جلیقه ضدگلوله داده می‌شود که تعادل در بازی حفظ شود.تولید یک بازی رومیزی کامل و قابل بازی کاملاً به کمک این الگوریتم و بدون دخالت انسانتولید یک نرم‌افزار برای ساخت نقشه در بازی‌های استراتژیکدسته‌بندی PCG:یک نوع دسته‌بندی برای این روش ارائه‌شده است که تمرکز آن بر روی این است کهچه نوع محتوایی تولید می‌شودچگونه تولید می‌شودچگونه می‌توان کیفیت محتوای تولیدشده را ارزیابی کردبر طبق موارد بالا دسته‌بندی توسط خانم نوری شاکر در کنفرانش بازی های رایانه ای ارائه‌شده است که به شرح زیر است:1. آنلاین یا آفلاین بودن تولید محتوا:آفلاین بودن به این معنا است که محتوای بازی قبل از شروع هر بازی یا هر مرحله ساخته شود و در هنگام اجرا فقط به کاربر نمایش داده شود مانند بازی ماینکرافت که نمونه‌ی مشهوری از آفلاین بودن تولید محتوا است.آنلاین بودن برخلاف تولید آفلاین به این معنا است که در حین اجرای بازی، محتوا تولید می‌شود؛ در بسیاری از بازی‌های دونده که از الگوریتم PCG استفاده می‌کنند محتوا به‌صورت آنلاین تولید می‌شود.2. موردنیاز بودن یا اختیاری بودن محتوای تولیدشده:ما در بازی دو نوع محتوا داریم، نوع اول محتوای موردنیاز بازیکن است که برای پیروزی و گذراندن یک مرحله به آن نیاز دارد و باید دستیابی به آن حتماً ممکن باشد.محتوای دیگر محتوای اختیاری در بازی است مانند سلاح‌های کمکی و ویژگی‌های اضافه که برای گذراندن مرحله اجباری نیست و فقط راه پیروزی را ساده‌تر می‌کند؛ دسترسی به این محتوا ممکن است در مواردی بسیار سخت باشد.3. کنترل کردن مقادیر و درجه‌ها:در این دسته‌بندی مشخص می‌شود که بازی ما تا چه اندازه از الگوریتم PCG برای تولید محتوا استفاده می‌کند. مثلاً می‌توان از یک آرایه چندبعدی برای تولید رندوم المان‌های بازی استفاده کرد، هر اندازه مقدار استفاده ما از مقادیر رندوم بیشتر باشد نیاز به کنترل بیشتر و دقت بیشتری در ساخت الگوریتم اولیه PCGهستیم.4. تعیین‌کننده یا تصادفی بودن محتوای تولیدشده:این دسته‌بندی با مورد قبلی در ارتباط است، در این قسمت مشخص می‌شود که بازی ما تا چه اندازه از مقادیر رندوم استفاده می‌کند و تا چه اندازه توسط انسان و به‌صورت دستی ساخته‌شده است.5. تولید ساختاریافته یا تولید با آزمون‌وخطا:در ساختاریافته بودن به این صورت عمل می‌شود که ما در ابتدا متغیرها و پارامترهایی را برای تولید محتوا درنظر می‌گیریم و پس از مقداردهی به آن‌ها محتوای خود را توسط الگوریتم تولید می‌کنیم. در این روش به دلیل اینکه قبلاً محاسبات بر روی مقدار صحیح پارامترها انجام‌شده است، در عین رندوم بودن خطایی صورت نمی‌گیرد.در مقابل درروش تولید محتوا بر اساس آزمون‌وخطا از قبل برای متغیرها محاسباتی انجام نمی‌گیرد و پس از تولید محتوا با کمک الگوریتم آن‌ها را آزمایش می‌کند که مناسب هستند یا خیر؛ در این روش از یادگیری ماشین استفاده می‌شود.مراجع :Expensive-driven PCG:Dr.YannakakisPCGin games : noorshaker , Julian togelus,mark j.nelsonPcgbook, chapter1</description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Sat, 04 Apr 2020 00:33:19 +0430</pubDate>
            </item>
                    <item>
                <title>گیمیفیکیشن (بازی‌انگاری) چیست؟</title>
                <link>https://virgool.io/@mimahs/%DA%AF%DB%8C%D9%85%DB%8C%D9%81%DB%8C%DA%A9%DB%8C%D8%B4%D9%86-%D8%A8%D8%A7%D8%B2%DB%8C-%D8%A7%D9%86%DA%AF%D8%A7%D8%B1%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA-ktjkeoazyley</link>
                <description>گیمیفیکیشن یا در انگلیسی Gamification موضوعی است که برای خیلی از کسب و کارها مهم است و حتی خیلی افراد هم بدون اینکه بدانند اسم این متد چیه از آن استفاده می‌کنند . من 2 سال پیش در مجله انجمن علمی دانشگاه یک مطلب خیلی کوتاه راجع‌به گیمیفیکیشن نوشتم و خواستم اینجا هم نشرش بدهم.گیمیفیکیشن به‌طور کلی از جمله زیرمجموعه‌های دانش طراحی برای تغییر رفتار یا Behavioral Design است که طی سال‌های اخیر در فضای دانشگاهی و نیز محیط کسب‌وکار مورد توجه بیشتری قرار گرفته‌است.ساده‌ترین تعریف آن این است که گیمیفیکیشن یا بازی‌انگاری ، هنر تعبیه‌کردن مکانیزم‌های بازی در فضاهایی است که به‌صورت پیش‌فرض برای بازی طراحی نشده‌اند.از آن‌جایی که یکی از عوامل انگیزشی جذاب برای انسان تفریح و بازی است، این نقطه را می‌توان همان نقطه‌ی آغازین مفهوم بازی‌انگاری دانست.در زبان فارسی معادل‌های گوناگونی برای گیمیفیکیشن پیشنهاد شده‌است : از جمله آن‌ها می‌توان به بازی‌انگاری، بازی‌آفرینی، بازی‌گونگی، بازی‌پردازی، بازی‌کاری، بازی‌نمایی، بازی سازی، بازی‌وارسازی و .... اشاره کرد؛ ولی به سه دلیل استفاده از خود واژه ی گیمیفیکیشن برای  دوری از این مشکلات و تفاوت‌های معنایی در زبان فارسی توصیه می‌شود :1. استفاده گسترده جهانی از این نام2. تک کلمه‌ای بودن آن3. ابهام در موارد استفاده از معادل‌های آنبه دلیل این‌که ریشه‌ها و تاریخچه‌ی آن در ایران چندان مورد بحث و بررسی قرار نگرفته برخی از افراد ناآشنا و غیرمتخصص آن را در ارتباط تنگاتنگ با تکنولوژی و یا حتی زیرمجموعه‌ی حوزه‌ی فناوری اطلاعات می‌دانند. البته گیمیفیکیشن می‌تواند از فناوری اطلاعات کمک بگیرد و حتی بخش عمده‌ای از کا‌رهای عملیاتی آن برعهده‌ی متخصصان فناوری اطلاعات باشد، اما مفاهیم کلیدی و زیربنایی این مفهوم، زیرمجموعه‌ی علوم‌رفتاری و روانشناسی محسوب می‌شوند.تا اینجای صحبت ممکن است مفهوم گیمیفیکشن پیچیده به‌نظر برسد اما با مرور چند مثال ساده متوجه خواهید‌شد که مصداق‌های بازی‌انگاری برای ما چندان غریب و ناآشنا نیستند و بارها آن‌ها را تجربه کرده‌ایم.فرض‌‌کنید به یک کافی‌شاپ رفته‌اید. در لحظه‌ای که در حال پرداخت صورت‌حساب هستید صندوق‌دار یک کارت تخفیف کوچک را هم در کنار صورت‌حساب شما روی میز می‌گذارد و می‌گوید: اگر9 بار به کافی‌شاپ ما تشریف بیارید یک‌بار مهمان ما خواهید‌بود!روی کارت علامت 9 فنجان ترسیم‌ شده و قبل از تحویل کارت به شما روی یکی از آن‌ها مهر زده می‌شود. به دفعه‌ی بعدی که می‌خواهید به یک کافی‌شاپ بروید فکرکنید. با داشتن این کارت احتمال اینکه باز هم به کافی‌شاپ قبلی سربزنید کمی بیشتر از سایر گزینه‌ها است. حداقل با این انتخاب، می‌توانید بخشی از پولی را که امروز هزینه می‌کنید در دفعه‌ی دهم پس بگیرید. همچنین احتمالا قبول دارید که اگر نیمی از فنجان‌های این کارت مهر خورده‌باشند جز در شرایط خاص احتمال اینکه کافی‌شاپ دیگری را انتخاب کنید چندان زیاد نخواهد‌بود.تجربه‌ی بازی و رقابت در لابه‌لای زندگی روزمره ما بسیار بیشتر از این موارد است. کسانی که در اینستاگرام عکس می‌گذارند بارها به صفحه خود باز می‌گردند و تعداد لایک‌ها و کامنت‌ها را نگاه می‌کنند. کسانی که در فیس‌بوک یا سایر شبکه‌های اجتماعی مطلب دارند دائما در انتظار به اشتراک گذاشته‌شدن مطالبشان هستند. به این معنی که قسمت عمده‌ی کلیک‌های کاربران در شبکه‌های اجتماعی به خاطر درج محتوای جدید نیست بلکه به خاطر بررسی مجدد مطالب قبلی و امتیا‌زهایی است که در این بازی مجازی کسب کرده‌اند.هدف اصلی گیمیفیکیشن برای یک کسب‌و‌کار تغییر کامل هویت دیجیتالی آن به بازی نیست، بلکه تشویق به انجام رفتارهایی مانند به‌کارگیری عناصر بازی‌گونه مثل چالش‌ها و امتیاز دادن به فعالیت‌های روزانه، پاداش دادن به اقدامات ارزشمند با مدال‌ها و امتیازات است که کاملا با اهداف سازمان همسو باشند.پاداش‌های مبتنی بر گیمیفیکیشن می‌تواند در شکل‌های مختلف مثل امتیازات، مدالها، رتبه‌بندی‌های تابلو قهرمانان، تخفیفات و کالاهای مجانی باشد. به‌هرحال یک چیز مشخص است: &quot;شناسایی و پاداش دادن به مشتریان به معنی بقا و درآمد بیشتر است .&quot;در دنیای جدید که صدها فروشگاه آنلاین هر روزه ظاهر می‌شوند، درصدر بودن کار بسیار سختی است. این یعنی باید به سختی کار کنید، با موضوعات داغ بازاریابی حرکت کرده و تکنیکهای جدید را پیاده‌سازی نمایید. تب خرید از فروشگاه‌های آنلاین به شدت در حال شیوع بوده و فروشگاه‌های آنلاین در ایران به شدت رو به رشد می‌باشند. این بازار نوپا در حال حاضر مشتریان بالقوه ی بسیار زیادی دارد اما نکته ی مهم این است که در آینده‌ای بسیار نزدیک، بازار اشباع شده و این فروشگاه‌ها شروع به رقابت برای جذب مشتریان یک‌دیگر می‌نمایند. این همان نقطه‌ای است که ابزاری مانند گیمفیکیشن به شدت با اهمیت خواهد شد. اگر چه سیاست درست این است که یک فروشگاه آنلاین از ابتدا با پیاده‌سازی گیمیفیکیشن، وفاداری مشتریان را افزایش دهد.برای یادگیری گیمیفیکیشن راه های زیادی وجود دارد که من اینجا فقط به معرفی چند کتاب در این زمینه اکتفا می‌کنم :کتاب Pitch anything اگر به موضوعات فروش علاقه‌مندیدکتاب Enterprise gamification :Healthcare &amp; Fitness در رابطه با تاثیر این موضوع در زندگی شخصی صحبت می کندکتاب Game-Base Marketing در مورد مسائل بازاریابی استکتاب Gamification in Education and Business برای کسب‌و‌کار و آموزش مناسب استو بسیاری کتاب‌ها و ویدیوهای مختلف که با یک سرچ ساده می‌توانید به آن‌ها دسترسی پیدا کنید. هدف من از این نوشته صرفا توضیح این مفهوم به صورت ساده بود و امیدوارم حتی شده برای یک نفر هم مفید واقع بشود :)شمیم 10 فروردین 99</description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Sun, 29 Mar 2020 10:59:16 +0430</pubDate>
            </item>
                    <item>
                <title>چرا الان؟</title>
                <link>https://virgool.io/@mimahs/%DA%86%D8%B1%D8%A7-%D8%A7%D9%84%D8%A7%D9%86-qxpuv3pnqzyr</link>
                <description>بذارید اول از معرفی خودم شروع‌ کنم، من شمیمم یه دختر ۲۲ ساله معمولی که یک گوشه از این دنیای بزرگ تو بهار خاکستری ۹۹ رو تختش درازکشیده و بنا‌‌به توصیه یکی از آدم‌های عزیز زندگیش می‌خواد نوشتن را آغاز کنه.من سال ۹۴ وارد دانشگاه رشته مهندسی‌کامپیوتر شدم که ۱۸۰ درجه با علاقم که عمران بود تفاوت داشت، گذشت و گذشت تا کم‌کم به رشتم علاقه پیدا کردم، باهاش دوست شدم و بعدشم فهمیدم می‌تونم خیلی داخلش موفق‌ باشم؛ با شرکت در اولین ماراتون بازی‌سازی دانشگاه چرخ فلک این‌جوری چرخید که من وارد این صنعت بشم.ازش خوشم می‌آمد و هم‌پا داشتم برای یادگیریش پس رفتم دنبالش و یونیتی و c# را یاد گرفتم و حدود ۳سال تو این حوزه کار کردم، بحث درآمدش زیاد مطرح نبود بیشتر برام مهم این بود که یاد بگیرم، به هر حال دانشجو بودم و بعد فارغ التحصیلی نیاز به یک مهارتی برای کار داشتم .روزها گذشت و گذشت تا رسید به ۲۰ شهریور ۹۸ و من دفاع کردم و با دانشگاه خداحافظی کردم و به صورت جدی وارد بازار کار شدم .یکی دو ماهی یکم گیج و سردرگم بودم چون همه چیز تفاوت پیدا کرده‌بود ولی خودما پیدا کردم و کسب تجربه شروع شد؛ تو این مسیر تونستم همراه بقیه مسیر زندگیم را هم پیدا کنم که یکی از بهترین اتفاق های زندگیم بود :)) روزها پشت سر هم گذشت و یک دفعه اعلام شد ویروس ناشناخته‌ای به اسم کرونا دنیا را تحت شعاع قرارداده و هممون باید تو خونه‌ها قرنطینه بشیم، پس منم با بقیه قرنطینه شدم و موندم خونه!حالا تصمیم گرفتم از تاریخ ۹ فروردین تو این روزای قرنطینه‌ای ولی زیبا راجب موضوعات مختلف بنویسم، راجع‌به هر چیزی که خودم اطلاعاتی ازش داشته باشم یا دوست داشته‌باشم اطلاعاتی ازش کسب کنم، کم‌کم مینویسم تا هم با نوشتن دوست بشم و هم تجربه کسب کنم :)امیدوارم اگر کسی نگاهش به نوشته‌هام افتاد با خوندنشون حداقل چند دقیقه از این دوران را با حوصله سررفتگی کمتری بگذرونه !شمیم ۹ فروردین ۹۹</description>
                <category>Shamim Sanisales</category>
                <author>Shamim Sanisales</author>
                <pubDate>Sat, 28 Mar 2020 16:17:29 +0430</pubDate>
            </item>
            </channel>
</rss>