|
![]() |
#101 | ||
Местный
Регистрация: 15.06.2009
Сообщений: 114
|
![]() Цитата:
Цитата:
![]() блин, да все можно!!! О! чтоб было понятно, я алгоритм ила представляю так - считал файл мис. отпарсил - занес маршруты и объекты в массив. И потом. по тикам времени, перемещает их в те координаты, что прописаны в массиве, а если их сменить? поедет по другой дороге ![]() Последний раз редактировалось LePage; 05.11.2009 в 15:41. |
||
![]() |
![]() |
![]() |
#102 | |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]() Цитата:
Как-то так. |
|
![]() |
![]() |
![]() |
#103 | |||
Местный
Регистрация: 31.05.2008
Сообщений: 1,159
|
![]() Цитата:
что то типа ТЗ я уже пытался сформулировать... вот что получилось 1) часть(илоносная) а) перестроение в различных условиях - под огнем противника(при встрече с ним) - под атакой авиации - перестроение на марше в колонну б)выбор приоритетной цели в) подавление по ЛА(уже есть) г) проверку на землю под ними. чтобы по морю не ездили(для кораблей-суше) 2) внешняя(интерфейс обмена между илом и внешней средой) для етого нужен - интерфейс обмена(преположительно-консоль) - интерфейс ввода(?) - технология динамической подгрузки пути для юнитов наземных - технология обмена между юзером и сервером обновленного маршрута а вот как и что, каким команды будут в АПИ- пока неясно...но идея правильная что нужно решать уже какие команды ОБЯЗАТЕЛЬНО нужны и искать места в коде.. с командой 1.3 согласен на 100%-нужна такая команда. так и запишем. а вот с переопределением...ну ето очевидно, что что то надо переопределить. может просто добавлять новые точки к маршруту? и команда будет типа add (unit_name) X Y Z V(скорость)? ---- а теперь касательно илоносной части( ет у мя в списке 1 пунктами идет поскольку всякие там построения, остановки и т.п. ето уже задано в алгоритмах кода, ИМХО, команды на ето с командера НЕ НУЖНЫ, ибо тут хотябы путь бы сделать, не то что построение... и предложение у меня такое- все ети перестроения можно спокойно подвязать к скорости например(командеру все равно нужно задавать скорость) работать ето будет таким алгоритмом: если скорость больше 20 км\ч то юниты при атаке останавливаться не будут(типа идут на прорыв).если меньше-они остановяться и будут стрелять стоя. аналогично перестроение: если скорость в интервале ( 15-20) км\ч то значит они едут на марше, строяться колонной. если скорость менее 15 км\ч то при втсрече с врагом они перестраиваються в линию. если скорость больше 20 км\ч значит они в прорыве и едут например линией(ромбом) аналогично с остановками под атакой авиации вот такие вот дела...сразу команд нужно будет меньше делать ![]() как думаешь на счет такого способа задания свойвств? имхо. так будет лучше...кроме того, если ето запрограммить то и в оффлайне не нужен будет командер, достаточно будет в полном редакторе задавать скорости ![]() Цитата:
![]() Цитата:
Последний раз редактировалось ZloyPetrushkO; 05.11.2009 в 16:07. |
|||
![]() |
![]() |
![]() |
#104 |
Местный
Регистрация: 19.02.2009
Сообщений: 450
|
![]()
Я понял так алгоритм ила
Читаем из файла миссии и создаем объект и привязанный к нему лист с маршрутом. Он читается не в виде точек а в виде отрезков - segments (Так же и я сделал на ГФ маршруты) . Движение идет по сегментам ( 200м) которые еще делятся для обсчитывания. Потом с производной от скорости и идет смена координат. В этом и проблема с синхорнизацией видимо, так как временной переменной нету. Принцип трека - с середины его смотреть не получится... У паравозов сегмент больше, потому заметнее рассинхронизация. У кораблей еще больше. Один из способов - менять на лету этот массив с сегментами. Но боюсь будут проблемы, так как надо отслеживать какой из сегментов сейчас в работе у объекта. Хотя это чисто техническая проблема. Последний раз редактировалось JGr124_boRada; 05.11.2009 в 17:14. |
![]() |
![]() |
![]() |
#105 |
Местный
Регистрация: 15.06.2009
Сообщений: 114
|
![]()
ну координаты юнитов на данный момент должны быть где-то, иначе откуда бы это взялось - фрагмент эвентлога:
[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 особенно последняя строка. надо тока найти. и как вариант, ввести команду для юнита, на выдачу в АПИ своих координат. Типа определить местоположение . |
![]() |
![]() |
![]() |
#106 |
Местный
Регистрация: 31.05.2008
Сообщений: 1,159
|
![]() |
![]() |
![]() |
![]() |
#107 | |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]() Цитата:
Там есть строки Код:
00342 if(actor instanceof BridgeSegment) 00343 { 00344 aflag[0] = false; 00345 return; 00346 } else 00347 { 00348 return; 00349 } Меняешь ее на Код:
if(actor instanceof BridgeSegment) && (actor instanceof Wagon) По аналогии, наверное, и с короблями |
|
![]() |
![]() |
![]() |
#108 |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]()
По кораблям.
Класс BigshipGeneric.java Тоже функция msgCollisionRequest Код:
01231 if(actor instanceof BridgeSegment) 01232 { 01233 if(dying != 0) 01234 aflag[0] = false; 01235 return; 01236 } Код:
else { if(actor instanceof BigShipGeneric) && (actor instanceof ShipGeneric) { aflag[0] = false; return; } } |
![]() |
![]() |
![]() |
#109 |
Местный
Регистрация: 19.02.2009
Сообщений: 450
|
![]()
Ок, спасибо.
|
![]() |
![]() |
![]() |
#110 |
Местный
Регистрация: 19.02.2009
Сообщений: 450
|
![]() |
![]() |
![]() |
![]() |
#111 |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]()
F что касается создания АПИ для внешнего "генерала", то за основу можно взять код devicelink - там уже реализован код обмена данными с внешней программой. Придумать формат сообщений, которыми будут обмениваться ил и "генерал".
Ну и самое сложное - дистрибьюция этих сообщений по иловским объектам и организация их реакции на сообщения. D Иле уже есть класс Message - можно попытаться его наследовать и вклиниться в существующюю цепочку передачи сообщений. |
![]() |
![]() |
![]() |
#112 |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]()
Нашел место в коде, где колонна упирается в разрушенный мост и встает намертво.
Класс ChiefGround.java Функция moveChiefPacked Код:
01046 if(cantEnterIntoSegmentPacked_checkComplete(chiefSeg + 1)) 01047 { 01048 chiefAlong = roadsegment.length2D; 01049 d = 0.0D; 01050 break; |
![]() |
![]() |
![]() |
#113 |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]()
Кстати есть класс ChiefManager, в нем нет кода, но он создается в классе World
![]() Сам ОМ велел реализовать в нем управление колоннами ![]() |
![]() |
![]() |
![]() |
#114 | |
Местный
Регистрация: 15.06.2009
Сообщений: 114
|
![]() Цитата:
devicelink, конечно, хорошо... Но одолевают сомнения. В плане «безопасности». Мод то предполагается серверный. А использование такой фичи, как связь с внешним управлением, на клиенте, чисто теоретически может дать ему некоторые дополнительные возможности, в плане изменения геймплея «лично для себя». может через консоль - по старинке, или еще одну завести? з/ы/ Кроме того, devicelink, кажется UDP? Не исключена вероятность что генерал отдаст команду, а сервер пропустит ее мимо ушей. Или наоборот. Лучше будет отдельный потоковый сокет. Последний раз редактировалось LePage; 07.11.2009 в 01:54. |
|
![]() |
![]() |
![]() |
#115 | |
Местный
Регистрация: 31.05.2008
Сообщений: 1,159
|
![]() Цитата:
я то пока сорри немного не тем занимаюсь, атмосферный мод дотачиваю... а что такое devicelink если не секрет? |
|
![]() |
![]() |
![]() |
#116 |
Местный
Регистрация: 15.06.2009
Сообщений: 114
|
![]()
Насколько помню - это интерфейс для связи с внешними устройствами - на его базе делают устройства, типа кокпитов, со всякими, почти настоящими приборами - в общем тренажеры. Ну и используют проги, типа UDPGraf, триммер и подобные.
|
![]() |
![]() |
![]() |
#117 | |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]() Цитата:
В плане безопасности - в devicelink'е уже есть код, который отключает его при сетевой игре. Почему бы его не задействовать? |
|
![]() |
![]() |
![]() |
#118 |
Местный
Регистрация: 31.05.2008
Сообщений: 1,159
|
![]()
такс. ковыряю мод от Зути.
имхо, надо делать на его основе сразу же. там есть какая то синхрониазация. так что мб путь даже при изменении будет синхронизироваться? положение ведь синхронизируеться и т.п. а вообще нашел в классе например ShipGeneric метод private void LoadPath(SectFile sectfile, String s) { ну он есть почти везде. очевидно, что он и прогружает путь(разбивает на сегменты и т.п.). найти бы что его вызывает( в каком месте) и куда передаються ети данные. думаю ето то что нужно...копаю в общем дальше тут ![]() |
![]() |
![]() |
![]() |
#119 |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]()
Сделай doxygen'ом документацию с диаграммами dot с CALL_GRAPH, CALLER_GRAPH - будет тебе красивые диаграммы кто кого вызывает (правда прога работать будет полдня
![]() LoadPath есть только в ShipGeneric и Ship, вызывается конструктором (это я про оригинальный ил) ДА! Не забудь в доки еще исходники добавить - разбираться будет куда проще. |
![]() |
![]() |
![]() |
#120 | |
Администратор
Регистрация: 28.02.2007
Адрес: Выборг
Сообщений: 1,148
|
![]() Цитата:
Тестировалось только в оффлайне. Я не знаю, что нужно чтоб оно заработало в онлайне - возможно ничего больше и не надо = просто достаточно наличия этого мода у юзера. Если что - могу сказать где что править |
|
![]() |
![]() |
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|