Помощь - Поиск - Пользователи - Календарь
Полная версия: Разработка шарда
Город Мастеров > РЕДАКТОРЫ > Шарды рунета
virusman
Давно хотел написать об инструментах, которые мы используем в разработке Axistown 2. В некоторой степени это промежуточный итог того, чем я занимался в NWN последние несколько лет.

1. NWNX2
Штука, бесценная для любого шарда. С помощью NWNX можно сделать практически всё. Вот список основных плагинов:
  • NWNX ODBC - соединение с базой данных MySQL/SQLite. Позволяет сохранять и забирать данные любых типов, включая объекты целиком.
  • NWNX Events - добавляет новые события для обработки скриптами.
  • NWNX Chat - обработка чата. Аналогично нему сделали событие OnPlayerChat в 1.69. Но этот плагин всё равно мощнее, чем встроенное событие.
  • NWNX Fixes - некоторые твики (например, для сохранения переменных при продаже предмета или для возможности инициации диалога в режиме скрытности)
  • NWNX Functions / NWNX Funcs - два плагина со схожим функционалом. Добавляют множество новых функций
  • NWNX ResMan - позволяет добавить/заменить любой ресурс (например, поправить скрипт) прямо на лету, без перезагрузки модуля.
  • NWNX Profiler - засекает время выполнения скриптов. Помогает, когда нужно оптимизировать скрипты и уменьшить лаги сервера.
  • NWNX Reset - рестарт по запросу из скрипта.
  • NWNX Areas - инстансинг локаций: позволяет создать копию любой локации.

Пожалуй, самый главный из них - ODBC, потому что без внешней базы данных невозможно было бы сделать половины вкусностей, о которых я расскажу позже.
Кроме перечисленных, мы используем и специфичные:
  • NWNX Ruby - возможность исполнять скрипты на языке Ruby с доступом ко всем функциям NWScript
  • Dynamic Names - сокрытие реальных имён персонажей игроков. Каждый игрок задаёт то имя, под которым он будет видеть персонажа другого игрока. До этого он для него "незнакомец". Пара скриншотов:
    http://data.virusman.ru/nwn/names_party.jpg
    http://data.virusman.ru/nwn/nwnx_names1.jpg


2. Сборщик хакпака
Когда количество единичных хакпаков, из которых собирается общий шардовый хакпак, достигло сотни - возникла необходимость автоматизировать сборку и сделать её более гибкой, чтобы было удобнее изменять содержимое.
Информация о каждом хаке занесена в базу:
Нажмите для просмотра прикрепленного файла
А все файлы, соответственно, распределены по папкам:
Нажмите для просмотра прикрепленного файла
Внутри файлы тоже разложены по категориям для удобства:
Нажмите для просмотра прикрепленного файла
Папка 501_master содержит 2da, itp и set файлы, общие для всех.

Перед сборкой запускается проверка всех ресурсов на повторения и на превышение ресурсов в файлах (лимит по ресурсам на каждый .hak-файл - 16384).
Наконец, все эти файлы из папок компилируются в набор .hak-файлов: один с шаблонами для палитры, остальные - в соответствии с тем, как всё распределено в БД.
Melshin
Еще бы NWNx 4 все это умел... *Завидует*
Laajin
Предпочтение все же в пользу линукса почему то)
virusman
Спроектировал архитектуру системы Axistown Persistency System. Это система, которая дает каждому объекту в модуле (кроме статик плейсов) уникальный идентификатор и возможность сохранять объект и держать на нем переменные в БД. После рестарта все объекты инициализируются информацией из БД, соответственно.
Это дает возможность сохранять изменения, произошедшие с объектами: содержимое магазинов, сундуков, убитые НПС, предметы на земле и лутбэги, которые не пропадают с рестартом и т.д.
Единственный минус такой глобальной системы - то, что при полном сохранении объекты уже загружаются из БД, а не из модуля, и традиционное обновление модуля сработает не всегда. Но я думаю это решить автоматической перепаковкой модуля последними объектами из БД.
virusman
Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.
Richard
Привет) Приятно видеть старую гвардию еще при деле)))
Virusman, над чем ныне трудишься?
Talarasha
Цитата
Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.

И в самом деле полезная штука, я как-то увидел в модулях оригинала такое, тоже захотел, но не смог сделать. Наверное, надо бы добавить в FAQ по тулсету ссылку на гайд по этой теме.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.