<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های Soheil Hoseini</title>
        <link>https://virgool.io/feed/@soheil.hosseini78</link>
        <description>دانشجوی مهندسی کامپیوتر، علاقمند به حوزه نرم افزار، هوش مصنوعی و توسعه بازی های رایانه ای</description>
        <language>fa</language>
        <pubDate>2026-06-07 14:32:00</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/1612514/avatar/jOy75b.jpeg?height=120&amp;width=120</url>
            <title>Soheil Hoseini</title>
            <link>https://virgool.io/@soheil.hosseini78</link>
        </image>

                    <item>
                <title>بیت کوین - فصل دوم - بخش ۲</title>
                <link>https://virgool.io/@soheil.hosseini78/%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-%D9%81%D8%B5%D9%84-%D8%AF%D9%88%D9%85-%D8%A8%D8%AE%D8%B4-%DB%B2-gswcnwvqacdj</link>
                <description>شکل های مختلف تراکنش های بیت کوینساده ترین نوع تراکنش، حالتی است که یک فرد مقداری بیت کوین دارد و بخشی از آن را به آدرس دیگری انتقال میدهد. در این حالت، یک ورودی و دو خروجی دارد که یکی از آن خروجی ها آدرس فرد انتقال دهنده است تا مبلغ باقی مانده (change) به حساب او باز گردانده شود.حالت دوم وقتی است که چندین ورودی داریم؛ این حالت مشابه زمانی است که تعدادی اسکناس با ارزش کمتر را جمع میکنیم تا یک اسکناس با ارزش بیشتر به دست آوریم. بعضی از کیف پول های دیجیتال، برای یکپارچه سازی دارایی های موجود در کیف،‌ با تجمیع مقادیر اندک از چندین ارز دیجیتال،‌ آن ها را به یک حجم بزرگتر از یک ارز تبدیل میکنند.حالت سوم تقریبا عکس حالت قبل است که یک ورودی و چنین خروجی داریم؛ مانند زمان پرداخت حقوق کارکنان از حساب شرکت.معمولا اپلیکیشن های کیف پول دیجیتال (wallet) به صورت مداوم آماری از خروجی های خرج نشده تراکنش های انجام شده روی بلاکچین را دارند و به همین علت هنگامی که کاربر قصد انجام تراکنش جدیدی را دارد، میتوانند این خروجی ها را تجیمع کرده و به عنوان ورودی تراکنش جدید قرار بدهند. اگر یک اپلیکیشن آماری از تمام خروجی های مصرف نشده نداشته باشد (مثلا full node client نباشد)،‌ میتواند از API های فراهم شده در سرویس های مختلف استفاده کند که آنها با کوئری زدن روی زنجیره بلاکچین،‌ مشخص کنند که این آدرس مورد نظر چه تعداد خروجی تراکنش دارد که هنوز خرج نشده اند.ایجاد خروجی ها یکی تراکنش بدین نحو انجام میشود که در قابل یک اسکریپت (script)، این خروجی ها ساخته میشوند که تنها برای کسی قابل آزاد شدن و استفاده شدن است که امضای (signature) متناظر با آدرس عمومی مقصد این تراکنش را داشته باشد و چون تنها صاحب آدرس مقصد این تراکنش دارای چنین امضایی است، فقط او میتواند این مبلغ را آزاد کرده و خرج کند. اضافه شدن تراکنش به زنجیره بلاکچینهر تراکنش بعد از ایجاد شدن، برای نهایی شدن نیاز به تایید شبکه بیت کوین دارد. به طور کلی هر سیستمی اعم از سرور یا یک اپلیکیشن کیف پول دیجیتال که در شبکه بیت کوین حضور دارد و به وسیله پروتکل بیت کوین با بقیه اجزای شبکه ارتباط برقرار میکند،‌ یک نود بیت کوین (bitcoin node) نامیده میشود.حال هر کدام از node های موجود در شبکه به تعداد node دیگری متصل است (که میتواند از طریق WiFi، سیم یا هر چیز دیگری باشد). هر node به محض دریافت یک تراکنش، آن را به node هایی که به آنها متصل است ارسال میکند؛ به کمک این شیوه که flooding نام دارد،‌ در زمان چند ثانیه در شبکه نظیر به نظیر (peer-to-peer) بیت کوین منتشر (propagate) میشود و درصد بالایی از node های حاضر،‌ از آن خبردار میشوند. از جمله این  node ها، همان مقصد تراکنش است. بدین معنا که خود node مقصد پس از مطلع شدن از این تراکنش، در ابتدا  با بررسی امضای روی تراکنش متوجه میشود که این به مقصد خود اوست؛ سپس میتواند درصورت عدم وجود مشکل در اطلاعات تراکنش، آن را تایید کند تا در یک بلوک قرار گرفته و به بلاکچین افزوده شود.ماینینگ (Mining)برای نهایی شدن یک تراکنش،‌ به اضافه شدن آن در یک بلوک و سپس افزوده شدن آن بلوک به زنجیره اصلی بلاکچین نیاز است که این پروسه را ماینینگ می نامیم. به طور کلی این روند دو مزیت اصلی دارد؛ تمامی تراکنش ها توسط node های موجود در شبکه از نظر صحت و ساختار، بررسی شده و طبق قوانین اجماع شبکه بیت کوین (consensus rules) تایید میشود.روند ماینینگ در هر بلوک مقداری بیت کوین میسازد. از طرفی میزان بیت کوین ساخته شده به ازای هر بلوک مقداری معین بوده و با گذشت زمان کاهش میابد. بدین ترتیب روند زمانی این موضوع قابل پیش بینی بوده و ساختاری ضد تورمی به بیت کوین میدهد.پروسه ی ماینینگ با مصرف برق جهت حل یک مسئله ریاضی انجام میشود. یک ماینر (miner) در صورتی که بتواند تمام تراکنشهای یک بلوک را با موفقیت صحت سنجی (validate) کند، علاوه بر transaction fee، یک میزان جایزه (reward) در قالب بیت کوین دریافت میکند.به طور کلی مسئله ریاضی رمزنگاری موجود در شبکه بیت کوین، مشابه یک جدول سودوکو می باشد که در عین سخت بودن حل آن، به آسانی میتوان اعتبار آن را تایید (verify) کرد و همینطور اینکه میزان سختی آن قابل تغییر است. (همان طور که در یک جدول سودوکو با افزایش یا کاهش تعداد ستون ها و ردیف ها میتوان در شدت سختی حل آن تغییر ایجاد نمود.) حل مسئله در واقع یافتن یک عدد است که از هش کردن (hashing)  هدر بلوک مدنظر و یک عدد رندوم به کمک الگوریتم رمزنگاری ‌SHA256 به دست می آید که باید شرایط مشخصی را داشته باشد؛ یافتن چنین عددی نیاز به میلیاردها میلیارد عملیات hashing در ثانیه دارد تا در رقابت بین ماینر های سراسر جهان، هر که زودتر به این عدد رسید بتواند به جایزه دست یافته و بلوک را به زنجیره بلاکچین اضافه کند. این مکانیزم اجماع را Proof-of-Work (PoW) می نامند. برای هر مرتبه این عملیات یافتن پاسخ حدود ۱۰ دقیقه زمان میبرد و با ایجاد نوعی تعادل بین توان محاسباتی موجود در شبکه بیت کوین و سختی مسئله، به صورت مداوم این زمان تقریبا ثابت میماند. به همین علت، هم اکنون با توجه به توان عظیم محاسباتی موجود در شبکه بیت کوین، نیاز به زیرساخت سخت افزاری قوی برای انجام ماینینگ می باشد که از نظر اقتصادی بتوان آن را به صرفه دانست.</description>
                <category>Soheil Hoseini</category>
                <author>Soheil Hoseini</author>
                <pubDate>Sun, 25 Feb 2024 16:38:09 +0330</pubDate>
            </item>
                    <item>
                <title>بیت کوین - فصل دوم - بخش ۱</title>
                <link>https://virgool.io/@soheil.hosseini78/%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-%D9%81%D8%B5%D9%84-%D8%AF%D9%88%D9%85-%D8%A8%D8%AE%D8%B4-%DB%B1-gaibweojtsd6</link>
                <description>در این پست، فصل دوم کتاب Mastering Bitcoin، از انتشارات معروف O&#x27;RILLY را که مورد بررسی قرار میدهیم. این فصل با عنوان How Bitcoin Works، به چگونگی کارکرد سیستم بیت کوین میپردازد. در سیستم بیت کوین، بر خلاف سیستم های پرداختی و بانکی سنتی، مبنا بر اعتماد غیرمتمرکز (decentralized trust) است. این «اعتماد» از طریق تعدادی همکاری بین اعضای حاضر در شبکه حاصل میشود که در نتیجه منتهی به معتبر شناخته شدن یک تراکنش در این سیستم خواهد شد. همه تراکنشهای انجام شده در شبکه بیت کوین قابل رهگیری و بررسی هستند. مثلا یکی از راه های بررسی تراکنش، از طریق ابزاری به نام blockchain explorer می باشد که همانند یک موتور جستجوی بیت کوین عمل کرده و به کمک آن میتوان آدرسها، تراکنشها، بلوکها و نیز ارتباط بین آنها را مشاهده و بررسی نمود.به عبارت ساده،‌ یک تراکنش به شبکه اعلام میکند که صاحب یک حجمی از بیت کوین،‌ انتقال آن مقدار به فرد دیگری را تایید کرده است و آن فرد میتواند با ایجاد کردن یک تراکنش جدید، آن مقدار را به فرد دیگری انتقال دهد. در سیستم بیت کوین، هر تراکنش دارای تعدادی ورودی (input) و تعدادی خروجی (output) می باشد. مجموع مقادیر ورودی ها و مقادیر خروجی ها لزوما برابر نیست و معمولا خروجی اندکی از مقدار ورودی کمتر میباشد که این مقدار را هزینه تراکنش (transaction fee) مینامیم که هزینه ایست که در ازای افزودن این تراکنش به ledger بیت کوین، به ماینر تعلق میگیرد. علاوه بر این، هر تراکنش شامل اطلاعاتی جهت اثبات مالکیت (ownership) مقدار بیت کوین ورودی که در حال انتقال است، می باشد؛ این اطلاعات، امضای دیجیتال (digital signature) نام دارد  که میتواند توسط هر کسی به صورت مستقل، صحت سنجی (validate) شود.مفهوم Transaction Chainsساختار تراکنشهای شبکه بیت کوین به صورت زنجیروار به یکدیگر اتصال دارد. همانطور که قبل تر گفته شد، هر تراکنش دارای ورودی و خروجی است؛ حال تراکنش بعدی از خروجی تراکنش قبلی به عنوان ورودی خودش استفاده میکند. مثلا نفر A مقداری بیت کوین در ازای مبلغ معادل نقدی آن به نفر B انتقال داده است؛ از این تراکنش مقداری بیت کوین به A رسیده که با کلید مخصوص A قفل (lock) شده است. حال A می خواهد تراکنش دیگری به فرد C انجام دهد؛ در این حالت این تراکنش جدید به تراکنش قبلی ارجاع دارد و خروجی آن را به عنوان ورودی خود می گیرد.همان طور که بسیاری از تراکنشهای نقدی دنیای قبل از بیت کوین دقیقا معادل مبلغ پرداختی نبوده و بخشی از پول پرداخت شده تحت عنوان باقی مانده (change) باید به پرداخت کننده پس داده میشد؛ تراکنشهای بیت کوینی نیز به همین شکل اتفاق می افتند. ضمن این که به صورت کلی در این انتقالات، تمامی موجودی بیت کوین فرد در هر تراکنش به عنوان ورودی در نظر گرفته میشود. حال اگر این مقدار دقیقا معادل با مبلغ پرداختی مد نظر به علاوه ی هزینه تراکنش (fee) آن نباشد، منطقا مقداری باقی مانده خواهیم داشت که باید به پرداخت کننده باز گردد. به همین علت خروجی هر تراکنش هم شامل آدرس دریافت کننده (جهت پرداخت مبلغ مدنظر) و هم شامل آدرس پرداخت کننده (برای انتقال مبلغ باقی مانده) است.برای توضیح بیشتر به تصویر زیر که از خود کتاب آورده شده است دقت کنید:Transactions Chainدر ابتدا، در ازای معادل دلاری مبلغ 0.1005 بیت کوین از Joe به Alice انتقال داده شده است که ورودی آن این مبلغ موجود در آدرس Joe بوده و خروجی آن نیز آدرس کیف پول Alice به میزان 0.1 بیت کوین و نیز مقدار 0.0005 به عنوان هزینه تراکنش می باشد. در تراکنش بعدی، Alice این مقدار 0.1 بیت کوین را به Bob انتقال داده که 0.1 ورودی آن بوده و خروجی آن جدای از هزینه 0.0005 بیت کوینی آن، شامل دو بخش است؛ بخش اول مبلغ 0.015 بیت کوین که به آدرس Bob بوده و بخش دوم باقی مانده آن یعنی 0.0845 بیت کوین به آدرس خود Alice است. حال Bob میخواهد تراکنشی به میزان 0.01 بیت کوین به Gopesh داشته باشد. در این تراکنش، همان میزان 0.015 به عنوان ورودی بوده و خروجی شمال 0.01 به آدرس کیف پول Gopesh و 0.0045 نیز به آدرس Bob می باشد. مبلغ 0.0005 بیت کوین نیز به عنوان هزینه تراکنش کسر شده است.بیت کوین - فصل دوم - بخش ۲</description>
                <category>Soheil Hoseini</category>
                <author>Soheil Hoseini</author>
                <pubDate>Thu, 15 Feb 2024 17:07:25 +0330</pubDate>
            </item>
                    <item>
                <title>بیت کوین - فصل اول - بخش ۲</title>
                <link>https://virgool.io/@soheil.hosseini78/%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-%D9%81%D8%B5%D9%84-%D8%A7%D9%88%D9%84-%D8%A8%D8%AE%D8%B4-%DB%B2-aw6rofqi6x0n</link>
                <description>در ادامه بخش قبلی،  در این قسمت به بررسی بیشتر بیت کوین و روش استفاده از آن میپردازیم.در این قسمت، نویسنده از مثالی جهت بیان چگونگی پرداخت با یک کیف پول مجازی بیت کوین استفاده میکند. برای این کار میتوان از یک Mobile Wallet مانند Mycelium استفاده کرد. اکثر کیف پول های موبایلی شبیه به یکدیگر هستند. وقتی اپلیکیشن برای بار اول اجرا میشود، به طور خودکار یک wallet برای کاربر ایجاد میشود و یک رشته طولانی شامل اعداد و کاراکتر های انگلیسی به عنوان آدرس فرد (bitcoin address) بر روی صفحه نمایش داده می شود. همچنین احتمالا یک QR code نیز در صفحه اپلیکیشن وجود دارد که با اسکن آن توسط گوشی های هوشمند، میتوان به آدرس کیف پول دسترسی پیدا کرد.در واقع یک کیف پول دیجیتال (wallet)، مجموعه ای از آدرس ها و کلیدهایی (key) است که برای دسترسی به دارایی موجود در آن آدرسها موجود است، مورد نیاز می باشند. یک کیف پول میتواند شامل تعداد بسیاری آدرس باشد و حتی بعضی از کیف پولهای دیجیتال به طور خودکار برای هر تراکنش، یک آدرس جدید و منحصر به فرد ایجاد میکنند.آدرسی که توسط کیف پول ساخته میشود، تا زمانی که به عنوان مقصد یک تراکنش قرار نگرفته و ارزی به آن واریز نشده باشد، توسط شبکه بیت کوین شناخته شده نیست و به محض دریافت ارز، به عنوان یک آدرس شناخته شده در شبکه نقش آفرینی میکند. نکته قابل توجه در مورد تراکنش های بیت کوین، غیرقابل برگشت (irreversible) بودن آنهاست؛ به همین علت، پرداخت های این شبکه دارای درصدی از ریسک میباشند. برای پرداخت مبلغی بیت کوین در حالت ساده، فرستنده با استفاده از اپلیکیشن کیف پول مجازی خود، آدرس بیت کوین مقصد را با اسکن QR code یا وارد کردن متن آدرس، به عنوان آدرس مقصد تعیین کرده و پس از مشخص نمودن مقدار ارز مورد نظر، آن را ارسال میکند. کیف پول به صورت خودکار یک تراکنش (transaction) ایجاد میکند که مبلغ بیت کوین مدنظر را به آدرس مقصد واریز میکند و این تراکنش با استفاده از کلید خصوصی (private key) فرستنده امضا (sign) میشود. سپس این تراکنش روی شبکه بیت کوین منتشر (propagation) میشود و همه گره ها (node) های موجود در شبکه، از حضور آن مطلع میشوند. در همین حین، کیف پول مقصد نیز به طور دایمی بر روی شبکه بیت کوین در حال گوش دادن است. در حال حاضر، این تراکنش به عنوان تایید نشده (Unconfirmed) در شبکه باقی می ماند و به آدرس مقصد نیز چیزی واریز نخواهد شد. بعد از مدتی از انتشار تراکنش روی شبکه، این تراکنش تایید شده و به عنوان بخشی از زنجیره ی تراکنشهای بیت کوین (blockchain) ثبت شده و به اصطلاح مالی، clearing صورت میگیرد. در این هنگام، بیت کوین وارد حساب مقصد شده و قابل استفاده است.جزییات هرکدام از قسمتهای ایجاد و تایید یک تراکنش بیت کوین، به تفصیل در بخشهای آینده مورد بررسی قرار خواهد گرفت.فصل دوم - بخش ۱</description>
                <category>Soheil Hoseini</category>
                <author>Soheil Hoseini</author>
                <pubDate>Mon, 22 Jan 2024 01:09:16 +0330</pubDate>
            </item>
                    <item>
                <title>بیت کوین - فصل اول - بخش ۱</title>
                <link>https://virgool.io/@soheil.hosseini78/%D8%A8%DB%8C%D8%AA-%DA%A9%D9%88%DB%8C%D9%86-%D8%A8%D8%AE%D8%B4-%DB%B1-gnksndzaw8dp</link>
                <description>انتشار مقاله بیت کوین در سال 2009 توسط نام مستعار ساتوشی ناکاموتو موجی از توجهات را به سمت این رمز ارز و تکنولوژی پایه آن یعنی بلاکچین جلب نمود. البته لازم به ذکر است که ساتوشی ناکاموتو اولین فرد (یا گروه)ی نبود که این تکنولوژی را بنیان گذاری کرده باشد و پیش از او در سالهای متمادی افراد و گروه های متعددی در جهت ساخت رمز ارزها و به طور کلی ایجاد ساختار غیرمتمرکزی که تا حدی از کنترل انحصاری خارج باشد تلاشهای قابل توجهی داشته اند و هرکدام تا مقداری در این راستا به پیش رفتند. اما سال 2009 را می توان نقطه عطفی در این مسیر دانست که با حل مسائل و مشکلاتی که پیش از آن در این حوزه مطرح شده بود گامی بلند در پیش برد این تکنولوژی برداشته شد که به گفته متخصصان میتواند نظام های اقتصادی و حتی اجتماعی دنیا را تا قرنها تحت تاثیر خود قرار دهد.تکنولوژی بلاکچین که از نظر بیشتر مردم مختص بازار رمزارزها می باشد درواقع زیرساختی را در اختیار قرار می دهد که نه تنها در زمینه اقتصاد بلکه در حوزه های دیگری نظیر NFT ها، سلامت،‌ اینترنت اشیا و رسانه نیز می تواند مورد استفاده قرار گیرد. از مزایای مهم این تکنولوژی می توان به توزیع شده بودن آن که به نوبه خود شفافیت و امنیت را به دنبال دارد اشاره نمود.در این مجموعه از پست ها، با بررسی قدم به قدم کتاب Mastering Bitcoin نوشته Andreas M.Antonopoulos به پیش خواهیم رفت و مفاهیم دنیای بلاکچین و بیت کوین را به شیوه ای روان مورد بررسی قرار خواهیم داد.در فصل ابتدای این کتاب به صورت کلی توضیحات و مقدماتی در مورد بیت کوین و چیستی آن داده شده که مخاطب به شناخت حداقلی از این رمز ارز دست یابد. در این راستا بیت کوین را مجموعه ای از مفاهیم و تکنولوژی هایی معرفی میکند که تشکیل دهنده ی یک اکوسیستم پولی دیجیتال هستند. از تفاوت های بیت کوین با دیگر ارزها، تماما دیجیتال بودن آن است که هیچ گونه پول فیزیکی یا مجازی به عنوان نظیر آن وجود ندارد.ایجاد یک بیت کوین از طریق یک روند به نام &quot;Mining&quot; صورت میگیرد که  در خلال آن رقابتی جهت حل یک مسئله ریاضی و یافتن پاسخ آن توسط افرادی با نام &quot;Miner&quot; در حال اجراست. خصوصیت دیگر بیت کوین محدودیت حجم موجود از آن است. به طور کلی 21 میلیون بیت کوین وجود دارد و قابل استخراج است که طبق روند استخراج کنونی، تا سال 2140 تمام این مقدار استخراج خواهد شد؛ این مسئله خود میتواند باعث ایجاد خاصیت ضد تورمی این رمز ارز گردد. میتوان گفت بیت کوین شامل چندین بخش است:شبکه نظیر به نظیر (peer-to-peer) و غیرمتمرکز (Bitcoin Protocol)ساختار بلوکی عمومی (بلاکچین)مجموعه ای از قوانین برای صحت سنجی مستقل تراکنش ها (Consensus Rules)ساختاری برای رسیدن به اجماع در شبکه روی بلاکچین معتبر (الگوریتم Proof-of-Work)لازم به ذکر است که نام خود شبکه ای که جهت انجام تراکنش، صحت سنجی،‌ اجماع و ... به عنوان زیرساخت از آن استفاده می شود نیز بیت کوین می باشد. ساختار این پروتکل به نحوی است که خود به خود بعد از مدت زمان مشخصی، با بررسی توان پردازشی موجود در شبکه بیت کوین، میزان سختی جهت حل مسائل ریاضی شبکه برای رسیدن به پاسخ را تغییر میدهد تا میزان استخراج بیت کوین مطابق نرخ مورد نظر پروتکل جلو رود و برای مثال شرکت های تکنولوژی بزرگ با وارد کردن توان پردازشی فوق العاده بالای خود به شبکه بیت کوین، نتوانند در مدت زمان اندکی حجم قابل توجهی از بیت کوین باقی مانده را استخراج کنند.استفاده از بیت کوین میتواند با بهره گیری از یک اپلیکیشن کلاینت که توان برقراری ارتباط با پروتکل شبکه را دارد،‌ صورت گیرد. برای اینکار بایستی یک کیف پول مخصوص این رمز ارز (Wallet) انتخاب کرد. این کیف پول دارای انواع مختلفی است از قبیل:دسکتاپ ( Desktop Wallet) که از اولین کیف پول های توسعه داده شده هستند و از نظر امنیت نیز در رده پایینی قرار میگیرند.موبایل (Mobile Wallet) در حال حاضر محبوب ترین کیف پول ها از نوع موبایل بوده و برای افرادی که به تازگی قصد استفاده از بیت کوین را دارند توصیه میشود.وب (Web Wallet) از طریق مرورگر های اینترنتی قابل دسترسی هستند و اطلاعات کاربر را روی سرور شرکت یا سازمان ارائه دهنده سرویس ذخیره میکنند.سخت افزاری (Hardware Wallet) این نوع کیف پول دستگاه های خاصی هستند که که دقیقا به همین منظور طراحی شده  و از طریق USB با یک مرورگر وب دسکتاپ و یا از طریق NFC روی موبایل قابل به کارگیری  استفاده هستند. این نوع کیف پول معمولا برای نگهداری حجم بالایی از بیت کوین مورد استفاده قرار میگیرد.در بخش بعدی در مورد چگونگی استفاده از یک کیف پول جهت انجام تراکنش و نیز ساختار بیت کوین بحث خواهیم کرد. فصل اول - بخش ۲</description>
                <category>Soheil Hoseini</category>
                <author>Soheil Hoseini</author>
                <pubDate>Mon, 06 Nov 2023 21:18:13 +0330</pubDate>
            </item>
                    <item>
                <title>هوش مصنوعی و بازی های رایانه ای</title>
                <link>https://virgool.io/cafegame/%D9%87%D9%88%D8%B4-%D9%85%D8%B5%D9%86%D9%88%D8%B9%DB%8C-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C-%D9%87%D8%A7%DB%8C-%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87-%D8%A7%DB%8C-spj3iwhzifgd</link>
                <description>در سالهای اخیر، هوش مصنوعی نقش فزاینده ای در همه ی جنبه های زندگی انسانی پیدا کرده است؛ از حوزه های فنی نظیر اپلیکیشن های مسیریابی و اتومبیل های خودران گرفته، تا مباحث مدیریتی و مالی و روابط بین انسان ها؛ اما امروز به سراغ مبحث جذاب بازی های رایانه ای و کاربرد های نوین هوش مصنوعی در آن می رویم، پس با ما همراه باشید.پیش از توضیح در مورد کارکردهای هوش مصنوعی، اندکی با روند توسعه یک بازی ویدیویی آشنا خواهیم شد. به طور کلی، برای برای ساخت یک بازی به دو ابزار نیاز داریم؛ اول، عشق و علاقه و دوم یک موتور بازی سازی!برای مورد اول، تنها کافی است اندکی رویا پردازی، خلاقیت به خرج داده و علاقه داشته باشید مدتی در دنیای فانتزی سیر کنید؛ همین :)اما موتور بازی سازی؛ نرم افزاری برای ساخت بازی های ویدیویی است که با در اختیار قرار دادن ابزارهای بسیاری در حوزه های مختلف گرافیک، هوش مصنوعی، رندرینگ و دیزاین به شما کمک می کند که رویای خود را به واقعیت بدل کنید. از جمله موتور های بازی سازی شناخته شده ، Unity و Unreal را می توان نام برد که اولی با زبان #C و دومی با ++C برای توسعه بازی استفاده می کند.تعدادی از مهمترین موور های بازی سازیدر هر موتور بازی سازی، فضایی شبیه تصویر زیر وجود دارد که شامل صحنه ی بازی و مدل ها و اشیای موجود در آن می شود، به علاوه بخشی برای دسترسی به بخش های مختلف هر یک از مدلهای موجود در صحنه ی بازی که شامل ویژگی های گوناگون آن مدل می شود (در موتور یونیتی، به این بخش Inspector گفته می شود که در سمت راست تصویر زیر قابل مشاهده است)؛ هم چنین بخشهای دیگری جهت دسترسی به پوشه ها و فایل های موجود در بازی را می توان دید.نمایی از فضای موتور بازی سازی یونیتیتاریخچه هوش مصنوعی و بازی هااز مدت ها پیش، انسان ها به دنبال راهی برای ساخت ماشینی بودند که بتواند در بازی هایی که انسان ها خود ابداع کرده اند، آن ها را شکست دهد؛ در سال 1997 شرکت آمریکایی IBM نرم افزاری به نام Deep Blue را توسعه داد که توانست قهرمان روسی شطرنج جهان، گری کاسپاروف را  با استفاده از الگوریتم Minimax شکست دهد.بیست سال بعد، در سال 2017 نرم افزار توسعه داده شده توسط شرکت بریتانیایی DeepMind (که توسط گوگل خریداری شد و زیرشاخه هلدینگ Alphabet قرار گرفت) با نام AlphaGo، قهرمان کره ای بازی Go یعنی آقای که جی را با استفاده از الگورتیم جستجوی درختی مونته کارلو از مسند قهرمانی به زیر بکشد.گری کاسپاروف و نرم افزار Deep Blueکه جی و نرم افزار AlphaGoبرای بررسی کاربردهای هوش مصنوعی در بازی های ویدیویی، دو بخش کلی منطق و گرافیک بازی ها را بررسی میکنیم.هوش مصنوعی در منطق بازی های ویدیوییبه طور کلی هنگام توسعه ی بازی های رایانه ای، تعدادی حالت (State) برای بازی در نظر گرفته می شود که هر کدام یک وضعیت خاص از بازی را نشان می دهند و با استفاده از آن  ها، می توان منطق بازی را پیاده سازی نمود. از روش های این کار، یکی ماشین های حالات محدود (FSM) و دیگری درخت های رفتار (Behavior Trees) را می توان نام برد.برای مثال، در بازی Pacman برای کاراکتر های شبح که به عنوان دشمن بازیکن عمل می کنند، می توان ماشین حالات محدودی مطابق تصویر زیر درنظر گرفت که چهار حالت کلی برای شبح در نظر گرفته که با گرفتن ورودی های مشخصی از یک حالت به حالت دیگر تغییر وضعیت می دهد.نمودار ماشین حالات محدود برای کاراکتر شبح در بازی Pacman از جمله کاربرد های هوش مصنوعی در تعریف این حالات و نیز گذار بین آن هاست؛ مثلا در حالت Chase Pacman، الگوریتم های مسیر یابی نظیر *A  یافتن نزدیک ترین مسیر (با در نظر گرفتن موانع موجود مثل دیوار ها) برای دنبال کردن بازیکن استفاده می شوند. هم چنین برای گذار از یک حالت به حالت دیگر، از درخت های بازی (Game Trees) و الگوریتم هایی نظیر Minimax و Expectimax بهره برده می شود؛ در چنین الگوریتم هایی، برای تصمیم گیری از توابع خاصی استفاده می شود که با توجه به حالت فعلی و حالات در دسترس، اکشن های مختلف بررسی شده و بهترین آنها انتخاب می شوند. مثلا در الگوریتم مسیریابی، تابعی به نام Heuristic Function با محاسبه مسیر مانده تا مقصد و هزینه مسیر های مختلف، بهترین انتخاب را برای کاراکتر در نظر میگیرد. همچنین در گذار بین حالت ها، تابعی تحت عنوان Evaluation Function ارزش اکشن ها و حالات در دسترس را محاسبه، مقایسه و در نهایت یکی را انتخاب می نماید.هوش مصنوعی و گرافیک بازی هاتا مدت ها تصور میشد حوزه هنر و خلاقیت از مباحثی است که هوش مصنوعی هیچ گاه توانایی وارد شدن به آن را نخواهد داشت؛ اما چنین تصوری اشتباه بود. برای مثال یکی از تکنیک های بینایی ماشین به نام Style Transfer Method با استفاده از دو تصویر مرجع، یکی برای محتوا و دیگری برای استایل های هنری تصویر، الگو ها و المان های بصری آن ها را با هم ترکیب کرده و در نهایت یک تصویر را به عنوان خروجی تولید می کند که می توان آن را نمونه ی &quot;نقاشی شده&quot; از تصاویر مرجع دانست. بدین ترتیب توانایی خلق تصاویر جدید با استفاده از بررسی مدل های اولیه برای هوش مصنوعی قابل دسترسی است و این تکنیک برای ساخت تصاویر و فیلم هایی که در روند توسعه بازی نیاز هستند، مورد استفاده قرار می گیرد.ساحت تصاویر جدید با استفاده از تکنیک Style Transfer Method تکنیک دیگر مورد استفاده از هوش مصنوعی در بهبود گرافیک، Real Time Ray Tracing می باشد. تا پیش از معرفی این قابلیت توسط شرکت NVIDIA در سری جدید پردازنده های گرافیکی RTX، نورپردازی بازی ها، در واقع به جای &quot;شبیه سازی&quot;، تنها با بررسی دنیای واقعی &quot;ساخته&quot; می شد که نمونه آن را در تصویر زیر می توان دید؛ سایه ها همگی طبق بررسی ذهنی طراح گرافیک &quot;ساخته&quot; شده اند.نورپردازی به شیوه مرسوم قدیمی در بازی های ویدیوییامااما در این تکنیک، رفتار واقعی نور مطابق دنیای واقعی &quot;َشبیه سازی&quot; می شود که نتیجه حتی الامکان شبیه واقعیت به دست آید. برای این کار در یک صحنه مجازی، مسیری از یک چشم فرضی به هر پیکسل در نظر گرفته شده و رنگ هر شی که از آن قابل مشاهده است نیز محاسبه و مشخص می شود؛ صحنه های مجازی با استفاده از محاسبات ریاضی و توسط برنامه نویس یا ویژوال آرتیست ساخته می شوند.در این حوزه هم هوش مصنوعی به کمک انسان آمده است. روشی به نام Procedural Content Generation با طراحی مواردی نظیر مدل های سه بعدی، رنگها، رویداد های طبیعی و نیز مراحل بازی، در واقع جای طراح بازی را پر می کند. برای این کار، الگوریتم ابتدا با دریافت تعداد کافی و مناسب از نمونه های اولیه یاد میگیرد؛ سپس برای استفاده، تنها کافی است کلید واژه های توصیف کننده خروجی مد نظر را به آن داد تا نتیجه خواسته شده را ایجاد کند. برای مثال اگر کلید واژه های خانه چوبی، دهکده ی روی دریاچه، دو طبقه، دارای پله بیرونی برای ورود به طبقه بالایی و سقف شیروانی به عنوان ورودی به الگوریتم داده شود، نتایج حاصل شبیه تصاویر زیر خواهد بود که طراح بازی با توجه به ویژگی های مدنظر خود یکی از آن ها را انتخاب می کند.مدل های حاصل شده از تکنیک Real Time Ray Tracingمورد بعدی قابل بررسی در حوزه گرافیک و دیزاین، هزینه طراحی مدل های موجود در بازی های ویدیویی است که عاملی بسیار مهم در روند توسعه بازی محسوب می شود. جزییات بالای موجود در این مدلهای سه بعدی فرایند ساخت آن ها را بسیار زمان بر و پر هزینه می سازد؛ برای مثال، طراحی صحنه ی زیر در یک بازی ویدیویی، حدود 200 هزار دلار هزینه داشته است!هزینه بالای طراحی مدل های موجود در بازی های ویدیوییدر این حوزه هم هوش مصنوعی به کمک انسان آمده است. روشی به نام Procedural Content Generation با طراحی مواردی نظیر مدل های سه بعدی، رنگها، رویداد های طبیعی و نیز مراحل بازی، در واقع جای طراح بازی را پر می کند. برای این کار، الگوریتم ابتدا با دریافت تعداد کافی و مناسب از نمونه های اولیه یاد می گیرد؛ سپس برای استفاده، تنها کافی است کلید واژه های توصیف کننده خروجی مد نظر را به آن داد تا نتیجه خواسته شده را ایجاد کند. برای مثال اگر کلید واژه های خانه چوبی، دهکده ی روی دریاچه، دو طبقه، دارای پله بیرونی برای ورود به طبقه بالایی و سقف شیروانی به عنوان ورودی به الگوریتم داده شود، نتایج حاصل شبیه تصاویر زیر خواهند بود که طراح بازی با توجه به ویژگی های مدنظر خود یکی از آن ها را انتخاب می کند.بدین ترتیب در طی زمان بسیار کمتر، با دقت بالاتر و با هزینه پایین، مدل های مورد نیاز طراح بازی ساخته و پرداخته می شوند که در بهبود روند توسعه بازی های ویدیویی تحولی شگرف محسوب می شود.مدل های ساخته شده توسط متد PCGساخت بازی توسط هوش مصنوعیمرحله نهایی هوش مصنوعی در حوزه بازی های ویدیویی، ساخت تمام و کمال یک بازی بدون دخالت انسان و توسط هوش مصنوعی خواهد بود که البته تا حدودی این کار هم انجام شده است!با استفاده از یادگیری ماشین، چندین ساعت از گیم پلی انسانی بازی های Super Mario و  Kirby’s Adventure به الگوریتم داده شد و در نهایت الگوریتم توانست یک بازی شبیه به Mega Man را به عنوان خروجی داشته باشد.نمونه های اولیه داده شده به الگوریتم جهت ساخت یک بازی مشابهکلام آخرامروزه هوش مصنوعی به عنوان جز لاینفک از زندگی روزمره ما به شمار رفته و این نقش نیز روز به روز رو به رشد می باشد. بدیهی است که در آینده ای نه چندان دور، ابزار های مختلف هوش مصنوعی جهت توسعه بازی های ویدیویی با کیفیت های بسیار بالا به کمک انسان خواهند آمد و مرز بین واقعیت و بازی ها، کمرنگ و کمرنگ تر خواهد شد.</description>
                <category>Soheil Hoseini</category>
                <author>Soheil Hoseini</author>
                <pubDate>Fri, 29 Apr 2022 23:53:08 +0430</pubDate>
            </item>
            </channel>
</rss>