Найти в Дзене

«Переход с TFS 0.4 на 1.4: подводные камни и решения».

Переход с TFS 0.4 на TFS 1.4 — сложная задача из‑за значительных изменений в архитектуре и скриптинговой системе. Разберём ключевые проблемы и способы их решения. 1. Несовместимость скриптов Lua 2. Изменения в XML‑конфигах 3. Глобальные события и creature scripts 4. Изменения в базе данных 5. Механика квестов и заданий 6. Проблемы с картой и зонами 7. Устаревшие зависимости 8. Балансировка и геймплей Этап 1. Подготовка Этап 2. Конвертация данных Этап 3. Адаптация скриптов Этап 4. Настройка окружения Этап 5. Тестирование Этап 6. Запуск в продакшн Подготовка: Конвертация: Скрипты: Тестирование: Запуск: Переход на TFS 1.4 требует тщательной подготовки и поэтапного тестирования. Начните с бэкапа и тестового сервера, фокусируйтесь на
Оглавление

Переход с TFS 0.4 на TFS 1.4 — сложная задача из‑за значительных изменений в архитектуре и скриптинговой системе. Разберём ключевые проблемы и способы их решения.

Основные различия между версиями

  • Скриптовый движок. TFS 0.4 использует старый Lua 5.1 с кастомными расширениями, TFS 1.4 — Lua 5.3 с улучшенной поддержкой ООП.
  • Структура данных. Изменены форматы XML‑файлов для монстров, NPC, квестов.
  • API событий. Глобальные события (globalevents), creature scripts и actions имеют другую систему регистрации.
  • База данных. Схемы таблиц MySQL/SQLite переработаны, добавлены новые поля.
  • Движок карты. Поддержка новых форматов карт, изменения в механике зон и спавнов.

Подводные камни и решения

1. Несовместимость скриптов Lua

  • Проблема. Код Lua из TFS 0.4 не работает в TFS 1.4 из‑за изменений API.
  • Примеры:
    doPlayerAddItem → player:addItem;
    getPlayerNameByGUID → Game.getPlayerByGUID;
    устаревшие функции для работы с квестами.
  • Решение:
    Создайте слой совместимости (compat.lua) с функциями‑обёртками.
    Постепенно переписывайте скрипты на новый API.
    Используйте отладку: включите логирование ошибок Lua.

2. Изменения в XML‑конфигах

  • Проблема. Файлы monsters.xml, npc.xml, quests.xml имеют новую структуру.
  • Пример:
    В TFS 0.4: <health now="100" max="100"/>.
    В TFS 1.4: <health now="100" max="200"/> (изменились значения по умолчанию).
  • Решение:
    Конвертируйте XML‑файлы вручную или с помощью скриптов‑парсеров.
    Проверьте логи на ошибки загрузки монстров/NPC.

3. Глобальные события и creature scripts

  • Проблема. Обработчики событий (login, logout, kill) регистрируются иначе.
  • Пример: в TFS 0.4 скрипты добавлялись через scripts/creaturescripts, в TFS 1.4 требуется регистрация в scripts/system.
  • Решение:
    Перепишите скрипты под новый формат.
    Используйте EventCallback для регистрации событий.
    Протестируйте критические скрипты (логин, смерть игрока) в первую очередь.

4. Изменения в базе данных

  • Проблема. Таблицы players, houses, market имеют новые поля и индексы.
  • Решение:
    Сделайте бэкап старой БД.
    Запустите миграционные скрипты из дистрибутива TFS 1.4.
    Вручную перенесите кастомные данные (если есть).
    Проверьте целостность: SELECT * FROM players LIMIT 10.

5. Механика квестов и заданий

  • Проблема. Система квестов переработана: изменились форматы файлов и API для сохранения прогресса.
  • Решение:
    Конвертируйте quests.xml по шаблону из TFS 1.4.
    Перепишите логику квестов на новый API (например, player:setStorageValue).
    Протестируйте каждый квест на тестовом сервере.

6. Проблемы с картой и зонами

  • Проблема. Формат карты .otbm изменился, зоны могут не загружаться.
  • Решение:
    Откройте карту в Remere’s Map Editor (версия для TFS 1.4).
    Сохраните карту в новом формате.
    Проверьте спавны монстров и NPC.

7. Устаревшие зависимости

  • Проблема. Библиотеки (Boost, MySQL Connector) в TFS 0.4 несовместимы с TFS 1.4.
  • Решение:
    Обновите зависимости до версий, указанных в CMakeLists.txt TFS 1.4.
    Соберите сервер с нуля на чистой системе.

8. Балансировка и геймплей

  • Проблема. Изменения в движке могут повлиять на урон, защиту, спавны.
  • Решение:
    Протестируйте PvP и PvE механики.
    Сравните значения атрибутов (HP, атака) до и после миграции.
    Скорректируйте параметры в monsters.xml и items.xml.

Пошаговый план миграции

Этап 1. Подготовка

  1. Сделайте полный бэкап TFS 0.4 (код, БД, карта, скрипты).
  2. Установите TFS 1.4 на тестовый сервер.
  3. Изучите changelog и документацию TFS 1.4.

Этап 2. Конвертация данных

  1. Конвертируйте БД: запустите миграционные SQL‑скрипты.
  2. Переработайте XML‑конфиги:
    monsters.xml, npc.xml — проверьте атрибуты;
    quests.xml — обновите структуру.
  3. Обновите карту: откройте и сохраните в Remere’s Map Editor.

Этап 3. Адаптация скриптов

  1. Создайте compat.lua с функциями‑обёртками для старого API.
  2. Последовательно переписывайте скрипты:
    начните с критических (логин, сохранение);
    затем — квесты, торговля, PvP.
  3. Тестируйте каждый скрипт отдельно.

Этап 4. Настройка окружения

  1. Обновите зависимости (Boost, MySQL).
  2. Настройте config.lua под вашу конфигурацию.
  3. Проверьте порты, сетевые настройки.

Этап 5. Тестирование

  1. Запустите сервер и проверьте загрузку карты.
  2. Подключитесь как игрок:
    проверьте инвентарь, квесты, дома;
    протестируйте PvP, торговлю, заклинания.
  3. Имитируйте пиковую нагрузку (10–20 игроков).
  4. Проанализируйте логи на ошибки Lua и БД.

Этап 6. Запуск в продакшн

  1. Остановите TFS 0.4, сделайте финальный бэкап БД.
  2. Перенесите данные на боевой сервер TFS 1.4.
  3. Запустите сервер, проверьте подключение игроков.
  4. Мониторьте стабильность первые 24 часа.

Инструменты и утилиты

  • Remere’s Map Editor — для конвертации карт.
  • MySQL Workbench — для миграции и анализа БД.
  • Lua Debugger — для поиска ошибок в скриптах.
  • Git — контроль версий при переписывании кода.
  • Docker — создание тестовых окружений.

Чек‑лист перед запуском

Подготовка:

  • [ ] Бэкап TFS 0.4 (код, БД, карты).
  • [ ] Установлен TFS 1.4 на тестовом сервере.
  • [ ] Изучены changelog и документация.

Конвертация:

  • [ ] Миграция БД выполнена, данные проверены.
  • [ ] XML‑конфиги обновлены (монстры, NPC, квесты).
  • [ ] Карта конвертирована в новый формат.

Скрипты:

  • [ ] Создан слой совместимости compat.lua.
  • [ ] Критические скрипты переписаны (логин, сохранение).
  • [ ] Квесты и механики протестированы.

Тестирование:

  • [ ] Сервер запускается без ошибок.
  • [ ] Игроки подключаются, инвентарь загружается.
  • [ ] PvP, торговля, заклинания работают корректно.
  • [ ] Логи не содержат ошибок Lua/БД.

Запуск:

  • [ ] БД перенесена на боевой сервер.
  • [ ] Конфигурация config.lua настроена.
  • [ ] Мониторинг включён (логи, метрики).

Заключение

Переход на TFS 1.4 требует тщательной подготовки и поэтапного тестирования. Начните с бэкапа и тестового сервера, фокусируйтесь на