Войти
ПроектыФорумКонкурсы

RESTanks: на конкурс AI (2 стр)

Страницы: 1 2 3 411 Следующая »
#15
0:48, 12 мар 2023

aliskda
> Но, как я понимаю, в реальности у танка направление движения и направление
> орудия не связаны. В идеале, нужно сделать два независимых параметра:
> "tankDirection" и "turretDirection" и дать возможность игроку манипулировать
> ими независимо друг от друга.
Давай оставим реальность. В реальности танки не ездят с заряженными снарядами. Твой вариант тоже норм, он даже трушнее оригинала. Но мне кажется твой вариант посложнее. Т.е. надо учесть что башня может сменить положение либо вправо, либо влево, т.е. всегда есть недоступное положение. Во вторых задержка по времени между двумя сменами положения башни.

#!
> ты же в роли дизайнера выступаешь, обоснуй
>
> вот у меня строго обратное предложение
Как мне кажется здесь подойдет любой вид ограничений, который отличит условный танк от условного рэмбо))

#16
1:10, 12 мар 2023

aliskda
> не очень интуитивно понятное поведение
так, объяснение на пальцах

у тебя за один ход танк перемещается строго на одну клетку, примерно на длину своего корпуса

возьмём реальный танк, который с пушкой в длину 10 м.
скорость 60 км/ч = 1 км/мин = 100 корпусов танка в минуту = 1.66 корпуса в секунду

понятно что для игры это очень ме-е-едленно

не знаю какой шаг ты возьмёшь, для абсурдности приведу стандартные 60 FPS
это 60 корпусов танков в секунду = 600 м/c что больше чем полтора маха и в 36 раз больше реального

хоть сколько-нибудь попасть в столь стремительно передвигающийся объект крайне проблематично, особенно если ещё сетевой пинг 150 мс

а Ren ещё предлагает искусственное замедление наведения орудия

#17
(Правка: 1:58) 1:43, 12 мар 2023

#!
А скорость снаряда? Мы же должны попадать в движущийся танк, значит скорость снаряда должна быть сильно выше скорости танка

Т.е. мне кажется начинать надо с конца. Скорость полёта снаряда; расстояние с которого ведётся обстрел; время реагирования противника, как время долета снаряда; вариативность ответных действий.

Т.е. встаёт выбор повернутся/повернуть башню и выстрелить в ответ либо увернутся. Вот тут и появляется АИ

#18
2:15, 12 мар 2023

#!
Кажется, я понял твою идею. Ты переживаешь, что танки слишком быстрые, и в них невозможно будет попасть. Поэтому придумал механику, замедляющую скорость танка.
А Ren, напротив, предлагает механику, делающую попадание в танк ещё более сложным.

Ren
> А скорость снаряда? Мы же должны попадать в движущийся танк, значит скорость
> снаряда должна быть сильно выше скорости танка
Скорость движения снаряда — мгновенная. То есть любые попытки уклониться от летящего снаряда бесполезны.

#19
11:37, 12 мар 2023

aliskda
Танк едет, затем видит противника и сразу посылает снаряд и попадает. В ответ противник также посылает снаряд и попадает.  Где тут должен АИ проявить свою смекалку? Или ты видишь бой как-то по другому?

#20
(Правка: 14 мар 2023, 10:54) 12:10, 12 мар 2023

Добавил бота. Он пока просто перемещается в случайном направлении и не умеет стрелять.  Его можно подбить.

#!, попробуй поохотиться за ним. Заодно узнаешь, насколько сложно в него попасть.

Сделал простенькую онлайн-карту, на ней можно отслеживать перемещения игрока и бота

#21
(Правка: 21:44) 21:36, 12 мар 2023

aliskda
> попробуй поохотиться за ним
подзастрял пока на выборе библиотек, я большой поклонник варзеса)

у меня такой вопрос, что там с шагом? как часто можно посылать сообщения?
думаю абьюзить эту тему, планирую слать за раз много команд, и возможно даже в несколько потоков, потому что в виндовом urlmon чтение ответа вроде как блокирующее

это потому что в AI дуб дубом, но про OODA слышал

#22
23:08, 12 мар 2023

#!
> подзастрял пока на выборе библиотек, я большой поклонник варзеса
Насколько я знаю, на плюсах лучшая либа -    curl.

> у меня такой вопрос, что там с шагом? как часто можно посылать сообщения?
Так часто, как посчитаешь нужным. Пока никакого шага нет, всё упирается в пинг до сервера.

Есть мысль сделать шаг в 1 секунду. Но я не уверен, стоит ли городить дополнительную логику на сервере ради этого сомнительного ограничения.

> думаю абьюзить эту тему, планирую слать за раз много команд, и возможно даже в несколько потоков, потому что в виндовом urlmon чтение ответа вроде как блокирующее
Хороший стресс-тест для моего сервака. В лучшем случае, ты будешь получать валидные ответы, в худшем — уронишь сервак.

#23
10:18, 13 мар 2023

Ren
> Танк едет, затем видит противника и сразу посылает снаряд и попадает.
Посылает снаряд и сразу же отскакивает в сторону, чтобы не получить ответку.
Затем заезжает с тыла, чтобы поразить противника с неожиданной стороны.
Или, например, прокачивает дальность стрельбы и спокойно обстреливает противника с безопасного расстояния. Или прокачивает силу атаки и тупо гасит противника в обоюдной дуэли. Вариантов для AI много.

#24
(Правка: 23:45) 10:57, 14 мар 2023

Добавил несколько ботов на карту. Теперь они хаотично перемещаются по ней, но всё ещё не умеют стрелять.

Сделал цветную карту. Теперь выглядит повеселее.

#25
15:16, 14 мар 2023

aliskda
Мне уже нравится)

#26
(Правка: 18:22) 16:54, 14 мар 2023

а что с json? будет отдельным запросом?
или всё-таки html парсить? первый раз вижу svg

конечно такое хорошо

Танк не может двигаться в направлении: "left". Там препятствие!

но придётся парсить как отсутствие скобок [ ]

и ботов отдельно бы как-то получать

#27
(Правка: 18:59) 18:36, 14 мар 2023

#!
> а что с json? будет отдельным запросом?
для jsonа теперь вот этот урл: https://gdtanks.pythonanywhere.com/info

> или всё-таки html парсить? первый раз вижу svg
не, html-ку я сделал чисто для "зрителя" - если кто-то захочет понаблюдать за боями, может перейти по ссылке в браузере: https://gdtanks.pythonanywhere.com
если получится, прикручу туда таблицу рекордов и просматривалку реплеев матчей

> придётся парсить как отсутствие скобок [ ]
какой формат ответа тебе удобно парсить? напиши, я сделаю.
как вариант, ты можешь ориентироваться на код ответа. если 200 - значит, всё хорошо. если другой - значит, ошибка

> и ботов отдельно бы как-то получать
могу возвращать в json'e отдельную ноду с массивом координат ботов. что-то вроде такого:

{"enemies": [(1, 9), (8, 4)]}
#28
23:59, 14 мар 2023

Немного поменял концепцию управления танчиками. Сделал что-то похожее на предложение Ren'a. Теперь танчик может ездить и стрелять только вперёд. Чтобы сменить направление, танк нужно повернуть. Новое АПИ:

- Получить карту и информацию по танку в JSON формате: https://gdtanks.pythonanywhere.com/info
- Повернуть танк по часовой стрелке на 90°: https://gdtanks.pythonanywhere.com/rotate/cw
- Повернуть танк против часовой стрелки на 90°: https://gdtanks.pythonanywhere.com/rotate/ccw
- Переместить танк на одну клетку: https://gdtanks.pythonanywhere.com/move
- Стрелять: https://gdtanks.pythonanywhere.com/shoot

Как это выглядит можно наглядно увидеть на карте. Танчики-треугольнички перемещаются только в направлении своей вершины:

#29
(Правка: 3:08) 0:35, 15 мар 2023

aliskda
> поменял концепцию управления танчиками
это хорошо что я только карту успел распарсить, теперь понятно что за "direction": "up"

а может быть унифицировать все ответы в json?

типа

{
  "direction": "up"
}

и

{
  "x": 2,
  "y": 2
}

или всё вместе присылать

Страницы: 1 2 3 411 Следующая »
ПроектыФорумКонкурсы