Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Разработка шарда
virusman
сообщение Dec 15 2009, 18:11
Сообщение #1


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Давно хотел написать об инструментах, которые мы используем в разработке 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. Сборщик хакпака
Когда количество единичных хакпаков, из которых собирается общий шардовый хакпак, достигло сотни - возникла необходимость автоматизировать сборку и сделать её более гибкой, чтобы было удобнее изменять содержимое.
Информация о каждом хаке занесена в базу:
Прикрепленный файл  hak_manager.png ( 29.67 килобайт ) Кол-во скачиваний: 64

А все файлы, соответственно, распределены по папкам:
Прикрепленный файл  haks_structure.png ( 80.34 килобайт ) Кол-во скачиваний: 47

Внутри файлы тоже разложены по категориям для удобства:
Прикрепленный файл  haks_structure2.png ( 37.7 килобайт ) Кол-во скачиваний: 46

Папка 501_master содержит 2da, itp и set файлы, общие для всех.

Перед сборкой запускается проверка всех ресурсов на повторения и на превышение ресурсов в файлах (лимит по ресурсам на каждый .hak-файл - 16384).
Наконец, все эти файлы из папок компилируются в набор .hak-файлов: один с шаблонами для палитры, остальные - в соответствии с тем, как всё распределено в БД.
(IMG:http://img682.imageshack.us/img682/1516/hakcompiler.th.jpg)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Melshin
сообщение Dec 16 2009, 07:14
Сообщение #2


Level 2
*

Класс: Клерик
Характер: Lawful Neutral
Раса: Человек



Еще бы NWNx 4 все это умел... *Завидует*

Сообщение отредактировал Melshin - Dec 16 2009, 07:49
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Laajin
сообщение Oct 16 2010, 18:41
Сообщение #3


Level 5
**

Класс: Пьяный Мастер
Характер: Chaotic Good
Раса: Человек



Предпочтение все же в пользу линукса почему то)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Oct 24 2010, 11:05
Сообщение #4


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Спроектировал архитектуру системы Axistown Persistency System. Это система, которая дает каждому объекту в модуле (кроме статик плейсов) уникальный идентификатор и возможность сохранять объект и держать на нем переменные в БД. После рестарта все объекты инициализируются информацией из БД, соответственно.
Это дает возможность сохранять изменения, произошедшие с объектами: содержимое магазинов, сундуков, убитые НПС, предметы на земле и лутбэги, которые не пропадают с рестартом и т.д.
Единственный минус такой глобальной системы - то, что при полном сохранении объекты уже загружаются из БД, а не из модуля, и традиционное обновление модуля сработает не всегда. Но я думаю это решить автоматической перепаковкой модуля последними объектами из БД.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Nov 13 2011, 10:55
Сообщение #5


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.
Прикрепленные файлы
Прикрепленный файл  placeablepal.png ( 22.39 килобайт ) Кол-во скачиваний: 33
Прикрепленный файл  npcpal.PNG ( 7.32 килобайт ) Кол-во скачиваний: 32
Прикрепленный файл  itempal.png ( 8.96 килобайт ) Кол-во скачиваний: 34
 
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Richard
сообщение Dec 12 2011, 17:05
Сообщение #6


Level 9
***

Класс: Клерик
Характер: Chaotic Evil
Раса: Человек



Привет) Приятно видеть старую гвардию еще при деле)))
Virusman, над чем ныне трудишься?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Talarasha
сообщение Dec 12 2011, 23:06
Сообщение #7


Level 6
**

Класс: Маг
Характер: Lawful Evil
Раса: Нежить



Цитата
Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.

И в самом деле полезная штука, я как-то увидел в модулях оригинала такое, тоже захотел, но не смог сделать. Наверное, надо бы добавить в FAQ по тулсету ссылку на гайд по этой теме.

Сообщение отредактировал Talarasha - Dec 12 2011, 23:06
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 17th July 2018 - 06:58