Pull to refresh

Comments 72

Gamedev, коты, интересная тема — без вариантов. :)
Подача материала понравилась, как и само содержание)
UFO just landed and posted this here
А здесь главное не перестараться с ботом.
А то получится хитрый бот, сидит в засаде, валит снайперским выстрелом всех кто пытается перемещаться… :)
Сделать параметры конфигурируемыми. Использовать ген. алгоритм для подбора наиболее схожего к уровню игрока бота. Игрок стал чаще убивать бота? ищем бота помощнее.
Приятно найти единомышленников, продолжу мысль…
Было бы круто если бы бот имел такой же профиль как и у игрока. С каждым боем он его прокачивал. В зависимости от уровня игрока, выходил на поле боя соответствующий бот. Отсюда и баланс игры.
Если такое будет в Dark Souls II то пройти игру будет не возможно наверное.
UFO just landed and posted this here
Каждая игра находит своих игроков…
И не было еще игр которые невозможно пройти, только потому, что бот умнее тебя.
В любом случае, к любому боту можно приспособиться.
Шахматы. Шашки. Если вы сядете играть в шахматы против deep blue, шансы у вас нулевые.
Соглашусь что шансов у простого шахматиста нулевые, да и у Каспарова, Карчного, Батвиника и Спаского шансы не велики (последних трех мне отец подсказал).
Последние три все неправильно написаны: Корчного, Ботвинника и Спасского.
Сорри, задели ранимую шахматную душу)
Ну уж извините и вы, за безграмотность, поленился проверить.
Ответил выше, но опять же. В статье указан бот не только в качестве противника, но и напарника. Используйте нейронные сети для создания хорошего бота в качестве союзника, а не только врага.
Тоже вариант, не интересно-же всегда использовать ботов только как пушечное мясо
Как мясо, да! Но что есть мясо, которое тупо стоит? Интересней создавать фарш когда мясо еще копытами дергает.
> Интересней создавать фарш когда мясо еще копытами дергает.
Да вы садист
Тут мне вспомнился Jedi Outcast, в котором штурмовики (в честь которых кстати и назван был эффект штурмовика… для Outcast он несправедлив))) не только бегают и прячутся, но и заходят в тыл…

P.S. Чак обидится за написание его фамилии с одной «р».
Почему не справедливо? Игры нас учат, учат элементарно размышлять… Стояли бы как мишени, было бы интересно?
P.S. Чак дописывает постскриптум этого сообщения.
Вики:
Эффе́кт штурмовика́, или «синдром штурмовика» (англ. Stormtrooper effect) — кинематографическое либо литературное клише, заключающееся в том, что второстепенные герои («пушечное мясо») в голливудских блокбастерах, развлекательной литературе и комиксах неадекватно слабы в бою с главными героями.

Так вот, в ауткасте это совсем не так :). Даже обычный штурмовик может нехило поранить, а стоят они обычно толпами. А ещё бегают, так что по ним сложнее попасть.
Еще бы научить их не выходить из-за угла, где до этого таким же образом умерло еще 5 ботов… Или, скажем, бросать гранаты, не появляясь в зоне видимости =) А вообще вышеописанное поведение черезчур драматично — нынешние боты все же не настолько тупы, впрочем, отдельные моменты встречаются в любой игре. В half-life 2, к примеру, штурмовики действуют не по-одиночку, а отрядами. В Tomb Raider 2013 — бросают взрывчатку, чтобы заставить сменить укрытие. Hitman: absolution — бегут за подмогой. Насчет засад — каковы ваши шансы выжить в хорошей засаде, или если противник зайдет сзади? Если отключить вышеупомянутый эффект штурмовика — крайне низкие. Боюсь именно поэтому боты их и не устраивают.
image по-одиночку
image по одиночке
image в одиночку
Не буду спорить ибо это уже более сложные игры, нежели те о которых я попытался рассказать. У ботов в ваших играх «интеллект» гораздо выше…
>>Мало того, на первом кадре бот сразу видит игрока даже сквозь предметы, на любом расстоянии. На втором же кадре, его обзор ограничен и бот пытается взглядом «прощупать» на поиск цели. Боту приходится выполнять подзадачи для того что найти игрока.
Всё бы ничего, но «прощупывание» стоит ресурсов! Если каждый бот на уровне будет делать рейкасты по окружению то придётся либо уменьшать количество ботов либо отказываться от такого прощупывания, иначе игра превратится в слайд-шоу. Бот в любом случае должен знать позицию игрока чтобы не совершать лишних операций. Другое дело если бот знает где находится игрок, но не производит явный поиск пути непосредственно к игроку, если игрок находится за препятствием.
А вот тут я не соглашусь… допусти если реализовать это на Flash-е, можно так. Создаем слой, делаем его прозрачным, пишем код на «пересичение объектов» — соответственно при соприкосновении с этим слоем объектов, происходит вывод, тут стенка, тут враг. Попробую на пальцах если не понятно…

Не думаю что и в других языках (как AS2, AS3) с таким подходом будут проблемы. Если создать несколько таких слоев, то можно получить сразу несколько «сенсоров прощупывания».
Ага. А пересечение «кружочков со стенками» работает на святом духе?
Если я вас правильно понял…
пишем код на « пересечении объектов» — соответственно при соприкосновении с этим слоем объектов, происходит вывод
— это и есть святой дух…
Кстати, эта схема идентична рейкастам по уровню, только тут ещё хуже — тут пересечение сплайнов.
Ну что так усложнять? Первое что в голову пришло: hitTestObject, сделать можно на Flash-e. Вот к примеру как это выглядит -> здесь.
Цимес в том, что на сплайнах построен весь флеш, ибо это векторный формат. Да, растровые элементы тоже доступны, но именно «рисование» там именно на сплайнах. В случае с кружочком — да, можно свести просто к проверке дистанции, да и то только для случаев, в которых нужно проверить только факт самого пересечения, а не точки пересечения окружности и граней/сплайнов. Мысль о том, чтобы ИИ искал игрока проверяя видимость, приходит чуть ли не каждому, кто пытается этим заниматься. И отбрасывает её каждый раз, когда реализует её на большем масштабе, чем просто на паре кружочков во флеше.
Потому-что это ресурсоёмко и не редкостью будет ситуация, когда ИИ просто подолгу не сможет найти игрока.
Имелось в виду, что это жрёт кучу ресурсов.
А почему в первом случае происходит обнаружение при пересечении зон видимости, а не когда сам игрок находится на расстоянии видимости от бота?
Кружечек маловат у бота… а суть я думаю понятна.
Во-первых, рисовать кружки — это убить процессор на месте. В любом случае всегда будет делаться рейкаст до игрока, и проверятся на коллизии с миром. Во-вторых — ваш пример не работает, и бот все равно будет видеть сквозь стенки, кружок нарисовать здесь просто не выйдет. Вот справа, там где стенка — увеличьте радиус кружка, и поместите игрока за стенку. Игрок будет находится в кружке. Так что 6opoDuJIo вам совершенно правильно все сказал. Рейкаст до игроков != бот видит. Рейкаст тут делается с целью определить список игроков, которых бот видит.

Другое дело, что вы не поняли его, и дали в пример крайне убогий вариант реализации, который еще ко всему прочему не работает.

p.s. Статья в целом верная, вы описали как надо делать. Но между как надо, и сделать — огромная пропасть, а реализовать все как вы сказали — отнюдь не просто.
Да когда дело дошло до реализации, я осознал… что не все так просто… но и не так все супер-глобально сложно!
Вы уверены что «кружочки» несут ещё какую-либо нагрузку, помимо информирования игрока о радиусе действия орудия?
Уверен, и уже пробовал так 100500 раз.
Мы просто видим по разному реализацию. Я узнал о чем вы говорите, «погуглил», вы правы в некоторых моментах, но моя реализация имеет право на жизнь. Пусть и скупая, пусть возможно нерациональная, но все же она работает. Возможно опыта в разработки более серьезных приложений не было, вот и предлогаю «альтернативу».
Отличный пост. Текст хорош и картинки в тему, но я думаю вам нужно написать такого бота, иначе информация имеет мало смысла
Бот бы и был написан, только для чего, а точнее… Нужно писать конкретный бот под конкретную игру, а тут и игру надо написать, а заодно ее и придумать… а отговорки покажутся банальными: нет времени, один не справлюсь и т.п… По этому, я решил ограничится только теоретическим проектированием. Пускай смысл, пусть и маленький, останется для тех кто уже этим занимается или планирует занятся.
2д игры с видом сверху — это как правило простенькие инди игры, вкладыват кучу денег, сил и ресурсов в умных ботов смысла нет, игрок чаще забрасывает или проходит игру быстрее чем разбирается как там противник себя ведет. Если говорить о 3д, то там уже куча других проблем, которые так просто не решить.
Да и вообще статья в духе обяснений младшему брату как играть в игру, Если, на пример, для человека «выполнить разведку» это достаточно понятная процедура, то на уровне алгоритмов это ад адский.
Постом выше, я превратил «адский» алгоритм в простое решение. Надо просто не усложнять…

А если говорить про «инди» игры, то мы до сих пор играем в них, они совершенствуются с каждой новой созданной игрой, а значит и мой пост для младших подрастающих братьев будет полезен. Если эти игры будут актуальны еще через 5 лет, что тогда, вы предлагаете оставить «интеллект» ботов на том же уровне?
Выше вам объяснили почему ваше решение не может использоваться на практике. Проблема ИИ в играх не то, что разработчики не знают как себя должные вести боты (ведь не считаете же вы, что идея сделать бота который умеет прятаться и оценивать ситуацию пришла в голову только вам), проблема ИИ именно в создании алгоритмов выполнения всего того что вы написали и вычислительных ресурсах необходимых для всего этого.
Угадали! Кто то уже поставил минус, считая это нормой.
Минус поставили справедливо, ибо о грамматических ошибках сообщают В ЛИЧКУ. В каждом после с грамматическими ошибками появляется такой вот заминусованый коммент.
А я не сообщал о грамматических ошибках. Я дал ссылку на ресурс, который поможет как автору поста, так и читателям самостоятельно научиться не допускать ошибок одного определённого, назойливого типа. Я могу тратить время на рассылку этой ссылки каждому автору, который путает "-ться" и "-тся", могу даже потратить время, чтобы написать скрипт, который будет делать это за меня — а могу оставить тут ссылку один раз и рассчитывать, что множество людей прочтёт её и, вероятно, распространит дальше — так же, как однажды её нашёл и теперь распространяю я.

У нас же здесь World Wide Web, а не электронная почта.
Непредсказуемый, но адекватный кот в играх
Зона комфорта — бот будет идти на пролом любой ценой пока не убьет или не будет убитым. Так быть не должно. Если бот будет понимать что жизнь его подходит (подойдет) к концу, то он должен прятаться.
Вспомнил Unreal, где скаарджи могли убегать и притворяться мёртвыми.
Странная статья. Она «Game», но не очень «development». «Вот бы было хорошо, если бы сделали такие плюшки». Но написано с котами и приятно, красиво подано — очень позитивно. Тяжело читать из-за кучи ошибок, но, возможно, это не родной язык автора.
Всё описанное более-менее очевидно, но вот реализация на уровне алгоритмов уже не так проста. Боту нельзя сказать «Если враг за углом, прыгай боком». Watson, думаю, понял бы, но сколько его учили и из чего собрали? Все условия и границы применения различных паттернов поведения надо жестко формализовать, как и сами паттерны, а в этих «мелких деталях» и сидит дьявол. Как с простейшим регулятором — «Если превышаем заданное значение — уменьшить воздействие, если не достигли — увеличить» — всё просто со стороны. Однако ТАР почему-то не очень простая наука, а вроде-бы настроенные регуляторы идут в разнос при, казалось бы, малых изменениях условий. А «самообучение и рост рейтинга» — это вообще отдельная наука, в прямом смысле этого слова.
«Просто сделать бота умнее» — это далеко не так просто, как кажется на первый взгляд.
Вот мы и услышали мнение самих котов. :)

С родным языком — в точку. (пару писем лежит в ящике по грамматике от «хабр-дображелателей»).

По поводу «Если враг за углом, прыгай боком» — это уже вопрос к реализации. Я вижу простые игры и предлагаю более простые решения. Возможно проблема тех, кто понимает что это статья про «ИИ» и пытаются оспорить энергозатраты и ресурсы. НО нет, на ИИ я один раз обжегся, для меня эта тема «сладкая», но непосильная.
Про котов и высоту не совсем правильно написано. Коты глупенькие, у них часто рефлексы и инстинкт хищника пересиливают здравый смысл. Бывает что они прыгают из окон за птичками :(
В шуточной форме я написал про исключения, поскольку понимаю что есть такие безумцы.
У меня было 2 кота и не один не вываливался ни разу из балкона или форточки.
Автору респект — таких ботов нам в шутерах и не хватает.
Я делал подобную штуку для игры питон и в ASCII графике :)

У меня был алгоритм, где бот оценивал расстояние до каждого яблока (яблок было несколько) и вероятность того, что другой его может схватить. Если другой это тоже бот, то вероятность 100% и он выбирает другое более дальнее яблоко, получается он не пытается постоянно опаздывать и быть голодным.

А другой вариант, если это человек, то тут каждый бот ведет статистику, сколько шагов было до яблока и за сколько он реально сьел. Получается, что бот обучается и составляет вероятность того, что вы сьедите яблоко или часто промахиваетесь. На основании этого бот даже будучи дальше от вас может принять решение побороться с вами за яблоко :)

Методика просчета минимального расстояния в любой сложности лабиринте была нагрузочной для процессора и игра больше чем с двумя ботами реально тормозила, но результат был здоровский — если игрок не опытный, то бот начинает реально следить за тобой и есть твои яблоки :)

PS: Кому интересен алгоритм, могу описать в личку.
Вы же понимаете, что итогом разработки будет бот, который всегда выигрывает и никто в такую игру играть не будет.
В шахматы против компов до сих пор играют и парой выигрывают…
Подскажите, когда последний раз человек побеждал против лучших шахматных программ?
Вот одного не могу понять, вы намеренно игнорируете заголовок, вступительное предложение? Я не в коем случае не пытался создать идеальный ИИ или беспроигрышного бота. Я все го лишь хотел улучшить менее способных… Мы говорим о простых играх, но «изюминки» для улучшения берем из сложных.
Прикольно, но хотелось бы результатов — то есть реализации подобной библиотеки AI хотя бы на начальном этапе.
Хотя бы на том же флеше. А теоретизировать на эту тему можно бесконечно.
Тема очень интересная — нашлось бы кому поддержать и возможно довести до работоспособного состояния.

У меня есть зачинание стрелялки, если реализация такой штуки интересна не только на уровне разговора — можем скооперироваться, пишите в личку.
Я только за! Одному ну никак не начинается.
Что то не пойму как это может усложнить игру? O_o

Раненый бот начинает прятаться? И чего? Это разве, что он лечится умеет.
Экономит патроны, не стреляя далеко? Что то не припомню игр в этом жанре что бы у ботов патроны кончались.
Не видит противника сквозь стены? Это как раз упрощает жизнь игроку.

Всё это добавляет «реализма», но однозначно не делает игру сложнее, а даже наоборот…

P.S. А по поводу интеллекта в играх, помню читал интервью какого то чела, вроде из разработчиков Цивилки (но не уверен). Так он прямым текстом сказал, что нет смысла сильно заморачиваться AI, лучше это время и деньги вложить в более продвинутую графику или склепать на пару уровней больше — потребителям это важнее.
Sign up to leave a comment.

Articles