Понедельник, 23 Декабря 2024, 11:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Шаблоны проектирования для описания игровой логики
nikita1828Дата: Четверг, 25 Декабря 2014, 19:23 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте,

Я уже писал здесь что пишу игрушку. Сейчас вот столкнулся с проблемой в написании игровой логики.
Логика у меня получается весьма закрученная. Если её пытаться описать в виде обычных условных операторов, код получается весьма громоздким и не читабельным. Я попробовал описать логику используя парадигму автоматного программирования (http://ru.wikipedia.org/wiki/Автоматное_программирование). Стало получаться лучше, но тоже как-то не красиво: слишком много состояний, причём у многих состояний только один вход и один выход. Ещё пробовал описать логику через разветвлённую систему триггеров, как-то тоже не очень.

В общем вопрос у меня такой. Какие паттерны / подходы / парадигмы программирования используются при написании игровой логики и логики AI? Где об этом можно почитать? Что именно вы используете?

Спасибо!


Сообщение отредактировал nikita1828 - Четверг, 25 Декабря 2014, 19:28
berilДата: Четверг, 25 Декабря 2014, 19:32 | Сообщение # 2
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Может поможет
И это




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)


Сообщение отредактировал beril - Четверг, 25 Декабря 2014, 19:34
KamiRoninДата: Четверг, 25 Декабря 2014, 21:17 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Книжек и правда очень много..
Но я заметил, что для каждого типа ИИ требуется свой подход в реализации. Иногда смешиваешь несколько парадигм, иногда обходишься одной - двумя раздельными и чередующимися..
Поэтому это вопрос философский, алхимический. Философского камня в ИИ пока нет.

Имхо, лучше всего подходит модель где ключевыми являются - раздельные классы сущностей со своей логикой внутри + события (Events, подписка) + между объектные сообщения (часто через центральный класс - синглтон)..

Например, 2Д файтинг, обзор сбоку.
Из логики ИИ там алгоритмы распознавания манеры боя юзера, цепочки приемов для наибольшего поражения и поведение при наступлении полудохлого состояния.
начну с последнего, полудохлое состояние: тут способ действия проще некуда - быстрое уклоняющееся перемещение, постоянный блок и самые безопасные удары время от времени. Значит для реализации такого поведения требуется логики: определение местоположения бойца противника, вычисление расстояния -- при величине расстояния меньше Х - вкл. блок и ускоренное перемещение на противоположную сторону поля боя, возможно с разворотом.
Я бы сделал у сабЗиро класс, который занимался бы только тем, что постоянно фиксировал сведения о противнике - его удаленность, положение ударных поверхностей, скорость изменения этих данных, отслеживание состояния - блок, удар, прыжок и тп.
В этом классе я бы сделал эвенты - OnJump, OnKick, OnBlock и тп, в которые бы подписывал класс управления действиями сабЗиро.
В классе действий - были бы стратегические узлы, которые бы реагировали на события заданным характерным образом, причем в зависимости от условий и ситуации. Реакция выражалась бы в виде фиксированных наборов действий - "блок", "подсечка" и тп..
В менеджере бойца пользователя можно сделать посыл сообщений "начат удар", "завершен удар", "начат шаг" и тп и тд.. Чтобы не писать полностью человеческое восприятие у сабЗиро! smile Он будет получать эти сообщения как будто "увидел" это сам и реагировать соответственно...
Так что вот такая логика вышла - класс поточного восприятия, эвенты, класс осуществления действия и сообщения. smile


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
nikita1828Дата: Пятница, 26 Декабря 2014, 14:21 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата beril ()
Может поможет
И это

Спасибо! Вроде есть за что уцепиться.. Почитаю ещё.

Цитата KamiRonin ()
Например, 2Д файтинг, обзор сбоку.

У меня хоть и вправду с виду 2д файтинг, но геймплей в нём совсем не такой как в классических файтингах. Геймплей больше похож на логическую или танцевальную игру. И запутанная логика, которую я пытаюсь описать, это не логика ИИ (он у меня, как раз, достаточно тривиален), а логика взаимодействия объектов (актёров) в игровом пространстве.

Цитата KamiRonin ()
Так что вот такая логика вышла - класс поточного восприятия, эвенты, класс осуществления действия и сообщения.

Что то подобное у меня получилось при реализации машины состояний. Те же евенты, только вместо класса действий, набор классов состояний которые обрабатывают эти евенты.


Сообщение отредактировал nikita1828 - Пятница, 26 Декабря 2014, 14:22
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг