Перейти к публикации

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

Опубликовано: (изменено)

Буду вести журнал процесса разработки, возможно будет кому-то интересно.

 

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Исходники обновляются тут:  https://github.com/xedoc/IL2CDR

Экзешник будет по этой ссылке: https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1

Программа и скрипты пишутся на C#. Архитектура: MVVM (MVVMLight).

  • Скрипты могут содержать любую логику в зависимости от фантазии. Программа не ограничивает и не стандартизирует возможные сценарии миссии; 
  • В ядро программы будет добавлено максимум удобных интерфейсов для общения скрипта с вебом, БД и DServer-ом;
  • Описание и настройки будут визуализироваться автоматически, на основе кода из скрипта;

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

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

 

Пока быстро набросал скетч UI в VS.

  • Scripts - динамический список скриптов. Генерируется на основании списка файлов из папки с данными программы. Скрипты можно влючать, выключать и перезагружать. Для каждого скрипта отображается отдельный список настроек;
  • RCON - отправка консольных команд серверу. Разделена на команды управления игроками и глобальные команды;
  • Settings - глобальные настройки программы. Путь к логам миссии, опция чистки старых файлов(кстати, зачем они генерируются каждые 30 сек ???).
  • Log - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д.

Картинки под спойлером:

 

 

Q55HLQo.png

 

Изменено пользователем xedoc
  • Поддерживаю! 43
Опубликовано:

Ближе к результату ДОНАТЕ нарисуйте .И желательно с мнжеством способов внеснеия денег ибо лень для многих большее препятстие нежели бабло.

  • Поддерживаю! 15
Опубликовано:

Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! )))

  • Поддерживаю! 6
Опубликовано: (изменено)

Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! )))

Поддерживаю!

Молодцы,что взялись.

Изменено пользователем AstronHaizer
Опубликовано:

Кто в этой фигне разбирается, вы помогайте советами, поделитесь опытом и наработками для ОБЩЕГО дела. Одна голова хорошо, а несколько - лучше.

Опубликовано:

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Большое дело будет)

 

Если чем помочь можем - обращайся.

  • Поддерживаю! 1
Опубликовано: (изменено)

Ничерта не понимаю, но денег обязательно подброшу (другим помочь не могу). Удачи в разработке.

Изменено пользователем Mihalich1981
  • Поддерживаю! 6
Опубликовано:

Ближе к результату ДОНАТЕ нарисуйте

Поддерживаю. Спасибо автору за начинание! АДВ в БЗС - предел моих мечтаний!)

  • Поддерживаю! 1
Опубликовано:

готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее.

скайп kupikolesa

  • Поддерживаю! 2
Опубликовано:

В программировании ни в зуб ногой :russian_ru: ,а вот пятаков могу подкинуть за такое дело! :good:

  • Поддерживаю! 1
Опубликовано: (изменено)

готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее.

скайп kupikolesa

Отлично, я думал тестовую страничку статистики под Bootstrap сделать.

Хостинг для теста у меня есть. Можно еще на ASP.NET тестовый фронтенд сделать и залить на бесплатный Azure. Там 5Гб трафика на шару дают ;)

 

Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры.

Со стороны клиента будет, например: CALL RecordKill(dateTime, attackerName, attackerCountry, attackerPlane, isAttackerInAir, targetName, targetCountry, targetPlane, isTargetInAir);

А уже в процедуре будет идти INSERT в соответствующие таблицы (килы, вулч, тимкил).

Там-же можно выдавать всякие медальки и звания.

 

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

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

Изменено пользователем xedoc
  • Поддерживаю! 2
Опубликовано:

Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры.

Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться.

Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату.

Опубликовано:

Буду вести журнал процесса разработки, возможно будет кому-то интересно.

 

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

Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии.

 

Исходники обновляются тут:  https://github.com/xedoc/IL2CDR

Экзешник будет по этой ссылке: https://app.box.com/s/g6tmcu9tjv3eyeexf9buvhi1dqc4ofj1

Программа и скрипты пишутся на C#. Архитектура: MVVM (MVVMLight).

  • Скрипты могут содержать любую логику в зависимости от фантазии. Программа не ограничивает и не стандартизирует возможные сценарии миссии; 
  • В ядро программы будет добавлено максимум удобных интерфейсов для общения скрипта с вебом, БД и DServer-ом;
  • Описание и настройки будут визуализироваться автоматически, на основе кода из скрипта;

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

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

 

Пока быстро набросал скетч UI в VS.

  • Scripts - динамический список скриптов. Генерируется на основании списка файлов из папки с данными программы. Скрипты можно влючать, выключать и перезагружать. Для каждого скрипта отображается отдельный список настроек;
  • RCON - отправка консольных команд серверу. Разделена на команды управления игроками и глобальные команды;
  • Settings - глобальные настройки программы. Путь к логам миссии, опция чистки старых файлов(кстати, зачем они генерируются каждые 30 сек ???).
  • Log - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д.

Картинки под спойлером:

 

 

Q55HLQo.png

 

 

 

Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени?

Опубликовано:

Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться.

Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату.

Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. 

Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. 

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah';

А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно ;)

 

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

  • Поддерживаю! 2
Опубликовано:

 

 

Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени?
 

Знать бы еще такое ДК :biggrin: ? 

Опубликовано:

Динамическая Кампания, поди?

Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет!

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah'; А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно

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

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

Опубликовано:

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

  • Поддерживаю! 1
Опубликовано:

Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. 

Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. 

 

Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah';

А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно ;)

 

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

 

Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования?

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

 

Сменить ник? Это как?

Опубликовано:

 

 

Или же сменить ник и зайти под другим

 

С текущей политикой продажи аккаунтов, на это можно не отвлекаться. ;)

Опубликовано:

 

 

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

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

 

 

 

Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования?

Для локальной статистики ? Для этого можно добавить встроенный веб-сервер. Это не проблема, наработки у меня есть.

  • Поддерживаю! 1
Опубликовано:

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны.
Опубликовано:

Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны.

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

Логи и rcon я в конфиге включил и потестил.

 

А вот файл чата создается при запуске сервера, но содержимое записывается только после остановки сервера.

Опубликовано: (изменено)

UPD: с чатом разобрался  :salute: Можно будет читать почти в онлайне. Только не знаю как отправить сообщение, чтобы не видел никто, кроме сервера. 

Видно как минимум команде.

Изменено пользователем xedoc
Опубликовано:

Теоретически, логин с паролем непосредственно в командах можно не вводить. Во первых, два одинаковых ника в настоящее время невозможно, соответственно, авторизация клиента через чат особо и не требуется. Можно обойтись внешней при регистрации на проекте. Во вторых, помнится ДЕДы упоминали цифровой ID игрока, который используется сервером. Можно как-то привязаться к нему и он не будет зависеть от текущего ника в случае его изменения.

Это теория, так как самому ковырять все это пока нет возможности.

 

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

Опубликовано:

может этот канал уже есть,только не ентер и снтрл\ентер ,а  какой ни будь  *??:;*%:?*?)(*    набор в чат ))) ...надо все спаришивать и вообще....не сделали сами ,тему могли бы пару раза в неделю читатить...за большое спасибо.

Опубликовано:

Пробовал разные префиксы в чате, но пока не подобрал ничего.

 

ID-шников в логах хватает. Там их аж три для игрока. Один Guid для логина, один Guid для ника и еще один цифровой идентификатор игрока как объекта в миссии.  То-есть даже если игрок поменяет ник - привязка к нему по идее останется.

 

В данный момент авторизацию можно сделать через веб.

 

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

Сервер получает ник и складывает его в специальную табличку прошедших регистрацию. В этот момент сервер еще не знает Guid. 

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

Если игрок поменяет ник, то по Guid-у можно будет его обновить.

 

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

Опубликовано:

 

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

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

 

Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал?

Опубликовано:

Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал?

Еще не тестил, но есть rcon-команда для отправки всем, коалиции, стране или определенному ID-клиента

Опубликовано:

Сменить ник? Это как?

А ну тут ты прав. Уникальность зашита в БЗС. Но все равно нужно тогда сделать список авторизированных пилотов для сервера.

 

Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть.

Буду искать.

Чат это на столько второстепенно что не стоит даже останавливаться на этом.

Опубликовано:

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

Это случайность. Не думаю что стоит так сирьезно останавливаться на этом. Вообще чат это приблуда второстепенная ИМХО.

Потом не забывай что полное управление миссиями доступно внутри редактора, нужно в принципе сделать только парсер логов в БД. Все остальное мне видится не критичным и второстепенным.

 

А вот первая табличка с игроками мне уже видна))).

Расскажите с какой целью налаживаете общение игрока с сервером? Для распознования целей? Или еще какие хотелки есть?

Опубликовано: (изменено)

Сейчас у меня цель написать ядро с удобным программным интерфейсом, через которое скрипт Air Domination War или любой другой скрипт сможет пользоваться функционалом чата в том числе.

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

 

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

 

Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д.

Изменено пользователем xedoc
  • Поддерживаю! 3
Опубликовано: (изменено)

Я б поддержал рублем. Сам не программист ни разу :( Но возможность командой с сервера какой-нибудь триггер активировать в реальном времени - это что то невероятно пользительное.

Изменено пользователем Valdamar
Опубликовано:

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

 

Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д.

На данный момент управление наземкой проработано спауном самолета на филде. Т.е. спаунишся и колонна выходит по заданному тобой маршруту. Маршруты естественно все заранее прописаны. Человек выбирает маршрут и тип колонны.

Да логи видел, геморойные. Но зато нет файла в 4-6 гигов как в старичке.

Опубликовано:

Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет!

 

 

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...