© Hummel009, 2023 — 2025 |
---|
LOTR WikiGen — аддон к моду LOTR, целью которого является вывод всей информации о моде LOTR/GOT-подобной архитектуры в виде файла XML, предназначенного для импорта на MediaWiki. Создатель — Hummel009.
История[]
Изначально, в 2023 году, мод являлся частью мода «Игра престолов», но впоследствии был портирован для LOTR и стал аддоном. В 2024 году вся вики была пересоздана при помощи этого аддона, став полной, актуальной и точной.
Использование[]
Генерация сайта MediaWiki[]
Чтобы сгенерировать первую и основную часть информации, войдите в игру и введите команду "/db xml". Так вы получите файл *.xml в директории игры (.minecraft/hummel/*.xml). Этот файл можно импортировать на MediaWiki. Пример хорошего бесплатного хостинга MediaWiki - Fandom. В итоге будет сгенерировано несколько сотен статей на том языке, который был у вас в игре.
Чтобы статьи заработали и начали отображать информацию, вам нужно скопировать и отредактировать под себя 9 шаблонов MediaWiki:
- Template:Статья_Биом
- Template:Статья_Биом/Инфобокс
- Template:Статья_Фракция
- Template:Статья_Фракция/Инфобокс
- Template:Статья_Моб
- Template:Статья_Моб/Инфобокс
- Template:Статья_Дерево
- Template:Статья_Ископаемое
- Template:Статья_Структура
Не забывайте также и о подшаблонах, которые будут гореть красным цветом. Если у вас возникли вопросы, можете задавать их опытным участникам Википедии - они умеют обращаться с шаблонами.
Дополнение сайта MediaWiki[]
Вторая часть информации - это "/db tables". Так вы получите около 10 файлов в директории игры (.minecraft/hummel/*.txt), их можно использовать как код обычных таблиц в MediaWiki и размещать там, где посчитаете нужным. Главное - не забыть сделать заголовок и завершение таблицы.
Для загрузки изображений примените массовую загрузку ассетов мода.
В конечном итоге вы получите достаточно большой и хорошо заполненный сайт MediaWiki. Аддон можно приспособить, по сути, для любого сабмода LOTR.
Полезные побочные эффекты[]
Перед тем, как у вас сгенерируется информация, вы получите тонну ошибок, которые указывают на то, что ваш код не идеален. Отлов ошибок производится следующим образом: можно открыть в блокноте каждый из сгенерированных файлов и искать там строки с фрагментами "name", "title", "desc", "info", "null" и т.д. Строки с упомянутыми фрагментами в 90% указывают на баг в коде или отсутствие перевода.
Если же ваши файлы баз данных вовсе не создались, то, возможно, у вас в коде мода кроется NullPointerException. Самое время пройтись по папке .minecraft/logs и посмотреть, какие ошибки выдала команда базы данных.
Для адаптации к сабмодам LOTR необходимо через JD GUI скопировать методы регистрации в файлах LOTREntities и LOTRStructures и вставить их в файл LFGConfig в практически неизменном виде, переименовав методы регистрации на методы получения информации. Затем может потребоваться обновление импортов во всех файлах и запуск.
Архитектура[]
Алгоритмы[]
Генератор состоит из множества независимых модулей, каждый из которых получает свою долю информации и сливает её в общий «котёл» данных, являющийся файлом XML.
На данный момент модулей 60:
- Mineral-Biomes;
- Tree-Biomes;
- Structure-Biomes;
- Biome-Animals;
- Biome-Bandits;
- Biome-ConquestFactions;
- Biome-InvasionFactions;
- Biome-Minerals;
- Biome-Music;
- Biome-NPCs;
- Biome-Name;
- Biome-Rainfall;
- Biome-Structures;
- Biome-Temperature;
- Biome-Trees;
- Biome-Variants;
- Biome-VisitAchievement;
- Biome-Waypoints;
- Faction-Banners;
- Faction-Codename;
- Faction-ConquestBiomes;
- Faction-Enemies;
- Faction-Friends;
- Faction-InvasionBiomes;
- Faction-NPCs;
- Faction-Name;
- Faction-PledgeRank;
- Faction-Ranks;
- Faction-Region;
- Faction-ShieldsCapes;
- Faction-SpawnBiomes;
- Faction-WarCrimes;
- Faction-Waypoints;
- Entity-BannerBearer;
- Entity-Biomes;
- Entity-BuyPools;
- Entity-Faction;
- Entity-Farmhand;
- Entity-Health;
- Entity-HireAlignment;
- Entity-HirePrice;
- Entity-HirePricePledge;
- Entity-Hireable;
- Entity-ImmuneToFire;
- Entity-ImmuneToFrost;
- Entity-ImmuneToHeat;
- Entity-KillAchievement;
- Entity-KillAlignment;
- Entity-Marriage;
- Entity-Mercenary;
- Entity-Owners;
- Entity-RideableAnimal;
- Entity-RideableNPC;
- Entity-SellPools;
- Entity-SellUnitPools;
- Entity-Smith;
- Entity-SpawnsInDarkness;
- Entity-TargetSeeker;
- Entity-Tradeable;
- Entity-UnitTradeable;
В пределах алгоритма[]
Алгоритмы генерации бд-шаблонов состоят из двух частей: сохранение данных в структуру данных и вывод данных в виде шаблона. Структуры данных чаще всего представляют собой хэш-карты, где слева — объект, который должен быть описан, а справа — строка или набор строк, которые его описывают. Например, слева — биом Эребор, а справа — набор руд, которые там появляются.
Структуры данных заполняются, как только первое данное касательно объекта будет получено. Например, как только попадается первая руда в Эреборе, в структуре данных заводится объект «Эребор» и соответствующее ему данное. При получении новых данных они добавляются в уже существующий список. Так у Эребора появляется много руд.
Если данных нет, то и объекта нет. Если в биоме руды не нашлись, то биом не вносится в структуру данных.
Дефолты и преамбулы[]
Чтобы вики не выглядела набором заголовков и списков, есть смысл добавлять преамбулы к каждому списку. Например, объяснять, что Y1 и Y2 в каждом пункте данных о рудах — это высота, от и до которой руда появляется. Преамбулы добавляются во вторых частях алгоритма, где идёт вывод данных в нужном виде.
Важно понимать, что преамбулы должны отличаться для случаев, когда данные есть и когда данных нет. Следуя из раздела выше, данных нет тогда, когда нет объекта, и наоборот. То есть, такой объект попросту не присутствует в шаблоне и информация о нём не выводится.
Чтобы раздел не был и без данных, и без преамбулы, в шаблоны MediaWiki следует проставлять значение default. Оно проставляется между двумя половинами алгоритма — до вывода данных. Пример: все биомы, где не нашлись руды и которые не присутствуют в шаблоне руд, берут значение по умолчанию — «Преамбула «Руд нет»».
Дополнения |
---|