PDA

Просмотр полной версии : [Решено] Как правильно задать порядок выполнения миссий ИИ юнитами.



volod
30.01.2010, 20:12
Вообще, хотел опубликовать одно замечания для людей, кто возьмётся работать с тем же, на что я сегодня убил целый вечер. Но подумал, что каждый раз плодить такие темы тоже не стоит, а вот один раздел с такими замечаниями кому-то наверное поможет. В общем, предлагаю сюда постить всякие особенности разработки, которыми вы считаете нужным поделиться с другими разработчиками. Если, конечно, модераторы не против :)

В общем, теперь про само замечание. Делал сегодня нового юнита, которому нужна своя миссия и свой АИ. Долго не мог заставить АИ юзать прописанную мной стратегию, хотя никаких ошибок в логике найти не получалось.
Оказалось, что при считывании XML важен порядок следования описателей. Конкретно для миссий и стратегий АИ. То есть, последовательность описателей в XML и в дефайнах SDK должна совпадать, иначе весь ряд смещается и ваши юниты будут выбирать не ту стратегию и выполнять не те миссии.

С уважением, Волод.

pashaintel
31.01.2010, 09:28
<div class='quotetop'>Цитата(Волод * 30.1.2010, 19:10) 323613</div>

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

В общем, теперь про само замечание. Делал сегодня нового юнита, которому нужна своя миссия и свой АИ. Долго не мог заставить АИ юзать прописанную мной стратегию, хотя никаких ошибок в логике найти не получалось.
Оказалось, что при считывании XML важен порядок следования описателей. Конкретно для миссий и стратегий АИ. То есть, последовательность описателей в XML и в дефайнах SDK должна совпадать, иначе весь ряд смещается и ваши юниты будут выбирать не ту стратегию и выполнять не те миссии.

С уважением, Волод.
[/b]
Добавлю,что это касается не только миссий,но и всего остального,что прописано одновременно в CvEnums.h и в xml-файлах.

volod
06.02.2010, 12:18
Ещё одно замечание, касательно добавления зависящих от порядка объектов.

Добавлять следует в конец списка, иначе смещается очередь вызовов анимаций. Например, у меня при добавлении новой миссии сразу после FORTIFY перестали проигрываться анимации боя. Но если добавлять в конец списка, всё проигрывается нормально.

С уважением, Волод.

Snake_B
06.02.2010, 13:33
<div class='quotetop'>Цитата(Волод * 30.1.2010, 20:10) 323613</div>

В общем, теперь про само замечание. Делал сегодня нового юнита, которому нужна своя миссия и свой АИ. Долго не мог заставить АИ юзать прописанную мной стратегию, хотя никаких ошибок в логике найти не получалось.
Оказалось, что при считывании XML важен порядок следования описателей. Конкретно для миссий и стратегий АИ. То есть, последовательность описателей в XML и в дефайнах SDK должна совпадать, иначе весь ряд смещается и ваши юниты будут выбирать не ту стратегию и выполнять не те миссии.
[/b]

т.е., если я правильно понял, вот это должно быть по порядку:
[code]

volod
06.02.2010, 19:36
<div class='quotetop'>Цитата(Snake_B * 6.2.2010, 12:31) 324220</div>

а можно тогда написать какой порядок в SDK (чтобы не искать)?
[/b]

Можно. В файлах Enums.h, CvGameCoreUtils.cpp и CyEnumsInterface.cpp.

Snake_B
06.02.2010, 20:43
<div class='quotetop'>Цитата(Волод * 6.2.2010, 19:34) 324263</div>

<div class='quotetop'>Цитата(Snake_B * 6.2.2010, 12:31) 324220

а можно тогда написать какой порядок в SDK (чтобы не искать)?
[/b]

Можно. В файлах Enums.h, CvGameCoreUtils.cpp и CyEnumsInterface.cpp.
[/b][/quote]

[code]

volod
06.02.2010, 21:41
Это в CvGameCoreUtils.cpp

pashaintel
06.02.2010, 21:57
Как раз здесь порядок не важен. Важно его соблюсти в CvEnums.h :
[code]enum UnitAITypes

Snake_B
06.02.2010, 22:26
<div class='quotetop'>Цитата(Пашок * 6.2.2010, 21:55) 324290</div>

Как раз здесь порядок не важен. Важно его соблюсти в CvEnums.h :
[/b]

так ребят, не разгоняемся... мне SDK модинг не интересует... мне интересно в каком порядке надо писать в xml.... а порядок в обоих примерах одинаковый...

pashaintel
07.02.2010, 00:30
<div class='quotetop'>Цитата(Snake_B * 6.2.2010, 21:24) 324292</div>

<div class='quotetop'>Цитата(Пашок * 6.2.2010, 21:55) 324290

Как раз здесь порядок не важен. Важно его соблюсти в CvEnums.h :
[/b]

так ребят, не разгоняемся... мне SDK модинг не интересует... мне интересно в каком порядке надо писать в xml.... а порядок в обоих примерах одинаковый...
[/b][/quote]
Берём порядок в CvEnums.h и в соответствии с ним упорядочиваем xml. А добавлять действительно лучше в конец списка,мало ли ещё какие тонкости нам неизвестны.

NeseryozniyVET
07.02.2010, 05:01
<div class='quotetop'>Цитата(Пашок * 6.2.2010, 22:28) 324310</div>
Берём порядок в CvEnums.h и в соответствии с ним упорядочиваем xml. А добавлять действительно лучше в конец списка,мало ли ещё какие тонкости нам неизвестны.[/b]Добавлять обязательно перед NUM_UNITAI_TYPES