PDA

Просмотр полной версии : Анонс! Система организации игр - ComBat Games



SuffiX [Бойові бабаки]
15.05.2017, 16:42
Уважаемые организаторы игр и опытные игроки!

Вашему вниманию предлагается анонс запуска в действие системы организации высококачественных страйкбольных игр - ComBat Games https://games.combat.vision
https://www.youtube.com/watch?v=sHp_1p9yqRI

ComBat Games - это инструмент, помогающий в организации высококачественных военно-спортивных мероприятий на базе страйкбола, пейнтбола, лазертага и т.п.
Если коротко, то это упрощенная версия военной системы управления боем (АСУБ) с элементами автоматизации процесса регистрации участников на игру.

Система помогает на всех трех этапах проведения мероприятия: подготовка к игре, проведение игры, анализ результатов.

На этапе подготовки к игре в системе имеется возможность:
1) Создавать и автоматически распространять электронные карты полигона пользователям на их персональные телефоны или планшеты.
2) Объявлять анонсы предстоящих игр в виде текста с картинками на Web-портале системы.
3) Просматривать календарь будущих мероприятий и регистрировать свою команду на участие за одну из представленых игровых сторон.
4) Обсуждать предстоящую игру между участниками как в общем, так и в закрытых разделах сторон.
5) Готовить миссии и маршруты для каждой стороны на цифровой карте и отображать их участникам во время проведения игры без необходимост личной встречи для передачи бумажных конвертов.

На этапе проведения игры система:
1) Позволяет отображать положение и статус каждого учатника каждой стороны на цифровой карте организаторам игры и другим участникам стороны с помощью GPS приемников в телефонах и планшетах игроков.
2) Выводит текущие миссии и маршруты всем участникам каждой стороны с возможностью разграничения доступа по взводам.
3) Значительно улучшает координацию и осведомленность участников на игре. Каждый игрок понимает суть происходящего в любой момент.
4) Дает возможность организаторам корректировать геймплей в реальном времени, используя информацию про положение каждого участника и статус миссий даже при маленьком числе участников на относительно больших игровых териториях.
5) Имеет функцию обмена тактическими обозначениями на карте между игрокам во время игры в режиме реального времени, что в свою очередь улучшает координацию игроков.
6) Дает возможность обмениватся сообщениями и прикрепленными файлами между игроками.
7) Имеет встроенный скриптовый движок, позволяющий автоматизировать взаимодействие каждого участника с окружающей средой, считать очки захвата територий, автоматически включать миссии по условию, показывать сообщения о заходе в запрещенную область и т.п.

После проведения игры система позволяет:
1) Просматривать историю событий каждой стороны и анализировать причины победы или поражения, а так же помогает решать конфликтные ситуации.
2) Оставлять благодарнсоти и расшаривать фото в коментариях к игре.
3) Отправлять приватные сообщения на сайте системы и приглашать командиров команд на следующие мероприятия.

Все что нужно для начала - это скачать приложение (https://play.google.com/store/apps/details?id=com.combat.vision), зарегистрироватся на портале системы (http://games.combat.vision/join), создать свою команду (http://games.combat.vision/team/add) и подать заявку (http://games.combat.vision/scene) на предстоящую игру.

Детальная инструкция доступна на портале http://games.combat.vision/downloads после регистрации.

Пример игры "Нова загроза", организованной SomberGrin'ом с помощью данной системы 14.05.2017 можно увидеть по ссылке http://games.combat.vision/scene/view/2

Запись истории событий с игры:
За сторону Спецназ http://games.combat.vision/side/view/3?key=fc194b3cff073a5edc950d06e41756e1
За сторону ПВК http://games.combat.vision/side/view/2?key=860d89024ad833bcab8dc5eebc7fdc09
Запись доступна только зарегистрированным на портале пользователям.

Рад буду услышать отзывы игоков с данной игры в этой теме.

По вопросам организации игр с помощью данной системы обращайтесь в личку.

Славик
15.05.2017, 18:20
Чудова та корисна штукенція, оцей ваший доробок. Напружує тільки, що ви використовуєте символіку країни-агресора, та ще й підрозділів які активно діють проти нашої держави - летючу мишу. Якщо так бажається спецназівської символіки, то могли б використати загальновизнаний символ армійського спецназу - кинджал.

.tornado
15.05.2017, 19:59
Внешний API у системы предусмотрен или может быть в планах есть?

SuffiX [Бойові бабаки]
15.05.2017, 21:09
Внешний API у системы предусмотрен или может быть в планах есть?

АПИ есть. А что вы хотели?

.tornado
15.05.2017, 23:49
Да много чего можно сделать, если есть возможность интеграции.
Первое, что я бы добавил - автоматический учёт повреждений и выхода из строя транспорта, задействованного в игре.

SuffiX [Бойові бабаки]
15.05.2017, 23:58
Да много чего можно сделать, если есть возможность интеграции.
Первое, что я бы добавил - автоматический учёт повреждений и выхода из строя транспорта, задействованного в игре.

Готов в личке это обсудить.

Casper
16.05.2017, 13:27
Цікаво в чому різниця з тим же МАП21?

SuffiX [Бойові бабаки]
16.05.2017, 13:46
Цікаво в чому різниця з тим же МАП21?

Це наступна версія. Скачайте, подивитесь.

Casper
16.05.2017, 13:49
http://airsoft.ua/attachment.php?attachmentid=90865&stc=1&d=1494935213

При створені мапи.

SuffiX [Бойові бабаки]
16.05.2017, 13:52
http://airsoft.ua/attachment.php?attachmentid=90865&stc=1&d=1494935213

При створені мапи.

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

SuffiX [Бойові бабаки]
05.10.2017, 10:46
Ураа! Это свершилось! На маркет выложен релиз ComBat Games с поддержкой полного перечня скриптовых команд.
Описание языка здесь https://games.combat.vision/upload/app/Script.ru.pdf

Если ест ьвопросы по реализации конкретных сценариев или сскриптовых элементов, задавайте здесь...


https://youtu.be/O39kQTvRJYc

Примеры скриптов

Автореспаун:
1) Создаем круг или кадрат респауна с системным именем resp.
2) Создаем локальный триггер:
2.1) Условие: inArea(@resp,@player)
2.2) При активации: print("Вы зашли в зону респауна. Ожидайте возрождения 30 мин..."); delay(1800); remStatus(@player, DEAD); print("Вы ожили. Можете вступать в игру.")

Минное поле (зона аномалий) c вероятностью срабатывания 50%:
1) Создаем круг, кадрат или полигон минного поля с системным именем mine.
2) Создаем локальный триггер:
2.1) Условие: inArea(@mine,@player)
2.2) При активации: if(rnd(1) > 0.5) { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }

Авиаудар в выбранном в процессе игры месте:
1) Создаем локальный выключенный триггер:
1.1) Условие: inArea(@art_strike,@player)
1.2) При активации: print("Вас накрыл авиа удар! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD)
2) Когда нужно совершить авиа удар, создаем в нужном месте круг с именем art_strike и включаем триггер. Все кто попадут в круг - погибают.
В такой реализации авиаудар может включить только админ, включив триггер, но можно подвязать активацию триггера на какоето условие, например, сменить статуса цели с именем "Запустить ракету" на "Выполнено" или проверку игрока на вхождение в зону пункта управления ПВО.
Аналогичным способом делаються аномалии для игр сталкера, предупреждение о выходе за игровую територию и т.п.
Но все вышеописанное - это не шаблон для копирования, а скорее демонстрационный пример. По хорошему нужно все нюансы продумывать и обходить возможное не честное поведение игрока.

Автоматическое переключение миссий с оповещением всех игроков об этом от имени Штаба с системным именем HQ:
1) Создаем группу с системным именем HQ и нзванием "Штаб". Размещаем ее где-то за картой или в условном месте.
2) Создаем задачу с именем mission1. Наносим на него все необходимые объекты, маршруты и т.п.
3) Создаем задачу с именем mission2. Наносим на него все необходимые объекты, маршруты и т.п. Скрываем ее опцией "Временно спрятать слой от всех".
4) Создаем глобальный триггер:
4.1) Условие: getStatus(@mission1) == CMP
4.2) При активации: say(@HQ, select(isUser(@obj)),"Поздравляем, вы успешно выполнили первую миссию! Получена новая задача. См. карту..."); hide(@mission1); show(@mission2)
В результе если кто либо из игроков установит у цели mission1 статус "Выполнено", то произойдет скрытие объектов первой миссии, отображение объектов второй миссии, а так же все игроки на карте получать сообщение от группы Штаб о успешном выполнении.

Пример примитивной реализации войны за территории.
0) Меняем имя админского юзера на "Штаб" для красоты отправки сообщений от имени Штаба.

1) Создаем на карте определенное количество зон в виде кругов, квадратов или многоуголтников (с именем zone1,zone2...,zoneN). Делаем их по умолчанию зелеными.

2) Зеленые зоны будут означать не занятые, жельтые - идет бой, красные - захвачены стороной красных, синие - захвачены стороной синих.

3) Создаем глобальный одноразовый выключенный триггер с подписью Reset и системным именем var для хранения и инициализации переменных счета. При включении триггера админом будет происходить сброс очков, цвета зон и выключение триггера.
3.1) Условие: TRUE (то есть всегда безусловно выполняется)
3.2) По активаци (коментари из кода перед вставкой в триггер надо убрать):
@self.side_red = 156; // Сторона красных из настроек программы
@self.side_blue = 157; // Сторона синих из настроек программы
@self.zones = "@zone1,@zone2,@zone3";
@self.score_red = 0;
@self.score_blue = 0;
foreach(val(@self.zones)) {
setColor(@obj, #FF00FF00);
update(@obj);
}
foreach(select("isPlayer(@sel)")) {
setLock(@obj, ADMIN);
update(@obj);
}
deactivate(@self);

4) Создаем локальный многоразовый триггер Core со временем повторения 60 сек (раз в сколько секунд добавлять бал за контроль) для анализа состоянй захвата территорий.
4.1) Условие: TRUE (то есть всегда безусловно выполняется)
4.2) По активации:
forEach(val(@var.zones)) {
@self.count_red = count(select("isUser(@sel) AND inArea(@obj, @sel) AND not(checkStatus(@sel, DEAD)) AND (getSide(@sel) == val(@var.side_red))"));
@self.count_blue = count(select("isUser(@sel) AND inArea(@obj, @sel) AND not(checkStatus(@sel, DEAD)) AND (getSide(@sel) == val(@var.side_blue))"));

if ((val(@self.count_red) > 0) AND (val(@self.count_blue) > 0)) then {
if(getColor(@obj) != #FFFFFF00) then {
setColor(@obj, #FFFFFF00);
update(@obj);
say(@player, @all, "Heavy fight in [getCapt(@obj)]!")
}
} else if (val(@self.count_red) > 0) then {
if(getColor(@obj) != #FFFF0000) then {
setColor(@obj, #FFFF0000);
update(@obj);
say(@player, @all, "[getCapt(@obj)] captured by RED!")
}
@var.score_red = val(@var.score_red) + 1
} else if (val(@self.count_blue) > 0) then {
if(getColor(@obj) != #FF0000FF) then {
setColor(@obj, #FF0000FF);
update(@obj);
say(@player, @all, "[getCapt(@obj)] captured by BLUE!")
}
@var.score_blue = val(@var.score_blue) + 1
} else if(getColor(@obj) == #FFFFFF00) then {
setColor(@obj, #FF00FF00);
update(@obj);
say(@player, @all, "[getCapt(@obj)] is free!")
} else if(getColor(@obj) == #FFFF0000) then {
@var.score_red = val(@var.score_red) + 1
} else if(getColor(@obj) == #FF0000FF) then {
@var.score_blue = val(@var.score_blue) + 1
}
}
forceUpdate;
deactivate(@self);

Суть механики - каждые 60 секунд все зоны на карте проверяються на наличие в них не мертвых игроков красной и синей стороны. Если в зоне пристусвуют обе стороны, то она стает желтая и очки никому не начисляються. Если в ней присутсвуют игроки только одной стороны, то зона принимает цвет стороны и начисляет по 1 балу за каждую минуту контроля. Если зона осталась желтая и в ней никого нет, она стает зеленая.

5) Создаем выключеный локальный триггер Score для показа счета:
5.1) Условие: TRUE
5.2) По активации:
say(@player, @all, "Score - RED: [val(@var.score_red)], BLUE: [val(@var.score_blue)]!");
deactivate(@self);
При включении триггера он отправит всем сообщение со счетом.

Casper
06.12.2017, 19:16
Сьогодні спробував, зайти, видавало ошибку, що час не правильний на сервері і в телефоні, хоча правильний. Коли включив автоматом час від мережі, перекинуло на годину назад і тоді зайшло.

п.с. Ще б інструкцію, як карти робити, і полігони. З другої спроби, так и не получилось.

SuffiX [Бойові бабаки]
06.12.2017, 19:24
У вас неправильний часовий пояс стоїть, а час автоматом видає правильний.

Інструкція в розділі серверу "завантаження".

Casper
09.12.2017, 20:29
if(rnd(1) > 0.5) { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }




Trigger "6497608753980250057" onActivated start
Incorrect IF construction: keyword THEN missed
if: ERROR

evil_sysadmin
09.12.2017, 20:41
if(rnd(1) > 0.5) { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }




Trigger "6497608753980250057" onActivated start
Incorrect IF construction: keyword THEN missed
if: ERROR

Ну так написано же «пропущено ключевое слово then».
Подозреваю что правильно будет так:
if(rnd(1) > 0.5) then { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }

SuffiX [Бойові бабаки]
09.12.2017, 21:37
Ну так написано же «пропущено ключевое слово then».
Подозреваю что правильно будет так:
if(rnd(1) > 0.5) then { print("Вы подорвались на мине! Выдвигайтесь на мертвяк."); addStatus(@player, DEAD) }

Да. Я писал без проверки примеры по памяти. Пропустил then.