[JTS] Анализ\Документация по ai.obj

  • Автор темы Автор темы yoRliK
  • Дата начала Дата начала

yoRliK

KilRoy
Местный
Сообщения
130
Розыгрыши
0
Репутация
2 371
Реакции
430
Баллы
1 403
Трид в режиме редактирования. Периодически будет дополняться новой информацией и скринами!

Приветствуем пользователей данного сообщества. Т.к нам выделили целый раздел, мы постараемся осчастливить вас интересными весчами ;)
Начнем с мелочей, и легкой заманухиняшности, от новых плюшек JTS. Данный трид, создал в предвкушении техн. документации по AI ПТСа, и непосредственно самому декомпилятору(Градл, ЛЛ парсера, скала...и много, много, МНОГО интересной инфы и решений).
В данный момент, идет упорная борьба с убийством старых намеков на недоАИ в эмуляторе, и последующим использованием моделей ПТС движка. Наш великий Java-Man пыхтит в поте лица, описывая новую и крутую логику, воркеры, и прочие механизмы, которые вдохнут жизнь в код ПТС АИшек :-) Но так же, товарищ Camelion, активно собирает документацию, и обрезает декомпилятор до тех моментов, которые понадобятся для публикации(ибо некоторые моменты, имеют специфическое направление под наш эмулятор. Вещи как реализованные модели и объекты, для непосредственного "простого переноса", которые фактически не расходятся с логикой работы АИ на ПТСе).
Чуть поясню: документация будет очень полезна тем, кто хочет упорно занятся работой с ПТС серверами, либо озадачился теми же вопросами что и мы, для переноса АИ в состоянии "as is" в ява эмулятор. В ней будут рассказаны все подводные камни в коде АИ, может инфа по эмуляции стека, решение проблем с функциями АИ принимающими динамическое количество параметров и инициализированных переменных и прочее, что дико потрепало нервы товарищу Camelion'у :-)
Много воды конечно, сливаю скрины + данный трид будет периодически обновляться :-)

 
Последнее редактирование модератором:

Приветствую вас, обитатели форума. Наш товарищ Camelion, написал первую часть огромной документации, по реверсу и анализу ai.obj PTS сервера. Документация незавершенная, и последующие части вы сможете найти в данном триде. 2я часть документации, будет в ближайшее время(Ибо человеку нужно передохнуть, отполировать декомпилятор для публикации, да и просто развеяться). И так, встречаем:
Б
 
Последнее редактирование:
Остался у кого pdf? ссылка битая
 
Сорян за некропост.
Ну декомпилировать ai.obj это 20% работы, на самом деле.
1) Сама структура ИИ в Java, как овероподобных, так и лыжных, чутка отличается от структуры ПТС ИИ.
Если в Java сборках в большинстве случаев(я не видел обратного), все ИИ являются наследниками низкоуровневых ИИ, вроде NpcAI, CreatureAI, где есть часть базовой логики, то в ПТС, как правило, ниже default_npc вызовы уже не уходят. Т.е порядок обработки действия идет от низкоуровневого ИИ в ai.obj, а не наоборот. Ну и + движок Desire, который отличается от простых тасков довольно сильно.
2) Для огромной кучи функций в ai.obj нет явной логики в самом ai.obj Т.е для всех базовых функций эту логику нужно будет создать или откуда-то вытащить. Для какой-то части это очевидно, например GetMyMaker() или Suicide(), но есть функции, которые довольно тяжело правильно воплотить, например ShowTelPosListPage() или TeleportFStr(), не имея возможности залезть под капот ПТСке.
3) Сами ИИ далеко не автономные и их правильная реализация требует кучи других рабочих механизмов и инфы из скриптов ПТС. Например ИИ не будут корректно работать без полной реализации ПТС спавна + мейкеров, зон и кучи еще мелких параметров из ПТС скриптов.
4) ПТС ИИ неплохо так конфликтуют с квестами на яве, т.к квестовый движок в ПТС описан прям в самих ИИ, которые обрабатывают события и переключают стадии квеста. Кроме кучи неявных функций, там еще есть конфликты во внезапных местах(например я столкнулся с небольшими проблемами, когда например Java движок квеста ждет смерти квестового моба, а в ПТС ии он внезапно бессмертный и деспавнится при >30% ХП. Это порождает проебы в квестах в рандомных местах.
5) Наличие ОГРОМНЫХ и сложных ИИ, типа "chamberlain", довольно большая часть функций которого завязана на функциях замка и манора.
К чему я это все написал? К тому, что простым декомпилом ai.obj не получится решить проблему подключения ИИ к сборке. Там еще сопутствующих работ по сборке до усрачки много.
 
Сорян за некропост.
Ну декомпилировать ai.obj это 20% работы, на самом деле.
1) Сама структура ИИ в Java, как овероподобных, так и лыжных, чутка отличается от структуры ПТС ИИ.
Если в Java сборках в большинстве случаев(я не видел обратного), все ИИ являются наследниками низкоуровневых ИИ, вроде NpcAI, CreatureAI, где есть часть базовой логики, то в ПТС, как правило, ниже default_npc вызовы уже не уходят. Т.е порядок обработки действия идет от низкоуровневого ИИ в ai.obj, а не наоборот. Ну и + движок Desire, который отличается от простых тасков довольно сильно.
2) Для огромной кучи функций в ai.obj нет явной логики в самом ai.obj Т.е для всех базовых функций эту логику нужно будет создать или откуда-то вытащить. Для какой-то части это очевидно, например GetMyMaker() или Suicide(), но есть функции, которые довольно тяжело правильно воплотить, например ShowTelPosListPage() или TeleportFStr(), не имея возможности залезть под капот ПТСке.
3) Сами ИИ далеко не автономные и их правильная реализация требует кучи других рабочих механизмов и инфы из скриптов ПТС. Например ИИ не будут корректно работать без полной реализации ПТС спавна + мейкеров, зон и кучи еще мелких параметров из ПТС скриптов.
4) ПТС ИИ неплохо так конфликтуют с квестами на яве, т.к квестовый движок в ПТС описан прям в самих ИИ, которые обрабатывают события и переключают стадии квеста. Кроме кучи неявных функций, там еще есть конфликты во внезапных местах(например я столкнулся с небольшими проблемами, когда например Java движок квеста ждет смерти квестового моба, а в ПТС ии он внезапно бессмертный и деспавнится при >30% ХП. Это порождает проебы в квестах в рандомных местах.
5) Наличие ОГРОМНЫХ и сложных ИИ, типа "chamberlain", довольно большая часть функций которого завязана на функциях замка и манора.
К чему я это все написал? К тому, что простым декомпилом ai.obj не получится решить проблему подключения ИИ к сборке. Там еще сопутствующих работ по сборке до усрачки много.
Ну лучше наверное сделать 1 раз и чтобы оно работало как задумано, чем вручную переписывать аи каждого моба и нпс по эмпирическому анализу
 
Ну лучше наверное сделать 1 раз и чтобы оно работало как задумано, чем вручную переписывать аи каждого моба и нпс по эмпирическому анализу
Согласен. Я поделился подводными камнями, которые мне встретились при порте ИИ с ПТС на мою сборку.
Это больше инфа для тех, которые думает, что декомпил ai.obj, это панацея и его сразу получится прикрутить к сборке.
 
Это больше инфа для тех, которые думает, что декомпил ai.obj, это панацея и его сразу получится прикрутить к сборке.
Зачем декомпилить, если слили сорс? Правда новых хроник, как и компилятор и не только.
1655117646444.webp
1655117656191.webp
 
Зачем декомпилить, если слили сорс? Правда новых хроник, как и компилятор и не только.
Посмотреть вложение 44056
Посмотреть вложение 44057
Ну ты же не будешь вручную для ХФ мониторить 12к+ ИИ, на предмет того, что какие-то выключены, какие-то поправлены и прочее.
Если в Essence, то там некоторых не хватает. Если Homunculus, то там закомменчены куски кода в ИИ, для локаций, которые изменились в Main ветке
 
Там под каждую предшествующую версию выходившую с ct2.6.1 в сливе есть аи, насколько помню
 
Там под каждую предшествующую версию выходившую с ct2.6.1 в сливе есть аи, насколько помню
Это не под каждую конкретную версию ИИ, а ИИ разбитые по группам(хроникам). Все равно там совокупно актуальная версия ИИ для того протокола, которому соответствует сервер.
Вот cкрин ИИ ai_valley_necro. Он идентичен в Essence и Homunculus скриптах.
Закомменчены строки с вызовом миньонов, которые работают на ХФ. В более старших хрониках их нет. Там таких сюрпризов много. Для построения Эссенц сервака они подходят, а вот младшие хроники с них парсить опрометчиво, на мой взгляд)
 

Вложения

  • ai_valley_necro_h.webp
    ai_valley_necro_h.webp
    28,5 КБ · Просмотры: 121
Это не под каждую конкретную версию ИИ, а ИИ разбитые по группам(хроникам). Все равно там совокупно актуальная версия ИИ для того протокола, которому соответствует сервер.
Вот cкрин ИИ ai_valley_necro. Он идентичен в Essence и Homunculus скриптах.
Закомменчены строки с вызовом миньонов, которые работают на ХФ. В более старших хрониках их нет. Там таких сюрпризов много. Для построения Эссенц сервака они подходят, а вот младшие хроники с них парсить опрометчиво, на мой взгляд)
сурсы аи в шаре для хф, так же есть декомпилятор под всех хроники)))а под какие нет, есть сурсы с репо кореяк.
 
  • Мне нравится
Реакции: kick
Сорян за некропост.
Ну декомпилировать ai.obj это 20% работы, на самом деле.
1) Сама структура ИИ в Java, как овероподобных, так и лыжных, чутка отличается от структуры ПТС ИИ.
Если в Java сборках в большинстве случаев(я не видел обратного), все ИИ являются наследниками низкоуровневых ИИ, вроде NpcAI, CreatureAI, где есть часть базовой логики, то в ПТС, как правило, ниже default_npc вызовы уже не уходят. Т.е порядок обработки действия идет от низкоуровневого ИИ в ai.obj, а не наоборот. Ну и + движок Desire, который отличается от простых тасков довольно сильно.
2) Для огромной кучи функций в ai.obj нет явной логики в самом ai.obj Т.е для всех базовых функций эту логику нужно будет создать или откуда-то вытащить. Для какой-то части это очевидно, например GetMyMaker() или Suicide(), но есть функции, которые довольно тяжело правильно воплотить, например ShowTelPosListPage() или TeleportFStr(), не имея возможности залезть под капот ПТСке.
3) Сами ИИ далеко не автономные и их правильная реализация требует кучи других рабочих механизмов и инфы из скриптов ПТС. Например ИИ не будут корректно работать без полной реализации ПТС спавна + мейкеров, зон и кучи еще мелких параметров из ПТС скриптов.
4) ПТС ИИ неплохо так конфликтуют с квестами на яве, т.к квестовый движок в ПТС описан прям в самих ИИ, которые обрабатывают события и переключают стадии квеста. Кроме кучи неявных функций, там еще есть конфликты во внезапных местах(например я столкнулся с небольшими проблемами, когда например Java движок квеста ждет смерти квестового моба, а в ПТС ии он внезапно бессмертный и деспавнится при >30% ХП. Это порождает проебы в квестах в рандомных местах.
5) Наличие ОГРОМНЫХ и сложных ИИ, типа "chamberlain", довольно большая часть функций которого завязана на функциях замка и манора.
К чему я это все написал? К тому, что простым декомпилом ai.obj не получится решить проблему подключения ИИ к сборке. Там еще сопутствующих работ по сборке до усрачки много.
Честно сказать я так и не уловил идеи сказанного. Какое заключение? Какие альтернативы?

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

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

Но может я неверно понял посыл вышесказанного.
 
  • Мне нравится
Реакции: kick
Уважаемые, а вас не затруднит ткнуть носом в сурсы ХФ ИИ или вы про вот эти? [Retail] High Five 5 AI Source
 
Честно сказать я так и не уловил идеи сказанного. Какое заключение? Какие альтернативы?

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

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

Но может я неверно понял посыл вышесказанного.
Ну вот мы и пошли по пути того, что реализовываем инсты и скиллы, строго по ПТС, остальное по техоньку, не спеша, от большего к меньшему, по степени важности. Как будто игроку не пофиг на AI рядового моба, которых он убивает пачками в час)
 
Я может выскажу непопулярное мнение, но стремиться во всем сделать "по оффу" по моему не имеет смысла - это дай бог оценят доли процента игроков, а остальным глубоко похрену на то как это реализовано если в итоге по сути работает так же...
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Я может выскажу непопулярное мнение, но стремиться во всем сделать "по оффу" по моему не имеет смысла - это дай бог оценят доли процента игроков, а остальным глубоко похрену на то как это реализовано если в итоге по сути работает так же...
А как же чувство собственного удволетворения? )
 
  • Мне нравится
Реакции: kick
Ага, соглашусь, щас офф не кому не упёрся, сам в очередной раз из ПТС делаю яву:)
 
Назад
Сверху Снизу