PDA

Просмотр полной версии : JayDaemon - новый OpenSource демон от IvanoBulo



IvanoBulo
31.03.2006, 13:20
Как и обещал в соседней ветке, сообщаю что проект нового демона открыт на SourceForge.
Линк на страницу проекта: http://sourceforge.net/projects/jaydaemon

JayDaemon это кодовое название. Из-за того что название придумывал на-спех не подумал что на английском это читаеться как ЯйДемон :D А не ДжейДемон как я хотел... Но это не суть важно, т.к. это всё равно кодовое название проекта.

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

Внимание! В данное время демон находиться в состоянии Pre-Alpha. Хотя он и умеет уже ротировать карты и писать сообщения в базу, использовать демон крайне не рекомендуеться до появления первого релиза.

tahorg
31.03.2006, 13:32
No File Packages Defined
This project has not yet created any file release packages.

IvanoBulo
31.03.2006, 13:37
Правильно. Релиза ещё не было - статус сейчас Pre-Alpha. Сорцы в Subversion репозитории.

svn list https://svn.sourceforge.net/svnroot/jaydaemon

покажет список модулей проекта. В каждом можуле есть ветка trunk в которой лежит основная ветка разработки.

Чтобы скачать какой-то модуль нужно:

svn co https://svn.sourceforge.net/svnroot/jaydaemon/<module_name> <module_name>

например для модуля который называеться "console" (для работы с Иловской консолью) нужно:
svn co https://svn.sourceforge.net/svnroot/jaydaemon/console console

Ну или можно полазить в репозитории броузером: http://svn.sourceforge.net/viewcvs.cgi/jaydaemon/

ES_Vanka-Vstanka_09
31.03.2006, 13:55
ну будь добр сделай сначало хоть бета-релиз, с минимальными функциями и работоспособностью, а уж потом дальше бум смотреть

IvanoBulo
31.03.2006, 14:00
Вообе-то до того как будет первый релиз мне хотелось бы узнать у общественности какой минимальный набор функциональности должен быть в первом релизе. До функциональности SC пока ещё долго, до до минимально рабочей версии 2-3 недели если будет достаточно свободного времени.

Tazmanskiy[Taz]
31.03.2006, 14:04
а где лежит парсер лога и есть ли он?

вроде поискал нашел только интерфейсы :)

IvanoBulo
31.03.2006, 14:08
Есть. Модуль eventlog - там сам "движок" парсинга. Конкретные релизации для разных типов сообщений в модуле daemon.

Salsero
31.03.2006, 17:40
Претендую на участие в правке английского. Что для этого надо сделать?

IvanoBulo
31.03.2006, 18:23
Претендую на участие в правке английского. Что для этого надо сделать?
Это немного позднее. Как только будет первый более-менее стабильный релиз возьмусь за "полирование", вот тогда твоя помощь будет нужна.

IvanoBulo
02.04.2006, 22:05
Принимаються предложения по усовершенствованию конфига миссии. В данный момент конфиг для миссии выглядит так:



;Main mission settings
[MAIN]
;Mission name
name=Test1
;Mission file location in respect to "<IL-2 DS>/Missions" folder
location=Net/dogfight/daemon/mission_1.mis
;Teams in this mission
teams=Red,Blue
;Mission time in seconds
mission_time=60

;Team descriptions
[Red]
id=1
objectiveDescriptors=or1

[Blue]
id=2
objectiveDescriptors=ob1

;Red Objectives
[or1]
;IL-2 target value
target=1 0 0 0 500 16086 4079 5000
;3 min time limit
time_limit=1800
;This will stop mission if objective complete
stopMissionIfComplete=yes
;startObjectivesWhenComplete=<comma separated objective ids>
;stopObjectivesWhenComplete=<comma separated objective ids>

;Blueobjectives
[ob1]
target=6 0 0 0 500 16086 4079 5000



Я расставил коментарии для лучшего понимания того как будут обрабатываться задачи миссии. Отдельно хочу отметить параметры:
"startObjectivesWhenComplete" и "stopObjectivesWhenComplete". Этими опциями можно будет задать какие задачи нужно будет добавить или удалить в случае успешного/неуспешного выполнения задания.

Ограничения по ресурсам миссии пока не сделал. Думаю достаточно будет в секцию команды добавить параметр "resources=Plane:100,Bomber:30,Sturmovik:10, и т.д.". И по истребелению одного ресурса заканчивать миссиию.

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

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

POP
03.04.2006, 14:46
Вообщем, если у кого есть предложения, прошу высказать их здесь.
Есть пожелание (незнаю, насколько реально, но в начале проекта, думаю, вполне) добавить возможность запускать батничек перед загрузкой миссии и совсем для эстетов другой батничек после окончания миссии. Так можно будет организовать, например, работу генератора миссий или пересылку данных с локальной бд в базу на хостинге... Ну и ещё черт знает чего.(а в конфиге - соответствующие имена батников)
Также, хотелось бы иметь возможность результаты миссии сбрасывать не только в бд, но и в текстовый файлик - может быть своеобразный лог, только упрощенный и без лишних малозначительных событий.

Baks
03.04.2006, 15:10
Есть пожелание (незнаю, насколько реально, но в начале проекта, думаю, вполне) добавить возможность запускать батничек перед загрузкой миссии и совсем для эстетов другой батничек после окончания миссии. Так можно будет организовать, например, работу генератора миссий или пересылку данных с локальной бд в базу на хостинге... Ну и ещё черт знает чего.(а в конфиге - соответствующие имена батников)
Также, хотелось бы иметь возможность результаты миссии сбрасывать не только в бд, но и в текстовый файлик - может быть своеобразный лог, только упрощенный и без лишних малозначительных событий.

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

Baks
03.04.2006, 15:15
Правильно. Релиза ещё не было - статус сейчас Pre-Alpha. Сорцы в Subversion репозитории.

svn list https://svn.sourceforge.net/svnroot/jaydaemon

покажет список модулей проекта. В каждом можуле есть ветка trunk в которой лежит основная ветка разработки.

Чтобы скачать какой-то модуль нужно:

svn co https://svn.sourceforge.net/svnroot/jaydaemon/<module_name> <module_name>


например для модуля который называеться "console" (для работы с Иловской консолью) нужно:
svn co https://svn.sourceforge.net/svnroot/jaydaemon/console console

Ну или можно полазить в репозитории броузером: http://svn.sourceforge.net/viewcvs.cgi/jaydaemon/

Небольшая поправочка. После каждого модуля еще неполохо trunk добавлять (странно только, это так твоя IDE сделала?).
Т.е. не
svn co https://svn.sourceforge.net/svnroot/jaydaemon/<module_name> <module_name>
а

svn co https://svn.sourceforge.net/svnroot/jaydaemon/<module_name>/trunk <module_name>

Может его немного переупорядочить этот svn, чтобы все например в trunk лежало, а не на отдельные модули со своими trunk раскидывать?

Т.е. полностью проект вытягивается


svn co https://svn.sourceforge.net/svnroot/jaydaemon/commons/trunk commons
svn co https://svn.sourceforge.net/svnroot/jaydaemon/console/trunk console
svn co https://svn.sourceforge.net/svnroot/jaydaemon/daemon/trunk daemon
svn co https://svn.sourceforge.net/svnroot/jaydaemon/dao/trunk dao
svn co https://svn.sourceforge.net/svnroot/jaydaemon/dao-objects/trunk dao-objects
svn co https://svn.sourceforge.net/svnroot/jaydaemon/eventlog/trunk eventlog
svn co https://svn.sourceforge.net/svnroot/jaydaemon/libs libs
svn co https://svn.sourceforge.net/svnroot/jaydaemon/web-stat-module/trunk web-stat-module

IvanoBulo
03.04.2006, 15:29
Есть пожелание (незнаю, насколько реально, но в начале проекта, думаю, вполне) добавить возможность запускать батничек перед загрузкой миссии и совсем для эстетов другой батничек после окончания миссии. Так можно будет организовать, например, работу генератора миссий или пересылку данных с локальной бд в базу на хостинге... Ну и ещё черт знает чего.(а в конфиге - соответствующие имена батников)
Также, хотелось бы иметь возможность результаты миссии сбрасывать не только в бд, но и в текстовый файлик - может быть своеобразный лог, только упрощенный и без лишних малозначительных событий.
Да без проблем.
А что именно должно быть в упрощённом логе? Может уж лучше XML писать, со всеми событиями? Из него что угодно потом сделать можно... В любом формате.

POP
03.04.2006, 16:40
Да без проблем.
А что именно должно быть в упрощённом логе?
Только самые значимые события - потери обоих сторон.
Уничтожено то-то и то-то (не важно где и кем, хотя, где - может быть важно), потерян самолёт такой-то. Т.е. только глобальные события, способные влиять на развитие дальнейших событий, в "удобоваримом" виде.


Может уж лучше XML писать, со всеми событиями? Из него что угодно потом сделать можно... В любом формате.
Со всеми событиями - получится лог как на сервере - из него потом выковыривать нужное замучаешься...

IvanoBulo
03.04.2006, 17:40
Только самые значимые события - потери обоих сторон.
Уничтожено то-то и то-то (не важно где и кем, хотя, где - может быть важно), потерян самолёт такой-то. Т.е. только глобальные события, способные влиять на развитие дальнейших событий, в "удобоваримом" виде.
Я описывал выше возможность создавать "задание" (objective). Может как раз сделать отчёт по каждому заданию? Типа на сколько процентов выполнено. Или же список уничтоженых юнитов (у каждого есть уникальный id). Вроде такого:

[obj1]
completed=61.66%
Tank=Static_180,Static_183,Static_15
Car=Static_10,Static_13,Static_2

tahorg
03.04.2006, 18:35
Со всеми событиями - получится лог как на сервере - из него потом выковыривать нужное замучаешься...

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

POP
03.04.2006, 20:23
Я описывал выше возможность создавать "задание" (objective). Может как раз сделать отчёт по каждому заданию? Типа на сколько процентов выполнено. Или же список уничтоженых юнитов (у каждого есть уникальный id). Вроде такого:

[obj1]
completed=61.66%
Tank=Static_180,Static_183,Static_15
Car=Static_10,Static_13,Static_2
При анализе результатов миссии, такой вариант только запутает (с процентовкой).
Список - имхо - правильнее для автоматической обработки.
Кстати, есть ещё одна идейка...
Писать в этот лог успешные посадки по филдам и типам самолётов.
В кофиге - добавить исходное количество крафтов на каждом филде, по типам.
Усложняет, конечно, всё сильно(конфиг раздувает), но становится возможным организовывать миссии с перегруппировкой самолётов, делает осмысленным перелёты с одного аэродрома на другой - в следующей миссии генератором можно учитывать перелёты, а при соответсвующем виде миссии - даже в той же.
Вобщем - простор для идей огромный. Но не стоит стремиться реализовать всё сразу - так только, прикинуть на будущее.

tahorg
03.04.2006, 21:02
Это ты уже слишком далеко смотришь.

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

Хотя я тут сильно сомтрю в сторону скриптов 8-).

IvanoBulo
11.04.2006, 22:14
А вообще есть мнение - стандартизовать для обоих версий командера вызов сторонних программ для обработки результатов вылета и генерации миссии. Напрячься и сделать чтото одинаковое. Есть мнение, что XML Для этого подходит больше всего.
Хорошая мысль. Как только подберусь к озданию этой функциональности обязательно вышлю свои идее в виде XML schema.

2 All

Ну что ж, первая бета очень близко :) Демон довольно стабилен и что главное его поведение вполне предсказуемо :cool:
Главное чтобы моя жена не потеряла терпение из-за того что я уделяю демону столько ремени... :o
Статистика пока только в зачатках но уже позволяет увидеть общий стат сервера и игрока. Если кто хорошо разбираеться в HibernateQL и/или Tapestry и желает помочь в доработке статистики прошу не стесняться ;)

Кто желает поправить английский, то милости прошу взглянуть сюда (http://svn.sourceforge.net/viewcvs.cgi/jaydaemon/daemon/trunk/data/messages.properties?view=markup)
и сюда (http://svn.sourceforge.net/viewcvs.cgi/jaydaemon/daemon/trunk/data/player-manager.properties?view=markup)

akirill
16.04.2006, 00:39
А можно вопрос один?

Почему все так сложно? Скоро оракл потребуется, я чувствую...
Чем не устраивал вариант fbdaemon? Обычный перл, но да на демона этого никаких сверхзадач вроде как и не возлагается. Особенно учитывая скудность возможностей управления сервером.
Вот кабы они не зажали исходника, можно было бы быстренько поправить под свои нужды, и вперед.
Соглашусь, что со статистикой сложнее.
Я вот смотрел решение для nullwar - тихий ужас. Файерберды с какими то ДЛЛ, под статистику целая платформа требуется (жопа). Сдается мне, что просто интересно вам, ребята, обкатывать свои мысли на различных платформах.
Ну вот на кой ляд тут ява нужна? Это угребище, которое хорошо только ресурсы потреблять умеет.
Пишите два параллельных проекта. Вы бы хоть взяли, да написали совместное ТЗ на разработку, а то опять получится нечто несъедобное, нихрена не воспроизводимое и непортабельное.

IvanoBulo
16.04.2006, 01:40
А можно вопрос один?

Почему все так сложно? Скоро оракл потребуется, я чувствую...
Чем не устраивал вариант fbdaemon? Обычный перл, но да на демона этого никаких сверхзадач вроде как и не возлагается. Особенно учитывая скудность возможностей управления сервером.
Вот кабы они не зажали исходника, можно было бы быстренько поправить под свои нужды, и вперед.
Соглашусь, что со статистикой сложнее.
Я вот смотрел решение для nullwar - тихий ужас. Файерберды с какими то ДЛЛ, под статистику целая платформа требуется (жопа). Сдается мне, что просто интересно вам, ребята, обкатывать свои мысли на различных платформах.
Ну вот на кой ляд тут ява нужна? Это угребище, которое хорошо только ресурсы потреблять умеет.
Пишите два параллельных проекта. Вы бы хоть взяли, да написали совместное ТЗ на разработку, а то опять получится нечто несъедобное, нихрена не воспроизводимое и непортабельное.
Очень "конструктивно"... А главное без какого-либо знания о состоянии софтверных технологий сегодняшнего дня.
Если так хочеться чего-то "перлового" - напиши сам. Кстати, мне действительно интересно обкатывать свои идеи и новые знания на практике, причём принося при этом пользу.

McFris
16.04.2006, 02:25
Я вот смотрел решение для nullwar - тихий ужас. Файерберды с какими то ДЛЛ, под статистику целая платформа требуется.
Смеялся 5 минут. :bravo:

Baks
16.04.2006, 02:54
А можно вопрос один?

Почему все так сложно? Скоро оракл потребуется, я чувствую...
Чем не устраивал вариант fbdaemon? Обычный перл, но да на демона этого никаких сверхзадач вроде как и не возлагается. Особенно учитывая скудность возможностей управления сервером.
Вот кабы они не зажали исходника, можно было бы быстренько поправить под свои нужды, и вперед.
Соглашусь, что со статистикой сложнее.
Я вот смотрел решение для nullwar - тихий ужас. Файерберды с какими то ДЛЛ, под статистику целая платформа требуется (жопа). Сдается мне, что просто интересно вам, ребята, обкатывать свои мысли на различных платформах.
Ну вот на кой ляд тут ява нужна? Это угребище, которое хорошо только ресурсы потреблять умеет.
Пишите два параллельных проекта. Вы бы хоть взяли, да написали совместное ТЗ на разработку, а то опять получится нечто несъедобное, нихрена не воспроизводимое и непортабельное.

Мда... действительно конструктив...


Вот только про потребление ресурсов не надо.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=perl

Я понимаю если бы про C/C++ заикнулись... но при выборе Java vs Perl vs Python, ИМХО java предпочтительнее (к тому же есть Jython и JRuby, так что логику или _чегоещенадодляполногосчастья_ можно потом на чем угодно писать)

akirill
16.04.2006, 11:52
Хе-хе. Вроде зацепил :)


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


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

Вопрос в одном - что интереснее, обкатывать идеи, или приносить пользу?
А писать, возможно, придется. Посмотрим, что у вас получится. Мне не "перлового" хочется, мне хочется простого, это важно

akirill
16.04.2006, 11:53
Смеялся 5 минут. :bravo:
А я плакал :cool:

McFris
16.04.2006, 12:07
Мне не "перлового" хочется, мне хочется простого, это важно
Огласите список "простого". Вместе посмеёмся. Пока не названы конкретные кандидатуры - это всё стёб.

IvanoBulo
16.04.2006, 12:09
Мне не "перлового" хочется, мне хочется простого, это важно
Пожалуста. Посмотри в сорцах GameConsoleFacade и EventLogReader. Реализуешь на любом любимом тебе языке и делаешь настолько простое насколько сможешь.

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

tahorg
16.04.2006, 12:13
Давай ка я отвечу.

-Почему Java, ну или в моем случае С#. А не перл, JScript, etc

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

- Почему Firebird, MSSQL, а не MySQL версии 3? Ведь он же быстрее.

Быстрее пока не надо делать связанные серии действий. А потом нормальные СУБД с тригерами/процедурами/транзакциями закапывают MySQL по полной. Кстати в MySQL 5 введены тригера, транзакции, процедуры. И вот оно - MsSQL 2005 Express на базе в 200.000 записей рвет MySQL как тузик грелку по скорости. А то, что под нагрузкой MySQL базу переодически укладывает до невосстанавливаемого состояния - это уже просто ни в какие ворота.

Итог. Firebird/MsSQL надежней, удобней для разработки и НИФИГА не медленней MySQL. Надеюсь в текстовых файлах статистику хранить не предполагалось ?

Ну и наконец. Итак - пусть будет перл. Но тогда надо скачать и поставить перл под свою виндовую машину. И скачать и настроить MySQL. Что требует знаний. Итого надо скачать 2 инстала - перл и mysql, установить, затем их поженить, после чего создать базу из скрипта, и можно жить.

Сравним с, ну например .net 2.0/ms sql 2005 express. Тоже качаем 2 инстала (framework & mssql - они фришные). Ставим их. НАстроек там нет никаких - они просто встают и начинают любить друг друга. Проигрываем скрипт базы, запускаем демона.

Ну и в ЧЕМ РАЗНИЦА ? Разница только в том, что последнее устойчивей, проще поддерживается, и легче поддаетсяна наворачиванию функций и примочек. Ни единого преимущества первого подхода нет, кроме недостатков.

ПРеимущество будет если все это на С++ написать. Вот тогда это и памяти будет кушать мало и летать просто. Но я хочу посомтреть на того кто за это возьмется, и похихикать сколько он это будет отлаживать.

akirill
16.04.2006, 12:53
Вот только про потребление ресурсов не надо.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=java&lang2=perl


Я не верю во все эти тесты. Как говорят - "теория суха, а древо жизни пышно зеленеет".


Я понимаю если бы про C/C++ заикнулись... но при выборе Java vs Perl vs Python, ИМХО java предпочтительнее
Скромный вопрос - чем?

akirill
16.04.2006, 12:59
Огласите список "простого". Вместе посмеёмся. Пока не названы конкретные кандидатуры - это всё стёб.
Ну например, для меня неочевидны преимущества реализации бизнес-логики средствами СУБД. Будут аргументы в защиту?

akirill
16.04.2006, 13:01
Очень странно, потому как твои суждения о демоне нулвара и о джаве выглядят очень некомпетентно.
Можно пример некомпетентности?
Учтите, ребята, я с вами ведь не ругаюсь :thx:

McFris
16.04.2006, 13:06
Ну например, для меня неочевидны преимущества реализации бизнес-логики средствами СУБД. Будут аргументы в защиту?
Не будут, ибо тут форум по Ил-2 а не по азам информатики.

akirill
16.04.2006, 13:11
Давай ка я отвечу.

-Почему Java, ну или в моем случае С#. А не перл, JScript, etc

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

- Грузины лучше, чем армяне
- Чем лучше?
- Чем армяне

Не стоит сравнивать теплое с мягким. Это я про ООП :p


- Почему Firebird, MSSQL, а не MySQL версии 3? Ведь он же быстрее.

Подмена тезиса, уважаемый. Мне не надо быстрее, мне надо проще. Жалкие проценты выигрыша по скорости не компенсируют затрат по разработке и сопровождению.



Итог. Firebird/MsSQL надежней, удобней для разработки и НИФИГА не медленней MySQL. Надеюсь в текстовых файлах статистику хранить не предполагалось ?
Это не итог, это непонимание темы обсуждения.


Ну и наконец. Итак - пусть будет перл. Но тогда надо скачать и поставить перл под свою виндовую машину. И скачать и настроить MySQL. Что требует знаний. Итого надо скачать 2 инстала - перл и mysql, установить, затем их поженить, после чего создать базу из скрипта, и можно жить.
Опять непонимание. У вас что, никогда руководителя проекта не было? Или проектов не было?
Обратись к моему начальному сообщению. Я ведь спросил о демоне управления сервером - смена карт, и остальной нехитрый функционал. Тут вобще никакой никакой СУБД не надо.


легче поддаетсяна наворачиванию функций и примочек.
А они нужны, эти примочки?
Может все же имеет смысл начать с ТЗ и расписывания функционала?



ПРеимущество будет если все это на С++ написать.
Ну да, и до пенсии выковыривать мемори лик и буфер оверфлоу.

IvanoBulo
16.04.2006, 13:16
Можно пример некомпетентности?
Учтите, ребята, я с вами ведь не ругаюсь :thx:
Пожалуйста:

Ну вот на кой ляд тут ява нужна? Это угребище, которое хорошо только ресурсы потреблять умеет.
У вас есть телефон с Java? Там много ресурсов?
Дальше, да будет вам известно что например очень много бытовой техники и автомобильных систем в Европе разрабатывают с использованием Java. А те "ящички" в которых это всё фурычит имеют крайне мало ресурсов.
Это только часть из того с чем я работал.
В дальнейшем прошу не засорять ветку оффтопом. Не нравиться чей-либо выбор - пиши своё.

akirill
16.04.2006, 13:17
Не будут, ибо тут форум по Ил-2 а не по азам информатики.
Зачем тогда встреваете в разговор, если не можете аргументировать свою позицию? Я вот хочу предостеречь от возможных (sic!) ошибок. Все мои рассуждения полностью в топике.

akirill
16.04.2006, 13:20
У вас есть телефон с Java? Там много ресурсов?
В нем ресурсов больше, чем было у моего первого комптютера, а функционала значительно меньше. Это так, к сведению.

В дальнейшем прошу не засорять ветку оффтопом. Не нравиться чей-либо выбор - пиши своё.
Хорошо, не буду.

McFris
16.04.2006, 13:33
Зачем тогда встреваете в разговор, если не можете аргументировать свою позицию? Я вот хочу предостеречь от возможных (sic!) ошибок.
Кого предостеречь??? Меня (Нулевому 3 года скоро, полтора года на собственном софте, ни единого сбоя и мощнейший функционал с неограниченными возможностями масштабирования). До этого вместе с Берние работал над FBDaemon в момент его привязки к MySQL, из за чего и отказался от его использования (ну и из-за бездарнейшего языка Перл ессно).
Моя аргументация - мой софт, моя работа, сервер, пилоты летающие ГОДАМИ на этом сервере, который развивается непрерывно и софт это не ТОРМОЗИТ, а наоборот помогает. И как раз в силу изначально и твёрдо выбранных стандартов.

Может Вы хотите Ивана предостеречь (оригинальный демон написан им, хоть и на Питоне но с явным упором (ИМХО лишним) в ООП)?

Может Вам лучше написать что-то своё, а мы вас годика через два предостережём. Ок? :)

tahorg
16.04.2006, 14:21
А, так вам надо просто список карт по таймеру менять? Ну тогда да, тогда ВАМ можно все на ... да хоть на ShellScript написать.

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

Так вот все это - для них, а не для смены карты раз в час. Для смены карты хватит вообще одного батника, запущеного через стандартную команду at винды.

tahorg
16.04.2006, 14:36
- Грузины лучше, чем армяне
Не стоит сравнивать теплое с мягким. Это я про ООП :p


Про перл вместо Java не я писал



Подмена тезиса, уважаемый. Мне не надо быстрее, мне надо проще. Жалкие проценты выигрыша по скорости не компенсируют затрат по разработке и сопровождению.

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




Опять непонимание. У вас что, никогда руководителя проекта не было? Или проектов не было?


Вот в наличии Вашего серьезного опыта по разработке проектов я сильно сомневаюсь, после постов в этой ветке. В отличие от IvanoBulo, ROA_McFris и, уж простите за нескромность, меня, которые по крайней мере имеют законченные рабочие проекты под ил-2, как минимум известные сообществу. Кроме того, тот факт, что вы демонстрируете АБСОЛЮТНОЕ непонимание почему народ пользуется, ну например Zopa, и с какой целью, все более убеждает меня в вашем статусе "знаю карате, тэйквондо, у-шу и еще много других страшных слов".



Обратись к моему начальному сообщению. Я ведь спросил о демоне управления сервером - смена карт, и остальной нехитрый функционал. Тут вобще никакой никакой СУБД не надо.

Раскройте понятие "нехитрый функционал". "смена карт" делается скриптом в 20-30 строчек на любом языке програмирования, имеющем библиотеку с сокетами.



А они нужны, эти примочки?
Может все же имеет смысл начать с ТЗ и расписывания функционала?

Да вот находятся извращенцы :

http://www.gennadich.com/forum/viewtopic.php?t=1153

Как показывает практика серверов БЕЗ статистики в разы меньше серверов со статистикой.

Fierce
25.04.2006, 13:06
Вот ,гляньте:beer:

http://forum.sukhoi.ru/showthread.php?p=741737#post741737

POP
03.05.2006, 10:16
Как продвигаются дела?
Просто, появилось ещё одно пожелание.
На форуме обсуждается генератор динамкомпаний от от Lowengrin'a
Так вот, Lowengrin при генерации миссий для догфайта, использует нестандартное описание объектов вида
0_Chief1 vehicles.artillery.Artillery$PzIIF 2 47345.00 131164.00 360.0 0.0 0
0_Chief2 vehicles.artillery.Artillery$PzIIF 2 47345.00 131176.00 360.0 0.0 0
0_Chief3 vehicles.artillery.Artillery$PzIIF 2 47345.00 131188.00 360.0 0.0 0
0_Chief4 vehicles.artillery.Artillery$PzIIF 2 47345.00 131200.00 360.0 0.0 0
В секции [NStationary] .

Уничтожение таких объектов в евентлоге выглядит так:

[7:10:43 PM] 30_Chief6 destroyed by POP:LaGG-3series4 at 88960.0 113700.0
[7:10:43 PM] 30_Chief4 destroyed by POP:LaGG-3series4 at 88936.0 113700.0
[7:10:44 PM] 30_Chief2 destroyed by POP:LaGG-3series4 at 88912.0 113700.0
[7:10:44 PM] 30_Chief3 destroyed by POP:LaGG-3series4 at 88924.0 113700.0
[7:10:44 PM] 30_Chief5 destroyed by POP:LaGG-3series4 at 88948.0 113700.0
[7:10:44 PM] 30_Chief1 destroyed by POP:LaGG-3series4 at 88900.0 113700.0
[7:10:44 PM] 30_Chief7 destroyed by POP:LaGG-3series4 at 88972.0 113700.0

SC таких записей не понимает (при формировании статистики).

Так вот. Хотелось бы, чтобы новый демон такое понимал.

tahorg
03.05.2006, 11:00
Конгениально! А может всеж Ловенгрину навалять, чтоб не выпендривался ... 8-(

POP
03.05.2006, 11:54
Конгениально! А может всеж Ловенгрину навалять, чтоб не выпендривался ... 8-(
Можно, конечно, и так...:)
Но только подумай сам - его программа не только для догфайта работает и колонны - чуть ли ни ключевая фигура для построения динамики...
Да и разве плохо будет если статистику от демона можно будет прикрутить не только к онлайну?
А для этого она должна понимать все объекты в принципе.

IvanoBulo
03.05.2006, 11:59
Так вот. Хотелось бы, чтобы новый демон такое понимал.
Скорее всего не будет. Лучше всего если он сам исправит баг у себя.

POP
03.05.2006, 12:07
Скорее всего не будет. Лучше всего если он сам исправит баг у себя.
Ну если это работает, то это не баг, а, скорее, фича:)

Жаль, конечно:(
Придётся, видимо, LO просить написать статистику и "переключалку миссий по таймеру"

tahorg
03.05.2006, 12:36
это конечно фича, только вот ну совсем нестандартно. Все парсеры миссиий расчитаны на то, что в сташинари обьекты именуются как
(\d+)_Static, это делает полный редактор, и поэтому внутри командеров обьекты разбираются просто по номерам.

Тут ктото обнаруживает, что можно писать не только (\d+)_Static, а что попало. И тут возникает большая проблема. С точки зрения стуктурирования результата - тут все хорошо, но с точки зрения отслеживания обьектов, тут начинаются проблемы. Написать общую штуку, которая будет отслеживать любое обозначение конечно можно, но это проблема и всегда можно будет извратиться и завалить команедр нестандартным названием.

Если есть стандарты, то неплохо бы было их придерживаться. Такое вот имхо.

POP
03.05.2006, 13:10
Тут ктото обнаруживает, что можно писать не только (\d+)_Static, а что попало. И тут возникает большая проблема. С точки зрения стуктурирования результата - тут все хорошо, но с точки зрения отслеживания обьектов, тут начинаются проблемы. Написать общую штуку, которая будет отслеживать любое обозначение конечно можно, но это проблема и всегда можно будет извратиться и завалить команедр нестандартным названием.

Если есть стандарты, то неплохо бы было их придерживаться. Такое вот имхо.
Вот то-то и оно, что "что попало" может здорово помочь в структурировании результатов.
С точки зрения отслеживания объектов - ИЛ с этим справляется.
На уничтожение объекта говорит:"танк (вагон, орудие.....) противника уничтожен"
если вместо "(\d+)_Static" будет написано "(\d+)_abcd...xz129" и ИЛ и сервер это проглотит, то какая разница что там будет написано?
А если это самое "...xz..." ещё поможет структурировать что-то в сторонней программе, то почему бы это не использовать?
Ну будет объект идентифицироваться не по (\d+), а по всей строке - что в этом нереального?
Если стандарты ограничивают, а их несоблюдение не мешает работе основной программы, то почему бы не отступить от них, тем более, что сам ИЛ принципиально меняться врядли будет, а заложено в нём возможностей больше, чем используется в полном редакторе.
В конце концов, для того, чтобы расширить стандартные возможности ИЛа и пишутся все сторонние программы. Не ради соблюдения стандартов.
Опять же ИМХО:)

VreVo
08.05.2006, 16:32
Сравним с, ну например .net 2.0/ms sql 2005 express. Тоже качаем 2 инстала (framework & mssql - они фришные).
Подскажите неспециалисту — будет ли это работать с XP Home Edition и c будущей лайт-версией Vista (я имею в виду аналог ХР Home) ?
Просто слышал, что .net работает только с Pro и выше.

tahorg
08.05.2006, 17:33
будет

MoHaX
13.08.2006, 12:54
Собираюсь пускать сервер под Linux, как продвигаются дела с Jay Daemon?

Baks
13.08.2006, 12:55
Собираюсь пускать сервер под Linux, как продвигаются дела с Jay Daemon?

Под линухом сервер работает некорректно (ИЛ-2 сервер), грузит процессор на 100%. Так что только винда :(.

IvanoBulo
14.08.2006, 10:22
Собираюсь пускать сервер под Linux, как продвигаются дела с Jay Daemon?
Пока работа над демоном "замёрзла" из-за нехватки времени. А вообще есть идея дождаться выхода Java 6 в которой появиться поддержка скриптовых языков чтобы дать возможность более гибкого "тюнинга" демона админами серверов.

akirill
14.08.2006, 23:24
Под линухом сервер работает некорректно (ИЛ-2 сервер), грузит процессор на 100%. Так что только винда :(.

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

akirill
14.08.2006, 23:25
А вообще есть идея дождаться выхода Java 6 в которой появиться поддержка скриптовых языков чтобы дать возможность более гибкого "тюнинга" демона админами серверов.

Ну надо же! Перл, поди, поддерживаться будет?
Может проще дождаться версии джава, в которой уже будет поддержка управления сервером Ил-2? :)
Все, ухожу-ухожу-ухожу...

IvanoBulo
15.08.2006, 10:13
Зачем же так грубо? Просто в данный момент получается так что менеджмент ресурсов, обработка некоторых событий довольно сложна и чтобы её подменить под конкретную идею конкретного сервера нужно долго копаться в исходниках чтобы что-то поменять. Тем более что релиз Java 6 должен состояться в этом году. И раньше чем через 2 месяца ремонт в квартире сделать не успею...

akirill
16.08.2006, 22:19
Зачем же так грубо?
Извини, обидеть не хотел. Когда меня грубо выпихивали из топика, я не обижался, поскольку считал себя правым. Ну да это лирика.


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

Может все же сначала ТЗ написать, и смакетировать в скриптовых языках? В том же горячо любимом Питоне?
Обкатать идею, посмотреть на фидбэк. А там уж можно реализовывать на чем больше нравится.


Тем более что релиз Java 6 должен состояться в этом году. И раньше чем через 2 месяца ремонт в квартире сделать не успею...

На самом деле, совершенно неважно, когда джава выйдет. Все равно, предположительно, до второго патча будет непотребно.

Вот ремонт, это серьезно.
Прими мою моральную поддержку.

tahorg
16.08.2006, 23:19
Может все же сначала ТЗ написать, и смакетировать в скриптовых языках? В том же горячо любимом Питоне?
Обкатать идею, посмотреть на фидбэк. А там уж можно реализовывать на чем больше нравится.


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




На самом деле, совершенно неважно, когда джава выйдет. Все равно, предположительно, до второго патча будет непотребно.

Вот ремонт, это серьезно.
Прими мою моральную поддержку.

Смешно. Пацаны то и не знают.

Baks
17.08.2006, 01:39
Может все же сначала ТЗ написать, и смакетировать в скриптовых языках? В том же горячо любимом Питоне?
Обкатать идею, посмотреть на фидбэк. А там уж можно реализовывать на чем больше нравится.

Вообще-то это вторая версия :). На первой Nullwar вертиттцо. (точнее это уже не совсем та, первая, ее ребята из nullwar конкретно переделали).
http://www.nullwar.com/info/soft/



На самом деле, совершенно неважно, когда джава выйдет. Все равно, предположительно, до второго патча будет непотребно.

Хмм... я вот ужо год на 1.6 сижу ... нормально работает... или ты о JayDaemon? :)

akirill
17.08.2006, 10:53
Макетировать в скриптовых языках что-то большее чем ротация карт - дольше и сложнее чем написать все сразу на ООП яыке высокого уровня.

И все же, хотелось бы послушать начальника транспортного цеха.
ООП (это не язык, кстати, а парадигма) не панацея. Нуу, или можете разубедить меня, приведя фрагмент ТЗ, по которому без абстракции данных, наследования, полиморфизма и инкапсуляции не обойтись :D


Смешно. Пацаны то и не знают.

Смейтесь на здоровье. Смех продлевает жизнь.
А про пацанов... Я красноглазые аргументы не приемлю, с такими аргументами на ЛОР, анонимусом. Или в биореактор имени Луговского :)


Вообще-то это вторая версия . На первой Nullwar вертиттцо. (точнее это уже не совсем та, первая, ее ребята из nullwar конкретно переделали).

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

Baks
17.08.2006, 11:44
И все же, хотелось бы послушать начальника транспортного цеха.
ООП (это не язык, кстати, а парадигма) не панацея. Нуу, или можете разубедить меня, приведя фрагмент ТЗ, по которому без абстракции данных, наследования, полиморфизма и инкапсуляции не обойтись :D

Чет я совсем не понял... Уточни пожалста какое ТЗ и что именно подразумевается под инкапсуляцией, полиморфизмом и наследованием :).

Вот, например, такой кусочек можно сразу к трем отнести:
"Демон должен обеспечивать работу с БД: MySQL, PostgreSQL и SQLite. Необходимо иметь возможность реализации доступа к другим БД".
Из этой строчки приходим к стандартному паттерну DAO :).
Инкапсуляция - POJO для доступа к данным (чтоб самому из query их не вытаскивать)
Полиморфизм - например PlayerDAO с методом getPlayers(PlayerCriteria crit) обспечивает вытаскивание списка Player по критерию из любой базы (т.к. SQL спрятан в реализации PlayerDAOImpl или вообще в какомнибудь ibatis/hibernate/...
Наследование - В базе будут разные объекты, например StaticObject. Но есть еще специальные объекты типа AirplaneStaticObject, которые ведут себя немного по другому, но имею общие черты со всеми StaticObject. Вот тут мы и унаследуемси.

Это то, что ты хотел? :D

К стати, в linux kernel этого ООП до .... "ну вам по пояс будет"(с). :old:



Мне этот софт показался непотребным для воспроизводства функционала нулвара на своем сервере. Непонятная страсть к виндузячим приблудам и монстрообразной Зопе (как пишу, так смеюсь :) ), слабо распространенным, вдобавок.
Был приведен как пример "прототипа на скриптовом языке". Если сравнишь с кодом http://svn.sourceforge.net/viewvc/jaydaemon/ увидишь много похожего.
А где ты там вантузячие приблуды увидал? Обычный FireBird. Но так как у многих ил-2 на вантузе вертитцо, соответсвенно и заточено слегка под него (во всяком случае под Debian все эти пакеты есть и ставятся под zope из под apt-get без проблем).

В общем малость складывается впечатление, что ""Сексом я не занималась, но я о нем читала - мне не понравилось!" (с) Новодворская. ;)

McFris
17.08.2006, 12:25
Непонятная страсть к виндузячим приблудам и монстрообразной Зопе
Опа?!? А за слова ответить? Требую указать ЛЮБОЙ компонент из нашего софта, привязанный к Винде.
"Монстрообразная" Зопа работает 2 года (серверу всего 3) без единого сбоя и нареканий. И занимается только ОТОБРАЖЕНИЕМ статистики. Что само по себе означает, что выводить её можете хоть на ассемблере, если Zope Вас не устраивает.

Baks
17.08.2006, 12:30
Непонятная страсть к виндузячим приблудам и монстрообразной Зопе (как пишу, так смеюсь :) ), слабо распространенным, вдобавок.

К стати, по поводу малораспространенной :), SGI и НАТО настолько маленикие и глупые конторы, что стали использовать этого монстра вместо правильного LAMP. Ага :D


Опа?!? А за слова ответить? Требую указать ЛЮБОЙ компонент из нашего софта, привязанный к Винде.
"Монстрообразная" Зопа работает 2 года (серверу всего 3) без единого сбоя и нареканий. И занимается только ОТОБРАЖЕНИЕМ статистики. Что само по себе означает, что выводить её можете хоть на ассемблере, если Zope Вас не устраивает.

Ну.... если только саму страничку http://www.nullwar.com/info/soft/. Она точно под вантуз заточена :umora:

MoHaX
17.08.2006, 15:46
Нормально он там работает. Проценты отдает не торгуясь, когда просят у него :)
У меня на одной машине (Целерон какой то) крутится Ил-2, Тракмания, Батлфилд2 и еще какие то статистики и прочая мелочевка. Ни на одном из игровых серверов не жалуются на тормоза.

Что ты используешь для статистики сервера ИЛ-2? У меня IL2SC не запустился под wine 0.9.19 =(

akirill
19.08.2006, 00:40
Что ты используешь для статистики сервера ИЛ-2? У меня IL2SC не запустился под wine 0.9.19 =(

Сейчас ничего. Летает пока 3,5 человека

IvanoBulo
19.08.2006, 22:38
Было немнjго времени завершил давно начатое: добавил возможность описывать доступные ресурсы для миссии. Описать можно почти что угодно %) Например такое:


;Red resources
[RedPlayerResources]
amount=70

;Blue resources
[BluePlayerResources]
amount=50

;There will be twenty Bf109G6's
[Bf109G6Resource]
gameId=Bf-109G-6
amount=20

;There will be only five Bf109G6's with 'U3-MK108' weapon
[Bf109G6MK108Resource]
gameId=Bf-109G-6
weapon=U3-MK108
amount=5


К сожалению сам контроллер миссии с этими данными пока не работает но это гораздо меньший объём работы.

MoHaX
20.08.2006, 19:33
В каком состоянии сейчас JayDaemon? что он уже позволяет делать?

IvanoBulo
20.08.2006, 22:29
В данный момент демон позволяет запустить набор миссий. Ротации не происходит но ротацию не сложно добавить. Демон поддерживает аутентификацию и авторизацию пользователей. По умолчанию включена авторегистрация пользователя. Админу доступны команды: "list-missions", "restart-mission" и "next-mission #" (# номер из списка миссий, немедля загружает след. миссию). Конфигурационный файл для миссии обязателен, посмотреть пример можно тут (http://svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/cfg/simple-mission.conf?revision=87&view=markup). Поддержки управления ресурсами миссии ещё нет, есть только на уровне конфигурации (~20-25 человеко-часов осталось),
Поддержка "задач миссии" уже реализована. Задача можеть быть главной, второстепенной и скрытой. Типы задач: уничтожить/защитить в определённом районе, уничтожить/защитить конкретный объект, процент выполнения, ограничение по времени, запуск/остановка других задач при выполнении или провале задачи
Демон поддерживает проверку слишком быстрой "новой попытки" (после прыжка 10 сеукнд надо ждать прежде чем это сделать). Обходит баг Ила когда после ПК не даёться победа при выходе противника.
Поддерживает многоязыковость в зависимости от предпочтения игрока и установок сервера - в данный момент только англ и русский.
Запись событий игры в БД реализована в полной мере.
Веб-статистика в зародышном состоянии. Если кто желает помочь "милости просим" ;)

IvanoBulo
21.08.2006, 11:52
Кстати, если будут у кого пожелания оставляйте их в "Feature requests" на сайте проекта (http://sourceforge.net/projects/jaydaemon)

boRada
04.09.2006, 13:41
Кстати, если будут у кого пожелания оставляйте их в "Feature requests" на сайте проекта (http://sourceforge.net/projects/jaydaemon)
Вот же.. а нельзя что-нибудь попонятнее да на русском? Не всеж грамотеи по англицки.
Да хоть попросится к кому-нибудть на сайт. Иль даж рядом с Тахоргом. И нам, простым руским пилотам, проще просматривать, отслеживать, общаться... :confused:

Elephant
04.09.2006, 19:33
Ну да, и до пенсии выковыривать мемори лик и буфер оверфлоу.


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

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


Родители строят планы насчет будущего их сына.
Отец:
- Окончит с отличием физико-математическую спецшколу, поступит в университет, потом в аспирантуру, серьезно займется наукой, будет выдвигать смелые
гипотезы, ставить численные эксперименты, считать на компьютере, писать программы...
Мать:
- Что, будет программистом?! Ни за что!!! Он закончит музыкальную школу по классу фортепиано, будет выступать на конкурсах, будет развивать новые
направления в музыке, искать свежее звучание, моделировать и обрабатывать треки на компьютере, писать программы...
Отец:
- Что, будет программистом?! Никогда!!!
Сын выходит из своей комнаты.
- Предки, кончайте кластеры забивать! Школу я бросил, из музыкалки выгнали...
Родители:
- И что же ты будешь делать?!
- Буду программистом...

IvanoBulo
05.09.2006, 22:00
Вот же.. а нельзя что-нибудь попонятнее да на русском? Не всеж грамотеи по англицки.
Да хоть попросится к кому-нибудть на сайт. Иль даж рядом с Тахоргом. И нам, простым руским пилотам, проще просматривать, отслеживать, общаться... :confused:
Просто времени итак совсем мало, а так придёться ещё и форумы проглядывать.
Можно также в эту ветку предложения вносить. Всё ж на Сухом бываю почти ежедневно.

IvanoBulo
05.09.2006, 22:09
Наверно я с Луны свалился. Последние мемори лик и буфер оверфлоу в своей жизни ляпал лет в 23-25. Уже лет 5 не делал таких ошибок. А софт писать приходится и такой, что работает без обслуживания и перегрузок годами и сложность этого софта такая, что регулярно плакать хочется.

Непонимаю программистов, боящихся детских ошибок. Уж извените, но специалист потому и называется специалистом, что знает где есть тонкие места, и знает как их обходить
<offtop>Каждому-своё. Я например, хочу концентрироваться на самой программе а не на ньюансах языка. Как то пришлось на С++ где-то с месяц писать так я за этот месяц чуть с ума не сошёл... Я понимаю что всё дело привычки но всё же зачем над собой издеваться? Я знаю несколько человек ушедших с С++ на Java и C# и все они говорят "слава богу!"</offtop>

Zyxel
06.09.2006, 02:34
Я знаю несколько человек ушедших с С++ на Java и C# и все они говорят "слава богу!"</offtop>
Медокс Геймс ? :uh-e: :D

IvanoBulo
06.09.2006, 08:27
Медокс Геймс ? :uh-e: :D
Вообще-то они от Java к C# перешли.

MoHaX
06.09.2006, 14:43
Вообще-то они от Java к C# перешли.
Не видать занчит BoB под Linux как своих ушей =(

Baks
06.09.2006, 16:27
Не видать занчит BoB под Linux как своих ушей =(

Я уже спрашивал... сказали, что не планируется, так как там "затачивать немерено". При чем похоже не планируется ни сервер ни естественно клиент.

http://www.sukhoi.ru/forum/showpost.php?p=781519&postcount=103

IvanoBulo
09.09.2006, 01:40
Провёл огромное количество изменений (http://svn.sourceforge.net/viewvc/jaydaemon?view=rev&revision=89) в код. Основная масса изменений это реализация менеджмента ресурсов. Осталось добавить запрет на взлёт на тех самолётах кол-во которых исчерпалось (но это не много работы). Контроль кол-ва убитых пилотов и исчерпание так называемых "vital" (жизненно важных) ресурсов уже работает. Также исправлено несколько ошибок.

Ближайшим временем займусь определением победившей команды. Собственно все данные для этого есть, но есть делема в том что допустим, одна команда выполнила 90% основного задания но потеряла всех пилотов, а другая выполнила задачу на 10% но потеряла половину пилотов. Кто победил? Мне кажеться что первая, но ведь в других командерах победитем будет признана вторая в подобной ситуации.
Может кто предложит хороший алгоритм?

После этого демон начнёт обрастать "фичами": определение вынужденной посадки, новые команды, генерация XML отчёта о миссии для внешних "тулзений", контроль скорости соединения/пинга т.д...

MoHaX
09.09.2006, 08:08
А мисси для твоей тулзы надо вручную составлять? Или генератор тоже уже имеется?

IvanoBulo
09.09.2006, 09:36
Генератора нету

=HD=Zed
09.09.2006, 10:35
IvanoBulo, как я понимаю будет и эмулятор коопа? :)

IvanoBulo
09.09.2006, 13:05
Со временем возможно и будет. Хотя даже с той функциональностью что есть можно создать очень интересные миссии.

tovarisch_Ko
09.09.2006, 15:18
Ближайшим временем займусь определением победившей команды. Собственно все данные для этого есть, но есть делема в том что допустим, одна команда выполнила 90% основного задания но потеряла всех пилотов, а другая выполнила задачу на 10% но потеряла половину пилотов. Кто победил? Мне кажеться что первая, но ведь в других командерах победитем будет признана вторая в подобной ситуации.
Может кто предложит хороший алгоритм?


Разделить задачи (все чем игрок не управляет сам) и средства (ну в нашем случае это самолеты и пилоты, может еще что).
Определить в условных очках все - процент выполнения задачи (очевидно работа по целям, не важно каким), все свои потери. Определить бонусы и пенальти СТОРОН, т.е. все что не относится к целям - расставить приоритеты.
Потом все это суммировать и очень возможно, что в вышеприведенном случае победят вторые, впрочем это зависит, какие будут расставлены приоритеты.

IvanoBulo
09.09.2006, 19:29
Разделить задачи (все чем игрок не управляет сам) и средства (ну в нашем случае это самолеты и пилоты, может еще что).
Определить в условных очках все - процент выполнения задачи (очевидно работа по целям, не важно каким), все свои потери. Определить бонусы и пенальти СТОРОН, т.е. все что не относится к целям - расставить приоритеты.
Потом все это суммировать и очень возможно, что в вышеприведенном случае победят вторые, впрочем это зависит, какие будут расставлены приоритеты.
У меня пока не предусмотрены пенальти за что либо. Да и чесно говоря даже не знаю за что давать пенальти? Ведь по сути ж война... Любые средства хороши.

ЗЫ: (Шутка) Может пенальти давать за расстрел военнопленных? ;)

Salsero
11.09.2006, 00:58
Для режима "миccия на догфайтном сервере" нужно бы тулзу смастрячить ... всё руки не дойдут...

IvanoBulo
11.09.2006, 11:17
Я уже придумал как организовать эту фичу ("миccия на догфайтном сервере") для моего демона.
Фактически нужно будет создать ресурсы самолётов ограниченные по времени и запретить взлёт на такое-же время. И это будет выглядеть так что все зайдут, возьмут самолёты и например 5 мин не смогут взлететь (будут выстраиваться на полосе) а потом "Старт" и понеслось :)
А после старта ресурс как бы кончиться и взять самолёт будет нельзя.

Salsero
11.09.2006, 16:35
Это тоже можно...
Но ещё надо что-то типа спец- редактора .mis файлов

IvanoBulo
14.09.2006, 01:09
Менеджмент ресурсов полностью закодирован :) Сделал так что если на для аєродрома прописано 10 чел, то именно столько с него и взлетит. Сядет пилот в поле - ресурс аэродрома не пополнится. Нужно будет вернуться где был :) Иными словами, допустим есть 10 пилотов ресурса для конкретного аэродрома, взлетело 10. 11-ый не взлетит пока один из взлетевших ранее не вернёться. Сядут эти 10 на другом аэродроме - проиграют миссию если этот ресурс был "vital".
Также заложил возможность создания задания для перегона самолётов с одного аэродрома на другой. Думаю это добавит интереса в онлайне :)

boRada
14.09.2006, 10:05
Также заложил возможность создания задания для перегона самолётов с одного аэродрома на другой. Думаю это добавит интереса в онлайне :)
Ага. А прикинь, как интересно было бы УГНАТЬ самолет с аэродрома!
:eek: Эт я так все свои идеи разбазарю :expl:

Baks
14.09.2006, 11:26
Ага. А прикинь, как интересно было бы УГНАТЬ самолет с аэродрома!
:eek: Эт я так все свои идеи разбазарю :expl:

Хмм... интересно, как это сделать... типа садишься на вражий филд, затем заходишь красным (только если сел) садишься в красный самолет (его можно сбивать своим, об этом напишет командер) и летишь домой :). Круто :bravo:

За выполнение сразу героя дают.

IvanoBulo
14.09.2006, 23:46
Угон не так уж и просто реализовать так что это будет одна из самых низкоприоритетных фич.

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

Собственно чтобы сделать первую бету осталось добавить команды для получения инфы о состоянии заданий и система определения победителя. Ну и небольной рефакторинг системы обработки команд, потому как старый меня перестал устраивать... Может ещё напишу утилитку чтобы импортировать миссии командера Генадича.

boRada
15.09.2006, 11:29
Хмм... интересно, как это сделать... типа садишься на вражий филд, затем заходишь красным (только если сел) садишься в красный самолет (его можно сбивать своим, об этом напишет командер) и летишь домой :). Круто :bravo:

За выполнение сразу героя дают.
Блин... все бы вам рассказать.
Ну ладно, частично раскрою карты

Ставим синий филд с красными самолетами на красной территории в сторонке, делаем ему маленький радиус, ставим за радиус красную артиллерию по вкусу..

А теперь желающие попробовать рождаются на филде, и под огнем взлетают. Удалось улететь - угнал, не удалось - вечная память.

Ух, скажу я вам прикольно. Разрыв слева, разрыв справа, ща в вилку возьмут, уклоняешься в сторону, проскакиваешь мимо ангара, стекло уже в дырах, кажется что самолет нагружен сотней тонн баласта.. отрыв.. а фиг вам! Мотор чихая поет победную песню.. Бдымс.. какой-то алкач забубенил 88мм в правое колесо... оно лопнуло и кусками покрышки снесо все крыло. По самый хвост...
" ыгу-ыгу ыыыыы" (с)

boRada
15.09.2006, 11:31
Угон не так уж и просто реализовать так что это будет одна из самых низкоприоритетных фич.
Да я ж прикалываюсь. Не надо это делать. Запатентовано! ;)

IvanoBulo
25.09.2006, 11:30
Вообщем для первой беты почти всё готово. Осталось определение победителя. Товарищь Ко был единственным кто предложил свои идеи по этому поводу, поэтому в принципе примерно так и будет. А именно:
* За выполнение главной задачи команде будет даваться 100 очков, второстепенной и скрытой - по 50
* За провал задачи минус столько же
* За потерю единицы "жизненно-важного" ("vital") ресурса -1 очко

Будет предоставлена возможность указывать другие значения в конфигурации миссии.

Ещё вот думаю что если после этого получиться разница в 20(30) очков или результат команды набравшей больше очков будет меньше 10 то считать ничью.

Уточнение, очки за задачи будут даватся именно за выполнения задачи, т.е. если задача была выполнена на 70% или даже на 74%, а надо минимум 75% то очки команде защитаны не будут.

basurman
25.09.2006, 11:54
Вообщем для первой беты почти всё готово. ........
А нельзя ли все эти условия сделать настраиваемыми? Иначе получится, что все прошито в коде, а это нихт гут...

IvanoBulo
25.09.2006, 11:59
А нельзя ли все эти условия сделать настраиваемыми? Иначе получится, что все прошито в коде, а это нихт гут...
Я же написал что:

Будет предоставлена возможность указывать другие значения в конфигурации миссии.
Или нужно что-то ещё?

basurman
25.09.2006, 13:00
Я же написал что:
Или нужно что-то ещё?
Пардоньи, не заметил :(

tovarisch_Ko
25.09.2006, 13:56
Ещё вот думаю что если после этого получиться разница в 20(30) очков или результат команды набравшей больше очков будет меньше 10 то считать ничью.

Уточнение, очки за задачи будут даватся именно за выполнения задачи, т.е. если задача была выполнена на 70% или даже на 74%, а надо минимум 75% то очки команде защитаны не будут.

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

xolod
26.09.2006, 19:41
Блин... все бы вам рассказать.
Ну ладно, частично раскрою карты

Ставим синий филд с красными самолетами на красной территории в сторонке, делаем ему маленький радиус, ставим за радиус красную артиллерию по вкусу..

А теперь желающие попробовать рождаются на филде, и под огнем взлетают. Удалось улететь - угнал, не удалось - вечная память.

Ух, скажу я вам прикольно. Разрыв слева, разрыв справа, ща в вилку возьмут, уклоняешься в сторону, проскакиваешь мимо ангара, стекло уже в дырах, кажется что самолет нагружен сотней тонн баласта.. отрыв.. а фиг вам! Мотор чихая поет победную песню.. Бдымс.. какой-то алкач забубенил 88мм в правое колесо... оно лопнуло и кусками покрышки снесо все крыло. По самый хвост...
" ыгу-ыгу ыыыыы" (с)

есть немецкий сервант ЭШЕЛОН так там есть такая карта.. высадка в нормандии, союзники окружили поляну, но она пока синяя, причем плотно окружили, только на поляне появляешься по тебе с пяток аков и танков начинают лупить, ни разу не смог взлететь.. зато сесть один раз успел..

IvanoBulo
27.09.2006, 22:02
Только что доделал и "залил" систему определения победившего в миссии. Это был последний пункт из работы запланированой мной для первой беты. После тестирования и отладки напишу небольшую доку, сделаю небольшую миссию и соберу бета-релиз.

MoHaX
18.10.2006, 17:20
как прогресс? уже можно юзать в опытной эксплуатации? :) Есть ли интеграция с dcg? идеальным был бы вариант - dcg генерит миссии по своим правилам, а демон следит за самолетами/пилотами/критически важными объектами и если что принудлителньо заставляет dcg перегенерить миссию.
еще добавить
- количественно распределение самолетов по званиям (среди тех что вставит dcg)
- учет этих самых званий пилотов

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

IvanoBulo
18.10.2006, 18:00
В принципе должно быть уже юзабельно, но пока не провели публичного тестирования ничего гарантировать не могу. Но пока, к сожалению :(, для этого не хватает времени.
В сторону DCG ничего не делалось. Мне более знаком FBMission в этом вопросе так что когда буду зтачивать под генератор то это будет скорее всего последний.

MoHaX
18.10.2006, 18:16
В принципе должно быть уже юзабельно, но пока не провели публичного тестирования ничего гарантировать не могу. Но пока, к сожалению :(, для этого не хватает времени.
В сторону DCG ничего не делалось. Мне более знаком FBMission в этом вопросе так что когда буду зтачивать под генератор то это будет скорее всего последний.

FBMission мы как раз сейчас используем. Но насколько я понял он просто двигает фронт по фидам. Превысили разницу в очках наземки (считается по всему фронту) - захватили ближайший филд. Отсюда невозможность организовать "локальное преимущество" когда целенаправлено выносим участок фронта и по итогам миссии фронт там сдвигается.

akirill
29.10.2006, 02:16
В принципе должно быть уже юзабельно, но пока не провели публичного тестирования ничего гарантировать не могу.
Какой прогноз по времени?
Неожиданно к серверу проявил народ интерес. Даже удивительно.

IvanoBulo
29.10.2006, 10:58
На днях исправил несколько багов и в принципе считаю что всё должно работать нормально. Пока что нет статистики, над ней работает Бакс. Если статистика не очень нужна могу собрать пре-альфа версию демона с краткой инструкцией по инсталяции.

Вопрос ко всем заинтересованным. Какие из перечисленных функций наиболее интересны (в скобках трудоёмкость)?
1. (3) Отслеживание игроков с высоким пингом или с низким коннектом
2. (2) Голосование за смену карты
3. (2) Отслеживание игроков уничтожающих своих
4. (4) Интеграция с DCG/FBMission
5. (5) Графический интерфейс (в данный момент только командная строка и конфигурационные файлы)

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

tovarisch_Ko
29.10.2006, 19:50
На днях исправил несколько багов и в принципе считаю что всё должно работать нормально. Пока что нет статистики, над ней работает Бакс. Если статистика не очень нужна могу собрать пре-альфа версию демона с краткой инструкцией по инсталяции.

Вопрос ко всем заинтересованным. Какие из перечисленных функций наиболее интересны (в скобках трудоёмкость)?
1. (3) Отслеживание игроков с высоким пингом или с низким коннектом
2. (2) Голосование за смену карты
3. (2) Отслеживание игроков уничтожающих своих
4. (4) Интеграция с DCG/FBMission
5. (5) Графический интерфейс (в данный момент только командная строка и конфигурационные файлы)

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


3, 1, 2, 4, 5 -совсем не надо

MoHaX
29.10.2006, 22:59
Наибольший интерес представляет поддержка плагинов, как это сделано в OpenCommander -произвольно написанная прога цепляется к "движку" и слушает уже отпарсенные события из разных источников (лог + чат) и реагирует на это как вздумается.
Учитывая то что сейчас весь функционал судя по всему сделан монолитно, видимо это самая трудоемкая задача =(

IvanoBulo
30.10.2006, 11:04
Наибольший интерес представляет поддержка плагинов, как это сделано в OpenCommander -произвольно написанная прога цепляется к "движку" и слушает уже отпарсенные события из разных источников (лог + чат) и реагирует на это как вздумается.
Учитывая то что сейчас весь функционал судя по всему сделан монолитно, видимо это самая трудоемкая задача =(
Я не вижу необходимости в этом. Что может дать такая поддержка? Будет реализован отчёт о миссии в XML формате. Будет возможность определять через параметры выбор из нескольких альтернатив на более высокоуровневые события, как то давать или запрещать взлёт неавторизированым игрокам взлететь, получить тот или иной самолёт. К тому же так как исходники все есть, то что мешает заменить тот или иной код на произвольный?
Иными словами, моя цель создать достаточный уровень гибкости для того чтобы не нужно было разрабатывать ещё какие-то плагины.

MoHaX
30.10.2006, 11:33
Все очень просто: можно будет неограниченно расширять функционал. Добавлять новыее команды чата, по своему их обрабатывать, можно будет писать какие угодно по сложности войнушки, не заморчаиваясь на низкоуровневую коммуникацию (типа соединения с сервером, парсинг событий, преобразование в уникод и пр.) - ведь просто разбирая высокоуровневые события игры можно сконцентрироваться именно на своих задачах. Как пример: сделать начисление званий и раздачу самолетов по званиям. Через XML это не прописать, до тех пор пока Вы не добавите такой функционал в сам демон. А это потеря гибкости и бОльшая нагрузка на Вас. Поскольку писать плагин не заботясь ни о чем и ковырять сам код демона не одно и то же - в первом случае жизнь стороннего разработчика сильно облегчается.

Baks
30.10.2006, 15:14
Дык вроде проблем особых нет... например смотрим сюда
http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/impl/
Тут реализация всех команд и реакций на события...

Например вот команда list-missions
http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/impl/ListMissionsCommandListener.java?revision=97&view=markup

Ничего не мешает написать свою kill-em-all и добавить тут. (думаю чуть пожже добавится возможность конфигурирования этого через конфиг)
http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/impl/Daemon.java?revision=98&view=markup

По идее даже можно замутить некий generic-groovy/python-command который будет исполнять произвольный скрипт на нужном языке...

IvanoBulo
30.10.2006, 15:47
Как пример: сделать начисление званий и раздачу самолетов по званиям
Я лично противник такого потому как в реальности такого не было. Был полк укомплектованный конкретным типом самолётов и это было бы самоубийством если было бы как ты предлагаешь. Ну как ты себе представляешь что ведущий летит на Як-9У а его ведомый на Як-7? Что может сделать такая боевая единица? Только умереть...
Тем не менее будет возможность добавления некого своего делегата который будет извещён что такой-то пилот пробует влететь на таком-то самолёте, а там делай что хочешь, пиши всё что в голову придёт...

MoHaX
30.10.2006, 16:29
Хорошо, добавить обработчик чата действительно просто (но сам факт ковыряния основного кода все равно не добавляет радости). Но я имел ввиду другое. Сразу скажу что по ка в вашем командере не копался, по этому сужу просто по тому что мельком увидел.
Для примера стоит взглянуть на обработчики событий игры,а не чата. Например возьмем TakeoffEventHandler - он парсит строку напрямую из лога и записывает состояние пилота. Задача: если взлет был меньше чем через минуту после смерти то кикнуть игрока. Сейчас это надо реализовывать прям в том же хендлере, дописывая внизу проверки и реакции. Так понаписав кучу обработчиков в разных хендлерах поддержка всего этого превращается в головняк (ведь вы тоже продолжаете развивать свой продукт). Я прошу рассмотреть возможность сделать вот что - все события обработанные вот этими хэндлерами потом экспортировать ввиде событий, на который могут подписывать (на все или только на некоторые) разные внешние модули и обрабатывать их по-своему (естественно им надо будет предоставить некий API для обратной связи, например в нашем примере что б можно было кикать пилота).
Если я не до конца усек (а я полагаю что это так) дизайн демона и добавлять высокоуровневые (не парсеры строчек из лога) обработчики тоже довольно просто тогда поддержку плагинов можно будет реализовать меньшими силами чем я предполагал ранее

MoHaX
30.10.2006, 16:46
Тем не менее будет возможность добавления некого своего делегата который будет извещён что такой-то пилот пробует влететь на таком-то самолёте, а там делай что хочешь, пиши всё что в голову придёт...

Вот про это я и говорю. Не только кто на чем взлетел, а вообще все события игры представить в удобоваримом виде (кто прыгнул, кто где танк уничтожил и т.д.). Сейчас делать что хочешь не получится, потому как можно написать такой функционал который будет конфликтовать с существующим, зашитым в код. Для развязывания рук надо иметь возможность отключать то что уже есть. Самое красивое если демон будет представлять движок, целью которого станет:
1) коммуникация с игрой
2) разбор событий и экспорт их в удобоваримом виде для плагинов
3) разные удобные классы типа pilot, plane, mission, server и т.д. (API в общем)
4) стандартные плагины, которые реализуют виденье авторов о том, какой должен быть функционал демона. Заодно будут служить примером другим плагинописателям

akirill
30.10.2006, 20:59
3, 1, 2, 4, 5 -совсем не надо
+1

IvanoBulo
31.10.2006, 11:57
Запустил демона под линуксом :)
Как не странно но работает всё как-то лучше... (субъективно)

Baks
31.10.2006, 12:06
Запустил демона под линуксом :)
Как не странно но работает всё как-то лучше... (субъективно)

Дык я его так и девелопил :)

IvanoBulo
31.10.2006, 14:00
Тем не менее будет возможность добавления некого своего делегата который будет извещён что такой-то пилот пробует влететь на таком-то самолёте, а там делай что хочешь, пиши всё что в голову придёт...
Будет даже больше. При создании самолёта/юнита некий Observer будет об этом оповещён, а в нём вешайте слушатели на этот самолёт/юнит. Можно будет реагировать на любое из событий, вроде взлетел, сел, уничтожен, ранен а также узнать где и когда и кем

MoHaX
31.10.2006, 14:46
Будет даже больше. При создании самолёта/юнита некий Observer будет об этом оповещён, а в нём вешайте слушатели на этот самолёт/юнит. Можно будет реагировать на любое из событий, вроде взлетел, сел, уничтожен, ранен а также узнать где и когда и кем
Вот за этот приоритет голосую :) По вашей шкале насколько это трудоемко?

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

boRada
31.10.2006, 14:50
Будет даже больше. При создании самолёта/юнита некий Observer будет об этом оповещён, а в нём вешайте слушатели на этот самолёт/юнит. Можно будет реагировать на любое из событий, вроде взлетел, сел, уничтожен, ранен а также узнать где и когда и кем

А если я ему захочу сказать пару словечек? Не предусмотренных в твоем коде?

PS MoHaX первый спросил. Почти тож самое. :)

IvanoBulo
31.10.2006, 15:00
Вот за этот приоритет голосую :) По вашей шкале насколько это трудоемко?
Менее 2-ух часов, т.е. "очень легко". Фактически уже почти зделано.


Как будет решен конфликтов функционала. Гипотетический пример: если у вас уже реализован кик, если не введен корректный пароль, а я хочу написать свой модуль который в случае взлета без пароля будет выводить в течение минуты предупреждения на экран и только потом кикать - на лицо конфликт, т.к. ваш встроенный функционал уже кикнет игрока, пока мой модуль будет только готовиться к этому :)С такими взглядами из любой ситуации можно "высосать" конфликт ;)
Конфликта не будет, потому как Вашему observer'у будет доступен лишь метод "kick(Player player, String reason)". Одним словом "чужой" код будет довольствоваться тем малым что не сможет вызвать конфликта интересов :)

IvanoBulo
31.10.2006, 15:01
А если я ему захочу сказать пару словечек? Не предусмотренных в твоем коде?

PS MoHaX первый спросил. Почти тож самое. :)
будет метод "sendMessage(Player player, String msg)"

MoHaX
31.10.2006, 17:07
С такими взглядами из любой ситуации можно "высосать" конфликт ;)
Конфликта не будет, потому как Вашему observer'у будет доступен лишь метод "kick(Player player, String reason)". Одним словом "чужой" код будет довольствоваться тем малым что не сможет вызвать конфликта интересов :)

И все равно, если вернуться к моему примеру - мой observer не будет кикать сразу, а будет раз в 10 секунд слать sendmessage(), после 6 циклов пошлет kick(), в то же время ваш встроенный функционал кикнет забывичвого игрока сразу же в момент отрыва от земли. Если подумать то таких конфликтов может быть много. Вопрос ИМХО можно решить просто: достаточно ввести конфигурационный файл с параметрами типа bool где весь встроеный функционал будет включаться или отключаться.

IvanoBulo
31.10.2006, 17:31
И все равно, если вернуться к моему примеру - мой observer не будет кикать сразу, а будет раз в 10 секунд слать sendmessage(), после 6 циклов пошлет kick(), в то же время ваш встроенный функционал кикнет забывичвого игрока сразу же в момент отрыва от земли. Если подумать то таких конфликтов может быть много. Вопрос ИМХО можно решить просто: достаточно ввести конфигурационный файл с параметрами типа bool где весь встроеный функционал будет включаться или отключаться.
Никаких асинхронных операций в чужом коде. Это будет в документации. Кто так делать не будет сам себе злой Буратино.
С другой стороны твой встроенный цикл на 10 секунд остановит обработку событий чата и евентлога на это время, так что будешь вдвойне сам себе злой Буратино.
И это вовсе не из-за моих принципов а из-за того что транзакции имеют начало и конец, открывается при получении сообщения из консоли или лога и закрывается после его обработки. Любая твоя асинхронная операция попросту не попадает в транзакцию и ломает всю твою логику. Так что как бы не хотелось придётся мирится с некоторыми ограничениями и пользоваться только тем что разрешено.

IvanoBulo
01.11.2006, 17:05
Как говориться "по просьбам трудящихся", добавил Plug-in API и как пример реализация команды <vote (http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/plugins/impl/VotePlugin.java?view=markup). API как понимаете далеко от финального и будет изменять до выхода первого релиза но для ознакомления вполне подходит

IvanoBulo
02.11.2006, 18:42
Ещё один плагин (http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/plugins/impl/SlowConnectionTrackerPlugin.java?view=markup) для отслеживания и "награждения" штрафными очками игроков с низкими настройками сети.

ЗЫ: "Юбилейный" 100-ый коммит в репозиторий :thx:

akirill
03.11.2006, 11:11
Ещё один плагин
Так когда попробовать то можно будет?

IvanoBulo
03.11.2006, 12:23
На этих выходных хотим протестировать демона в более-менее реальных условиях и думаю на следующей неделе можно будет пробовать (серьёзные баги вроде бы уже отловил). Правда без статистики. Над ней сейчас Бакс активно работает.

IvanoBulo
03.11.2006, 18:09
Отслеживания игроков стреляющих по своим реализован в виде ещё одного плагина (http://jaydaemon.svn.sourceforge.net/viewvc/jaydaemon/daemon/trunk/src/ivanobulo/gametools/il2/daemon/plugins/impl/FriendUnitKillTrackerPlugin.java?view=markup). Так что из списка пятидневной давности нереализованными фичами остались пункты 4 и 5. Займусь наверное интеграцией с DCG, а графический интерфейс не скоро появится...

Baks
05.11.2006, 21:42
Запущен тестовый сервер. il2.degunino.net:21001

В ближайшее время там будет нормальная миссия (сейчас там что под рукой было) и еще чуть дальше начнет появляться стата...

akirill
07.11.2006, 18:17
Запущен тестовый сервер. il2.degunino.net:21001
А остальным попробовать не судьба?

Baks
08.11.2006, 02:59
А остальным попробовать не судьба?

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

Руководства нет. Инсталятора нет. Исходники известно где. Из них все собирается и работает.

Пока все собирано руками и руками же все запущено...

akirill
09.11.2006, 16:53
Пока все собирано руками и руками же все запущено...
А кратенько описать, за что руками браться никак?

Baks
09.11.2006, 17:07
А кратенько описать, за что руками браться никак?

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

akirill
09.11.2006, 17:13
Если получится, сегодня будет, если нет, тогда в выходные...
Если чего, я помогу с созданием документации по установке и эксплуатации для неподготовленных пользователей.

VreVo
09.11.2006, 17:59
Записываюсь в бета(альфа :) )-тестеры

IvanoBulo
09.11.2006, 18:01
Короткий фак основанный на моём ответе г-ну CHIEF с Форемана. Некоторые из ответов потеряют свою актуальность в первом релизе.



Давай по пунктам для тупых:

1.Порядок установки Демона (Сам архив , какие доп.программы нужны?)


Нужна фактически только БД (PostreSQL желательно для простоты установки) и выделенный сервер, всё остальное идёт с ним.


2.Какой файл отвечает за конфигурацию Демона(где пишется путь к серверу и путь к демону)?

В папке cfg лежат daemon.properties, в котором нужно поменять "il2ds.folder" на путь по которому демон будет искать выделенный сервер (запомни что символ '\' в пути к серверу должен дублироватся). Ещё нужно будет поменять GameConsole.PORT и GameConsole.URL - порт и хост для соединения с консолью выделенного сервера.
Файл hibernate.cfg.xml отвечает за конфигурацию БД. Если пользоваться PostgreSQL то нужно поменять только " connection.url", "connection.username" и "connection.password".


3.Как прописать путь до карты(есть-ли маплист) ?

Путь к карте (относительно папки Missions выделенного сервера) указывается в файле конфигурации для миссии (см. simple-mission.conf, [MAIN]->location).


4.Как его запускать ?


Для начала нужно инициализировать БД необходимыми данными. Для этого копируется daemon.bat в init.bat и строка:
java -cp "%CLASSPATH%" ivanobulo.gametools.il2.daemon.impl.Daemon %*
меняется на:
java -cp "%CLASSPATH%" FillDataToDB
и запускается.
Если всё пройдёт без ошибки то и демон запущенный с помощью:
daemon.bat <список конфигураций для миссий через пробел>



5.Есть-ли ini файл для миссии , или что-то подобное где хранятся и настпаиваются параметы миссии(число доступных крафтов, число целей, приоритет целей, какая цель для какой команды(красная/синяя))?
Пока вроде все как запущу ,вопросы еще появятся....



Всё описывается в конфигурационном файле миссии. simple-mission.conf лучший пример.

Фактически минимальным конфигурационным файлом может быть такой:

[MAIN]
;Main mission settings
name=Simple mission
location=Net/dogfight/daemon/simple-mission.mis
teams=Red,Blue
mission_time=1200

;Team descriptions
[Red]
id=1

[Blue]
id=2


По этим пунктам думаю объеснения лишни - названия говорят сами за себя.
Что касается ресурсов. Есть 3 типа ресурсов:

1. playerResources - перечисляет секции (через запятую) для описания ресурсов игроков для всей карты или для какой-либо конкрутной местности. Для кажной секции доступны 3 свойства:
* 1. amount - кол-во
* 2. vital - true или false. Если true то миссия закончиться если этот ресурс будет полностью уничтожен.
* 3. location - формат "x y r". x,y - позиция, r - радиус
2. typeResources - перечисляет секции (через запятую) для описания ресурсов типов. Доступны такие свойства для секций:
* 1. type - тип ресурса. Все типы перечислены и будут искаться в табличке unit_type
* 2. amount - кол-во
* 3. vital - true или false. тоже что и для "playerResources"
* 4. location - тоже что и для "playerResources"
3. concreteTypeResources - почти тоже что и typeResources только вместо "type" у секции есть свойство "gameId" где чётко указывается ИДЕНТИФИКАТОР типа (таблица в базе unit_descriptor, поле game_id). Также есть свойство "weapon" где можно указать название оружия ("U3-MK108", "1sc500" и т.д.)

В секции команды (Blue, Red...) можно также указать свойство "objectiveDescriptors". В нём через запятую указаны секции описывающие задание для данной команды. В каждой такой секции доступны такие свойства:

1. target - само задание в формате записи ИЛа ("<задача (1 уничтожить, 6 защитить)> <тип (0-главная, 1 - дополнительная, 2 - скрытая)> <ждать/не ждать (0/1)> <сколько ждать в мин> <сколько процентов (500 - 50%)> <x> <y> <r>")
2. time_limit - лимит по времени (в минутах)
3. stopMissionIfComplete - (true|yes|no|false) Если "yes" или "true" то миссия закончится если данное задание будет выполнено
4. completePoints - сколько очков получит команда если выполнит это задание
5. failPenaltyPoints - сколько очков вычтут если провалит задание.

Есть ещё свойства но их пока лучше не использовать пока не доделаю поэтому их не описываю.

Baks
09.11.2006, 18:19
Поправочки, которые уже будут в альфа релизе
1. Бд может быть на данный момент любая из
HSQDB (потом скорее всего ее не будет, но для тестов нет необходимости в выделенном сервере)
MySQL
PostgreSQL

4. Для запуска 2 скрипта (для линукса соотвественно .sh)
instdb.bat - инициализация бд (типа инсталятора)
daemon.bat - запуск демона
ну и нужна Java >= 1.5

Baks
09.11.2006, 22:47
Не имею возможности выкладывать на sourceforge, по этому на webfile... будет лежать 14 дней, но думаю раньше мы его все таки в dowloads на sf положим ;)

Изменения, никаких скриптов, запускать daemon.exe со списком conf файлов карт. initdb.exe - инициализация бд (не забыть в hibernate.conf.xml раскоментировать параметер
<property name="hbm2ddl.auto">update</property>

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

http://www.webfile.ru/1185433

... а ну еще драйвер соотвествующего jdbc кинуть в libs (например mysql connector/j 5.0 (http://dev.mysql.com/downloads/connector/j/5.0.html))

akirill
10.11.2006, 00:50
Файл hibernate.cfg.xml отвечает за конфигурацию БД. Если пользоваться PostgreSQL то нужно поменять только " connection.url", "connection.username" и "connection.password".
А как будет выглядеть этот файл для работы с MySQL?

Baks
10.11.2006, 15:06
А как будет выглядеть этот файл для работы с MySQL?

Он там как раз для MySQL идет в поставке.


<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost/jaydaemon?zeroDateTimeBehavior=convertToNull&amp;characterEncoding=utf-8</property>
<property name="connection.username">user</property>
<property name="connection.password">password</property>


Синим - имя схемы в MySQL (базы)
Красным - хост, обычно localhost
user и passwrod - соотвественно логин пароль в бд

Драйвер - это jar из архива, скачанный с mysql.org

Но на выходных сделаю раздельные пакеты:
1. Демон
2. Библиотеки
3. Настройки для
- MySQL
- HSQLDB
- PostgreSQL

akirill
10.11.2006, 16:55
Он там как раз для MySQL идет в поставке.
Я по svn забирал, там про постгрес речь. Мне надо под линуха.
Попробую сейчас руками переписать.
Есть ли, либо намечаются, различия в функционале версий MySQL и PostgeSQL? Постгрес то я поставил, но неохота на одной машине держать и мускуль и постгрес.

Baks
10.11.2006, 17:09
Я по svn забирал, там про постгрес речь. Мне надо под линуха.
Попробую сейчас руками переписать.
Есть ли, либо намечаются, различия в функционале версий MySQL и PostgeSQL? Постгрес то я поставил, но неохота на одной машине держать и мускуль и постгрес.

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

Для линуха все просто: в переменная CLASSPATH должна содержать cfg, data, patch/*.jar, modules/*.jar, libs/*.jar через ':' (звездочки быть не должно, нужно перечисления всего что есть, если есть perl/python, то может проще даже на нем написать, чем шел мучить) . Просто почему-то подумал, что нужна именно win версия (там к стати в svn линуховый скрипт есть, так что можно и им пускать, только вот там раскладка jar-ов другая)

akirill
10.11.2006, 19:58
Чего то не прет.
Пока добился только "Exception in thread "main" java.lang.NoClassDefFoundError: FillDataToDB"

IvanoBulo
10.11.2006, 22:44
Чего то не прет.
Пока добился только "Exception in thread "main" java.lang.NoClassDefFoundError: FillDataToDB"
Скачай с webfile'a, скопируй и запусти daemon.sh

akirill
11.11.2006, 10:23
Скачай с webfile'a, скопируй и запусти daemon.sh

Неа, не фурычит

Baks
11.11.2006, 12:40
Вот такой daemon.sh должен работать

#!/bin/sh

CLASSPATH="cfg:data"
for m in "patches modules libs"; do
for i in `find $m`; do
CLASSPATH="$CLASSPATH:$i"
done
done
echo $CLASSPATH

java -cp $CLASSPATH ivanobulo.gametools.il2.daemon.impl.Daemon $*

akirill
11.11.2006, 13:28
Блин, мистика, вчера ругался, сегодня все заново сделал - почти работает.

На текущий момент:

1. Не находил eventlog. Нашел, как он должен называться, создал руками eventlog.lst. У меня такого файла нет ни на сервере, ни в игре. Возможно, этот лог отключаем, я просто не помню за давностью лет.

2. Пока остановился на: [main] ERROR ivanobulo.gametools.il2.daemon.impl.Daemon - org.hibernate.HibernateException: hibernate.cfg.xml not found

Baks
11.11.2006, 14:23
Блин, мистика, вчера ругался, сегодня все заново сделал - почти работает.

На текущий момент:

1. Не находил eventlog. Нашел, как он должен называться, создал руками eventlog.lst. У меня такого файла нет ни на сервере, ни в игре. Возможно, этот лог отключаем, я просто не помню за давностью лет.

2. Пока остановился на: [main] ERROR ivanobulo.gametools.il2.daemon.impl.Daemon - org.hibernate.HibernateException: hibernate.cfg.xml not found

1. Попробуй конифг confs.ini приаттаченый
2. положи daemon.zip под именем daemon.jar в modules и hibernate.cfg.xml.template переименуй в hibernate.cfg.xml

ну и соотвественно, демон не стартует сервер il2, сначала надо сервер запустить руками.

akirill
11.11.2006, 16:05
Ура, завелось.


1. Попробуй конифг confs.ini приаттаченый

Внес в свой недостающую секцию


2. положи daemon.zip под именем daemon.jar в modules
Не понял этого шага. Там есть соответствующий файл, байт в байт


и hibernate.cfg.xml.template переименуй в hibernate.cfg.xml
Тут я откровенно сослил и ступил. После того, как переделывал утром, забыл переименовать файл, внести правильные значения для доступа к базе (постгрес), порта консоли сервера. Не захотел коннектиться по localhost, в явном виде указал ИП сервера. Почему так, не захотел разбираться.


ну и соотвественно, демон не стартует сервер il2, сначала надо сервер запустить руками.
Это понятно.

Baks
11.11.2006, 17:00
Не понял этого шага. Там есть соответствующий файл, байт в байт

Форум не захотел jar цеплять :). Там небольшой апдейт.

Ну теперь надо ему в командную строку конфиг миссии указать и оно должно заработать :)

типа $ daemon.sh my-super-mission.conf

akirill
11.11.2006, 19:27
Ну теперь надо ему в командную строку конфиг миссии указать и оно должно заработать :)
Уф, тяжело идет. Что то у меня миссия никак не вытанцовывается. Скинь свою миссию вместе с конфигом, если не трудно. Путем сопоставления буду изучать.

IvanoBulo
12.11.2006, 09:54
Уф, тяжело идет. Что то у меня миссия никак не вытанцовывается. Скинь свою миссию вместе с конфигом, если не трудно. Путем сопоставления буду изучать.
*.mis файлы положи в <IL2 DS>/Missions/Net/dogfight/daemon/
Конфиг-файлы в командную строку.

VreVo
12.12.2006, 03:05
Ну вот я запустил сервер под линухом, теперь в эту ветку переехал :)
Пока не очень понятно, за что вообще хвататься и что качать, чтобы заработал JayDaemon под линуксом и с MySQL ?
И еще так и не понял, заработал демон у akirill-а или нет ?

akirill
12.12.2006, 15:23
И еще так и не понял, заработал демон у akirill-а или нет ?
Заработал.

VreVo
15.12.2006, 14:16
У меня вроде тоже заработал с тестовой миссией из архива Иванобуло.
Кирилл, я подтверждаю проблему с localhost. Мне тоже пришлось daemon.properties менять на айпи адрес.
Вторая проблемка - неработающий instdb.exe, я сделал init.sh из daemon.sh заменив строчку на
java -cp $CLASSPATH FillDataToDB $*
и такой скриптик вроде сработал. Базу jaydaemon и 17 табличек он создал.
instdb.exe пишет мне вот это

./instdb.exe
err:imagelist:ImageList_ReplaceIcon no color!
err:imagelist:ImageList_ReplaceIcon no color!
err:imagelist:ImageList_ReplaceIcon no color!
err:imagelist:ImageList_ReplaceIcon no color!
Launch4j: This application requires a Java Runtime Environment 1.5.0
[goudakov@angara jaydaemon-alpha1]$ Considering: xdg-open
argv[1]: http://java.com/download
Considering: firefox
argv[1]: http://java.com/download

Ну ладно, а теперь вопрос.
Мне нужно следующее - на тренировочном сервере должны быть две карты, которые бы перегружались по команде <vote
еще хочется чтобы работал <gunstat
больше ничего пока не надо
как сделать такую миссию ?
Мне что-то пока не понятно

VreVo
17.12.2006, 16:35
<gunstat работает, но вопрос "как загрузить список карт и переключаться между ними" остается в силе ...