AviaSkins.Forums

AviaSkins.Forums (http://forum.aviaskins.com/index.php)
-   "МОДный" ON-LINE. (http://forum.aviaskins.com/forumdisplay.php?f=40)
-   -   Вопрос к мододелам и предложение. (http://forum.aviaskins.com/showthread.php?t=1022)

LePage 05.11.2009 15:18

Цитата:

Сообщение от Karabas-Barabas (Сообщение 36350)
Объяснт пож. это зачем?
Файл миссии читается один раз и более не используется.
Все же данны, по определению храняться в базе, ну или её имитации.

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

Цитата:

Вот тут надо более конкретно ибо у статических объектов (домиков) одни параметры, у статической техники другие и т.д. см в большом редакторе разделение объектов. У движущийся свои.
А так же нужен запрос состояния-текущих координат движущихся объектов. И еще раз - генератор-командер-виртуальный_генерал знает о существовании всех своих объектов и их маршрутах, он не знает только о мгновенных координатах движущихся.
это для статиков и их координаты известны и постоянны. а использовать можно как угодно. Например подъем аэростатов )), наведение переправы, визуальное пополнение цели (склада) - был один бензовоз, стало восемь, или пришла колонна снабжения к цели появляются зенитки и т.д. синтаксис повторяю - общий. (можно и мосты со временем восстанавливать:))

блин, да все можно!!!

О! чтоб было понятно, я алгоритм ила представляю так - считал файл мис. отпарсил - занес маршруты и объекты в массив. И потом. по тикам времени, перемещает их в те координаты, что прописаны в массиве, а если их сменить? поедет по другой дороге :). А по статикам - как подлетаешь к объекту, он лезет в массив и показывает тебе его. сначала первый - из мис, а второй раз подлетишь, объект сменили, уже покажет второй. Должно быть так, как то...

Sexton 05.11.2009 15:50

Цитата:

Сообщение от LePage (Сообщение 36361)
О! чтоб было понятно, я алгоритм ила представляю так - считал файл мис. отпарсил - занес маршруты и объекты в массив. И потом. по тикам времени, перемещает их в те координаты, что прописаны в массиве, а если их сменить? поедет по другой дороге :)...

На данный момент в иле маршрут создается при создании объекта, функции замены маршрута я не нашел. Можно тупо текущий объект удалять, а на его месте создавать такой же, но с другим маршрутом.
Как-то так.

ZloyPetrushkO 05.11.2009 16:04

Цитата:

Сообщение от LePage (Сообщение 36301)
Да и ТЗ легче составить. Типа: есть вот это и вот это, надо еще это и это.

Имхуется:
надо впихнуть в него 3 команды.
1.1 set X_obj_name x y v add_param - возможность переопределения свойств объекта заданного в файле *.mis
1.2 define X_Static_obj_name1 as X_Static_obj_name2 - возможность переопределения объекта (статического) заданного в файле *.mis
1.3 create X_obj_name x y add_param - возможность создания объекта не заданного в файле *.mis

, где add_param может быть все, что угодно от построения до меткости зен. в зависимости от объекта.

2. ну и соответственно расширить свойства подвижных объектов
2.1 ввести понятие построения
2.2 ......
2.3 ......

Таким путем можно и ботам маршрут менять, кстати. А то полетят под конец карты бомбить уже ставший своим филд или промзону :)


что то типа ТЗ я уже пытался сформулировать... вот что получилось


1) часть(илоносная)
а) перестроение в различных условиях
- под огнем противника(при встрече с ним)
- под атакой авиации
- перестроение на марше в колонну
б)выбор приоритетной цели
в) подавление по ЛА(уже есть)
г) проверку на землю под ними. чтобы по морю не ездили(для кораблей-суше)

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


а вот как и что, каким команды будут в АПИ- пока неясно...но идея правильная что нужно решать уже какие команды ОБЯЗАТЕЛЬНО нужны и искать места в коде..

с командой 1.3 согласен на 100%-нужна такая команда. так и запишем. а вот с переопределением...ну ето очевидно, что что то надо переопределить. может просто добавлять новые точки к маршруту?
и команда будет типа
add (unit_name) X Y Z V(скорость)?

----
а теперь касательно илоносной части( ет у мя в списке 1 пунктами идет
поскольку всякие там построения, остановки и т.п. ето уже задано в алгоритмах кода, ИМХО, команды на ето с командера НЕ НУЖНЫ, ибо тут хотябы путь бы сделать, не то что построение...
и предложение у меня такое- все ети перестроения можно спокойно подвязать к скорости например(командеру все равно нужно задавать скорость)

работать ето будет таким алгоритмом:

если скорость больше 20 км\ч то юниты при атаке останавливаться не будут(типа идут на прорыв).если меньше-они остановяться и будут стрелять стоя.
аналогично перестроение: если скорость в интервале ( 15-20) км\ч то значит они едут на марше, строяться колонной.
если скорость менее 15 км\ч то при втсрече с врагом они перестраиваються в линию. если скорость больше 20 км\ч значит они в прорыве и едут например линией(ромбом)
аналогично с остановками под атакой авиации
вот такие вот дела...сразу команд нужно будет меньше делать :)
как думаешь на счет такого способа задания свойвств? имхо. так будет лучше...кроме того, если ето запрограммить то и в оффлайне не нужен будет командер, достаточно будет в полном редакторе задавать скорости :)

Цитата:

Сообщение от Sexton (Сообщение 36367)
На данный момент в иле маршрут создается при создании объекта, функции замены маршрута я не нашел. Можно тупо текущий объект удалять, а на его месте создавать такой же, но с другим маршрутом.
Как-то так.

тоже идея, нужно запомнить. но думаю перезагрузка объектов даст фризы...но если ничего не останеться-то лучше так :)


Цитата:

Сообщение от LePage (Сообщение 36361)
О! чтоб было понятно, я алгоритм ила представляю так - считал файл мис. отпарсил - занес маршруты и объекты в массив. И потом. по тикам времени, перемещает их в те координаты, что прописаны в массиве, а если их сменить? поедет по другой дороге :). А по статикам - как подлетаешь к объекту, он лезет в массив и показывает тебе его. сначала первый - из мис, а второй раз подлетишь, объект сменили, уже покажет второй. Должно быть так, как то...

вроде бы так...только не факт что мы ето найдем...работа сложная...

JGr124_boRada 05.11.2009 17:04

Я понял так алгоритм ила
Читаем из файла миссии и создаем объект и привязанный к нему лист с маршрутом. Он читается не в виде точек а в виде отрезков - segments (Так же и я сделал на ГФ маршруты) . Движение идет по сегментам ( 200м) которые еще делятся для обсчитывания. Потом с производной от скорости и идет смена координат. В этом и проблема с синхорнизацией видимо, так как временной переменной нету. Принцип трека - с середины его смотреть не получится... У паравозов сегмент больше, потому заметнее рассинхронизация. У кораблей еще больше.
Один из способов - менять на лету этот массив с сегментами. Но боюсь будут проблемы, так как надо отслеживать какой из сегментов сейчас в работе у объекта. Хотя это чисто техническая проблема.

LePage 05.11.2009 18:12

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

[1:41:35 AM] 3do/Buildings/Airdrome/Hangar1/live.sim destroyed by 1_Chief2 at 111464.89 113493.55
[1:43:55 AM] 63_Static destroyed by 1_Chief0 at 111458.82 113515.07
[1:44:05 AM] 3do/Buildings/Airdrome/Hangar1/live.sim destroyed by 1_Chief0 at 111310.33 113452.14
[1:44:16 AM] 59_Static destroyed by 1_Chief0 at 111302.75 113474.61
[1:44:18 AM] 3do/Buildings/Airdrome/Hangar1/live.sim destroyed by 1_Chief2 at 111348.984 113462.484
[1:45:35 AM] 3do/Buildings/Airdrome/Hangar1/live.sim destroyed by 1_Chief2 at 111194.45 113421.08
[1:45:46 AM] 57_Static destroyed by 1_Chief2 at 111226.83 113454.18
[1:45:48 AM] 55_Static destroyed by 1_Chief0 at 111148.6 113434.14
[1:45:50 AM] 68_Static destroyed by 103_Static at 110905.82 113488.09
[1:45:50 AM] 1_Chief0 destroyed by 15_Chief1 at 111072.94 113290.49

особенно последняя строка.

надо тока найти. и как вариант, ввести команду для юнита, на выдачу в АПИ своих координат. Типа определить местоположение .

ZloyPetrushkO 05.11.2009 22:20

Цитата:

Сообщение от LePage (Сообщение 36388)
надо тока найти.

это ключевое...я ща попутно ковыряюсь в моде на остановку танков...

Sexton 05.11.2009 22:21

Цитата:

Сообщение от JGr124_boRada (Сообщение 35139)
П
2. Проблема с поездами
МГ сделал ЖД с одной веткой и без стрелок. В итоге если поезда идут в встречном направлении, то они сталкиваются и ессно повреждаются.
нельзя ли исключить повреждение при столкновении вагон с вагоном? Ведь тот же поезд, если изменить ему направление, проходит сам через себя, вагон за вагоном, безболезненно. Добавить только чтоб с любым вагоном так было, а не только со своим.

Тебе нужен Wagon.java Ищи там msgCollisionRequest, как я понял эта функция отвечает за возможность столкновения вагона с другим объектом.
Там есть строки
Код:

00342        if(actor instanceof BridgeSegment)
00343        {
00344            aflag[0] = false;
00345            return;
00346        } else
00347        {
00348            return;
00349        }

Короче, тебе нужна 342 строка этого файла.
Меняешь ее на
Код:

if(actor instanceof BridgeSegment) && (actor instanceof Wagon)
По идее вагон с вагоном больше не столкнется, локомотив (как я понял) тоже считается вагоном.

По аналогии, наверное, и с короблями

Sexton 05.11.2009 22:32

По кораблям.
Класс BigshipGeneric.java
Тоже функция msgCollisionRequest
Код:

01231        if(actor instanceof BridgeSegment)
01232        {
01233            if(dying != 0)
01234                aflag[0] = false;
01235            return;
01236        }

после 1236 строки добавляешь

Код:

else
{
if(actor instanceof BigShipGeneric) && (actor instanceof ShipGeneric)
{
aflag[0] = false;
return;
}
}

ТОже проделываешь в классе ShipGeneric

JGr124_boRada 05.11.2009 22:42

Ок, спасибо.

JGr124_boRada 05.11.2009 22:46

Цитата:

Сообщение от ZloyPetrushkO (Сообщение 36420)
это ключевое...я ща попутно ковыряюсь в моде на остановку танков...

По моему берется последнее значение переменной позишен, там есть какой-то шаг обсчета. Шаг зависит от скорости.

Sexton 05.11.2009 23:07

F что касается создания АПИ для внешнего "генерала", то за основу можно взять код devicelink - там уже реализован код обмена данными с внешней программой. Придумать формат сообщений, которыми будут обмениваться ил и "генерал".
Ну и самое сложное - дистрибьюция этих сообщений по иловским объектам и организация их реакции на сообщения. D Иле уже есть класс Message - можно попытаться его наследовать и вклиниться в существующюю цепочку передачи сообщений.

Sexton 06.11.2009 09:41

Нашел место в коде, где колонна упирается в разрушенный мост и встает намертво.
Класс ChiefGround.java
Функция moveChiefPacked

Код:

01046            if(cantEnterIntoSegmentPacked_checkComplete(chiefSeg + 1))
01047            {
01048                chiefAlong = roadsegment.length2D;
01049                d = 0.0D;
01050                break;

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

Sexton 06.11.2009 09:48

Кстати есть класс ChiefManager, в нем нет кода, но он создается в классе World%)

Сам ОМ велел реализовать в нем управление колоннами :)

LePage 07.11.2009 01:43

Цитата:

Сообщение от Sexton (Сообщение 36432)
F что касается создания АПИ для внешнего "генерала", то за основу можно взять код devicelink - там уже реализован код обмена данными с внешней программой. Придумать формат сообщений, которыми будут обмениваться ил и "генерал".
Ну и самое сложное - дистрибьюция этих сообщений по иловским объектам и организация их реакции на сообщения. D Иле уже есть класс Message - можно попытаться его наследовать и вклиниться в существующюю цепочку передачи сообщений.


devicelink, конечно, хорошо...
Но одолевают сомнения. В плане «безопасности». Мод то предполагается серверный. А использование такой фичи, как связь с внешним управлением, на клиенте, чисто теоретически может дать ему некоторые дополнительные возможности, в плане изменения геймплея «лично для себя».

может через консоль - по старинке, или еще одну завести?

з/ы/ Кроме того, devicelink, кажется UDP? Не исключена вероятность что генерал отдаст команду, а сервер пропустит ее мимо ушей. Или наоборот.
Лучше будет отдельный потоковый сокет.

ZloyPetrushkO 07.11.2009 01:52

Цитата:

Сообщение от LePage (Сообщение 36556)
devicelink, конечно, хорошо...
Но одолевают сомнения. В плане «безопасности». Мод то предполагается серверный. А использование такой фичи, как связь с внешним управлением, на клиенте, чисто теоретически может дать ему некоторые дополнительные возможности, в плане изменения геймплея «лично для себя».

может через консоль - по старинке, или еще одну завести?

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

LePage 07.11.2009 01:58

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

Sexton 07.11.2009 11:52

Цитата:

Сообщение от LePage (Сообщение 36556)
devicelink, конечно, хорошо...
Но одолевают сомнения. В плане «безопасности». Мод то предполагается серверный. А использование такой фичи, как связь с внешним управлением, на клиенте, чисто теоретически может дать ему некоторые дополнительные возможности, в плане изменения геймплея «лично для себя».

может через консоль - по старинке, или еще одну завести?

з/ы/ Кроме того, devicelink, кажется UDP? Не исключена вероятность что генерал отдаст команду, а сервер пропустит ее мимо ушей. Или наоборот.
Лучше будет отдельный потоковый сокет.

Шанс, что сервер пропустить команду мимо ушей - никакого.
В плане безопасности - в devicelink'е уже есть код, который отключает его при сетевой игре. Почему бы его не задействовать?

ZloyPetrushkO 07.11.2009 13:26

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


а вообще нашел в классе например ShipGeneric метод
private void LoadPath(SectFile sectfile, String s) {
ну он есть почти везде. очевидно, что он и прогружает путь(разбивает на сегменты и т.п.). найти бы что его вызывает( в каком месте) и куда передаються ети данные. думаю ето то что нужно...копаю в общем дальше тут :)

Sexton 07.11.2009 14:03

Сделай doxygen'ом документацию с диаграммами dot с CALL_GRAPH, CALLER_GRAPH - будет тебе красивые диаграммы кто кого вызывает (правда прога работать будет полдня:) )

LoadPath есть только в ShipGeneric и Ship, вызывается конструктором (это я про оригинальный ил)

ДА! Не забудь в доки еще исходники добавить - разбираться будет куда проще.

Sexton 07.11.2009 15:31

Вложений: 1
Цитата:

Сообщение от JGr124_boRada (Сообщение 35139)
1. Проблема с ботами после посадки
Боты после посадки заруливают на плошадки и бросают самолеты и уходят по бабам, а самолеты стоят там бесконечно. ...

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

Если что - могу сказать где что править


Текущее время: 04:08. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot