Переход с 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 — сложная задача из‑за значительных изменений в архитектуре и скриптинговой системе. Разберём ключевые проблемы и способы их решения. 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. Подготовка
- Сделайте полный бэкап TFS 0.4 (код, БД, карта, скрипты).
- Установите TFS 1.4 на тестовый сервер.
- Изучите changelog и документацию TFS 1.4.
Этап 2. Конвертация данных
- Конвертируйте БД: запустите миграционные SQL‑скрипты.
- Переработайте XML‑конфиги:
monsters.xml, npc.xml — проверьте атрибуты;
quests.xml — обновите структуру. - Обновите карту: откройте и сохраните в Remere’s Map Editor.
Этап 3. Адаптация скриптов
- Создайте compat.lua с функциями‑обёртками для старого API.
- Последовательно переписывайте скрипты:
начните с критических (логин, сохранение);
затем — квесты, торговля, PvP. - Тестируйте каждый скрипт отдельно.
Этап 4. Настройка окружения
- Обновите зависимости (Boost, MySQL).
- Настройте config.lua под вашу конфигурацию.
- Проверьте порты, сетевые настройки.
Этап 5. Тестирование
- Запустите сервер и проверьте загрузку карты.
- Подключитесь как игрок:
проверьте инвентарь, квесты, дома;
протестируйте PvP, торговлю, заклинания. - Имитируйте пиковую нагрузку (10–20 игроков).
- Проанализируйте логи на ошибки Lua и БД.
Этап 6. Запуск в продакшн
- Остановите TFS 0.4, сделайте финальный бэкап БД.
- Перенесите данные на боевой сервер TFS 1.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 требует тщательной подготовки и поэтапного тестирования. Начните с бэкапа и тестового сервера, фокусируйтесь на