برنامه نویسی به زبان ساده | نقد و بررسی بازی ()while True: learn

۱۰ بهمن ۱۳۹۷ - ۰۹:۰۰

برنامه نویسی، پایه اصلی تمامی برنامه‌های کامپیوتری از جمله بازی‌های ویدیویی است که تمامی بخش‌های بازی به نوعی وابسته به این قسمت هستند. با این وجود در میان عناوین بزرگ، تقریباً بازی بزرگی که به خود مقوله برنامه نویسی پرداخته باشد وجود ندارد، در میان عناوین مستقل نیز عناوین زیادی در مورد خود برنامه نویسی به چشم نمی‌خورد. هر چند تعداد اندکی از بازی‌ها نظیر عناوین استودیو Zachtronics و Tommorow Corporation در این زمینه به موفقیت‌های فراوانی دست یافته‌اند. اکنون استودیو Luden.io با تمرکز بر شاخه‌ای خاص از برنامه نویسی که از آن به نام یادگیری ماشین یاد می‌شود، اقدام به ساخت بازی ()while True: learn کرده است که در ادامه به بررسی آن می‌پردازیم.

قبل از شروع نقد خود این بازی، کمی در مورد یادگیری ماشین (Machine Learning) که این بازی برمبنای اصول آن ساخته شده است، توضیح می‌دهیم. یادگیری ماشین، یکی از بخش‌های تحقیقاتی علوم کامپیوتر است و البته به نوعی زیرمجموعه هوش مصنوعی محسوب می‌شود. هدف اصلی یادگیری ماشین، طراحی سیستم‌هایی است که بدون این که به طور کاملاً دقیق همه دستورالعمل‌ها برایشان مشخص شود، عمل خاصی را انجام دهند. معمولاً این گونه سیستم‌ها با استفاده از داده‌هایی که به عنوان داده‌های تمرینی شناخته می‌شوند، اصول کلی کار مورد نظر را با استفاده از الگوریتم‌های تعیین شده فراگرفته و سپس مطابق با آن الگوها، شروع به انجام کارهای مختلف می‌کنند.

موضوع کلی معماهای بازی، یکی از شاخه‌های هوش مصنوعی است که یادگیری ماشین نام دارد

چندین شکل مختلف از سیستم‌های یادگیری ماشین وجود دارد. نوع اول که از آن با نام نظارتی یا شبه-نظارتی (Supervised, Semi-Supervised Learning) یاد می‌شود بر اساس مشخص کردن خروجی‌های مد نظر در داده‌های تمرینی است. بدین شکل که تعدادی ورودی و خروجی مد نظر آن ورودی‌ها به سیستم داده شده و سیستم باید مطابق با آن‌ها، در بقیه حالات به انجام اعمال مختلف بپردازد. مثلاً شما تصویر تعدادی گربه و تعدادی انسان را به کامپیوتر داده و برای آن مشخص می‌کنید که کدام یک گربه و کدام یک انسان است و پس از آن مطابق با الگوریتم‌ها، کامپیوتر برای داده‌های دیگری که به او داده می‌شود با توجه به المان‌های درونی عکس‌ها، باید تشخصی دهد که کدام یک گربه و کدام یک انسان است. نوع دوم، روش غیرنظارتی (Unsupervised Learning) است. در این روش، به کامپیوتر گفته نمی‌شود که خروجی مد نظر داده‌های اولیه و تمرینی، چه چیزی هستند و کامپیوتر باید خود المان‌هایی را پیدا کند تا داده‌ها را تقسیم بندی کند. مثلاً در همان مثال بالا، این بار عکس گربه و انسان به کامپیوتر داده می‌شود ولی مشخص نمی‌کنید که کدام یک گربه و کدام یک انسان است و کامپیوتر صرفاً باید بر اساس تفاوت‌هایی که در عکس‌ها شناسایی می‌کند، آن‌ها را در دسته‌های مختلف تقسیم بندی کند. در این حالت این که نام دسته‌ها چه طور باشند و دقیقاً چه ماهیتی داشته باشند، مهم نیست بلکه موضوع اصلی این است که عکس‌های متفاوت در دسته‌های متفاوت و عکس‌های مشابه در دسته‌های یکسانی قرار بگیرند. نوع سوم، یادگیری تقویتی (Reinforcement Learning) نام دارد. در این روش، ناظر انسانی برای کامپیوتر مشخص می‌کند که آیا تقسیم بندی‌های آن درست بوده است یا نه و بر این اساس، روش مورد استفاده کامپیوتر نیز تغییر می‌کند. فرق این روش با حالت نظارتی این است که در حالت نظارتی برای داده‌های اولیه شما از همان ابتدا خروجی را مشخص می‌کنید ولی در این حالت بعد از این که کامپیوتر دسته‌بندی‌ها را انجام داد، مشخص می‌کنید که درست انجام شده است یا نه و بر اساس این نظرات، کامپیوتر سیستم کاری خود را تغییر می‌دهد.

یادگیری ماشین به طور کلی هم اکنون کاربردهای بسیار گسترده‌ای در بخش‌های مختلف دارد که از جمله آن‌ها می‌توان به سیستم‌های بینایی کامپیوتر (Computer Vision) و همچنین تشخیص اسپم در ایمیل‌ها اشاره کرد. برای این که مطلب بیش از این حالت تخصصی به خود نگیرد، به سراغ نقد خود بازی می‌رویم.

اولین موضوعی که آن را بررسی می‌کنیم، داستان بازی است. عموماً بازی‌های این چنینی که بیش‌تر تأکیدشان بر روی گیم پلی است، داستان اهمیت خیلی زیادی ندارد اما به هر حال وجود یک داستان کلی برای انجام بخش‌های مختلف بازی ضروری است. داستان این بازی نیز در مورد برنامه نویسی است که پس از ساعت‌ها کار سخت، با باگ‌های پیچیده‌ای در برنامه خود مواجه می‌شود و چند ساعتی از جلوی کامپیوتر خود بلند می‌شود. در همین حین گربه او به سراغ کامپیوتر رفته و باگ‌های برنامه او را برطرف می‌کند. پس از این که شخصیت اصلی داستان که همان برنامه نویس است، به میز کار خود بر می‌گردد متوجه می‌شود که گربه او مشکلات را برطرف کرده است و از این رو تصمیم می‌گیرد که سیستمی را طراحی کند که بتواند زبان گربه‌ها را ترجمه بکند تا او متوجه صحبت‌های گربه خود که ظاهراً نابغه است، پی ببرد.

داستان بازی به این شکل روایت می‌شود

موضوع کلی داستان بازی در مجموع با وجود سادگی، جذابیت کافی را برای این که بازی را شروع بکنید دارد. در این میان نیز در طول مراحل مختلف بازی، به نوعی تاریخچه سیستم‌های یادگیری ماشین که تقریباً از دهه ۶۰ میلادی آغاز شده است، روایت می‌شود. در این میان بعد از تعدادی مرحله نیز میان پرده‌های کمیک استریپ گونه‌ای مربوط به پیشرفت شخصیت در پروژه‌اش نمایش داده می‌شود. در این میان نیز داستان مأموریت‌های بازی به صورت ایمیل‌هایی که برای شخصیت اصلی فرستاده می‌شوند روایت شده و اکثراً در مورد شرکت‌های مختلفی هستند که برای انجام بخشی از کار خود، قصد استفاده از سیستم‌های یادگیری ماشین را دارند.

در کل، هر چند داستان بازی بسیار ساده است ولی با مواردی نظیر داستان‌های مختلفی که در ایمیل‌ها روایت می‌شود و جذابیت طنز داستان، توانسته به شکل جذاب و مناسبی بازیکن را به سمت ادامه بازی که کاملاً مبتنی بر مطالب علمی است سوق داده و در این میان، به صورت خیلی کوتاه بازیکن را تاریخچه این سیستم‌ها نیز آشنا کند.

اما مطمئناً مهم‌ترین بخش بازی‌های این چنینی، گیم پلی آن‌هاست. به طور کلی گیم پلی کلی بازی مبتنی بر این است که با قرار دادن یکسری دستورات روی صفحه و متصل کردن آن‌ها به قسمت ورودی، با انجام پردازش خاصی روی ورودی، خروجی مطلوب را به قسمت خروجی وارد کنید. به عنوان مثال می‌توانید با قرار دادن دستوری مبنی بر مقایسه رنگ ورودی، ورودی‌های آبی رنگ را به یک خروجی و ورودی‌های قرمز را به خروجی دیگر منتقل کنید؛ اما طبیعتاً بازی به همین شکل به تنهایی ادامه پیدا نمی‌کند. در ابتدا تنها رنگ داده‌ها (قرمز، سبز، آبی) مد نظر است ولی پس از آن، مسئله شکل خروجی‌ها (دایره، مربع، مثلث) نیز اهمیت پیدا می‌کنند و دستوراتی برای مقایسه شکل‌ها وارد کار می‌شوند. علاوه بر این، به تدریج دستورات مختلفی در همین دو زمینه وارد بازی می‌شوند که هر کدام کارهای متفاوتی انجام می‌دهند. مثلاً یک دستور ممکن است صرفاً یک رنگ مشخص را به یک خروجی و سایر رنگ‌ها را به خروجی‌های دیگر بدهد در حالی که دستور دیگر، دو رنگ مختلف را بررسی کرده و هر کدام از این دو رنگ را وارد خروجی متفاوتی کرده و رنگ سوم را که تعیین نشده باشد، به طور رندوم وارد یکی از خروجی‌ها می‌کند. به همین ترتیب به تدریج سیستم‌های متفاوتی وارد بازی می‌شوند که هر کدام چالش خاصی را در بازی ایجاد می‌کنند؛ اما مهم‌ترین زمینه‌ای که شما را وادار می‌کند از دستورات مختلف استفاده کنید، این است که هر دستوری مدت زمان خاصی برای اجرا دارد و در طول هر مأموریت نیز شما در مجموع هر چقدر سریع‌تر و با استفاده از دستورات کمتری کار را به پایان برسانید، مدال خوش رنگ‌تری کسب می‌کنید. به علاوه پولی که از انجام مأموریت به دست می‌آورید نیز به دلیل مصرف کمتر منابع، بیش‌تر خواهد شد. به عنوان نمونه‌ای دیگر در بخشی از بازی سیستم تقسیم کننده‌ای قرار داده می‌شود که داده‌ها را به طور تصادفی به یکی از دو خروجی خود وارد می‌کند. چنین سیستمی در بخش‌هایی که به عنوان مثال در خروجی در دو قسمت رنگ قرمز لازم است و شما تنها یک ورودی دارید، به کار خواهد آمد.

به طور کلی، بازی با روند مشخصی، دستورات و فرآیندهای مختلفی را پیش روی شما قرار می‌دهد. نرخ ارائه این قابلیت‌های جدید نیز به گونه‌ای است که به خوبی درست قبل از این که حوصله بازیکن از استفاده از قابلیت قبلی سر برود، قابلیت جدیدی برای او ارائه می‌شود که او را همچنان به بازی علاقه‌مند نگه دارد. از این رو می‌توان Game Design بازی را کاملاً قابل قبول دانست زیرا سازندگان توانسته‌اند میان چالش‌ها و ارائه قابلیت‌های جدید، تعادل بسیار خوبی ایجاد کنند.

یکی از معماهای ابتدایی بازی که باید رنگ قرمز و آبی را به درستی بین دو خروجی تقسیم کنید. رنگ سبز چون در دستورالعمل مقایسه وارد نشده است، به طور تصادفی به یکی از دو خروجی خواهد رفت.

اگر صرفاً بخواهید بخش اصلی بازی را انجام دهید، با چالش‌های خیلی سختی رو به رو نخواهید بود و مخصوصاً اگر به صورت معمول با برنامه نویسی آشنایی داشته باشید، به راحتی قادر به انجام آن‌ها خواهید بود؛ اما مأموریت‌های فرعی بازی به گونه‌ای هستند که هر چند اگر فردی با برنامه نویسی آشنایی داشته باشد، اکثرشان را به راحتی انجام خواهد داد اما معدود مواردی نیز هستند که نسبت به سایر مأموریت‌ها، سخت‌تر بوده و احتمالاً یک بازیکن معمولی بدون دانش برنامه نویسی یا با دانش اندک، قادر به انجام آن‌ها نخواهد بود. بخش‌هایی به نام Startup نیز در بازی وجود دارند که در آن‌ها باید برای Startup های مختلفی سیستمی را طراحی کنید و اگر سیستم شما به اندازه کافی بهینه و سریع بوده باشد، از آن Startup با واحد پول درون بازی درآمد کسب خواهید کرد و در غیر این صورت، Startup دچار ضرر شده و در نهایت مجبور خواهید شد که سرمایه خود را در آن Startup برای جلوگیری از ضرر بفروشید. معمولاً مأموریت‌های مربوط به Startup ها راه حل‌های بسیار متنوعی دارند و به خودی خود نیز از بیش‌تر مأموریت‌های بازی سخت‌تر هستند و نیاز به تفکر بیش‌تری برای حل آن‌ها خواهید داشت.

صحبت از کسب درآمد در بازی شد؛ با به دست آوردن پول در بازی می‌توانید برای سیستم خود آپگریدهایی تهیه کنید که باعث می‌شود سرعت دستورالعمل‌های شما بالاتر رفته و یا هزینه کار هر برنامه پایین آمده و در نهایت درآمد بیش‌تری کسب کنید. تجهیزات بازی هم مانند تجهیزات امروزی نام‌گذاری شده‌اند و فقط برای حفظ کپی رایت و حق نام قطعات، تغییراتی در اسامی به وجود آمده است. مثلاً به جای Intel Core i7 در بازی از Jntel j7 استفاده شده است. علاوه بر این‌ها امکان تهیه یکسری آیتم‌های تزئینی برای منوی بازی، چند قطعه کد برای انجام سریع‌تر بعضی از عملیات‌ها و همچنین شکل‌های مختلف برای گربه شخصیت اصلی نیز وجود دارد. در این جا نیز بازی به عناوین دیگر اشاراتی داشته و مثلاً یکی از شکل‌های گربه، او را به شکل گرالت در آورده و دو شمشیر نیز به او می‌دهد. در توضیحات این شکل نیز گفته شده که این گربه از پورتال‌ها متنفر است که اگر سری The Witcher را بازی کرده باشید، حتماً از این موضوع که گرالت از پورتال‌ها چندان خوشش نمی‌آید آگاه هستید.

امکان خرید شکل‌های مختلف برای گربه وجود دارد. در این جا گربه به شکل گرالت از بازی The Witcher در آمده است

چند مأموریت بازی نیز شکل کاملاً متفاوتی با سایر مأموریت‌ها دارند. مأموریت‌های مربوط به Reinforcement Learning بدین صورت هستند که شما باید یک اتومبیل را در یک جاده حرکت داده و بنا به محدوده دید اتومبیل و این که در جلو خودروی شما اتومبیل دیگری قرار دارد یا نه، آن را به جهات متفاوت هدایت کنید. بعد از این کار کامپیوتر سعی می‌کند از حرکات شما یاد گرفته و خودش اقدام به رانندگی نماید. متأسفانه این بخش خیلی خوب پیاده سازی نشده است. مخصوصاً در مراحل بالاتر که یکسری المان‌ها برای تغییرات موجود در الگوریتم به آن اضافه می‌شوند، به دلیل عدم توضیح مناسب این المان‌ها، شما مجبور خواهید بود که صرفاً اعداد را به صورت تصادفی تغییر دهید تا شاید نتیجه مطلوب حاصل شود. ضمن این که گاهی اوقات بازی خیلی خوب از حرکات شما استفاده نکرده و کاملاً برعکس حرکات شما را در الگوریتم حرکت خودکار ماشین پیاده سازی می‌کند. ظاهراً سازندگان گفته‌اند که برای این بخش بازی واقعاً یک الگوریتم یادگیری ماشین در کدهای بازی پیاده سازی شده است که باعث این تصادفی بودن شده است ولی به هر حال باید کمی توضیحات بیش‌تری در مورد المان‌ها داده می‌شد چون به هر حال با وجود تصادفی بودن، در مجموع تأثیر خود را دارند و شما بدون اطلاع دقیق از کارکردشان، مجبورید صرفاً به طور تصادفی از آن‌ها استفاده کنید.

بخش Reinforcment Learning و عملکرد دقیق آن خیلی خوب در بازی توضیح داده نشده است ولی خوشبختانه بدون این بخش نیز امکان به اتمام رساندن بازی وجود دارد.

البته اگر از بخش Reinforcment Learning فاکتور بگیریم، در بقیه بخش‌ها کارکرد دستورات مختلف به شکل خوبی به کاربر منتقل می‌شود و به علاوه مأموریت اول بعد از به دست آوردن هر قابلیت جدید، به شکل خیلی ساده‌ای کارکرد همان قابلیت را به نمایش می‌گذارد تا شما نحوه استفاده از آن را بیاموزید. به علاوه لینک‌هایی به صفحات علمی واقعی در این زمینه نیز وجود دارد تا اگر بخواهید، بتوانید به طور علمی و دقیق، با کارکرد واقعی هر کدام از این دستورات در زمینه کاری واقعی یادگیری ماشین آشنا شوید.

در مجموع و با در نظر گرفتن همه این موارد، این بازی توانسته به صورت تقریباً ساده شده، بخشی از دنیای یادگیری ماشین را به کاربر ارائه کند. بازی با روند خوبی شما را با دستورات مختلفی که در زمینه یادگیری ماشین استفاده می‌شوند آشنا می‌کند. از طرفی هر چند مأموریت‌های لازم برای اتمام بازی ساده هستند، اما مأموریت‌های دشوار و چالش برانگیز بسیار خوبی نیز برای علاقه‌مندان این زمینه در بازی قرار داده شده است. در کل سازندگان از پس پیاده سازی یک مبحث علمی به صورت سرگرم‌کننده و در قالب بازی به خوبی برآمده اند.

از دستوراتی که صرفا داده‌ها را به صورت تصادفی پخش می کنند برای افزایش سرعت الگوریتم‌هایتان در نیمه دوم بازی استفاده خواهید کرد

بعد از این نوبت به گرافیک بازی می‌رسد. از بعد هنری بازی شامل یکسری طراحی بین مراحل و همچنین شکل و ظاهر کلی شخصیت‌ها می‌شود که همگی به خوبی طراحی شده و برای چنین عنوانی مناسب هستند و همچنین رابط کاربری بازی نیز به خوبی طراحی شده است. هر چند اگر برای متصل کردن بخش‌های مختلف به همدیگر، امکان استفاده از رنگ‌های گوناگون وجود داشت، سردرگمی بازیکنان برای پیاده کردن سیستم‌های پیچیده تا حدی کمتر می‌شد. از بعد فنی، گرافیک بازی خیلی نکته خاصی برای بررسی کردن ندارد. البته در این زمینه پرفورمنس بازی اگر تعداد بسیار زیادی دستور را در صفحه قرار دهید، تا حدی پایین می‌آید که این با توجه به این که بازی گرافیک فنی خیلی پیچیده‌ای نداشته و تنها از شکل‌های ساده استفاده می‌کند، تا حدودی نکته منفی به حساب می‌آید.

در زمینه موسیقی و صداگذاری هم بازی در کل با توجه به سبک خود عملکرد قابل قبولی دارد. البته به طور کلی موسیقی‌های بازی تنوع خیلی بالایی ندارند و مخصوصاً اگر بخواهید مدت زیادی روی بهینه کردن برنامه‌هایی که طراحی کرده‌اید کار بکنید، احتمالاً برای شما تکراری خواهد شد اما با توجه به این که در کل با یک تیم مستقل طرف هستیم و با توجه به بودجه محدودی که برای ساخت چنین آثاری وجود دارد، عملکرد کلی بازی قابل قبول است.

نتیجه گیری نهایی:

با تمام مواردی که گفته شد، ()while True: learn عنوانی بسیار خوبی است که به خوبی شما را با کلیات یادگیری ماشین که یکی از شاخه‌های مهم هوش مصنوعی محسوب می‌شود، آشنا می‌کند. بازی از لحاظ گیم پلی و ارائه چالش‌های متفاوت با درجه سختی‌های گوناگون متناسب با توانایی بازیکنان بسیار خوب عمل کرده و در عین حال، داستان قابل قبولی نیز دارد. از لحاظ گرافیک و موسیقی نیز عملکرد بازی قابل قبول است. در مجموع می‌توان گفت که اگر به برنامه نویسی علاقه‌مند هستید، این بازی می‌تواند انتخاب بسیار خوبی برای شما باشد. همچنین امیدواریم با توجه به پیاده سازی خوب این بازی توسط استودیو Luden.io در ادامه نیز شاهد بازی‌های مبتنی بر برنامه نویسی از این استودیو باشیم.

0
0

نظرات

دیدگاهتان را بنویسید

  • یک بازی با ایده های تازه!جذاب به نظر میرسه. Grin
    من یه انتقاد ازتون داشتم.به نظرم بهتره نقد ویدعویی و متنی بازی همزمان عرضه بشه.(مثل سایتای دیگه)یه نفر بخواد یه نقد بزارهـ بعد دوباره نفر بعدی بخواد همون بازی رو دوباره نقد کنه منتها ویدعویی خیلی جالب نیست.تکرار مکررات میشه

    0
    0
    • shadowwarior گفت:

      خیلی خیلی موافقم Yes راستی بازیش ایندی و انحصاری pc عه؟ نویسنده اسم خودش رو هشتگ زده ولی پلتفرمهارو خیر Neutral

      0
      0
      • سلام.
        پلتفرم های هر بازی به علاوه نمره گیمفا، نام سازنده، ناشر، سبک و تاریخ انتشار در مشخصات بازی که در گوشه سمت چپ هر مطلب قرار دارد، نوشته شده است. برای این بازی نیز تا کنون فقط پلتفرم PC بوده است. هر چند ظاهرا قرار است در آینده برای پلتفرم های موبایل هم منتشر شود اما تاریخ انتشار یا نکته خاصی توسط سازنده هنوز اعلام نشده است. البته حق با شماست و در تگ های بازی PC را فراموش کرده بودم که اضافه شد.

        0
        0
  • MehrdadPS4 گفت:

    یادش بخیر درس یادگیری ماشین رو تو دوره ارشد (دوستای که دانشجو هستن قدر زمان حالشونو بدونن من که وقتی یاد دوره ارشد و دانشگاه می افتم کلی خاطره زیبا می آید تو ذهنم) خواندم تازه مواردی مثل یادگیری تقویتی و یادگیری عمیق وارد علوم کامپیوتر شده بودن.بازی جالبیه

    0
    0
  • BigWolfShow گفت:

    خوشحالم که این خبر هارو پوشش میدینی
    لطفا از این سیستم های جدید باز مقاله قرار بدید
    این ها خیلی مفید هستند و برای نسل های حاضر که بازی سازی میکنند بسیار مفید واقع میشود

    0
    0