دانشجوی مهندسی کامپیوتر، علاقمند به حوزه نرم افزار، هوش مصنوعی و توسعه بازی های رایانه ای
هوش مصنوعی و بازی های رایانه ای
در سالهای اخیر، هوش مصنوعی نقش فزاینده ای در همه ی جنبه های زندگی انسانی پیدا کرده است؛ از حوزه های فنی نظیر اپلیکیشن های مسیریابی و اتومبیل های خودران گرفته، تا مباحث مدیریتی و مالی و روابط بین انسان ها؛ اما امروز به سراغ مبحث جذاب بازی های رایانه ای و کاربرد های نوین هوش مصنوعی در آن می رویم، پس با ما همراه باشید.
پیش از توضیح در مورد کارکردهای هوش مصنوعی، اندکی با روند توسعه یک بازی ویدیویی آشنا خواهیم شد. به طور کلی، برای برای ساخت یک بازی به دو ابزار نیاز داریم؛ اول، عشق و علاقه و دوم یک موتور بازی سازی!
برای مورد اول، تنها کافی است اندکی رویا پردازی، خلاقیت به خرج داده و علاقه داشته باشید مدتی در دنیای فانتزی سیر کنید؛ همین :)
اما موتور بازی سازی؛ نرم افزاری برای ساخت بازی های ویدیویی است که با در اختیار قرار دادن ابزارهای بسیاری در حوزه های مختلف گرافیک، هوش مصنوعی، رندرینگ و دیزاین به شما کمک می کند که رویای خود را به واقعیت بدل کنید. از جمله موتور های بازی سازی شناخته شده ، Unity و Unreal را می توان نام برد که اولی با زبان #C و دومی با ++C برای توسعه بازی استفاده می کند.
در هر موتور بازی سازی، فضایی شبیه تصویر زیر وجود دارد که شامل صحنه ی بازی و مدل ها و اشیای موجود در آن می شود، به علاوه بخشی برای دسترسی به بخش های مختلف هر یک از مدلهای موجود در صحنه ی بازی که شامل ویژگی های گوناگون آن مدل می شود (در موتور یونیتی، به این بخش Inspector گفته می شود که در سمت راست تصویر زیر قابل مشاهده است)؛ هم چنین بخشهای دیگری جهت دسترسی به پوشه ها و فایل های موجود در بازی را می توان دید.
تاریخچه هوش مصنوعی و بازی ها
از مدت ها پیش، انسان ها به دنبال راهی برای ساخت ماشینی بودند که بتواند در بازی هایی که انسان ها خود ابداع کرده اند، آن ها را شکست دهد؛ در سال 1997 شرکت آمریکایی IBM نرم افزاری به نام Deep Blue را توسعه داد که توانست قهرمان روسی شطرنج جهان، گری کاسپاروف را با استفاده از الگوریتم Minimax شکست دهد.
بیست سال بعد، در سال 2017 نرم افزار توسعه داده شده توسط شرکت بریتانیایی DeepMind (که توسط گوگل خریداری شد و زیرشاخه هلدینگ Alphabet قرار گرفت) با نام AlphaGo، قهرمان کره ای بازی Go یعنی آقای که جی را با استفاده از الگورتیم جستجوی درختی مونته کارلو از مسند قهرمانی به زیر بکشد.
برای بررسی کاربردهای هوش مصنوعی در بازی های ویدیویی، دو بخش کلی منطق و گرافیک بازی ها را بررسی میکنیم.
هوش مصنوعی در منطق بازی های ویدیویی
به طور کلی هنگام توسعه ی بازی های رایانه ای، تعدادی حالت (State) برای بازی در نظر گرفته می شود که هر کدام یک وضعیت خاص از بازی را نشان می دهند و با استفاده از آن ها، می توان منطق بازی را پیاده سازی نمود. از روش های این کار، یکی ماشین های حالات محدود (FSM) و دیگری درخت های رفتار (Behavior Trees) را می توان نام برد.
برای مثال، در بازی Pacman برای کاراکتر های شبح که به عنوان دشمن بازیکن عمل می کنند، می توان ماشین حالات محدودی مطابق تصویر زیر درنظر گرفت که چهار حالت کلی برای شبح در نظر گرفته که با گرفتن ورودی های مشخصی از یک حالت به حالت دیگر تغییر وضعیت می دهد.
از جمله کاربرد های هوش مصنوعی در تعریف این حالات و نیز گذار بین آن هاست؛ مثلا در حالت Chase Pacman، الگوریتم های مسیر یابی نظیر *A یافتن نزدیک ترین مسیر (با در نظر گرفتن موانع موجود مثل دیوار ها) برای دنبال کردن بازیکن استفاده می شوند. هم چنین برای گذار از یک حالت به حالت دیگر، از درخت های بازی (Game Trees) و الگوریتم هایی نظیر Minimax و Expectimax بهره برده می شود؛ در چنین الگوریتم هایی، برای تصمیم گیری از توابع خاصی استفاده می شود که با توجه به حالت فعلی و حالات در دسترس، اکشن های مختلف بررسی شده و بهترین آنها انتخاب می شوند. مثلا در الگوریتم مسیریابی، تابعی به نام Heuristic Function با محاسبه مسیر مانده تا مقصد و هزینه مسیر های مختلف، بهترین انتخاب را برای کاراکتر در نظر میگیرد. همچنین در گذار بین حالت ها، تابعی تحت عنوان Evaluation Function ارزش اکشن ها و حالات در دسترس را محاسبه، مقایسه و در نهایت یکی را انتخاب می نماید.
هوش مصنوعی و گرافیک بازی ها
تا مدت ها تصور میشد حوزه هنر و خلاقیت از مباحثی است که هوش مصنوعی هیچ گاه توانایی وارد شدن به آن را نخواهد داشت؛ اما چنین تصوری اشتباه بود. برای مثال یکی از تکنیک های بینایی ماشین به نام Style Transfer Method با استفاده از دو تصویر مرجع، یکی برای محتوا و دیگری برای استایل های هنری تصویر، الگو ها و المان های بصری آن ها را با هم ترکیب کرده و در نهایت یک تصویر را به عنوان خروجی تولید می کند که می توان آن را نمونه ی "نقاشی شده" از تصاویر مرجع دانست. بدین ترتیب توانایی خلق تصاویر جدید با استفاده از بررسی مدل های اولیه برای هوش مصنوعی قابل دسترسی است و این تکنیک برای ساخت تصاویر و فیلم هایی که در روند توسعه بازی نیاز هستند، مورد استفاده قرار می گیرد.
تکنیک دیگر مورد استفاده از هوش مصنوعی در بهبود گرافیک، Real Time Ray Tracing می باشد. تا پیش از معرفی این قابلیت توسط شرکت NVIDIA در سری جدید پردازنده های گرافیکی RTX، نورپردازی بازی ها، در واقع به جای "شبیه سازی"، تنها با بررسی دنیای واقعی "ساخته" می شد که نمونه آن را در تصویر زیر می توان دید؛ سایه ها همگی طبق بررسی ذهنی طراح گرافیک "ساخته" شده اند.
اما در این تکنیک، رفتار واقعی نور مطابق دنیای واقعی "َشبیه سازی" می شود که نتیجه حتی الامکان شبیه واقعیت به دست آید. برای این کار در یک صحنه مجازی، مسیری از یک چشم فرضی به هر پیکسل در نظر گرفته شده و رنگ هر شی که از آن قابل مشاهده است نیز محاسبه و مشخص می شود؛ صحنه های مجازی با استفاده از محاسبات ریاضی و توسط برنامه نویس یا ویژوال آرتیست ساخته می شوند.
در این حوزه هم هوش مصنوعی به کمک انسان آمده است. روشی به نام Procedural Content Generation با طراحی مواردی نظیر مدل های سه بعدی، رنگها، رویداد های طبیعی و نیز مراحل بازی، در واقع جای طراح بازی را پر می کند. برای این کار، الگوریتم ابتدا با دریافت تعداد کافی و مناسب از نمونه های اولیه یاد میگیرد؛ سپس برای استفاده، تنها کافی است کلید واژه های توصیف کننده خروجی مد نظر را به آن داد تا نتیجه خواسته شده را ایجاد کند. برای مثال اگر کلید واژه های خانه چوبی، دهکده ی روی دریاچه، دو طبقه، دارای پله بیرونی برای ورود به طبقه بالایی و سقف شیروانی به عنوان ورودی به الگوریتم داده شود، نتایج حاصل شبیه تصاویر زیر خواهد بود که طراح بازی با توجه به ویژگی های مدنظر خود یکی از آن ها را انتخاب می کند.
مورد بعدی قابل بررسی در حوزه گرافیک و دیزاین، هزینه طراحی مدل های موجود در بازی های ویدیویی است که عاملی بسیار مهم در روند توسعه بازی محسوب می شود. جزییات بالای موجود در این مدلهای سه بعدی فرایند ساخت آن ها را بسیار زمان بر و پر هزینه می سازد؛ برای مثال، طراحی صحنه ی زیر در یک بازی ویدیویی، حدود 200 هزار دلار هزینه داشته است!
در این حوزه هم هوش مصنوعی به کمک انسان آمده است. روشی به نام Procedural Content Generation با طراحی مواردی نظیر مدل های سه بعدی، رنگها، رویداد های طبیعی و نیز مراحل بازی، در واقع جای طراح بازی را پر می کند. برای این کار، الگوریتم ابتدا با دریافت تعداد کافی و مناسب از نمونه های اولیه یاد می گیرد؛ سپس برای استفاده، تنها کافی است کلید واژه های توصیف کننده خروجی مد نظر را به آن داد تا نتیجه خواسته شده را ایجاد کند. برای مثال اگر کلید واژه های خانه چوبی، دهکده ی روی دریاچه، دو طبقه، دارای پله بیرونی برای ورود به طبقه بالایی و سقف شیروانی به عنوان ورودی به الگوریتم داده شود، نتایج حاصل شبیه تصاویر زیر خواهند بود که طراح بازی با توجه به ویژگی های مدنظر خود یکی از آن ها را انتخاب می کند.
بدین ترتیب در طی زمان بسیار کمتر، با دقت بالاتر و با هزینه پایین، مدل های مورد نیاز طراح بازی ساخته و پرداخته می شوند که در بهبود روند توسعه بازی های ویدیویی تحولی شگرف محسوب می شود.
ساخت بازی توسط هوش مصنوعی
مرحله نهایی هوش مصنوعی در حوزه بازی های ویدیویی، ساخت تمام و کمال یک بازی بدون دخالت انسان و توسط هوش مصنوعی خواهد بود که البته تا حدودی این کار هم انجام شده است!
با استفاده از یادگیری ماشین، چندین ساعت از گیم پلی انسانی بازی های Super Mario و Kirby’s Adventure به الگوریتم داده شد و در نهایت الگوریتم توانست یک بازی شبیه به Mega Man را به عنوان خروجی داشته باشد.
کلام آخر
امروزه هوش مصنوعی به عنوان جز لاینفک از زندگی روزمره ما به شمار رفته و این نقش نیز روز به روز رو به رشد می باشد. بدیهی است که در آینده ای نه چندان دور، ابزار های مختلف هوش مصنوعی جهت توسعه بازی های ویدیویی با کیفیت های بسیار بالا به کمک انسان خواهند آمد و مرز بین واقعیت و بازی ها، کمرنگ و کمرنگ تر خواهد شد.
مطلبی دیگر از این انتشارات
سوالات مهم در بازی اکسی اینفینیتی
مطلبی دیگر از این انتشارات
بهترین بازی های آخر هفته : 7 و 8 بهمن از god of war تا dying light
مطلبی دیگر از این انتشارات
دوره ساخت سرور بازی آنلاین با یونیتی ( فصل یک - درس یک )