Воскресенье, 27 Ноября 2022, 02:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема с созданием ИИ. (Такая вот проблемка->)
Проблема с созданием ИИ.
dikfairДата: Суббота, 23 Июля 2011, 00:54 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Пожалуйста помогите сочинить код по следующей логике:
Припустим имя бота - obot
Имя препятствия ( Блока ) - wall
Мне нужно чтобы если бот(obot) увидит препятствие(wall) на пути к игроку, то он должен его обойти. Пусть даже не самым кратким путем.
Следующая информация указана на всякий случай. Даже не знаю может ли она понадобиться:
Бот в игре уже реагирует на игрока, и гониться за ним в случае появления игрока в радиусе 300, а при радиусе 100 начинает стрелять.

З.Ы. Очень надеюсь на вашу помощь. Так как знаю что тут найдутся хорошие люди которые помогут новичку в его проблеме).
З.Ы. з.ы. Извиняюсь за грамотность.)



Объект 25 - Исследовательская игра на выживание
TimKruzДата: Суббота, 23 Июля 2011, 01:01 | Сообщение # 2
старожил
Сейчас нет на сайте
Тебе конкретно код нужен или можно просто алгоритм? Алгоритмов полно, как простых, так и по-сложнее. Выбирай любой и реализуй на GML. А за тебя писать ни кто не будет, уж извини, но сам должен. smile Тебе алгоритм дать?

URGINSANДата: Суббота, 23 Июля 2011, 01:35 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
dikfair, если я тебя правильно понял, то тебе нужна кнопка Step avoiding во вкладке move, в пункте steps. Попробуй ее, вроде она помогает объектам обходить другие объекты..

Я на драйве
dikfairДата: Суббота, 23 Июля 2011, 05:51 | Сообщение # 4
почетный гость
Сейчас нет на сайте
TimKruz меня хотябы под толкнуть. Я плохо ГМЯ знаю). Может меня кто-то или на урок подобный ссылочной направить. Я рад любой помощи. Если код 2 строчки то может кто и напишет). Я же не знаю какой он там должен быть.)

Добавлено (23.07.2011, 05:51)
---------------------------------------------
URGINSAN утречком попробую. Если поможет то естественно + в репутацию)



Объект 25 - Исследовательская игра на выживание
Лер_да_РимДата: Суббота, 23 Июля 2011, 09:35 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Фи, кнопки. Никогда не юзайте кнопки.

dikfair, смотри в справке раздел Планирование движения (легче по поиску, написать туда одну из функций, например mp_potential_step). Так вот, эта mp_potential_step не очень хороша... Но стену боты когда-нить обойдут biggrin


Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.

TranscedДата: Суббота, 23 Июля 2011, 11:05 | Сообщение # 6
TransceD = Game Maker
Сейчас нет на сайте
dikfair, Есть специальная кнопка, для этого простого AI, ее имя Step Avoiding. Но советовал бы тебе прислушаться к Лер_да_Рим.
Made_In_USSRДата: Воскресенье, 24 Июля 2011, 03:23 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
mp_grid решает все проблемы

В событии где инициируется движение (это псевдокод, аргументы и переменные смотреть в справке):
grid=mp_grid_create(n,m,f,g) // создаем сетку
mp_grid_add(wall,n,m) //добавляем на сетку препятствие
mp_grid_path(n,m,f,g) // считаем путь от бота до гг
path_start(path) //стартуем по просчитанному пути

В событии "конец пути":
mp_grid_destroy(grid) //удаляем сетку когда она больше не нужна

По моему это простейшее и самое эффективное решение проблемы.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
dikfairДата: Воскресенье, 24 Июля 2011, 13:36 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Quote (Transced)
Но советовал бы тебе прислушаться к Лер_да_Рим.

Все-же прислушиваться я буду ко всем, так как лучше понимать начинаю когда решения проблем показываются в разных вариантах.))



Объект 25 - Исследовательская игра на выживание
Brute_ForceДата: Воскресенье, 24 Июля 2011, 14:54 | Сообщение # 9
был не раз
Сейчас нет на сайте

Небольшой пример для иллюстрации вот этого:
Quote (Made_In_USSR)
mp_grid решает все проблемы

В событии где инициируется движение (это псевдокод, аргументы и переменные смотреть в справке):
grid=mp_grid_create(n,m,f,g) // создаем сетку
mp_grid_add(wall,n,m) //добавляем на сетку препятствие
mp_grid_path(n,m,f,g) // считаем путь от бота до гг
path_start(path) //стартуем по просчитанному пути

В событии "конец пути":
mp_grid_destroy(grid) //удаляем сетку когда она больше не нужна
dikfairДата: Четверг, 28 Июля 2011, 01:52 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Что значит n, m, f, g?
Quote (Made_In_USSR)
mp_grid_path(n,m,f,g) // считаем путь от бота до гг



Объект 25 - Исследовательская игра на выживание
CHROMДата: Понедельник, 01 Августа 2011, 21:40 | Сообщение # 11
частый гость
Сейчас нет на сайте
Вам сюда ... Click


+ CHROM +


Сообщение отредактировал CHROM - Понедельник, 01 Августа 2011, 21:49
SalahAdDinДата: Понедельник, 01 Августа 2011, 21:45 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
Quote (dikfair)
Что значит n, m, f, g?

Это аргументы функции mp_grid_path надо полагать smile


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
dikfairДата: Четверг, 04 Августа 2011, 16:23 | Сообщение # 13
почетный гость
Сейчас нет на сайте
Quote (SalahAdDin)
Это аргументы функции mp_grid_path надо полагать

Вот погуглил я немножко, дабы понять что это такое аргументы функции чтобы разобраться с этим. Просто "нуб" я в яп. Ну вот пошел в вики как подсказал мне товарищ гугл, перечитал значение этого слова но чего-то меня так и не натолкнуло понять что же там надо задавать. Просьба если это идиотский вопрос считаете вы, то лучше сдержаться и выйти с этой темы. Если сможете то ответьте пожалуйста на него). Вопрос: Что же надо задавать в вот этих n,m,f,g или же их надо так и оставить?).



Объект 25 - Исследовательская игра на выживание
GameMixДата: Четверг, 04 Августа 2011, 16:51 | Сообщение # 14
старожил
Сейчас нет на сайте
Quote (Справка Game Maker 8.0)
mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag) вычисляет путь через сетку. path - должен указать существующий путь, который будет заменён путём, задаваемым компьютером. xstart и ystart - указывают начало пути, и xgoal и ygoal - цель. allowdiag - указывает, что допускаются диагональные перемещения вместо обычных горизонтальных и/или вертикальных. Функция Возвращает истину, если путь успешно обнаружен. (Заметьте, что путь не зависит от текущего экземпляра объекта; это путь через сетку - не путь для специфического экземпляра объекта.)


Steel Standoff - 2D аркада.
Мои статьи
LunarPixelДата: Четверг, 04 Августа 2011, 16:58 | Сообщение # 15
старожил
Сейчас нет на сайте
dikfair, аргументы функции это параметры, которые функция считывает, чтобы выдать результат.

Например sin(x), тут функция синус, а x - аргумент этой функции. Чтобы функция выдала результат, нужно указать значение аргумента, например: sin(1), т.е. функция выдаст синус от единицы.

В твоем случае всё аналогично, просто нужно почитать в справке за что отвечает каждый аргумент и указать на их месте нужное значение.

Quote
mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag) Вычисляет путь через сетку. path - должен указать существующий путь, который будет заменён путём, задаваемым компьютером. xstart и ystart - указывают начало пути, и xgoal и ygoal - цель. allowdiag - указывает, что допускаются диагональные перемещения вместо обычных горизонтальных и/или вертикальных. Функция возвращает, если путь успешно обнаружен. (Отметьте, что путь не зависит от текущего образца объекта; это путь через сетку - не путь для специфического образца объекта.)


dikfairДата: Понедельник, 29 Августа 2011, 23:57 | Сообщение # 16
почетный гость
Сейчас нет на сайте
grid=mp_grid_create(n,m,f,g) // создаем сетку
mp_grid_add(wall,n,m) //добавляем на сетку препятствие
mp_grid_path(n,m,f,g) // считаем путь от бота до гг
path_start(path) //стартуем по просчитанному пути

В событии "конец пути":
mp_grid_destroy(grid) //удаляем сетку когда она больше не нужна

Сдеся ошибка:
Во второй строке, неизввестная функция или скрипт: mp_grid_add

Версия ГМ: 8.0



Объект 25 - Исследовательская игра на выживание


Сообщение отредактировал dikfair - Вторник, 30 Августа 2011, 00:06
SalahAdDinДата: Вторник, 30 Августа 2011, 08:32 | Сообщение # 17
постоянный участник
Сейчас нет на сайте
mp_grid_add_instances(grid,obj,prec)
первый аргумент - айди сетки, второй - айди обьекта препятствия, третий - точная проверка столкновений

Добавлено (30.08.2011, 08:32)
---------------------------------------------
В справке по функциям передвижения по сетке всего 20 строчек текста, неужели ты его не можешь прочитать? smile


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
dikfairДата: Среда, 31 Августа 2011, 19:27 | Сообщение # 18
почетный гость
Сейчас нет на сайте
SalahAdDin спасибо теперь я ближе к истине, но теперь другой вопрос возник как узнать ид одного из моих обьектов ну или как его задать?.


Объект 25 - Исследовательская игра на выживание
SalahAdDinДата: Среда, 31 Августа 2011, 20:14 | Сообщение # 19
постоянный участник
Сейчас нет на сайте
Quote (dikfair)
SalahAdDin спасибо теперь я ближе к истине, но теперь другой вопрос возник как узнать ид одного из моих обьектов ну или как его задать?.

Айди обьекта нельзя задать, он присваивается после создания обьекта автоматически.
Узнать его можно через переменную id, которая содержит собственно айди экземпляра. Для каждого экземпляра она локальна, и в разных случаях определять ее приходится по разному. Для более подробного обьяснения нужен частный случай.


Фотошоп это не сложно. Немного теории, полезной на практике:
Работа с наложением текстур
Рисуем без планшета
dikfairДата: Вторник, 06 Сентября 2011, 00:42 | Сообщение # 20
почетный гость
Сейчас нет на сайте
То есть в mp_grid_add_instances(grid,obj,prec) В аргументе grid не надо нечего указывать и он задастся автоматически? Если не сложно можешь заполнить пример? Типа: mp_grid_add_instances(grid,2123,x+0). Это чтобы я хотя бы мыслишку уловил=).Так про ид я понял. Но все больше я ухожу в заблуждения. Надеюсь вылезти из этой проблемы.).


Объект 25 - Исследовательская игра на выживание
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Проблема с созданием ИИ. (Такая вот проблемка->)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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