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

Проект конкурса "AI Tank Arena". (6 стр)

Страницы: 15 6 7 810 Следующая »
#75
9:01, 5 мар 2023

romanshuvalov
> просто поле из неразрушаемых блоков размером 32х32 или 64х64
Только ещё с блоками воды, как уже выше обсуждалось, в эти блоки идти нельзя так же, как в стены, но пули пролетают, и есть сквозная видимость.

> когда он выпущен - тогда его направление сразу же становится известно сопернику.
Вот тут я предлагал, чтобы не было известно. Ствол невидим, пули невидимы, но факт выстрела слышен.

> Кроме обычных снарядов ("пуль") предлагаю еще что-то вроде медленно летящего
> энергетического шара или фаерболла, большого размера, суть которого - ненадолго
> ограничить передвижение противника.
А вот это уже излишнее усложнение.

#76
9:01, 5 мар 2023

Накидал тут чё-то:

typedef struct {
    float x, y;
    int health;
    int primary_fire_timeout; // 0 means ready to fire
    int secondary_fire_timeout;
} player_t;

typedef struct {
    float x, y;
    int item_type;
    int timeout_to_spawn; // 0 means visible and ready to pick-up
} collectable_item_t;

typedef struct {
    float x, y;
    float dx, dy;
    int player_index; 
    int projectile_type; // bullet or fireball
} projectile_t;

typedef struct {
    int blocks[64][64];
    player_t players[2];
    collectable_item_t collectable_items[8]; 
    projectile_t projectiles[20];
    int num_projectiles;
} state_t;

typedef struct {
    float dx, dy; // (dx*dx + dy*dy) must not be greater than 1
    float fire_dx, fire_dy;
    int primary_fire_flag;
    int secondary_fire_flag;
} input_data_t;

void step(state_t *state, input_data_t** input_data) {
    // ...
}
#77
9:04, 5 мар 2023

Mikle
> пули невидимы
Не очень представляю, как это возможно. Если снаряд летит медленно (поражает цель немгновенно), то его вроде как должно быть видно.

#78
9:12, 5 мар 2023

romanshuvalov
> Если снаряд летит медленно (поражает цель немгновенно), то его вроде как должно быть видно
Ладно, это не принципиально.
Размер карты предлагаю сделать кратным 16/9, чтобы на большинстве мониторов хорошо смотрелось в fullscreen, 64/36 неплохо подходит.

#79
10:38, 5 мар 2023

Der FlugSimulator
> Что такое "ЛУ"? У меня есть своя версия, но она смешная ))
Life Update

> Прости, но нет, не пересекается. Во первых, никакой "конкурсности" не вижу
> пока.
> Во вторых, у тебя вполне может быть хороший проект, но даже потому что я понял,
> очень сложный.
>
> А я же пытаюсь всё свести к 3-4 простым функциям.
Встраивая в наш проект участнику придется писать только одну функцию, собственно АИ, из ифов и елсев. Можно даже псевдокодом.

Иначе вам придется заново писать алгоритмы объезда препятствия, алгоритмы возможности увидеть из-за препятствия, алгоритмы возможности выстрела по танку противника если танков больше одного, алгоритмы точности попадания. Как я понимаю эти алгоритмы придется писать каждому участнику самостоятельно. Алгоритм патрулирования тоже придется писать. Так как при малейшем правдоподобии выигрывать будет тот кто стоит на месте. Привет картоха.

Еще раз, я предлагаю опустить технические моменты (ибо они уже готовы) и сосредоточиться на написании собственно АИ

+ Показать

ЗЫ. Проект в браузере.

ЗЫЗЫ. Жителям Среднего Урала предлаю всмотреться в карту попристальней.

#80
12:00, 5 мар 2023

Ren
> в наш проект участнику придется писать только одну функцию, собственно АИ, из ифов и елсев
На каком ЯП?
Ren
> Можно даже псевдокодом.
А как отлаживать?

#81
12:24, 5 мар 2023

Mikle
> На каком ЯП?
у нас на JS.
Как я понимаю АИ для принятие решений нужно следующее количество параметров (при 15 танков в команде): виден/не виден танк противнику - 30 значений, возможность стрелять в танк противника - 225 параметров, хп танка - 30 параметров.
В ответ сервер должен получить указания формат ехать туда либо стрелять туда.
Конечно я не специалист, но мне кажется это можно сделать внешней функцией на любом япе.

Mikle
> А как отлаживать?
Логи?

#82
12:45, 5 мар 2023

Ren
> Как я понимаю АИ для принятие решений нужно следующее количество параметров
а также координаты каждого из видимых танков, координаты снарядов (если можно уклоняться), ну и при старте - геометрия карты.

Ren
> Конечно я не специалист, но мне кажется это можно сделать внешней функцией на
> любом япе.
Тут пока обсуждался вопрос как эту внешнюю функцию подключать.
Браузер ни к каким длл доступа не имеет, так что к нему подключить внешнюю функцию на чем угодно кроме js\ts\wasm проблематично.

#83
13:14, 5 мар 2023

kipar
> а также координаты каждого из видимых танков, координаты снарядов (если можно
> уклоняться), ну и при старте - геометрия карты.
Координаты танков забыл)) но можно совместить с видимостью выдавая невидимым танка координаты (0;0).
А геометрия карты лишняя, поставленные задачи можно решить другими методами.

kipar
> Браузер ни к каким длл доступа не имеет, так что к нему подключить внешнюю
> функцию на чем угодно кроме js\ts\wasm проблематично.
Мы собирались переписывать под "сервер", там вроде другой язык. Это поможет?

Сервер даст возможность игрокам играть друг против друга

#84
15:21, 5 мар 2023

Ren
> А геометрия карты лишняя, поставленные задачи можно решить другими методами.
и как тогда в укрытиях от снарядов прятаться?

Ren
> Мы собирались переписывать под "сервер", там вроде другой язык. Это поможет?
на самом деле есть еще одно отличие "ии для конкурса ии" от "ии для игры". В игре чем больше разных фишек - тем лучше.
Разные типы оружия, разные бонусы, разные танки, особые типы местности, разнообразие генераторов карт\заранее созданных карт - всё это делает игру привлекательнее для игрока. Но все это добавляет работы написателю ии. Одно дело когда есть два танка на карте и кто круче уклоняется тот и выиграл, а другое дело когда все возможности игры и человеку то не один день осваивать, а уж закодить все это будет не лень  только единицам. Да еще и вдруг в итоге выиграет не тот кто круче ии написал, а кто нашел лазейку во всех фичах и запилил имбовую тактику.

С другой стороны в этом конкурсе я все равно скорее всего не участвую, так что это просто советы.

#85
16:40, 5 мар 2023

kipar
> С другой стороны в этом конкурсе я все равно скорее всего не участвую, так что это просто советы.

Если выбирать между участием без советов, и советами без участия, то я бы стремился скорее к первому )))

#86
17:12, 5 мар 2023

kipar
> и как тогда в укрытиях от снарядов прятаться?
Не до конца понимаю как это "спрятаться от снаряда". Это же танк, у него огромная инертность. В любом случае проще спросить сервер "дай мне безопасное укрытие в радиусе 50 метров", чем передавать библе два миллиона циферок.

kipar
> Разные типы оружия, разные бонусы, разные танки, особые типы местности,
> разнообразие генераторов карт\заранее созданных карт
Ну так это все есть. Если интересно могу рассказать.
Здесь случайное совпадение, мы как раз приступили к написанию ботов (до этого они стояли мишенями). В текущей стадии реализовывается рандомный маршрут патрулирования. При обнаружении противника нужен другой тип поведения. Я как раз раздумывал как поведение типизировать и разнообразить - а тут как раз конкурс. Вопрос даже не в том, кто сделает лучший АИ, вопрос в том что их будет пять разных.

#87
22:39, 5 мар 2023

romanshuvalov
> Не очень представляю, как это возможно. Если снаряд летит медленно (поражает цель немгновенно), то его вроде как должно быть видно.

Сервер передает момент выстрела и угол. Скорость снаряда известна и постоянна.
Специально каждый тик передавать летящий снаряд смысла нет.

#88
23:13, 5 мар 2023

Ren
> Ну так это все есть
так я и говорю. для игрока это плюс. А для разработчика ии - минус.
все это дополнительные факторы которые не факт что делают задачу интереснее.
> В любом случае проще спросить сервер "дай мне безопасное укрытие в радиусе 50
> метров"
скажем так, суть танкового боя при наличии укрытий - выглянул, выстрелил, спрятался назад. плюс маневры чтобы оказаться в ситуации когда враг этого сделать не сможет. Для этого нужно четкое понимание геометрии, запроса к серверу и вейпоинтов недостаточно.

#89
1:05, 6 мар 2023

Der FlugSimulator
> Специально каждый тик передавать летящий снаряд смысла нет.
Лучше таки передать, зачем нагружать клиента лишними рассчётами. Потом ведь еще и событие "снаряд куда-то попал" надо ему отправлять и идентифицировать этот снаряд, чтобы не было путаницы с другими летящими снарядами.

Страницы: 15 6 7 810 Следующая »
ПроектыФорумКонкурсы

Тема в архиве.