بازی کردن عمومی

**بازی کردن عمومی** (**GGP**) طراحی برنامه‌های هوش مصنوعی است تا بتوان بیش از یک بازی را با موفقیت انجام داد. برای بسیاری از بازی‌ها مانند شطرنج، کامپیوترها برنامه‌ریزی شده‌اند تا این بازی‌ها را با استفاده از یک الگوریتم طراحی شده خاص انجام دهند، که نمی‌تواند به بازی‌های دیگر این برنامه تعمیم پیدا کند. به عنوان مثال، یک برنامه رایانه ای که شطرنج بازی می‌کند نمی‌تواند بازی چکرز را انجام دهد. بازی عمومی به عنوان یک نقطه عطف ضروری در مسیر هوش جامع مصنوعی محسوب می‌شود.

**بازی ویدیویی کردن عمومی** (**GVGP**) یکی دیگر از کاربردهای GGP است که با توجه به هدف بازی‌های ویدیویی تنظیم می‌شود. در بازی سازی عمومی قوانین بازی باید توسط چند بازیکن تکرار شود مانند TD-Gammon یا به صورت دستی این قوانین در یک زبان خاص و از پیش تعریف شده برای بازیکنان ارسال شود

درواقع GGP از سال ۲۰۱۳ به دنبال رویکرد یادگیری تقویت عمیق هست مانند توسعه برنامه ای که بر اساس یادگیری عمیق بتواند بازی آتاری ۲۶۰۰ را یاد بگیرد و توسط این یادگیری بتواند بازی‌های سیستم سرگرمی نینتندو که در نسل‌های بعد ارایه می‌شود را انجام دهد

اولین کاربرد تجاری فناوری بازی عمومی، Zillions of Games در سال ۱۹۹۸ بود. بازی عمومی نیز برای نمایندگان تجارت در مدیریت زنجیره تأمین و پس از آن در مذاکره‌ها قیمت در حراج‌های آنلاین از سال ۲۰۰۳ به بعد پیشنهاد شد.

## تاریخ
در سال ۱۹۹۲، بارنی پل مفهوم Meta-Game Playing را تعریف کرد و سیستم "MetaGame" را توسعه داد. این اولین برنامه ای بود که به‌طور خودکار قوانین بازی‌های شطرنج مانند را تولید می‌کند و یکی از اولین برنامه‌هایی است که از تولید بازی‌های خودکار استفاده می‌کند. سپس بارنی پل سیستم *Metagamer را* توسعه داد. این سیستم با توجه به تعریف قوانین بازی به زبانی خاص به نام Game Description Language، بدون هیچ گونه تعامل انسانی پس از تولید بازی‌ها، توانست تعدادی از بازی‌های شطرنج مانند را انجام دهد.

در سال ۱۹۹۸، سیستم تجاری Zillions of Games توسط جف مالت و مارک لفلر ساخته شد. این سیستم برای تعریف قوانین بازی از زبانی مانند LISP استفاده می‌کرد. Zillions of Games عملکرد ارزیابی را به‌طور خودکار از قوانین بازی بر اساس تحرک، ساختار صفحه و اهداف بازی به دست می‌آورد. همچنین الگوریتم‌ها را در سیستم‌های شطرنج رایانه ای به کار می‌برد: هرس آلفا بتا با ترتیب حرکت، جداول جابجایی و غیره. این بسته در سال ۲۰۰۷ با افزودن پلاگین Axiom، یک موتور متا بازی جایگزین که یک زبان برنامه‌نویسی کاملاً مبتنی بر Forth را در خود دارد، تمدید شد.

در سال ۱۹۹۸، z-Tree توسط Urs Fischbacher ساخته شد. z-Tree اولین و پر استنادترین ابزار نرم‌افزاری برای اقتصاد تجربی است. z-Tree امکان تعریف قوانین بازی در زبان z-Tree را برای آزمایش‌ها تئوری بازی با افراد انسانی فراهم می‌کند. همچنین امکان تعریف بازیکنان رایانه ای را نیز فراهم می‌کند، که در یک بازی با موضوع‌های انسانی شرکت می‌کنند.

در سال ۲۰۰۵، *بازی عمومی* پروژه استنفورد تأسیس شد.

در سال ۲۰۱۲، توسعه PyVGDL آغاز شد.

## پیاده‌سازی‌های GGP
### پروژه استنفورد
*General Game Playing* پروژه ای از گروه منطق استنفورد دانشگاه استنفورد، کالیفرنیا است که هدف آن ایجاد بستری برای بازی عمومی است. این شناخته شده‌ترین تلاش برای استانداردسازی GGP AI است و به‌طور کلی به عنوان استاندارد سیستم‌های GGP دیده می‌شود. این بازی‌ها با مجموعه قوانینی که در زبان توضیح بازی ارائه می‌شوند، تعریف می‌شوند. برای انجام بازی‌ها، بازیکنان با یک سرور میزبان بازی ارتباط برقرار می‌کنند که از نظر قانونی بودن حرکت را کنترل می‌کند و بازیکنان را از تغییرهای وضعیت مطلع می‌کند.

از سال ۲۰۰۵، سالانه مسابقه‌های بازی عمومی در کنفرانس AAAI برگزار می‌شود. این مسابقه با ضبط عملکرد آنها در هر بازی، توانایی‌های AI رقیب را برای انجام انواع بازی‌های مختلف قضاوت می‌کند. در مرحله اول مسابقه، داوطلبان با توجه به توانایی انجام حرکت‌های قانونی، دستیابی به برتری و بازی‌های سریعتر قضاوت می‌شوند. در مرحله بعدی، هوش مصنوعی در بازی‌های پیچیده‌ای که به‌طور فزاینده ای پیچیده‌ هستند، در برابر یکدیگر قرار می‌گیرند. هوش مصنوعی که در این مرحله بیشترین موفقیت را به دست می‌آورد در این مسابقه برنده می‌شود و تا سال ۲۰۱۳ سازنده آن یک جایزه ۱۰ هزار دلاری می‌گرفت. تاکنون، برنامه‌های زیر پیروز بودند:
* 2005: Cluneplayer، نوشته جیم کلون (UCLA)
* 2006: Fluxplayer , توسط استفان شیفل و مایکل تیلشر (دانشگاه صنعتی درسدن)
* 2007: Cadiaplayer , توسط Yngvi Björnsson و Hilmar Finnsson (دانشگاه ریکیاویک)
* 2008: Cadiaplayer، توسط Yngvi Björnsson , Hilmar Finnsson و Gylfi Þór Guðmundsson (دانشگاه ریکیاویک)
* ۲۰۰۹: آری، توسط Jean Méhat (دانشگاه ۸ پاریس)
* ۲۰۱۰: آری، توسط Jean Méhat (دانشگاه ۸ پاریس)
* 2011: TurboTurtle، ساخته سام شریبر
* 2012: Cadiaplayer، توسط Hilmar Finnsson و Yngvi Björnsson (دانشگاه ریکیاویک)
* 2013: TurboTurtle، ساخته سام شریبر
* ۲۰۱۴: سانچو، توسط استیو دراپر و اندرو رز
* ۲۰۱۵: گالوانیزه، توسط ریچارد امسلی
* 2016: WoodStock، توسط Eric Piette (دانشگاه Artois)

### رویکردهای دیگر
سیستم‌های بازی عمومی دیگری نیز وجود دارند که از زبانهای خاص خود برای تعریف قوانین بازی استفاده می‌کنند. سایر نرم‌افزارهای عمومی بازی شامل:
* سیستمی به نام AiAi توسط Stephen Tavener (توسعه دهنده قبلی Zillions) که به سال ۲۰۱۵ برمی گردد و از اواخر سال ۲۰۱۷ فعالانه توسعه می‌یابد.
* سیستمی به نام PolyGamo Player توسط David M. Bennett در سپتامبر ۲۰۱۷ بر اساس موتور بازی یونیتی منتشر شد.

## پیاده‌سازی‌های GVGP
به‌طور بالقوه می‌توان از GVGP برای ایجاد هوش مصنوعی بازی‌های ویدیویی و همچنین «آزمایش محیط‌های بازی، از جمله مواردی که به‌طور خودکار با استفاده از تولید محتوای مرحله ای ایجاد می‌شوند و یافتن نقاط ضعف احتمالی در بازی که یک بازیکن انسانی می‌تواند سوءاستفاده کند ،» استفاده کرد. از GVGP همچنین برای تولید قوانین بازی و تخمین کیفیت بازی بر اساس پروفایل‌های عملکرد الگوریتم نسبی (RAPP) استفاده شده‌است که تفاوت مهارت را که یک هوش مصنوعی خوب و هوش مصنوعی انجام می‌دهد مقایسه می‌کند.

**مسابقه هوش مصنوعی General Video Game** (GVGAI ) از سال ۲۰۱۴ برگزار می‌شود. در این مسابقه، به جای بازی‌های رومیزی که در مسابقه GGP استفاده می‌شود، از بازی‌های ویدئویی دو بعدی مشابه (و بعضاً مبتنی بر) دوره‌های بازی و کنسول مربوط به دوران دهه ۸۰ استفاده می‌شود. این یک روش برای محققان و شرکت کنندگان ارائه داده‌است تا بهترین الگوریتم‌های بازی عمومی ویدیویی خود را آزمایش و مقایسه کنند. این مسابقه دارای یک چارچوب نرم‌افزاری مرتبط با تعداد زیادی بازی است که به زبان توضیح‌های بازی ویدیویی (VGDL) نوشته شده‌است، که نباید با GDL اشتباه گرفته شود و یک زبان برنامه‌نویسی با استفاده از معانی و دستورهای ساده است که به راحتی تجزیه می‌شود. یک مثال برای VGDL PyVGDL است که در سال ۲۰۱۳ ساخته شده‌است. بازی‌های مورد استفاده در GVGP، در حال حاضر، غالباً بازی‌های دو بعدی هستند، زیرا ساده‌ترین آنها برای تعیین کمیت است. برای ساده‌سازی فرایند هوش مصنوعی که می‌تواند بازی‌های ویدیویی را تفسیر کند، بازی‌ها بصورت دستی در VGDL نوشته می‌شوند. VGDL می‌تواند برای توصیف یک بازی و تولید رویه سطوح، با استفاده از Answer Set Programming (ASP) و یک الگوریتم تکاملی (EA) استفاده شود. سپس می‌توان از GVGP برای بررسی اعتبار سطوح رویه ای و همچنین دشواری یا کیفیت سطوح بر اساس عملکرد یک عامل استفاده کرد.

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

یک روش محبوب برای توسعه GGP AI الگوریتم جستجوی درخت مونت کارلو (MCTS) است. برای استفاده بهتر از بازی‌های خاص و همچنین سازگاری آن با بازی‌های ویدئویی، تغییرهای MCTS که اغلب همراه با روش UCT استفاده می‌شود (بهینه‌سازی *که برای درختان اعمال می‌شود*) ارائه شده‌است. یکی دیگر از تغییرهای الگوریتم‌های جستجوی درخت استفاده شده، جستجوی مستقیم پهنای مستقیم (BFS) است که در آن یک گره فرزند به حالت فعلی برای هر اقدام موجود ایجاد می‌شود و از هر فرزند که طبق بالاترین پاداش متوسط بازدید می‌شود حرکت می‌کند، تا زمانی که بازی تمام شود یا اجرا شود خارج از زمان در هر روش جستجوی درخت، هوش مصنوعی اقدام‌های بالقوه را شبیه‌سازی می‌کند و هر کدام را براساس میانگین بالاترین پاداش هر مسیر، از نظر امتیازهای کسب شده، رتبه‌بندی می‌کند.

### فرضیه‌ها
به منظور تعامل با بازی‌های مختلف، الگوریتم‌ها باید با این فرض که همه ویژگی‌های مشترک بازی‌ها دارند عمل کنند. در کتاب *نیمه واقعی: بازی‌های ویدئویی بین دنیای واقعی و دنیای خیالی*، Jesper Juul تعریف زیر را از بازی‌ها ارائه می‌دهد: بازی‌ها براساس قوانین تعریف می‌شوند، دارای نتایج متغیر هستند و سپس نتایج مختلف ارزش‌های مختلف ایجاد می‌کنند و تلاش بازیکن بر نتایج تأثیر می‌گذارد. بازیکن و نتیجه بازی به هم وابسته هستند و نتیجه بازی قابل بحث هست. با استفاده از این فرضیه‌ها، می‌توان هوش مصنوعی بازی را با کمی سازی ورودی بازیکن، نتایج بازی و نحوه اعمال قوانین مختلف و استفاده از الگوریتم‌ها برای محاسبه مطلوب‌ترین مسیر ایجاد کرد.

## @GENERAl8

رده:نظریه بازی‌ها
رده:بازی هوش مصنوعی
رده:معاملات الگوریتمی