![]() |
Цитата:
Цитата:
блин, да все можно!!! О! чтоб было понятно, я алгоритм ила представляю так - считал файл мис. отпарсил - занес маршруты и объекты в массив. И потом. по тикам времени, перемещает их в те координаты, что прописаны в массиве, а если их сменить? поедет по другой дороге :). А по статикам - как подлетаешь к объекту, он лезет в массив и показывает тебе его. сначала первый - из мис, а второй раз подлетишь, объект сменили, уже покажет второй. Должно быть так, как то... |
Цитата:
Как-то так. |
Цитата:
что то типа ТЗ я уже пытался сформулировать... вот что получилось 1) часть(илоносная) а) перестроение в различных условиях - под огнем противника(при встрече с ним) - под атакой авиации - перестроение на марше в колонну б)выбор приоритетной цели в) подавление по ЛА(уже есть) г) проверку на землю под ними. чтобы по морю не ездили(для кораблей-суше) 2) внешняя(интерфейс обмена между илом и внешней средой) для етого нужен - интерфейс обмена(преположительно-консоль) - интерфейс ввода(?) - технология динамической подгрузки пути для юнитов наземных - технология обмена между юзером и сервером обновленного маршрута а вот как и что, каким команды будут в АПИ- пока неясно...но идея правильная что нужно решать уже какие команды ОБЯЗАТЕЛЬНО нужны и искать места в коде.. с командой 1.3 согласен на 100%-нужна такая команда. так и запишем. а вот с переопределением...ну ето очевидно, что что то надо переопределить. может просто добавлять новые точки к маршруту? и команда будет типа add (unit_name) X Y Z V(скорость)? ---- а теперь касательно илоносной части( ет у мя в списке 1 пунктами идет поскольку всякие там построения, остановки и т.п. ето уже задано в алгоритмах кода, ИМХО, команды на ето с командера НЕ НУЖНЫ, ибо тут хотябы путь бы сделать, не то что построение... и предложение у меня такое- все ети перестроения можно спокойно подвязать к скорости например(командеру все равно нужно задавать скорость) работать ето будет таким алгоритмом: если скорость больше 20 км\ч то юниты при атаке останавливаться не будут(типа идут на прорыв).если меньше-они остановяться и будут стрелять стоя. аналогично перестроение: если скорость в интервале ( 15-20) км\ч то значит они едут на марше, строяться колонной. если скорость менее 15 км\ч то при втсрече с врагом они перестраиваються в линию. если скорость больше 20 км\ч значит они в прорыве и едут например линией(ромбом) аналогично с остановками под атакой авиации вот такие вот дела...сразу команд нужно будет меньше делать :) как думаешь на счет такого способа задания свойвств? имхо. так будет лучше...кроме того, если ето запрограммить то и в оффлайне не нужен будет командер, достаточно будет в полном редакторе задавать скорости :) Цитата:
Цитата:
|
Я понял так алгоритм ила
Читаем из файла миссии и создаем объект и привязанный к нему лист с маршрутом. Он читается не в виде точек а в виде отрезков - segments (Так же и я сделал на ГФ маршруты) . Движение идет по сегментам ( 200м) которые еще делятся для обсчитывания. Потом с производной от скорости и идет смена координат. В этом и проблема с синхорнизацией видимо, так как временной переменной нету. Принцип трека - с середины его смотреть не получится... У паравозов сегмент больше, потому заметнее рассинхронизация. У кораблей еще больше. Один из способов - менять на лету этот массив с сегментами. Но боюсь будут проблемы, так как надо отслеживать какой из сегментов сейчас в работе у объекта. Хотя это чисто техническая проблема. |
ну координаты юнитов на данный момент должны быть где-то, иначе откуда бы это взялось - фрагмент эвентлога:
[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 особенно последняя строка. надо тока найти. и как вариант, ввести команду для юнита, на выдачу в АПИ своих координат. Типа определить местоположение . |
Цитата:
|
Цитата:
Там есть строки Код:
00342 if(actor instanceof BridgeSegment) Меняешь ее на Код:
if(actor instanceof BridgeSegment) && (actor instanceof Wagon) По аналогии, наверное, и с короблями |
По кораблям.
Класс BigshipGeneric.java Тоже функция msgCollisionRequest Код:
01231 if(actor instanceof BridgeSegment) Код:
else |
Ок, спасибо.
|
Цитата:
|
F что касается создания АПИ для внешнего "генерала", то за основу можно взять код devicelink - там уже реализован код обмена данными с внешней программой. Придумать формат сообщений, которыми будут обмениваться ил и "генерал".
Ну и самое сложное - дистрибьюция этих сообщений по иловским объектам и организация их реакции на сообщения. D Иле уже есть класс Message - можно попытаться его наследовать и вклиниться в существующюю цепочку передачи сообщений. |
Нашел место в коде, где колонна упирается в разрушенный мост и встает намертво.
Класс ChiefGround.java Функция moveChiefPacked Код:
01046 if(cantEnterIntoSegmentPacked_checkComplete(chiefSeg + 1)) |
Кстати есть класс ChiefManager, в нем нет кода, но он создается в классе World%)
Сам ОМ велел реализовать в нем управление колоннами :) |
Цитата:
devicelink, конечно, хорошо... Но одолевают сомнения. В плане «безопасности». Мод то предполагается серверный. А использование такой фичи, как связь с внешним управлением, на клиенте, чисто теоретически может дать ему некоторые дополнительные возможности, в плане изменения геймплея «лично для себя». может через консоль - по старинке, или еще одну завести? з/ы/ Кроме того, devicelink, кажется UDP? Не исключена вероятность что генерал отдаст команду, а сервер пропустит ее мимо ушей. Или наоборот. Лучше будет отдельный потоковый сокет. |
Цитата:
я то пока сорри немного не тем занимаюсь, атмосферный мод дотачиваю... а что такое devicelink если не секрет? |
Насколько помню - это интерфейс для связи с внешними устройствами - на его базе делают устройства, типа кокпитов, со всякими, почти настоящими приборами - в общем тренажеры. Ну и используют проги, типа UDPGraf, триммер и подобные.
|
Цитата:
В плане безопасности - в devicelink'е уже есть код, который отключает его при сетевой игре. Почему бы его не задействовать? |
такс. ковыряю мод от Зути.
имхо, надо делать на его основе сразу же. там есть какая то синхрониазация. так что мб путь даже при изменении будет синхронизироваться? положение ведь синхронизируеться и т.п. а вообще нашел в классе например ShipGeneric метод private void LoadPath(SectFile sectfile, String s) { ну он есть почти везде. очевидно, что он и прогружает путь(разбивает на сегменты и т.п.). найти бы что его вызывает( в каком месте) и куда передаються ети данные. думаю ето то что нужно...копаю в общем дальше тут :) |
Сделай doxygen'ом документацию с диаграммами dot с CALL_GRAPH, CALLER_GRAPH - будет тебе красивые диаграммы кто кого вызывает (правда прога работать будет полдня:) )
LoadPath есть только в ShipGeneric и Ship, вызывается конструктором (это я про оригинальный ил) ДА! Не забудь в доки еще исходники добавить - разбираться будет куда проще. |
Вложений: 1
Цитата:
Тестировалось только в оффлайне. Я не знаю, что нужно чтоб оно заработало в онлайне - возможно ничего больше и не надо = просто достаточно наличия этого мода у юзера. Если что - могу сказать где что править |
Текущее время: 04:08. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot