xedoc Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 (изменено) Буду вести журнал процесса разработки, возможно будет кому-то интересно. Программа предназначена для обработки логов миссии в реальном времени, вызова скриптов по событиям и управления сервером с помощью 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 - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д. Картинки под спойлером: Изменено 25 февраля 2015 пользователем xedoc 43
=M=PiloT Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Ближе к результату ДОНАТЕ нарисуйте .И желательно с мнжеством способов внеснеия денег ибо лень для многих большее препятстие нежели бабло. 15
VPK_CARTOON Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! ))) 6
AstronHaizer Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 (изменено) Да, если получится, надо будет парню собрать бакшиш . Пусть себе новый свитер купит - а то у компьютерщиков всегда один серый свитер ! ))) Поддерживаю! Молодцы,что взялись. Изменено 25 февраля 2015 пользователем AstronHaizer
VPK_CARTOON Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Кто в этой фигне разбирается, вы помогайте советами, поделитесь опытом и наработками для ОБЩЕГО дела. Одна голова хорошо, а несколько - лучше.
-DED-ASF Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Программа предназначена для обработки логов миссии в реальном времени, вызова скриптов по событиям и управления сервером с помощью rcon-команд. Пригодится для реализации статистики серверов и всевозможных сценариев аля Air Domination War, где необходим ввод команд от игроков и управление сервером, которое нельзя реализовать на уровне миссии. Большое дело будет) Если чем помочь можем - обращайся. 1
Mihalich1981 Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 (изменено) Ничерта не понимаю, но денег обязательно подброшу (другим помочь не могу). Удачи в разработке. Изменено 25 февраля 2015 пользователем Mihalich1981 6
154_Bravo Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Ближе к результату ДОНАТЕ нарисуйте Поддерживаю. Спасибо автору за начинание! АДВ в БЗС - предел моих мечтаний!) 1
=KK=Des_ Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее. скайп kupikolesa 2
Schok Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 В программировании ни в зуб ногой ,а вот пятаков могу подкинуть за такое дело! 1
xedoc Опубликовано: 25 февраля 2015 Автор Опубликовано: 25 февраля 2015 (изменено) готов тестить и помочь в разработке вебовской части, составить архитектуру бд и прочее. скайп kupikolesa Отлично, я думал тестовую страничку статистики под Bootstrap сделать. Хостинг для теста у меня есть. Можно еще на ASP.NET тестовый фронтенд сделать и залить на бесплатный Azure. Там 5Гб трафика на шару дают Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры. Со стороны клиента будет, например: CALL RecordKill(dateTime, attackerName, attackerCountry, attackerPlane, isAttackerInAir, targetName, targetCountry, targetPlane, isTargetInAir); А уже в процедуре будет идти INSERT в соответствующие таблицы (килы, вулч, тимкил). Там-же можно выдавать всякие медальки и звания. Набор параметров пока не окончательный. Ну и процедур будет несколько. Отдельно для учета ботов, наземных целей и т.д. Вытаскивать из логов можно много чего. Например среднее время затраченное не сбитие цели (от первого попадания, до кила) ну и т.д. Изменено 25 февраля 2015 пользователем xedoc 2
=KK=Des_ Опубликовано: 25 февраля 2015 Опубликовано: 25 февраля 2015 Чтобы не привязываться к структуре БД, я планирую использовать хранимые процедуры. Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться. Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату.
Miguel_Gonsalez Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Буду вести журнал процесса разработки, возможно будет кому-то интересно. Программа предназначена для обработки логов миссии в реальном времени, вызова скриптов по событиям и управления сервером с помощью 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 - журнал программы. Информация, ошибки загрузки сриптов со стектрейсом и т.д. Картинки под спойлером: Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени?
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Не понял немного. Данные ты не хочешь хранить в БД чтоли? Структуру можно сделать, а потом уже распространить ее на Мускул и МССКЛ, думаю иное что-то врятли понадобиться. Если есть возмонжость, то нужно составить список параметров которые можно тащить из логов. Чтобы понять как потом строить стату. Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah'; А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно То-есть программе не обязательно знать название таблиц, их связи, имена полей и т.д. Если завтра захочется добавить новые вычисляемые параметры в статистике, то в коде программы менять ничего не придется. 2
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Можно ли будет вообще уйти от миссионного подхода? Ну, там, запилить ДК в реальном времени? Знать бы еще такое ДК ?
=KK=Des_ Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Динамическая Кампания, поди? Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет! Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah'; А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно Понял тебя - хранимыми процедурами хочешь таскать данные. Как будет список данных, которые коммандер будет тащить, скидывай. Интересует по секциям. Общие данные по миссии и по каждому пользователю в отдельности.
=KK=Des_ Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Обязательно надо учесть, чтобы сервер можно было закрыть для левых участников, т.е. прописать или пилотов или их логин и пароль которые смогут летать. Пока вариант только паролить, но пароль могут передать и народу левого будет скапливаться. Или же сменить ник и зайти под другим. Сразу учти эту штуку. Для серьезных проектов будет обязательна. 1
REDFOX-WL-GAGARIN Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Это я к тому, что к структуре БД у меня нет никаких требований. Хочешь нормализуй, хочешь храни все в одной таблице. Главное, чтобы в БД был создан набор хранимых хранимых процедур с определенными параметрами. Образно говоря, в программе вместо вызова INSERT INTO stats SET player='blah', kills=kills+1,... будет CALL AddKill('blah') или для MSSQL: EXEC uspAddKill 'blah'; А уже в самой процедуре AddKill(), на сервере, будет выполняться один или несколько INSERT-ов, UPDATE-ы и все что душе угодно То-есть программе не обязательно знать название таблиц, их связи, имена полей и т.д. Если завтра захочется добавить новые вычисляемые параметры в статистике, то в коде программы менять ничего не придется. Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования? Обязательно надо учесть, чтобы сервер можно было закрыть для левых участников, т.е. прописать или пилотов или их логин и пароль которые смогут летать. Пока вариант только паролить, но пароль могут передать и народу левого будет скапливаться. Или же сменить ник и зайти под другим. Сразу учти эту штуку. Для серьезных проектов будет обязательна. Сменить ник? Это как?
2BAG_Miron Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Или же сменить ник и зайти под другим С текущей политикой продажи аккаунтов, на это можно не отвлекаться.
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Обязательно надо учесть, чтобы сервер можно было закрыть для левых участников, т.е. прописать или пилотов или их логин и пароль которые смогут летать. Пока вариант только паролить, но пароль могут передать и народу левого будет скапливаться. Или же сменить ник и зайти под другим. Сразу учти эту штуку. Для серьезных проектов будет обязательна. Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть. Буду искать. Вопрос. А как тогда оптимизировать это под себя? Прописать что куда класть. Надо будет к тебе обращаться или будет доступно любому далекому от программирования? Для локальной статистики ? Для этого можно добавить встроенный веб-сервер. Это не проблема, наработки у меня есть. 1
NobbyNobbs Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть. Буду искать. Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны.
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Спроси у Ваала, там вроде api какой-то есть. У него же сайт про количество народа на серверах крутится и ники написаны. Ники, самолеты ,статус в воздухе и т.д. как раз не проблема. Ники даже из двух мест можно вытащить - через rcon команду и читая логи миссии. Логи и rcon я в конфиге включил и потестил. А вот файл чата создается при запуске сервера, но содержимое записывается только после остановки сервера.
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 (изменено) UPD: с чатом разобрался Можно будет читать почти в онлайне. Только не знаю как отправить сообщение, чтобы не видел никто, кроме сервера. Видно как минимум команде. Изменено 26 февраля 2015 пользователем xedoc
=V=Heromant Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Теоретически, логин с паролем непосредственно в командах можно не вводить. Во первых, два одинаковых ника в настоящее время невозможно, соответственно, авторизация клиента через чат особо и не требуется. Можно обойтись внешней при регистрации на проекте. Во вторых, помнится ДЕДы упоминали цифровой ID игрока, который используется сервером. Можно как-то привязаться к нему и он не будет зависеть от текущего ника в случае его изменения. Это теория, так как самому ковырять все это пока нет возможности. Может стоит просить разработчиков сделать серверный канал чата, но не уверен, что сделают, и тем более, что сделают быстро...
=M=PiloT Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 может этот канал уже есть,только не ентер и снтрл\ентер ,а какой ни будь *??:;*%:?*?)(* набор в чат ))) ...надо все спаришивать и вообще....не сделали сами ,тему могли бы пару раза в неделю читатить...за большое спасибо.
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Пробовал разные префиксы в чате, но пока не подобрал ничего. ID-шников в логах хватает. Там их аж три для игрока. Один Guid для логина, один Guid для ника и еще один цифровой идентификатор игрока как объекта в миссии. То-есть даже если игрок поменяет ник - привязка к нему по идее останется. В данный момент авторизацию можно сделать через веб. Например, игрок заходит на веб страницу и заполняет форму с текущим ником. Сервер получает ник и складывает его в специальную табличку прошедших регистрацию. В этот момент сервер еще не знает Guid. Затем, при первом входе игрока: запрашиваем его Guid, видим, что его в базе нет, проверяем табличку регистрации на наличие ника, находим - закрепляем Guid за игроком и в дальнейшем авторизуем по нему. Если игрок поменяет ник, то по Guid-у можно будет его обновить. Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER.
=V=Heromant Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER. Да ничего особенного они не узнают. Основными командами (по старичку) были команды запроса целей и команды запроса времени до окончания миссии. И пользовались ими все, как ястребы, так и бомберы. Ну и можно кнопки чата посильней разнести. Вроде кто-то уже их изменял в настройках... Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал?
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 Больше интересует вопрос: а может ли сервер отвечать в чат конкретному игроку, а не в общий/командный канал? Еще не тестил, но есть rcon-команда для отправки всем, коалиции, стране или определенному ID-клиента
=KK=Des_ Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Сменить ник? Это как? А ну тут ты прав. Уникальность зашита в БЗС. Но все равно нужно тогда сделать список авторизированных пилотов для сервера. Кстати, наступил на довольно серьезное ограничение. Чат пишется в файл только после остановки сервера. Как в таком случае читать команды пользователей - загадка. Возможно какой-то параметр есть. Буду искать. Чат это на столько второстепенно что не стоит даже останавливаться на этом.
=KK=Des_ Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Проблема мне видится не в авторизации, а в том, что команда противника может узнать - что происходит на той стороне по командам в чате, случайно отправленным через ENTER, вместо Ctrl+ENTER. Это случайность. Не думаю что стоит так сирьезно останавливаться на этом. Вообще чат это приблуда второстепенная ИМХО. Потом не забывай что полное управление миссиями доступно внутри редактора, нужно в принципе сделать только парсер логов в БД. Все остальное мне видится не критичным и второстепенным. А вот первая табличка с игроками мне уже видна))). Расскажите с какой целью налаживаете общение игрока с сервером? Для распознования целей? Или еще какие хотелки есть?
xedoc Опубликовано: 26 февраля 2015 Автор Опубликовано: 26 февраля 2015 (изменено) Сейчас у меня цель написать ядро с удобным программным интерфейсом, через которое скрипт Air Domination War или любой другой скрипт сможет пользоваться функционалом чата в том числе. В ADW проектах я видел, что команды в чате используются например для получения задания на аэродроме или перезарядки. Теоретически можно использовать эти команды например для вызова прикрытия или запроса наземной атаки на аэродром и т.д. То-есть дать возможность игроку управлять ходом миссии более тонко. Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д. Изменено 26 февраля 2015 пользователем xedoc 3
Valdamar Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 (изменено) Я б поддержал рублем. Сам не программист ни разу Но возможность командой с сервера какой-нибудь триггер активировать в реальном времени - это что то невероятно пользительное. Изменено 26 февраля 2015 пользователем Valdamar
=KK=Des_ Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Теоретически можно использовать эти команды например для вызова прикрытия или запроса наземной атаки на аэродром и т.д. То-есть дать возможность игроку управлять ходом миссии более тонко. Парсер это первоочередное. Им сейчас и занимаюсь. Дело несколько усложняет тот момент, что файл лога не один и каждые 30 секунд генерится новый. Соответственно надо отслеживать файловую систему. Кроме того при первом запуске надо собирать историю текущей миссии по кусочкам, чтобы не потерять ID и т.д. На данный момент управление наземкой проработано спауном самолета на филде. Т.е. спаунишся и колонна выходит по заданному тобой маршруту. Маршруты естественно все заранее прописаны. Человек выбирает маршрут и тип колонны. Да логи видел, геморойные. Но зато нет файла в 4-6 гигов как в старичке.
Miguel_Gonsalez Опубликовано: 26 февраля 2015 Опубликовано: 26 февраля 2015 Так сейчас пили нехочу. Или нужны объяснения что человек именно хочет! Динамическую кампанию в реальном времени сейчас пилить можно? Это как? С помощью редактора можно создать независимо существующий игровой мир, в который игроки будут входить вместо создания коротких сеансов отдельных заданий?
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас