Game Maker AI
Производител на игри - платформа за разработка (в първоначалната 2D концепция) на игрите. В момента най-популярни са Game Maker 8.08.1 и Game Maker Studio. Последният, между другото, поддържа междуплатформено развитие (което вероятно е почти единственият фактор за оцеляването на двигателя като цяло).
Напоследък GM губи популярността си под сянката на такива гиганти като Unity3D/Cryengine/Unreal. Смятам загубата на търсене на този двигател за напълно неразумна, тъй като за създаването на много игри (например за Android) няма нужда от най-новите 3D технологии за разработка и други „ненужни“ функции, които са много взискателни към системата на потребителя. Когато използвате Game Maker за разработване на такива игри, можете да постигнете доста висока производителност без видими жертви по отношение на графика или функционалност.
И така, нека да стигнем до въпроса. От известно време разработвам игри в ГМ среда. И един хубав ден пред мен се появи една много интересна задача - да разработя приемлив AI за игра от жанра TDS (Top Down Shooter). Честно казано, до този момент не бях се сблъсквал с развитието на изкуствения интелект и задачата в началото просто ме объркваше. Прекарах следващите три дни в търсене на решение (разбира се, чрез проби и грешки) и през тези 3 дни научих доста. Въз основа на моя кратък и болезнен опит ще се опитам да опиша основните методи и библиотеки на трети страни за разработване на AI в средата на Game Maker.
Вградени инструменти за създаване на игри
Несъмнено GM предлага свои собствени инструменти за разработка на AI (върху които по-късно се изграждат библиотеки на трети страни). Именно с тях започнах пътуването си в света на изкуствения интелект. Този инструмент включва функции за намиране на път, разстояние и посока, както и функции за проверка на сблъсъци (най-полезното от всичко по-горе според мен).
Малка класификация на ГМ функциите:
Движещ се
Тази функция има едно голямо предимство пред предишните - ако търсенето на път не успее, не се случва движение. Това ще предпази изпълнителя от „залепване в стената“. Недостатъкът е, че тази функция връща готов път, през който изпълнителят трябва да премине. Това не може да се нарече еднозначно минус, но, да речем, използването на пътеките по време на битка е изключително скъпо и неудобно.
Методът, базиран на мрежа, е много мощен инструмент (и се използва главно в професионални игри), но изисква от вас да правите всичко с много внимателна мисъл. Трябва да определите каква площ и размер на клетката ще отговарят на оптималното решение за вашата игра. Също така трябва да определите кои обекти трябва да имат точна проверка за сблъсък, това е важно. Всички тези параметри оказват значително влияние върху ефективността на метода.
- цитат от GM помощ
Функцията създава мрежа и се връща
cellwidth, cellheight - размери на клетките
След създаването на мрежата си струва да добавите забранените зони за преминаване. Използвах доста проста функция за това:
Това е много удобна функция, тъй като при разработването на игри на всички „твърди“ обекти, които не могат да бъдат преминати, се присвоява общ родителски обект. Ако посочите този обект в извикването на тази функция, всички дъщерни обекти също ще бъдат проверени.
И така, имаме мрежа с непроходими зони. Сега е лесно да изчислим пътя за нашия изпълнител:
Пътят ни е готов, ако със сигурност съществува. Минусът е все същият - това е пътят (макар и по-правилен, точен, безпроблемен) и нищо не може да се направи с него.