Автор: virusman Dec 15 2009, 18:11
Давно хотел написать об инструментах, которые мы используем в разработке Axistown 2. В некоторой степени это промежуточный итог того, чем я занимался в NWN последние несколько лет.
1. NWNX2
Штука, бесценная для любого шарда. С помощью NWNX можно сделать практически всё. Вот список основных плагинов:
- NWNX ODBC - соединение с базой данных MySQL/SQLite. Позволяет сохранять и забирать данные любых типов, включая объекты целиком.
- NWNX Events - добавляет новые http://nwn.virusman.ru/svn/nwnx2-linux/trunk/plugins/events/readme.txt для обработки скриптами.
- NWNX Chat - обработка чата. Аналогично нему сделали событие OnPlayerChat в 1.69. Но этот плагин всё равно мощнее, чем встроенное событие.
- NWNX Fixes - некоторые твики (например, для сохранения переменных при продаже предмета или для возможности инициации диалога в режиме скрытности)
- NWNX Functions / NWNX Funcs - два плагина со схожим функционалом. Добавляют множество http://nwn.virusman.ru/svn/nwnx2-linux/trunk/plugins/funcs/nwnx_funcs.nss
- 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-файлов: один с шаблонами для палитры, остальные - в соответствии с тем, как всё распределено в БД.
http://img682.imageshack.us/i/hakcompiler.jpg/
Автор: Melshin Dec 16 2009, 07:14
Еще бы NWNx 4 все это умел... *Завидует*
Автор: Laajin Oct 16 2010, 18:41
Предпочтение все же в пользу линукса почему то)
Автор: virusman Oct 24 2010, 11:05
Спроектировал архитектуру системы Axistown Persistency System. Это система, которая дает каждому объекту в модуле (кроме статик плейсов) уникальный идентификатор и возможность сохранять объект и держать на нем переменные в БД. После рестарта все объекты инициализируются информацией из БД, соответственно.
Это дает возможность сохранять изменения, произошедшие с объектами: содержимое магазинов, сундуков, убитые НПС, предметы на земле и лутбэги, которые не пропадают с рестартом и т.д.
Единственный минус такой глобальной системы - то, что при полном сохранении объекты уже загружаются из БД, а не из модуля, и традиционное обновление модуля сработает не всегда. Но я думаю это решить автоматической перепаковкой модуля последними объектами из БД.
Автор: virusman Nov 13 2011, 10:55
Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.
Автор: Richard Dec 12 2011, 17:05
Привет) Приятно видеть старую гвардию еще при деле)))
Virusman, над чем ныне трудишься?
Автор: Talarasha Dec 12 2011, 23:06
Цитата
Не все вспоминают о том, что в кастомную палитру можно добавлять свои разделы, а зря. Это может сильно упростить жизнь мапперам, ДМам и разработчикам.
И в самом деле полезная штука, я как-то увидел в модулях оригинала такое, тоже захотел, но не смог сделать. Наверное, надо бы добавить в http://www.city-of-masters.ru/forums/index.php?showtopic=867 по тулсету ссылку на http://www.tbotr.net/modules.php?mod=Forums&req=posts&topicid=82 по этой теме.