![]() |
|
||||||||||
|
|||||
|
Регистрация: Jan 2007
Сообщений: 2
|
собственно занимаюсь реализацией сабжа
возникли следующие вопросы: 1) как организовать поведение противника 2) можно ли не методом подбора регулировать игровой балланс О том что есть: персонажи пока одинаковые и по ударам и по характеристикам (сила/здоровье). Удары делятся на две категории и две под категории: удар рукой - быстрый/сильный (близкие удары) удар ногой - быстрый/сильный (дальние удары) Так же есть блок - но не как в мортал комбат или еще где-нибудь где блок это один кадр со скрещенными руками - блок это отведение удара в сторону - поэтому даже при удерживании кнопки блока возникает ситуация когда блок=false буквально на один кадр - но этого хватает чтобы пробить блок. Перемещение - пока только вправо/влево Итак проблемы AI: Распространенная тактика игрока - стоя на месте бить одним ударом, AI вынужден подходить к игроку - возникает проблема - если AI не ставит блок то получает повреждение и отлетает на несколько шагов назад. В МК эта проблема была снята следующими решениями (ИМХО) это прыжок и нанесение удара сверху, подход на минимальное рассто- яние для подсечки (обычно игрок не достает до противника) и подсечка, подбегание к противнику (уже на удачу) и моментальное нанесение удара. В моем случае можно конечно добавить атаки сверху и снизу...но мне интересно как обойти эту проблему на данном этапе разработки. Вот что я придумал - у противника есть параметр luck который в процентах отвечает за удачу - то есть условно говоря каждый незапланированный блок определяется удачей AI. Когда AI подходит к лягающемуся игроку он проверяет - достанет ли меня игрок сейчас своим ударом (нужно отметить что имеется в виду только удар ногой - так как он дальний) и если ответ положительный то блок (на удачу) и затем уже атака. Если же игрок машет руками - AI подходит на минимальное расстояние для дальнего удара и атакует. В других случаях при подходе используется стандартный алгоритм выбора удара. Вот об этом хотелось бы поговорить подробнее. Фактически алгоритм выбора удара (исключая ситуации которые можно предугадать - например описанные выше) это есть логика персонажа. Каким образом он будет атаковать противника - какими комбинациями ударов - все это должно быть строго индивидуально для каждого отдельно взятого бойца. Но для упрощения сейчас действует обычная модель Math.random(), которая действует так: если мр(Math.random())<0.5 { если мр<0.5 {быстрый удар рукой} иначе {сильный удар рукой} } иначе { если мр<0.5 {быстрый удар ногой} иначе {сильный удар ногой} } Собственно таким образом мы перебираем все возможные удары и выбираем один на удачу. Но, как мне кажется этот алгоритм лишен логики - а хотелось бы иметь умного противника который не только знает что делать в стандартных ситуациях но и проявляет так сказать творчество в нестандартных. Для этого нужны методы оценки ситуации и вытекающие из них прототипы поведения...это конечно же ИМХО - мне интересно что Вы думаете по этому поводу. Следующий вопрос связан с игровым баллансом - буквально два дня назад я и тестер на ура "валили" AI как тактикой одного удара так и обычной дракой. Тогда я начал заниматься "воспитанием" AI и сегодня я могу его победить только с 10 раза при этом конечно же игра начинает раздражать - лезут мысли про корявое управление, дерганую анимацию и прочее - все таки согласитесь в определенной мере игра должна приносить удовольствие, а когда противник знает все твои шаги на перед и бьет не переставая это может отпугнуть начинающих игроков... с другой стороны все таки не хотелось бы на легком уровне сложности с легкостью побеждать противника - например тактикой одного удара, то есть на любом уровне сложности у игрока должна сформироваться определенная сложная тактика с помощью которой он Может победить AI. Это значит что должен быть набор вариантов действий включающих не один удар а множество комбинаций, основывающихся на поведении AI и тут конечно встает вопрос - а одинаково ли по сложности завалить саб-зирой скорпиона или же скорпионом саб-зиру побить легче? Это уже игровой балланс - в идеале для файтинга не должно быть такого персонажа, который был бы сильнее/слабее других. То есть даже если у скажем скелета - сила удара маленькая, то нужно компенсировать её здоровьем. Тут опять возникает вопрос - "но ведь можно задать AI такую тактику, при которой даже слабый персонаж может легко бить самого сильного" - да можно...а как быть игроку? В общем то сложные вопросы по игровой логике - но я надеюсь что они будут Вам интересны - лично мне интересно реализовывать разные тактики и наблюдать за процессом - да и вообще сам процесс создания игровой логики и моделирования поведения AI скушным быть не может. Я жду от Вас ответы и мысли по поводу вышеизложенного, а конкретно: - как реализовать логику персонажа файтинга без функции рэндом() или хотя бы с малым её использованием - что делать с баллансом и можно ли его "высчитать" Спасибо что прочли это огромное сообщение))) П.С.: Для понятния о файтингах на флэше я решил поиграть в оных. Две игры - это БушидоФайтерс и какая то про карате (непонятное) обе меня не впечатлили - первая содержит несколько возможных ударов и даже несколько рангов противников (легкий/средний/сложный) но AI упорно не хочет вступать в бой...он всячески отходит и призывает (жестами) подойти и отведать силушки богатырской - что я считаю вообще нельзя делать в файтингах - все таки если вышел на татами то дерись иначе зачем тогда вышел. И даже если подходишь к AI все решается тактикой одного удара... Вторая сделана по другому - там всего один удар - пробел...собственно весь фатинг сводится к тому чтобы подойти поближе и жать пробел... самое интересное что это работает - играть в принципе интересно - но раздражает...хотя и сводится к понятиям файтинга подошел и провел комбу - но вот один пробел...ИМХО конечно, но мне это не понравилось, хотя в игре много идей - типа развития персонажа. Помоему что то подобное было в "Путёвом Бойце". Самое тупое наверное это интеллект противника для данной игры - нужно лишь подойти и в нужный момент провести серию ударов без всякого сопротивления со стороны игрока (блока нет)...Но для флэша - как интсрумент для расслабления в момент когда нечем заняться на работе это наверное больше подойдет чем серьезный файтинг - тут уже нужно определяться для чего и для кого игра. Вобщем все сводится к тому что в двух файтингах отсутствует сложный интеллект противника - и отсутствует опция игры вдвоем... Мне интересно узнать какие Вы встречали файтинге на флэше (именно на флэше а не переложения с приставки) и какая там ситуация с AI. П.П.С.: если будет интерес и к моей конкретной реализации - буду периодически выкладывать куда-нибудь для тестинга - чтобы можно было наглядно оценивать Ваши предложения по AI и баллансу. Пока что swf весит 44Кб. Да, совсем забыл - мой AI просто ломится на игрока и пытается его добить...не знаю - хорошо это или плохо? Еще - сильный удар рукой и удары ногами отбрасывают противника на определенное расстояние. Помнится в МК такое было сделано для вертушки и если нанесено было определнное количество ударов - либо комбо...здесь нужно подумать - просто не хочется делать новый МК - хочется каких то своих принципов боя... |
|
|||||
|
>>мне кажется этот алгоритм лишен
логики и у автора с логикой тоже не очень: нельзя же всерьез рассчитывать, что здесь кто-то проявит интерес к "модели Math.random()", есть же для этого игродельные форумы.. |
|
|||||
|
Регистрация: Jan 2007
Сообщений: 2
|
silin если честно - я про модель "Math.random" и не спрашивал.
Вопрос - организация игровой логики AI для файтинга. Меня интересуют как возможные варианты реализации так и просто рекомендации, пожелания... П.С.: почему то я думал что этот форум тоже поднимает вопросы игростроя - и особенно на флэш. Я не прав? Видел много вопросов про создание игр именно здесь... |
|
|||||
|
Регистрация: Nov 2006
Сообщений: 63
|
Не там ищещ по-моему, тебе надо на gamedev.net,dtf.ru и тому подобное
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|