Russian AI Cup

Расширенный поиск  
Страницы: [1]

Автор Тема: Расчет количества допустимых действий  (Прочитано 693 раз)

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11

В руководстве написано, что стратегия может совершать на более 12 действий за 60 тиков. А каким образом появляются доступные действия? Каждые 5 тиков восстанавливается одно действие? Или же после 12 действия отчитываются 60 тиков, после которых доступны все 12 действий?
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #1 : Ноября 22, 2017, 07:12:37 am »

RemainingActionCooldownTicks - если равно нулю то можно совершить действие, с подсчитыванием числа действий можно не заморачиваться, ну это кому как удобно
Записан

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11
Re: Расчет количества допустимых действий
« Ответ #2 : Ноября 22, 2017, 07:17:33 am »

Хотелось бы все-таки знать, как именно восстанавливаются действия
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #3 : Ноября 22, 2017, 07:24:28 am »

Тогда можно просто отладкой сделать, зашли стратегии 12 команд. Дождись выполнения последней команды. После поставь таймер и жди когда стратегия выдаст
RemainingActionCooldownTicks = 0 Если это будет ровно через 60 тиков, то выходит что, тики начисляются раз в 60 сек
Если через 5 тиков то, 1 действие в тик. Как-то так )

Но тут есть одно важное НО
Цитировать
центр управления (CONTROL_CENTER): увеличивает лимит количества действий стратегии на 3 за 60
тиков, а также уменьшает интервал между тактическими ядерными ударами на 60 тиков;
Если захватишь 2 ком центра то число команд = 18, а 60 на 18 делится не очень корректно, так что вывод
Все команды даются раз в 60 тиков
« Последнее редактирование: Ноября 22, 2017, 07:29:16 am от Jeners »
Записан

F10PPY

  • Newbie
  • *
  • Сообщений: 1
Re: Расчет количества допустимых действий
« Ответ #4 : Ноября 22, 2017, 08:43:47 am »

А точно будет больше 1 ком. центра?
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #5 : Ноября 22, 2017, 09:32:52 am »

Ну тогда заспамить стратегию командами и ждать когда появится свободная команда, если через 60 то все команды даются раз в 60 тиков. Если быстрее чем за 60 тиков то команды даются раз в 5 тиков по одной вот и все
Записан

Sanda

  • Jr. Member
  • **
  • Сообщений: 12
Re: Расчет количества допустимых действий
« Ответ #6 : Ноября 22, 2017, 10:16:43 am »

В руководстве написано, что стратегия может совершать на более 12 действий за 60 тиков. А каким образом появляются доступные действия? Каждые 5 тиков восстанавливается одно действие? Или же после 12 действия отчитываются 60 тиков, после которых доступны все 12 действий?
П. 2.6 правил:
<...> Действие стратегии будет проигнорировано игровым симулятором, если за последние 60−1 тиков она уже совершила максимально доступное ей количество действий. <...>
Записан

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11
Re: Расчет количества допустимых действий
« Ответ #7 : Ноября 22, 2017, 03:42:06 pm »

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

Только что попробовал так сделать - метод во всех случаях выводил 0. Даже когда техника отказывалась передвигаться из-за явного превышения количества действий. Судя по всему, в языковом пакете для C++ этот метод (getRemainingActionCooldownTicks())  сломан
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #8 : Ноября 22, 2017, 04:23:26 pm »

НУ я делаю так
Засылаю проверку
if RemainingActionCooldownTicks = 0
Затем уже шлю одно действие
Например выделить юниты
Затем снова проверяю
if RemainingActionCooldownTicks = 0
и шлю действие... у меня все пашет
Записан

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11
Re: Расчет количества допустимых действий
« Ответ #9 : Ноября 22, 2017, 04:51:45 pm »

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

Только что попробовал так сделать - метод во всех случаях выводил 0. Даже когда техника отказывалась передвигаться из-за явного превышения количества действий. Судя по всему, в языковом пакете для C++ этот метод (getRemainingActionCooldownTicks())  сломан

Техника отказывается ехать - а метод все равно выдает 0. А должен кулдаун до следующего действия
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #10 : Ноября 22, 2017, 06:44:18 pm »

Колдаун дается до следующего действия (вернее сказать, на возможность в данный тик совершить действие)  в данный тик!
Нельзя за один тик и выделить и направить юниты, это делается как минимум с разрывом в тик
иначе все команды просто сумируются
« Последнее редактирование: Ноября 22, 2017, 06:47:12 pm от Jeners »
Записан

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11
Re: Расчет количества допустимых действий
« Ответ #11 : Ноября 22, 2017, 07:38:21 pm »

Так я то знаю как технику двигать - в один тик выделить, а уже в следующий двигать
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #12 : Ноября 22, 2017, 08:01:50 pm »

У тебя "стартовый" пример работает?
Записан

frenzysshmakov

  • Jr. Member
  • **
  • Сообщений: 11
Re: Расчет количества допустимых действий
« Ответ #13 : Ноября 22, 2017, 08:40:49 pm »

Да
Записан

Jeners

  • Full Member
  • ***
  • Сообщений: 86
Re: Расчет количества допустимых действий
« Ответ #14 : Ноября 22, 2017, 09:53:55 pm »

Даю наводку, "ТиК" в игре это не одно и тоже что цикл программы тики нужно синхранизировать
Записан

mrKIP

  • Newbie
  • *
  • Сообщений: 7
Re: Расчет количества допустимых действий
« Ответ #15 : Ноября 22, 2017, 11:26:48 pm »

стр 41 документации у параметра player есть метод
public int getRemainingActionCooldownTicks( )
– Returns - Возвращает количество тиков, оставшееся до любого следующего действия. Если
значение равно 0, игрок может совершить действие в данный тик.

если хотите знать сколько действий у вас будет в течении след, например 5 тиков нужно считать самому например завести массив с кулдауном для каждого действия и ...
int[] ticksCD={0,0,0,0,0,0,0,0,0,0,0,0};

... каждый тик
for (int i = 0; i < 12; i++) {
actionPointCountDown[i] -= (actionPointCountDown[i] == 0 ? 0 : 1);
}
если сделали мув то
for (int i = 0; i < 30; i++) {
if(actionPointCountDown[i]==0){
        actionPointCountDown[i]=60;
        }
}
Записан

imrinat

  • Newbie
  • *
  • Сообщений: 9
Re: Расчет количества допустимых действий
« Ответ #16 : Ноября 25, 2017, 09:37:54 pm »

по-моему каждые 60 тиков количество доступных действий  сбрасывается до 12. но это не точно
Записан

tyamgin

  • Sr. Member
  • ****
  • Сообщений: 182
Re: Расчет количества допустимых действий
« Ответ #17 : Ноября 26, 2017, 12:26:02 am »

по-моему каждые 60 тиков количество доступных действий  сбрасывается до 12. но это не точно

Нет.

Нужно смотреть были ли в последние 59 тиков сделаны 12 действий. Если нет - значит действие на текущий тик доступно.
Записан
Страницы: [1]