Перейти к содержимому
Fingercomp

Unreal Tournament: Resurrection -- Этап #3

Рекомендуемые сообщения

ut3-logo.png


Охайо! Полгода назад мы проводили второй этап Unreal Tournament (топик). Это был трейнврек, но весёлый, — этап звался Deathmatch, к слову. Роботы пытались друг друга перестрелять (могли ещё взорвать, но никто так и не заюзал бомбы). Но четверо участников пришло, был треш, угар и много стрельбы. :P

Пришло время открывать обсуждение третьего этапа Unreal Tournament: Resurrection — и он будет последним в трилогии.


Этап 3: Dominance

Feat. drones!


Проводить будем зимой (февраль?).
На подготовку тогда имеем 5 месяцев.

Участники третьего этапа: @Totoro, @FluttyProger.
Зареквестить участие можно:
  • в ЛС @Fingercomp или @Totoro;
  • в этой теме;
  • сообщением в IRC (#cc.ru или в ЛС fingercomp или Totoro).
Команда UT#3:
  • @Totoro — дизайнер, специалист по связям с правительством, пиарщик и просто очень хороший человек.
  • @Fingercomp — кодер, горе-строитель, админ серва, прожект-менеджер.
  • @Fiender — хостер, админ серва.
  • @LeshaInc — кодер.

Правила


exfaNlw.png


Правила третьего этапа нереально просты.

В общих чертах

TL;DR: Захват и удержание карты дронами.

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

В раунде участвуют четыре игрока. Каждый игрок управляет командой из четырёх дронов. За командой закреплен какой-то цвет.

Дроны имеют возможность захватывать контроль над секторами карты. Для этого им необходимо завладеть контрольной точкой сектора. После захвата точки она окрашивается в цвет команды, также как и весь сектор.

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

За порядком на арене и игровым процессом, как всегда, следит игровой Сервер.

Координаты всех важных объектов на карте обозначаются вейпоинтами.

Захват точки

Для захвата точки дрон должен подлететь к ней на достаточно близкое расстояние и послать сообщение Серверу.

Процесс захвата разбивается на несколько пакетов. На который сервер будет отвечать с некоторым делеем.
Это даст шанс другим дронам помешать захвату.

Например, если у точки висят два дрона и шлют пакеты с одинаковой скоростью, то захват замирает. Дроны взаимно уничтожают прогресс друг друга. Теперь дело можно сдвинуть с мёртвой точки только подогнав ещё одного дрона на помощь.


Зарядка

В качестве дополнительной геймплейной фишки, можно добавить станции зарядки — места, где дроны должны будут восполнить запас энергии.
Иначе дроны сдохнут, и команда проиграет.

Визуализация рейтинга

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

Условия конца игры

Будет три раунда. Раунд завершается при любом из этих событий:
  • Прошло 15 минут и командами захвачены все точки.
  • Три из четырёх команд успешно сдохли.
  • Прошло 30 минут с начала раунда (это на случай пьяных дронов).

Технические детали

На сервере ждите из модоверсий:
  • Ядрёные моды
    • MC 1.12.2
    • SpongeForge 7.what.ever
  • Регулярные моды
    • OpenComputers 1.7.0
    • OpenGlasses 3.3.3
    • Computronics 1.6.5
    • Chisel 0.0.13.23
  • Плагины
    • Antimony
    • LuckPerms
Арена будет доступна заранее, контрольные точки будут находиться в фиксированных позициях. С поиском пути в этот раз париться не нужно: дроны двигаются по прямой.
Дроны будут иметь одинаковую конфигурацию. Прошивка на дронах будет скачивать саму программу с сервера, куда, в свою очередь, код будет заливаться с компьютеров участников в их кабинках.


To Do

Как обычно, перед ивентом нужно основательно поработать над его подготовкой.
  • Доработать правила. Помогайте, оставляя свои мысли в постах в этом топике.
  • Собрать игровой сервер. Это означает договориться с хостом, закончить пляски со сборкой и выложить её.
  • Построить арену.
  • Написать софтверную часть.
  • Набрать участников.
  • Провести игру.

Проблемные вопросы

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

1. Какая прошивка будет на дронах?

Она не должна ограничиваться тупо скачкой проги с сервера. Нужно написать какие-нибудь дебаг-инструменты (например, рестарт).

2. Какая комплектация у дронов?

Нужно основательно продумать её, потому что дроны довольно лимитированы по компонентам.

3. Какие настройки энергии установить?

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


Q&A

В топике задают очень важные вопросы, которые поясняют концепт, но ответ на них бывает трудно встроить в текст так, чтобы было заметно. Поэтому ниже будем писать их вместе с ответами.

Могут ли участники самостоятельно контролировать дронов во время игры?

Нет. После старта дроны становятся полностью автономными. Мы не собираемся менять это — автономность является ключевой фишкой UT:R. Не исключено, однако, что дронами можно будет управлять в других ивентах и сериях ивентов, которые мы, может быть, будем проводить.

Будет ли возможен перезахват сектора?

Да, конечно же. В этом и весь интерес и интрига. Команда может дружно спать, а за минуту до финала внезапно вылететь и перезахватить все контрольные точки на карте. Разные чудеса случаются, да.

Можно ли захватывать одну точку всей командой?

Да, можно. Так процесс пойдёт куда шустрее.

Как определять цвет дронов и их наличие для статистики на главном мониторе?

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

Наличие определяется периодическим пингом дронов.

Как будут захватываться секторы арены, конкретно?

Мы берём концепцию @eu_tomat. Каждая точка имеет уровень захвата. Если он равен нулю (а при старте игры именно так и будет), точка считается нейтральной. У точки небольшой радиус модема, поэтому дроны должны быть очень близко к ней. Для начала захвата дрон должен поймать сообщение от точки (оно регулярно броадкастится) с кодом и отправить его назад, указав свою команду.

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

Для каждого дрона есть кулдаун. Например, дрон отправил сообщение — новое точка примет только через несколько секунд. Однако дрон может вызвать подкрепление: если несколько дронов одной команды будут отсылать коды, то точка может быть захвачена быстрее.

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

Как дроны узнают, что другая команда начала захват их точки?

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

Как будет защищаться территория арены от вмешательства игроков и дронов?

Используем мод Conventional: оборачиваем арену в область, где нельзя кликать, и радуемся. Арену сделаем из дрононепробиваемых блоков — тех, что рукой разбить нельзя.

Откуда дронам узнавать информацию о состоянии точки?

Сообщение о характеристиках будет периодически (раз в 5 секунд, например) броадкаститься точкой на небольшой радиус. Таким образом, поймать его смогут только те дроны, что будут поблизости. Оно будет содержать:
  • текущую принадлежность точки;
  • код захвата
  • уровни захвата и сопротивления.

Обновления

Так как бампать один и тот же пост на данном форуме — очень невесёлое занятие (да и никто толком не заметит изменение), в топике мы будем писать дополнения. Ниже нарисован список ссылок на обновления. Если вы собираетесь участвовать, обязательно прочитайте их в хронологическом порядке.


Посражаемся? :D Изменено пользователем Fingercomp
Добавлено обновление [2017-12-02]; изменён состав команды; новый участник
  • Нравится 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

может есть смысл разбиться на команды, вооружиться планшетами и дронами с ремоут-прогами и с лассо и поиграть в "опенКовбоев" каких-то. Как-то спавнятся и падают коровки на нейтралку как-то рандомно с некоторым распыление по площади, а команды в мандраже летают, бороздят воздух и пытаются наловить как можно больше коров себе в командные загончики. Победит тот, у кого больше стейков получится :D

 

Как по мне, то будет больше треша и угара, чем какие-то сигналы невидимые куда-то на сервак посылать. Опять будет скукотища страшная и 3 участника, как с бомбами, которые никто так и не взорвал :)

 

 

 

п.с. Особенно будет треш, если спавнить бешеных коров(с баффом на скорость) :smile3:

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Задача все проще, игроков будет еще меньше. Пересматривать концепцию не предлагаю, т. к. и так все ясно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что за пессимизм тут такой? =)
У нас прошло уже два этапа, и недостатка в участниках и зрителях пока не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

С летающими коровами будет слишком похоже на первый этап. Я это уже рассматривал.

 

P. S. @Alex, жду модерку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
У нас прошло уже два этапа, и недостатка в участниках и зрителях пока не было.

https://i.imgur.com/9MFfw2R.png  и вроде это и все участники. Или больше было?  :)

 

С летающими коровами будет слишком похоже на первый этап. Я это уже рассматривал.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

А предлагается именно участие человека, его навыков и ловкости, и все это обернуто в программное обеспечение с соответствующим антуражем и автоматикой, мониторами огромными над ареной с ковбойскими горячими сисястыми ковбойками и прочее)

Весь смысл Unreal Tournament, повторяя третий этап подряд, в отсутствии участия со стороны человека по время раундов.

 

 

 

https://i.imgur.com/9MFfw2R.png и вроде это и все участники. Или больше было? :)

По сравнению с другими ивентами на UT рекордное число участников :P

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

По сравнению с другими ивентами на UT рекордное число участников :P

ну тут не поспоришь, согласен :D  

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Весь смысл Unreal Tournament, повторяя третий этап подряд, в отсутствии участия со стороны человека по время раундов.

и тоже спорная концепция выбрана. Игры для того и пишут, чтобы в них играл человек и сам там непосредственно участвовал, рос над собой и качал свой скилл и пр.

Ты бы играл в игру WorldOfTanks или Dota2, если бы например разрабы требовали от тебя только написать просто бота, загрузить его им на сервак, который там управляет танчиками или героями, а ты просто сидишь и смотришь печально в монитор? То-то же. И я бы не играл  :)

 

п.с. Зачем вам сам ивент и арены какие-то и прочее, тратить там силы на оформление и развертывание всего этого. Можно за одну минуту по коду прог участников понять, кто победитель.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

и тоже спорная концепция выбрана. Игры для того и пишут, чтобы в них играл человек и сам там непосредственно участвовал, рос над собой и качал свой скилл и пр.

Ты бы играл в игру WorldOfTanks или Dota2, если бы например разрабы требовали от тебя только написать просто бота, загрузить его им на сервак, который там управляет танчиками или героями, а ты просто сидишь и смотришь печально в монитор? То-то же. И я бы не играл  :)

 

Именно так. А теперь спросим себя - какие именно скиллы мы хотим развить в участниках? Скиллы программирования, или скиллы быстрого клацанья мышью и клавой?

Я бы всё таки хотел ориентироваться на первый вариант.

 

 

 

п.с. Зачем вам сам ивент и арены какие-то и прочее, тратить там силы на оформление и развертывание всего этого. Можно за одну минуту по коду прог участников понять, кто победитель.

 

Для фана же. =) Куда веселее и менее предсказуемо зайти на сервер и потусоваться с остальными зрителями, наблюдая - чья одолевает.

А если слишком скучно наблюдать со стороны - становись участников, и болей за своего бота!

  • Нравится 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Именно так. А теперь спросим себя - какие именно скиллы мы хотим развить в участниках? Скиллы программирования, или скиллы быстрого клацанья мышью и клавой? Я бы всё таки хотел ориентироваться на первый вариант.

спорно, спорно. Хотите развивать скиллы у форумчан? Дак с вашим опытом программирования вы с Fingercomp могли бы форум просто завалить конкурсами и минивикторинами по программированию и решению тех или иных задачек на логику и прочее, и сидели бы на раздаче призов, медалек и квантовых штанов. :)

 

А то что вы будете тратить силы, полгода постить миллиарды тонн портянок текста по подготовке ивента, строить там будете спавн, собирать лончер, искать хост и пр. пр. -  народ этого не оценит. Как всегда придет 4 человека из ирки, один человек с форума, напишет за 5 минут до начала ивента вашу смс-сендилку того, что под попой дрона точка там какая-то и на этом все закончится за 15 минут.  Вот и весь ивент.

 

п.с. И, кстати, ремоут-опенКовбоя того же сраного можно написать по-разному. Если написать туполобо WASD то никакой скилл не поможет, а если применить радар, или еще и забиндить быструю логику на дрона (какой-то пак действий горячий) и сделать правильный интерфейс управления, то поверь, азарт будет ;)

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопросы:

 

* Будет ли возможен перезахват точки?

К примеру, подлетел дрон синих, послал 10 пакетов, теперь точка принадлежит синим. Потом подлетел дрон красных, послал 10 пакетов, и точка стала нетрайльной, послал еще 10 пакетов, и точка стала красной.

 

* Можно ли будет захватывать одну точку всей командой?

Например, прилетели 4 дрона, сразу снизили сопротивление на 4 единицы, выдержали необходимую паузу, снизили еще на 4 единицы, два дрона полетели дальше, а оставшиеся добили еще две единицы до десяти.

 

Предложения:

 

Предлагаю следующий механизм захвата точки:

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

 

Предлагаю сделать контрольные точки физическими в виде роботов или микроконтроллеров в креативных корпусах, чтобы не морочиться с их питанием. Это позволит быстро размножить контрольные точки и так же быстро расставить их по полю в произвольном порядке. Каждая контрольная точка будет иметь беспроводную карту, что решит ряд проблем:

1) Контрольная точка будет чётко знать расстояние до дрона, который пытается её захватить, и не надо будет морочиться с определением координат дронов.

2) Сама точка сможет излучать широковещательный пакет, скажем, раз в секунду, по которому дроны смогут определить дальность до неё и, соответственно, вычислить координаты.

3) В пакете можно сообщить информацию об уровне лояльности, сопротивления и принадлежности точки. Также можно сообщить о дронах, которые за последнюю секунду как-то изменили состояние этой точки. Это позволит знать о примерном положении вражеских дронов. А точное знать не обязательно.

 

Аналогично, под зарядником тоже может быть размещен робот или контроллер, рассылающий широковещательные пакеты для их идентификации дронами.

 

Координаты контрольных точек и зарядников система определит трилатерацией. Примерные координаты дронов передадут контрольные точки. Молчащие дроны, или находящиеся вне зоны контрольных точек будут невидимыми.

  • Нравится 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даёшь ручное управление! Я уже не раз это предлагал

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

Игроки просто не подготовились. Вы это хотите повторить? Давайте задание по проще и интереснее. Какие-нибудь звёздные войны на дронах. Ну это чисто пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Даёшь ручное управление! Я уже не раз это предлагал А ещё, Алекс прав! Какие-то эвенты скучные.

Да хоть десять раз предложи. Эта серия ивентов изначально предполагала полностью автоматическую игру, и авторы сохраняют эту направленность. Это, кстати, последний этап (хотя, может, не стоит зарекаться?). Уверен, следующая серия ивентов будет веселее. Если её кто-нибудь организует.

 

Авторам ивента – лайки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

Будет ли возможен перезахват точки?

 

Конечно! Это добавит веселья и непредсказуемости. Можно будет сидеть на базе весь раунд, а потом за две минуты до таймаута совершить стремительный налёт и подмять 55% территории под себя. Победа!

 

 

 

Можно ли будет захватывать одну точку всей командой?
 

 

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

 

 

 

Предлагаю следующий механизм захвата точки: ...
 

 

Хорошая идея.

 

 

 

Предлагаю сделать контрольные точки физическими ...
 

1) Вот тут я согласен. Это будет удобно.

2) В эфире конечно какофония будет, но почему нет.

3) +

 

Насчёт зарядников, я думаю они будут определены конфигурацией карты. То есть будут, как и спавны дронов, находиться в постоянных, более менее сбалансированных, всем известных местах.

 

P.S. @Alex, @qwertyMAN. Да, мы вкладываем много усилий, и всё можно было бы организовать по другому, правильнее и проще, и может быть это было бы популярнее.
У нас не лига CodeForces, увы, и участники не всегда пишут красивый и оптимальный код, и не всегда всё идёт по плану.
Но может мы кого-нибудь вдохновим на проведение своего эвента, с учётом возникшей критики и предложений?  ;)

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем ALeXeR
  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Просто сделать всем дронам вейк-ап, чтобы падшие воскрешались живительным бродкастом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Но может мы кого-нибудь вдохновим на проведение своего эвента, с учётом возникшей критики и предложений?

намек я понял... "Это наш ивент, и если мы решили захватывать точку, мы ее будем захватывать"  :giggle:  

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

намек я понял... "Это наш ивент, и если мы решили захватывать точку, мы ее будем захватывать"  :giggle:  

 

:D

 

UT - это UT, всё таки. У него уже сложившийся формат. Это арена, где программисты показывают свои скиллы, выпуская сражаться заранее запрограммированных ботов.

А вот после UT можно будет запустить что-нибудь новенькое и под новым названием. Какой-нибудь хацкерский челлендж, где участники будуть ломать друг друга по сети, например. Или гонки за летучими коровами на хряко-коптерах, управляемых через OpenGlasses. Любую хренотень. =)

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

По поводу управления:

Можно было бы добавить возможность перезапуска дрона удаленно, просто например если он схватит на пути какою-то ошибку - будет печально (как было в предшествующем ивенте с роботами), то-есть обернуть основной в функцию и выполнять с отловом ошибок, если есть ошибка - перезапуск, запилить удаленный контроль прошивок и выполнять их в pcall: прошивки участники могут класть на сервер, а особая прошивка на дроне будет получать этот код с сервера, компилить и выполнять в pcall.

Также поддерживаю идею с физическими точками, так можно легко определить расстояние от дрона.

В скором времени постараюсь выложить такую прогу, готова на 70 %, включая удалённую консоль для дронов и автоматическую перезапись EEPROM и других плюх :)

 

 

 

fHLI4ClXCkE.jpg

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...