Discussion Tla vanilla конвертация в актуальный формат sdk

Тема в разделе "Разработка", создана пользователем rifleman17, 28 авг 2018.

  1. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    IMG_20180828_124326.jpg

    Давно собирался заняться актуализацией контента ТЛА, но только сейчас дошли руки.
    Изменений слишком много, поэтому решил апгрейдить ТЛА в несколько шагов.
    В качестве основы взята работа Skycast'a и остальных, под SDK 605 ревизии: https://github.com/cvet/fonline_tla

    Начиная с 628 ревизии из движка исключена глобальная карта, чтобы ее не реализовывать, буду пробовать запустить сервер под SDK 627.

    Исправил все серверные и клиентские скрипты, настроил интерфейсы, прототипы криттеров, переделал эвенты под новую систему событий (https://xp-dev.com/sc/change/76003/625). Проверил скрипты (кроме мапперских) ASCompiler'ом, все компилируется норм. Но сервер не запускается, при старте сообщает о проблеме с прагмами:

    Найти причину ошибки не удается. Возможно, нужно поднимать версию до более поздних ревизий SDK?

    Обнаружил, что ошибка [Main][01:45:767] Error in pragma(s) during loading. возникает через раз. Каждый последующий запуск после изменения любого скрипта приводит к возникновению этой ошибки. Если запустить сервер еще раз, запуск происходит. (Правда, тут же падает с дампом)
    Последнее редактирование: 11 сен 2018
    Tab10id, Akkella, Arh-Wish и 2 другим нравится это.
  2. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    В общем, сервер удалось запустить, с дампами при запуске разобрался. Но сервер не видит маску проходимости tla_relief. Клиент не может прочитать тексты из *.msg файлов. Возможно, что-то не так с путями, но, с другой стороны, графика для интерфейса грузится норм.

    Сильно раздражает цикл: 1) изменил скрипт; 2)очистил кэш сервера; 3) запустил сервер, он упал с ошибками прагм; 4)запустил сервер повторно

    По всей видимости придётся поднимать используемую
    версию SDK.
  3. MEXAHOTABOP

    MEXAHOTABOP

    Регистрация:
    22 окт 2012
    я конечно могу путать тк фиг знает когда последний раз имел общение с сдк но разве компилятор из сдк не может компелировать скрипты в бинари что бы пропустить компиляцию сервером при запуске?
  4. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    Даже если бы ASCompiler компилировал скрипты так, что серверу не пришлось бы это делать, это не решило бы всех проблем. Некоторые баги проявляются только при работе сервера.

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

    Сервер в любом случае нужно запускать и тут проявляется эта особенность с прагмами и кешем.
  5. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    Обновил ТЛА до 627 ревизии sdk. К сожалению, версия не работоспособная. Сервер запускается, клиент тоже, маппер нет.
    Не работают анимации персонажей, зато шестиугольники могут ползать по карте!!! (см. скрин) Много чего нужно допиливать в интерфейсах (например нет выпадающего меню по клику на объект, не показываются тексты в основном игровом интерфейсе, и т.д). Нужно восстанавлиать прототипы криттеров тактикса и 3дэ, которые использовались в ТЛА,
    Глобальную карту проверить не удалось, поскольку нет возможности ввода команд и не вызываются диалоги с нпц.
    Основная проблема, конечно, с анимациями. Было подозрение, что не работают только анимации fallout, попробовал восстановить анимации тактикса, не помогло. Скорее всего проблема была исправлена в 631 ревизии

    Текущее состояние можно установить так:
    1. Склонировать форк репы с https://github.com/rifleman17/fonline_tla.git
    2. Обновить ресурсы ТЛА ..\TLA\Resources (графику, музыку, архивы dat-файлы), например, взять их отсюда https://xp-dev.com/svn/fonline_tla/TLA/Resources/ (Структура папок точно такая же). На github нет этих файлов.
    3. Установить 627 версию SDK в папку FonlineSDK (https://xp-dev.com/svn/fonline_sdk/)

    Сервер запустится со второго раза.
    Если после изменения скриптов сервер все еще не запустился, нужно очистить содержимое кеша
    Следующая ревизия для проверки - 640. Из серьезного: придется как-то реализовывать глобальную карту в скриптах.

    627 jpg initial.png

    P.S: отдельная большое спасибо Tabl01d'у за помощь с настройкой git ^)
    Последнее редактирование: 11 сен 2018
    Krizalis нравится это.
  6. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    Проверил 631 ревизию sdk

    Все, что касается работы с глобальной картой пока заменил заглушкой GlobalmapGroupExtended.fos
    Версия не рабочая, происходит спам параметризованных эвентов(..SubscribeToCritter, etc), сервер не запускается.
    Предположительно, было исправлено в 648 ревизии. Но вообще, есть большая вероятность, что в скриптах проблемы с DeferredCalls. Время во всех скриптах осталось в секундах, без учета перехода на расчеты в ms. Нужно еще будет каждый скрипт проверять.

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

    Самая трудоемкая ревизия для переноса - 646. Там нужно инклуды и импорты во всех скриптах.

    Вложения:

    Последнее редактирование: 13 сен 2018 в 01:16
    Krizalis нравится это.
  7. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    Поднял версию контента до 645 ревизии.
    Сервер не запускается без шаманства - в момент генерации мира и загрузки локаций происходит спам отложенных событий и сервер падает с дампом до запуска

    Убрал загрузку всех локаций, кроме Дэна пока.
    Чтобы запустить сервер, пришлось также изменить объявление двух эвентов в SDK (Core.fosh): EventCritterMoveItem и EventCritterCheckMoveItem. Убрал ключевое слово deffered.
    После этого сервер перестал давиться событиями и запустился.

    Продолжается раздражающая проблема с прагмами. Сервер приходится запускать дважды.
    Маппер работает нормально, анимации fallout в маппере загружаются корректно, карты, объекты, нпц, на первый взгляд все на местах.

    В клиенте не работают анимации. В обработчик события EventCritterAnimation приходит некорректный hash модели
    , и движок ее не может опознать.
    Возможно, проблема в протиотипах криттеров. Кто-нибудь может предположить, куда копать?

    Прописал в обработчике события присваивание анимации робота из тактикса, она норм. отображается, персонаж поворачивается, ходит, даже бегает.
    Только не может дверь открыть (хахах!) потому что работу с дверями нужно переписывать.

    В общем, пока не буду дальше поднимать версию, если только прагмы заколебут вконец. Попробую разобраться, что не так с анимациями, настроить работу с контейнерами, интерфейсом и глобальной картой.

    645 rhumanoid.jpg
    Medvedev и Krizalis нравится это.
  8. rifleman17

    rifleman17

    Регистрация:
    14 мар 2011
    Удалось выяснить, в чем состоит проблема неработающих анимаций на клиенте.

    Оказалось, что hash, в который записан тип криттера, не известен клиенту. Клиент не может преобразовать число в хеш (unknown hash error). Но, если в момент запуска клиента, перед первым обращением к анимациям, вручную пройтись по всем хешам, проблема устраняется.

    Код:
    string[] animsList = { "harobe", "hfcmbt"...};
    hash hashA;
    for(int i = 0, l = animsList.length(); i < l; i++)
    hashA = GetStrHash("art/critters/" + animsList[i]);
    
    Таким образом, из серьезных проблем остается необходимость перезапуска сервера из-за ошибки с прагмами.

    Думаю, что после перехода на 646+ ревизию она должна быть устранена.

    На 645 ревизию SDK состояние такое:

    - Не реализован глобал.
    - Анимации со скрипом, но работают.
    - Нельзя взаимодействовать с окружением (скилы, диалоги, контейнеры и т.д), в лог-окно, чат не пишутся сообщения или любой текст.
    - Не работают консольные команды (сервер валится с дампом при вызове команд)
    - Много проблем с интерфейсами, кое-где остались устаревшие вызовы CustomCall, есть другие ошибки, приводящие к вылету клиента.
    - Сервер запускается, если отключить отложенные (deferred) события в SDK core.fosh
    - Маппер нормально читает и загружает карты. Списки объектов не настроены.
    - Наверняка много, что еще не пашет, нужно проверять.

    645 amimated.png

    https://github.com/rifleman17/fonline_tla/releases/tag/Fonline_TLA_645

    P.S: Огромное спасибо Крекеру за помощь в поиске истины :)
    Brightside, Krizalis и Tab10id нравится это.
  9. Brightside

    Brightside

    Регистрация:
    2 июн 2013
    Отличная работа, но привязка к любой устаревшей ревизии сделает все бесполезным. Нужно продолжать

Поделиться этой страницей