Просмотр полной версии : Ещё один командер. Нужен ли?
В процессе ознакомления с новой вижуал студией и первых шагов в с#, решил попытаться создать ещё один серверкомандер.
Что уже сделано:
1. Написан класс взаимодействия с сервером и сбора игровой статистики в течении сессии (пока без разбора event.log, но работа ведётся), опробован в первом приближении.
........
Пожалуй, из уже сделанного всё :).
Основные фишки:
1. Процесс сервера идёт в "спрятанном" состоянии.
2. Возможность запускать несколько серверов при одной установке самого сервера.
3. Пока все встреченные ограничения на использование нелатинского алфавита успешно преодолены. Нет причин для запрета русских ников и проблем с их обработкой. Весь юникод можно использовать за исключением служебных символов, пробела, двоеточия, запятой и апострофов.
4. Телнетовский порт сервера остаётся свободным и может по прежнему обмениваться с любой сторонней программой.
Что в планах (в порядке приоритетов):
1. Создание дружественной "мордочки".
2. Выпуск демонстрационного, предельно облегчённого варианта (с простым ротатором карт по времени для обкатки на существующем сервере и для ознакомления всем желающим.(срок - порядка недели)
3. Сбор статистики во внешнюю б.д. под Геннадьичевскую базу данных.
4. Воспроизведение логики ротации карт от SC (цели, ограничения по вооружению, количеству самолётов и пилотов
5. Попытка заставить всё это работать виндовым сервисом с отдельной панелью управления.
6. Попытка заставить работать с удалённой панелью управления.
Собственно вопрос:
Нужно ли полностью копировать функционал SC? Или есть функции не востребованные.
Чего больше всего не хватает в существующих демонах и командерах?
Что из вышеперечисленного вообще не интересует?
Вобщем-то, задача ставилась создать основу, главный "кубик" для, предложенной в своё время, идеи борады по созданию "конструктора" иловского сервера.
Стараюсь идти по пути создания структурных единиц, легко заменяемых своими разработками и дополняемых любым внешним софтом.
Создания готовых войн не обещаю, но кубиков постараюсь наделать побольше.
Исходники основных компонентов пока открывать не собираюсь - не из-за жадности, а из-за достаточно сырого почерка программирования (что, впрочем, на функциональности не скажется). После отладки и приведения в удобоваримый вид - исходники будут открываться по мере неуспевания следования пожеланиям по дополнению функционала.(во завернул :))
И самый главный вопрос:
Есть ли интерес к этому у кого-либо ещё или все кто хотел уже удовлетворены?
Борада! Твоё мнение особенно интересно.
Готов ли ты снова вспомнить свою идею?
4. Телнетовский порт сервера остаётся свободным и может по прежнему обмениваться с любой сторонней программой.
Идея наверное даже хорошая. Хотя и чуток наверное поздно.
Вопрос про "телнетовский" порт. Если он остается свободным, то как общается с сервером движок демона?
Или демон открывает сокеты до сервера на "нестандартных" портах, порт 20000 слушает сам и, грубо говоря, является транслятором?
Нет. Программа с сервером телнетом вообще не общается. Всё построено на перехвате стандартных потоков I/О.
Т.е. сервер вместо окошка отдаёт вывод командеру и соответственно командер общается с сервером через стандартный ввод. Именно поэтому окно сервера можно вообще спрятать - смысла от него никакого, кроме крестика в правом верхнем углу :), что тоже решается программно.
Чего больше всего не хватает в существующих демонах и командерах?
1) у SC нет возможности сделать любые составы комманд, например, нельзя чтобы у одной команды были американские машины, у второй - советские. В SC жестко прописано что они могут быть только в одной команде, либо в обеих сразу.
2) Логи сервера фиксируют такие события, как попадание в цель без ее разрушения, это типично при атаках кораблей. Если сорганизовать накопление такой информации, то вполне реализуемо понятие групповой победы. Иначе странно, что линкор атаковало 5 самолетов, все попали и кроме последнего - 0
3) Своя система раздачи баллов, поскольку если для самолетов градация 100-200-300 достаточна, то для кораблей - примитивна. Речь не идет о том, что выдает в чат игры, речь о том, чтобы в БД писалось сообразно уничтоженной цели.
4) + хотелось бы препроцессор(или пост) БД, чтобы в командных сценариях начисление баллов можно было поставить в зависимость от успеха команд.
Добавлено через 2 минуты
вообще, есть опен коммандер, он на с# тоже, если авторы согласны, то может имеет смысл объединяить твой проект и его?
3 и 4 уже реализовано отдельной надстройкой к бд SC. Называется rankcalc. Лежит на http://il-2.sinor.ru.
Возможно, не совсем прямо сделано, но работает.
1. Не понял. Речь о самолётах? Так команде (синяя/красная) доступны только типы, расположенные на соответствующих базах.
Или нужно разбиение на команды внутри синей или красной?
2. Всё что сервер выдаёт в лог можно использовать.
Вообще, суть проекта в том, чтобы наделать максимально независимых модулей, которые владелец сервера сможет простыми способами объединять, создавая всё, что сам захочет.
Пока речь о том, чтобы создать основу - кусок кода, позволяющий легко отслеживать любое доступное событие на сервере и отдавать это событие на дальнейшую обработку пользовательской программе. Т.е. упростить реализацию идей на уровне админов сервера, без разбора каждый раз низкого уровня событий. Можно отдельным скриптом , можно дописав логику в той же вижуал студио - кому как удобно.
Оформить такие модули в виде dll-ок и собрать из них некую программу, как пример использования.
Использовать же модули можно хоть из бейсика, хоть из явы, хоть из питона - кому как удобнее.
Опенкомандер, насколько мне известно, ориентирован исключительно на конечного пользователя, освоившего c#.
1. Не понял. Речь о самолётах?
да, конкретно, рисовал я карту войны 1948 года, конечно, с некоторыми допущениями.
А там расклад следующий красная команда Спиты, мессеры, бофайтеры. Синяя - спиты, темпесты, макки.
Админ утверждает, что такой расклад нереализуем из за того, что мессеры не могут быть красными, а спиты синими. Что-то там спутывается если это не догфайт простой.
А я чо скажу? Поздно или нет, спорный вопрос. Для меня главное - это попытка сделать. Мне кажется опыт и основа пригодится и в следующих симах, да и ил хоронить рановато.
Удачи! Чем смогу - готов помочь. Немного писал на С#, даже книжка есть :)
Люблю рисовать панели.
Тут главное для начала - чтоб не ограничивать функции, не навешивать обработку. Костяк - модуль коммуникации. Принять команды с чата, отдать в чат, принять события, выдать события. С возможностью добавления. Например нужна мне команда "поиметь", я ее вписываю в таблицу - указываю на ее параметры, и что сделать при этом. Типа из выпадающих окошек...
Тут в общем-то много думать и пробовать, чтоб инструмент сделать.
Нужен, нужен коммандер. Ибо SC много чего может, а вот персонифицированное управление пилотами там не реализовано. Кроме кика/бана :)
Именно этого не хватает тем проектам, которые на базе SC реализованы.
Тому же Туману Войны очень не хватает запретов вылета на пару минут после смерти.
А еще полезные функции персональных ограничений по крафтам/загрузкам, персональная доступность филдов.
и, да, может, по проторенному пойти, на сурсфорже выложить или ресурс указать чтобы накидали приложений помимо того, что здесь.
Нужен! И нужен унифицированый.
Сам такое пробую сварганить
Первый блин есть.
Надеюсь, что не совсем комом :)
http://il-2.sinor.ru/forum/viewtopic.php?p=21309
Что не попало в ридми.
Ники игроков могут быть русскими.
Весь юникод разрешить не удалось из-за лога - он пишется исключительно в кодировке по умолчанию для неюникодовых программ для винды, на которой установлен сервер.
Вобщем, если в нике появятся символы, которые не понимает именно конкретная винда, на которой стоит командер, то он просто не разрешит подключиться к серверу.
На русской винде стоит кодировка 1251 - все символы прекрасно обрабатываются.
Запрещены только несколько служебных разделителей и то больше из соображений "перебдеть".
http://il-2.sinor.ru/forum/viewtopic.php?p=21309
Хотел поглазеть, да хост чего-то в дауне.
Уже работает.
Были плановые работы.
Мирный, насколько я понял, в принципе можно пользовать оба коммандера и SC и твой? То есть навесить на SC те функции, которые он умеет выполнять, а твоим доруливать то что необходимо?
Да. Можно и так. Конечно, не в том виде что сейчас.
Ребят, нужны тестеры для обкатки уже почти беты с геннадьичевским статом.
Кому не лень, пожалуйста, заглядывайте периодически на 217.70.119.165:21002.
Если работает - соберите хотябы человек несколько. При одном игроке уже всё работает, а оттестить под реальной нагрузкой не получается пока.
вдвоем слетали, посмотрели, работает.
народу чо-та так и не появилось.
Часть багов отловлена. Работает пока более-менее стабильно. Тест перенесён на сервер 217.70.119.165:21000. Народу там бывает и по 30 с лишним человек.
Если не будет падать каждый час - дальнейший тест там и останется.
Не сделано пока - всё что связвно с ini-файлами:
цели
ограничения по крафтам и вооружению
победа стороны
время миссии
Стат собирает даже лучше, чем это делает SC (по ходу выяснилось наличие нескольких багов в родной статистике). Статистика пока не доступна для обозрения - есть проблемы с кодировками mysql. перестроить сервер пока не знаю как - на нём же форум, при установке правильной кодировки, форум перестаёт понимать русские буквы. Проблема решается.
Andrey_K
26.02.2009, 15:33
Если будет возможность реализовать - добавлю свою "хотелку"...
Можно ли будет ввести ограничения по топливу, причём раздельно по крафтам, так как это сделано в SC с вооружением? И чтобы можно было тонко настраивать комбинации топлива и загрузки, например запретить брать подвесные баки если загрузка топлива не равна 100% и тп.
Очень нужная и полезная фича для проектов, а SC, к сожалению, её предоставить не может...
Если дойдут руки до реализации ограничений вооружения - надеюсь, и ограничение по топливу будет не слишком сложно сделать, принцип то тот же.
Что касается багов в статистике SC - вот несколько навскидку, на которые стоит обратить внимание.
Если вирпил получил ПК на месте стрелка и при этом вышел в меню ДО падения самолёта (или был кикнут сервером при превышении лимита смертей), то смерть ему в стат не идёт, соответственно не идёт сбитый и в стат сбившему. Если получивший ПК дождался падения самолёта - то в стат ему идёт две смерти - первая это непосредственно ПК, а вторая - падение самолёта. Соответственно сбившему в стат также пишется две строчки со сбитым.
Далее, иногда бывает что пилот был завулчен на полосе до отрыва (и в логе нет строчки "взлетел") - тогда SC пишет эту смерть в предыдущий вылет, стат которого выглядит как "...Вася Пупкин - посадка. Вася Пупкин убит".
И чтобы можно было тонко настраивать комбинации топлива и загрузки, например запретить брать подвесные баки если загрузка топлива не равна 100% и тп
поддержую. Плюс еще один момент, по которому другой разработчик высказал принципиальную возможность. Ограничение количества боеприпасов, т.е. 1000кг бомб выдается 2шт, 500кг - 20, 100/250 сколько угодно.
Ну и проверить реализуемость альтернативных плейнсетов по типу "вариант бис"
ну и конечно же запрет вылета после смерти на 1-5 минут, с предупреждениями там, все дела :)
а ини-файлы такие же как у SC делать будешь? в смысле это очень хотелось бы, чтоб генератор не переписывать
Добавлено через 3 минуты
Ну и проверить реализуемость альтернативных плейнсетов по типу "вариант бис"ага, вкусная тема. ну тут скорее надо инструмент наружу выводить, чтоб сами проверяли, либо к некоему ини опять же привязывать.
Ребят, пожелания постараюсь по возможности учесть.
Но.
Скажу сразу - я не планирую выпускать суперуниверсальный командер.
Задача стоит по-другому.
Создаю стабильную основу и как пример несколько примочек, независимо друг от друга реализующих те или иные функции. В отличии от SC, Вы сами сможете дописывать необходимый вам функционал потому, что исходники будут открытыми.
Удовлетворить все пожелания у меня просто не хватит сил.
Тут дело не в сложности реализации, а в количестве вариантов. Самые трудоёмкие модули - это непосредственное взаимодействие с сервером и статистика.
Статистика даже не потому, что её сложно собрать, а потому, что её сложно показать (веб- страничка это даже более трудоёмкая штука, чем сбор статистики в базу).
Объясняю как я вижу модульность:
Есть сервер, разговаривающий сразу "в два голоса"(консоль и лог), есть модуль, умеющий слушать сервер и выуживать из обеих источников максимум информации, приводя её к нескольким (порядка 2х десятков) элементарным событиям.
К этим событиям подключаются уже другие модули - и сложные, вроде сбора статистики, и простые, вроде модуля, выдающего приветствие игроку при подключении.
Таких модулей может быть сколько угодно - и каждый будет выполнять какую-то функцию. Плюс эти модули могут быть связаны между собой или независимы друг от друга. Вариантов может быть очень много.
Что касается некоторых багов в SC, то они не всегда поддаются исправлению. Просто потому, что все командеры ограничены тем, что можно получить от сервера.
Например, баг с пк и выходом в меню:
Сервер выдаёт только следующие возможные комбинации событий:
А был убит Б,
А вышел в меню.
или
А был убит Б,
Самолёт А был сбит Б,
А вышел в меню.
Что касается зачёта смерти А - тут нет проблем - по событию А убит мы засчитываем ему смерть.
А вот по поводу зачёта сбитого для Б - всё сложнее - если мы засчитываем сбитие самолёта по событию Самолёт А был сбит Б (а это логично - ведь А может и не быть убитым, а выпрыгнул или выжил при аварийной посадке), то в первом случае, мы просто не увидим этого события, а если будем засчитывать сбитие за смерть противника и за сбитие самолёта, то получим удвоение сбитых во втором случае.
С прыжками с парашютом - ещё интереснее ситуация.
При выходе в меню после прыжка, парашютист, в отличии от самолёта не исчезает.
И сервер, если прыгнувший снова оказывается на стоянке в самолёте, видит одновременно 2х игроков с одним ником.
Причём, в логе он их никак не различает (только если первый прыгнул с позиции стрелка, а второй сидит на позиции пилота их можно различить).
И если парашютист убивается о землю, то в логе мы видим следующую последовательность:
А прыгнул с парашютом,
А выбрал самолёт,
А убит,
А взлетел.
Или вначале взлетел потом убит.
Однозначно верно истолковать такой лог просто невозможно.
Поэтому, приходиться либо вводить запреты и ограничения, либо игнорировать некоторые события.
Что касается ситуации с завулченным, то SC пишет в статистику события верно (при выходе в меню закрывается очередной вылет, потом открывается новый), но не все эти события отражаются в стате.
Эту фишку я уже просёк и исправил.
Первая полностью (надеюсь) работоспособная версия (http://il-2.sinor.ru/forum/viewtopic.php?t=665) со статом в базу от SC.
На всякий случай - все настройки пока ручками в ини файлах. Лучше вначале прописать, а потом запускать.
В файлах хххerrorlog.txt собираются всевозможные ошибки (большинство критических отловлено - если что серьёзное со сбоями вылезет - стоит заглянуть вначале туда).
Настройки сервера(файлы confs.ini и server.cmd) до первго запуска программы скопировать в папку serverconfig.
Файл missions.txt должен лежать в той же папке, что используемые миссии. В нём указывается полный путь от папки Missions.
( Net\dogfight\servermaps\Bitva.mis - как пример) Каждая миссия - одна строка. Пустая строка будет воспринята как конец очереди.
Действующий стат (http://il-2.sinor.ru/forum/stat/server0/)
Maverick16
21.03.2009, 06:37
Огромное спасибо за исходники, пытаюсь дореализовать нужные вещи, например, штраф после смерти с ограничением на взлет. Возник вопрос - планируется ли полностью открыть исходники? Очень хотелось бы увидеть модуль общения с сервером и стат.
Огромное спасибо за исходники, пытаюсь дореализовать нужные вещи, например, штраф после смерти с ограничением на взлет. Возник вопрос - планируется ли полностью открыть исходники? Очень хотелось бы увидеть модуль общения с сервером и стат.
Да.
Планируется. После переработки.
На это потребуется порядка месяца если с основной работой будет как прежде.
Вобщем-то, тайны никакой нет - просто реализация там достаточно примитивная (в лоб :)) и код очень не красивый - просто стыдно такое выкладывать и с источником некоторых ошибок пока нет ясности.
Если есть большое желание поковыряться в том змеином клубке - стукнись в личку.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot