View Full Version : گفتگو: گفتگویی درباره ی هوش مصنوعی بازی ها
amir22448
یک شنبه 22 مرداد 1391, 15:47 عصر
با سلام خدمت شما.
من گفتگویی درباره ی هوش مصنوعی بازی های رایانه ای ساختم که هم خودم نیاز داشتم و شاید شما هم همینطور.
من زبان Prolog رو بلدم و بازی هایی مثل شطرنج و دوز رو ساختم.ولی نمی دونم می شه با همین بازی های حرفه ای ساخت یا باید هوش مصنوعی به یه زبان دیگه ای یاد بگیرم؟
amir22448
یک شنبه 22 مرداد 1391, 18:11 عصر
به نظر خودم Prolog به درد این چیز ها نمی خوره.
نظرتون رو بگین لطفا.
pswin.pooya
دوشنبه 23 مرداد 1391, 11:37 صبح
برای هوش مصنوعی بازیها از زبان برنامه نویسی C++ استفاده می کنن (معمولا). گاها از اسکریپتها استفاده می کنن که بیشتر نقض کنترل روند بازی (مثلا توی طراحی مرحله ) رو داره.
amin1softco
دوشنبه 23 مرداد 1391, 17:35 عصر
بله درسته همه کار ها را باید با سی++ انجام داد در زمینه گیم ولی اخیراً یک زبانی مد شده به نام lua که کارش درسته گویا http://wiki.wesnoth.org/Lua_AI_Code_Library
یک زبان نسبتاً راحت که توسط یک گروه در قسمت تکنولوژی های کامپیوتری در دانشگاه پاپ - کاتولیک برزیل توسعه داده شده علاوه بر این می شه از اون به عنوان یک زبان مستقل استفاده کرد بسیاری از توسعه دهندگان برای بازی های خود از این زبان و سیستم extension آن به عنوان یک زبان همه منظوره استفاده می کنند
+ (http://my.safaribooksonline.com/book/programming/game-programming/9781584505723/scripting-systems/ch18lev1sec4#X2ludGVybmFsX0ZsYXNoUmVhZGVyP3htbGlkP Tk3ODE1ODQ1MDU3MjMvY2gxOGxldjFzZWM0)
Saeed.Masoumi
دوشنبه 23 مرداد 1391, 20:12 عصر
سلام
Lua هم یه جور زبان اسکریپتی است که علاوه بر متن باز بودن آن به دلیل سبکی و سرعت مناسبش می شه باهاش اسکریپت های روان و ساده در عین حال کاربردی رو بنویسید- به قول آقای pswin.pooya (http://barnamenevis.org/member.php?34511-pswin.pooya) میشه با سی هم نوشت شما می خواین با LUA بنویسید تفاوتی ندارند مهم روش استفاده است مثلا شما چه با پرولوگ چه با لیسپ و ... بخواین توابع هوش رو بنویسید خیلی از موتور ها و یا زبانهایی که توسط آنها با کتابخانه های گرافیکی کار می کند شاید از این توابع پشتیبانی نکنند برای همین نیاز دارید به منظور استفاده عملی از آنها آنها را به اسکرییپت های قابل فهم برای موتور/زبان تبدیل کنید.
مثلا در بازی World of warcraft بیس اصلی بازی توسط فرضا" زبان سی نوشته شده از SDK , دایرکت هم استفاده شده اما برای انجام هوش مصنوعی و کارهایی نظیر روند گیم پلی (مثلا اسپل کستینگ) از اسکریپت های LUA استفاده شده اگر توجه کنید حتی AddOn های بازی نیز با همین اسکریپت نوشته شده است سپس موتور اجرایی LUA را کنار بازی قرار می دهند تا اسکریپت ها را اجرا و نتیجه خروجی را به موتور بازی برگرداند.LUA از لحاظ دستوری و ساختاری خیلی شبیه سی است اگر با سی آشنا باشید یاد گیری آن کاری ندارد.
amir22448
دوشنبه 23 مرداد 1391, 21:02 عصر
حداقل بگید با کردومش کار کنم بهتره.شما می گید:
مثلا در بازی World of warcraft بیس اصلی بازی توسط فرضا" زبان سی نوشته شده از SDK , دایرکت هم استفاده شده
و بعد می گی:
برای انجام هوش مصنوعی و کارهایی نظیر روند گیم پلی (مثلا اسپل کستینگ) از اسکریپت های LUA استفاده شده
خوب بلاخره من باید برای ساخت بازی های حرفه ای از کدوم استفاده کنم؟(برای ساخت بازی های نظیر Fifa, Call of Duty و ...)
amin1softco
دوشنبه 23 مرداد 1391, 21:14 عصر
عزیز دلم شما پایگاه داده کار کردید با سی شارپ ؟ اینجا lua همون مفهوم SQL در سی شارپ را داره شما با دستورا sql اعمال کار با داده ها رو انجام میدی و از فرم و تشکیلات سی شارپ استفاده می کنی در بازی lua کارهای هوش مصنوعی بازی رو انجام میده و از بستری که سی++ با دایرکت یا openGL فراهم می کنه برای رندر سه بعدی اسفاده می کنه . بهتره روی اون + بالایی کلیک می کردید و یک نگاه به اون کتاب می انداختید که در مورد هوش مصنوعی بازی ها بود....
از lua در خیلی از انجین ها معتبر مثل یونیتی یا آنریل هم می شه استفاده کرد.
____________________________________________
Flame (http://en.wikipedia.org/wiki/Flame_%28malware%29), a large and highly sophisticated piece of malware (http://en.wikipedia.org/wiki/Malware) being used for cyber espionage (http://en.wikipedia.org/wiki/Espionage) [14] (http://en.wikipedia.org/wiki/Lua_%28programming_language%29#cite_note-13).
گویا خیلی کارش درسته جدا از هوش مصنوعی گیم در تجهیزات سیسکو ازش استفاده شده و خط بالا!! در بد افزار شعله هم که چند وقتی در رسانه ها صحبتش بود هم از این زبان استفاه شده و در سال 2011 به عنوان برنده خط اول جایزه آوارد توسط مجله Game Developer Magazine در زمینه ابزارهای برنامه نویسی معرفی شد.
pswin.pooya
سه شنبه 24 مرداد 1391, 08:03 صبح
از lua در خیلی از انجین ها معتبر مثل یونیتی یا آنریل هم می شه استفاده کرد.
در مورد آنریل شک دارم اما قبلا CryTek برای بازی FarCry ازش استفاده کرده بود. به هر حال Lua هم مشکلات خودش رو داره که باعث شده بعضی ها ترجیح بدن از زبانهای دیگه مثل Angle Script و یا ... استفاده بکنن و برخی دیگه هم مثل ؟آنریل و یا kochol خودمون هم زبان اسکریپت خودشون رو ساختن. اگر یه روز خواستین از زبان اسکریپت استفاده بکنید زبان اسکریپت کوروش (Cyrus Script) هم که توس kochol طراحی شده از لحاظ سرعت (چه زمان اجرا و چه برنامه نویسی ) گزینه خوبی به شمار میره و میتونه با زبانهای بزرگ مثل Lua رقابت کنه.
مساله دیگه ای که وجود داره و دوستان بهش اشاره کردن اینه که بیس با زبانهای سریع نوشته میشه و گیم پلی با زبانهای اسکریپت ( که گاها از زبانهایی مثل C# هم سریعتر هستن) . این عاقلانه نیست که مثلا الگوریتم A* (برای مسیر یابی) رو با Lua پیاده سازی کنید! . بهتره اینها با زبانهایی مثل C/C++ پیاده سازی بشن و بعدش سوئیچ روی زبانهای اسکریپت انجام بگیره.
ما توی این فروم بارها و بارها داریم راه رو نشون میدیم. راهی که خودمون برای پیدا کردنش سالها وقت گذاشتیم. اما نمی دونم چه اصراری وجود داره که جماعت نمی خوان قبول کنن. یکبار گفتیم زبان C++ رو انتخاب کنید و ... اگر قبول کرده بودید الان یک هفته جلوتر از نقطه فعلی بودید
soroushp
سه شنبه 24 مرداد 1391, 16:39 عصر
حالا یه مقدار روی تحلیل الگوریتم یا احیانا روی هوش بازی ها برای رضای خدا صحبت کنیم !
آیا بازی ها ی متعارف ؛ هوش دارند یا دارند از یک یا چند الگوریتم تبعیت می کنند ؟
اگر فوتبال بازی کرده باشید می فهمید خیلی تابع random استفاده میشه که به طرف بفهمونه بازی هوش داره !
به نظره من اگر بازی بخواد هوش داشته باشه باید عنصر یادگیری رو داشته باشه (machine learning)
به هر حال بهتره روی عنوان تاپیک صحبت بشه تا زبون برنامه نویسی اش ؟(C++ خوبه :بامزه:)
amin1softco
سه شنبه 24 مرداد 1391, 20:39 عصر
منم موافقم کلاً نیست ما مهندسی نرم افزار خوندیم از اونور پشت بوم افتادیم و همیشه به ابزرا و این ها فکر می کنیم !!
مثلاً فرض کنید ما قراره همین فوتبال رو درست کنیم از اول که ما یک انجین می خواهیم فرض انجین کوچول رو هم انتخاب کردیم بعدش چه کنیم ؟ چطوری باید بازیکن ها رو حر کت بدیم و بازی رو سطح بندی کنیم ؟
روش حرکت بازکن ها چطوری باید باشه ؟
pswin.pooya
سه شنبه 24 مرداد 1391, 23:55 عصر
دوستان بازی فوتبال یکی از پیچیده ترین هوش مصنوعی ها رو داره به شکلی که هر ساله رقابتهای رباتیک اون برگزار میشه. و مسائل خیلی زیادی توش وجود داره که باید بهش توجه بشه. و آخرین موردی که میتونه استفاده بشه اعداد تصادفی یا رندوم هست.
یه کتاب به اسم Game AI programming by example هست که از اول شروع کرده به یاد دادن هوش مصنوعی. این کتاب توی فصل چهارم یه بازی فوتبال ساده رو پیاده سازی میکنه. و اگر اشتباه نکنم فصل هفت یا هشت این کتاب در مورد کار با Lua و نحوه متصل کردن اون با C++ صحبت میکنه. این کتاب در کل فوقالعاده هست و میتونه شما در سطح مبتدی بخوبی هدایت کنه. بعد این کتاب باید روی کتابهای پیشرفته تر مثل سری Game AI Gems تمرکز کنید ت بتونید هوش مصنوعی بهتری رو پیاده سازی کنید.
amir22448
چهارشنبه 25 مرداد 1391, 12:37 عصر
حالا یه مقدار روی تحلیل الگوریتم یا احیانا روی هوش بازی ها برای رضای خدا صحبت کنیم !
آیا بازی ها ی متعارف ؛ هوش دارند یا دارند از یک یا چند الگوریتم تبعیت می کنند ؟
اگر فوتبال بازی کرده باشید می فهمید خیلی تابع random استفاده میشه که به طرف بفهمونه بازی هوش داره !
به نظره من اگر بازی بخواد هوش داشته باشه باید عنصر یادگیری رو داشته باشه (machine learning)
به هر حال بهتره روی عنوان تاپیک صحبت بشه تا زبون برنامه نویسی اش ؟(C++ خوبه :بامزه:)
درسته شما راست می گید ولی اگه ما بریم تو تالار خود زبان برنامه نویسی تاپیک را یزنیم دیگه هیچ ربطی به بازی سازی یا هوش مصنوعی پیدا نمی کرد.چون سوال من به به زبان C++ مربوط نیست.به هوش مصنوعی بازی ها مربوطه.
amir22448
چهارشنبه 25 مرداد 1391, 12:40 عصر
ببخشید کسی هست که یه کتاب آموزش برنامه نویسی هوش مصنوعی به زبان C++ رو داشته باشه؟اگه کسی داره ممنون می شم بهم بده.
pswin.pooya
چهارشنبه 25 مرداد 1391, 16:36 عصر
ببخشید کسی هست که یه کتاب آموزش برنامه نویسی هوش مصنوعی به زبان C++ رو داشته باشه؟اگه کسی داره ممنون می شم بهم بده.
دو تا پست بالاتر چند تا كتاب معرفي كردم.
Saeed.Masoumi
چهارشنبه 25 مرداد 1391, 16:44 عصر
سلام
ببینید من یک چشم انداز کلی ارائه میدم برای ساخت فوتبال :
1- شما نیاز دارید یک زبان برنامه نویسی که از کتابخانه های گرافیکی پشتیبانی کند را یاد بگیرید :مثال:سی ++ - سی شارپ - جاوا - پایتون - بییسیک و...
2- شما نیاز دارید روش استفاده از یک کتابخانه - فریم ورک - گرافیکی را یاد بگیرید :مثال: دایرکت ایکس - ایکس ان ای - اپن جی ال و ...
3- شما باید بتوانید مدل ها و تکستچر ها و متریال ها و .... اقلام گرافیکی دیگر را به راحتی در کنترل خود در آورده و آنها را نمایش دهید:مثال : Skeletal animation - keyframe animation - ,...
4- شما باید فیزیک سیستم را ایجاد نمایید : مثال : مدیریت برخورد - قوانین جاذبه - نیوتون - الاستیک - دینامیک و...
اینها تا اینجا برای اینکه موتور رو خودتون ایجاد کنید از این به بعد را می شود با موتور انجام داد:
5- ایجاد مشخصه های هر موجودیت :مثال : قدرت شوت - قدرت دریپل - قدرت سر زنی و....
6-ایجاد موتور هوش مصنوعی برای پردازش فیدبک ها : مثال: تاثیر قدرت شوت بر قدرت دروازه بان - تاثیر فاصله مبدا توپ تا دروازه - حتی خیس بودن زمین - وضعیت بازی - پردازش منو ها و...
7-ایجاد موتور تفسیری هوش مصنوعی جهت استفاده توسط شخص ثالث (به قول بازی خور های قدیم کامپیوتر)
ببینید شاید اینا رو بخونید خندتون بگیره به حرفام اما کلیاتش رو که در نظر بگیرید میشه همین چیزها - ولی در جزئیات خیلی سخته همه مراحل نیاز با صرف وقت بسیار زیادی است.ببینید شما باید تعریف درستی از هوش مصنوعی بازی داشته باشید گاهی به همان مدیریت برخورد(Collision detection) می توان به دید هوش مصنوعی نگاه کرد گاهی همان شخص سوم را می توان به عنوان هوش مصنوعی در نظر گرفت
یه چندتا مثال الکی می زنم برای درک بهتر:
مثال در بازی انگری بردز کل موتور فیزیک بازی به عنوان هوش مصنوعی در نظر گرفته میشود (عملکر مانند یک سیستم خبره)
در بازی فوتبال فرض مکنیم شما یک موتور هوش مصنوعی ایجاد می کنید برای شخص ثالث بعد این موتور میاد یک سری اسکریپت رو ایجاد میکنه حالا بستگی به موتور شما داره که از چه اسکریپتی استفاده کنه مثال:
بعد از تشخیص وضعیت جاری بازی:
الف)وضعیت دفاعی : همه بازیکنها به یک خط عقب تر حرکت کنند.نزدیک ترین بازیکن به مهاجم دارای توپ نزدیک شود.سعی کند توپ را بگیرد .اگر چند بازیکن به فرد صاحب توپ نزدیک بودند بازیکینی که خاصیت تدفعی بیشتری دارد به صاحب توپ نزدیک شود.اگر تنها بازیکن نزدیک به صاحب توپ دروازه بان بود دروازه بان در موقعیت تک به تک به سمت توپ حرکت کند.
ب)وضعیت حمله : (خودتون فکرش رو بکنید :دی )
اینارو فقط گفتم که یک نمای کلی از ساخت بازی رو ببینید.
البته باید بگم زیاد روی این چیزایی که گفتم فکر نکردم ممکن است بعضی جاهاشو اشتباه/کم گفته باشم.
موفق باشی
amin1softco
چهارشنبه 25 مرداد 1391, 18:43 عصر
بیخیال یک سرچ روی سورس فروج زدم یک فوتبال پیدا کردم با direct و opengl هم پیاده شده همه چیز تمومم هست :
http://sourceforge.net/projects/yodasoccer/
برای هوششم یک برنامه بود سرور و اینا رو خودش طراحی کرده بود فیت کار مسابقات رباتیک!!
نمونه خیلی سادشم تحت داس :
http://www.rileys.id.au/SimpleSoccer.html
نمونه ایی هم که در کتاب ai بودم دو بعدی بود و تحت داس....
جدی هر کاری رو بخواهی انجام بدی قبلاً انجام شده.
soroushp
چهارشنبه 25 مرداد 1391, 20:35 عصر
سواله من اینه که واقعا این فوتبال دارای هوش هست یا داره یه الگوریتم رو اجرا می کنه و ما خیال می کنیم هوش داره !
amin1softco
چهارشنبه 25 مرداد 1391, 21:55 عصر
نه بابا هوشش کجا بوده همش هوشه اونیه که نوشته ولی اونکه با صفحه ی داس است چرا هوش داره فک کنم یاد می گیره از اطراف اینم خیلی توپه
http://sourceforge.net/projects/tuxfootball/
amir22448
چهارشنبه 25 مرداد 1391, 23:17 عصر
دو تا پست بالا تر چند تا کتاب معرفی کردم
ا
بله درسته ولی شما نوشتید که می تونه شما رو در سطح مبتدی به خوبی هدایت کنه.من می خوام که منو به سطح پیشرفته و حرفه ای هدایت کنه.اگه کسی یه همچین چیزی رو می شناسه بگه یا لینکشو بزاره.
soroushp
سه شنبه 31 مرداد 1391, 23:17 عصر
تو این قسمت (http://read.pudn.com/downloads144/ebook/626881/Ai%20Techniques%20For%20Game%20Programming.pdf)ک اب رو دانلود کن ؛ شاید بدردت بخوره :چشمک:
بالاخره نفهمیدم به نظره شما جه بازی دارای هوشه ؟ ( تو اون اینکی که گذاشتی فوتبال دانلود کردم اما فکر کنم PES وضعیتش بهتر باشه )
amir22448
شنبه 04 شهریور 1391, 21:28 عصر
اگه منظور شما اینه که کدوم یکی از بازی های فوتبال دارای هوشه به نظر من Fifa هوش بیشتری داره :متفکر:. ولی اگه منظور شما همه ی بازی های هست به نظر من هر بازیی هوش داره.ولی بیشترین بازی هوش دار بازی Battlefield و Call of Duty هست.
ببخشید ولی کتابی که شما گزاشتید انگیلیسی هست:گریه:.من فارسی نیاز دارم.اگه کسی داره ممنون می شم بهم بده.
syntiberium
شنبه 04 شهریور 1391, 22:33 عصر
ولی بیشترین بازی هوش دار بازی Battlefield و Call of Duty هست.
من هم بازی های جنگی بازی کردم هم استراتژیک (مثل red alert و cnc) و از نظر من بازی های استراتژیک هوش مصنوعی بیشتری به نسبت بازی های دیگه دارند چون توی این بازی ها هوش مصنوعی هم باید منابع رو در سرتاسر نقشه جمع آوری کنه هم باید ساختمان و تانک و سرباز بسازه و بین ساختن تانک ها و سرباز های مختلف در موقعیت های مختلف هوشمندانه انتخاب کنه و هم اینکه هوشمندانه انتخاب کنه با این امکاناتی که برای خودش بوجود آورده کِی به کجا و چجوری حمله کنه .
ببخشید ولی کتابی که شما گزاشتید انگیلیسی هست:گریه:.من فارسی نیاز دارم.اگه کسی داره ممنون می شم بهم بده.
زبان تکنولوژی انگلیسیه و تا یادش نگیری به جایی نمی رسی .
amir22448
یک شنبه 05 شهریور 1391, 17:57 عصر
فکر کنم منظورمو نفهمیدین ولی به هر حال ممنون از راهنماییتون.
منظورم این نیست که همون اول موقع تولید کتاب فارسی باشه منظورم اینه که یه بنده خدایی زحمت کشیده و یه کتاب انگلیسی رو ترجمه کرده.
به هر حال ممنون از راهنماییتون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.