Перейти до змісту

Ігри — Сторона даних

Як описи ігор було стандартизовано та зроблено динамічнішими за допомогою метаданих та плагінів Obsidian.

Коли йдеться про керування контентом, ключовим є послідовність. Для першого великого розділу цього проєкту я взявся за ігри — приблизно 170 з них, кожна зі своїм унікальним форматом, стилем та доступністю. Проблема? Багато з цих описів покладалися на жорстко закодовані, статичні посилання, що робило додавання нових ігор або зміну структури справжнім коштом.

Тож я засукав рукави і взявся до роботи.

Крок 1: Єдиний формат

Першочерговим завданням було встановити послідовний формат для всіх описів ігор. Я черпав натхнення з "Tasifan Spielebuch" (Книги ігор Tasifan) — добре організованого ресурсу з описами ігор. Щоб зробити його ще зручнішим для користувачів, я додав короткі резюме, щоб усі основні деталі були видимі з першого погляду — навіть у попередньому перегляді.

Але справжньою зміною правил гри стали метадані.

Крок 2: Магія метаданих

Тепер уся ключова інформація — кількість учасників, матеріали, тривалість тощо — зберігається як метадані у верхній частині кожного файлу Markdown у форматі YAML (або frontmatter). Це не тільки забезпечує порядок, але й робить дані придатними для повторного використання в системі.

Щоб полегшити пошук потрібної гри, я впровадив просту, але ефективну логіку:
1. Виберіть категорію: Який тип гри ви шукаєте? Гра для заспокоєння? Гра в квача? Щось для тімбілдингу? Я створив набір категорій для початку, але їх можна коригувати або розширювати за потреби.
2. Перегляньте таблицю: Після вибору категорії ви побачите таблицю з усіма іграми, що відповідають їй. Таблицю можна сортувати — просто клацніть заголовки, щоб організувати за тривалістю, складністю чи іншими критеріями.

І ось у чому сіль: багато ігор з'являються в кількох категоріях, тому ви ніколи не обмежені лише одним способом пошуку того, що вам потрібно.

Не зовсім динамічні таблиці

Справжня магія відбувається завдяки двом плагінам Obsidian: Dataview та Dataview Serializer.

Dataview дозволяє мені створювати динамічні списки та таблиці за допомогою запитів, схожих на бази даних. Але є нюанс: ці таблиці працюють лише в Obsidian, оскільки базові файли Markdown не змінюються.

Тут на допомогу приходить Dataview Serializer. Цей плагін перетворює ці динамічні таблиці на статичний формат Markdown і записує їх безпосередньо у файл. Коли сайт збирається за допомогою MkDocs, таблиці стають статичними, але фактично були згенеровані динамічно офлайн.

Ці запити можуть бути досить складними, дозволяючи мені шукати або відображати конкретні частини вікі — наприклад, усі описи ігор або статті, написані певним автором. І оскільки вони автоматично оновлюються (через крок серіалізації), додавання нової інформації та побудова навігаційної структури стає легким завданням.

Але це не завжди сонячно і безхмарно. Процес не є повністю автоматичним. Dataview Serializer може перезаписати файл лише тоді, коли він відкритий в Obsidian. Наразі це керовано — я позначив кожну сторінку з динамічною таблицею чи списком, що полегшує їх перегляд. Але якщо кількість таких сторінок значно зросте, мені, можливо, доведеться переглянути підхід.

Інструменти та мовні моделі

Оригінальні описи ігор були різноманітними за форматом та якістю. Щоб оптимізувати процес, я звернувся до мовних моделей (LLM). Я створив спеціальний запит із прикладами форматування, щоб переконатися, що сам контент не був змінений (без непотрібних переписувань). Однак я вручну переглядав кожен результат і вносив невеликі корективи за потреби.

Висновок: при правильному використанні ці інструменти є неймовірно потужними. Ключ до успіху — бути точним і цілеспрямованим у формулюванні завдань.

Останні зміни стосуються переважно форматування — того, як представлена інформація та описи ігор. Однак метадані вводилися вручну. Оскільки мені все одно довелося все перевіряти, в цьому випадку ручна робота була швидшою.

Це повільний процес, хоча. Працюючи неповний робочий день, я встигаю обробляти приблизно 10-15 ігор на день. Прогрес стабільний, але це займе деякий час.

Майбутні виклики

Однією з потенційних перешкод є переклади. Запити на пошук потрібно буде адаптувати для пошуку версій ігор або тегів конкретною мовою. Наразі це можна робити вручну, але якщо система розростеться, може знадобитися автоматизація.

Переклад — це складна тема, і я заглиблюся в неї іншим разом.

Навіщо це все?

Коротка відповідь? Масштабованість.

Ця система розроблена для зростання. Стандартизувавши формат, використовуючи метадані та динамічні інструменти, я створив основу, яка може впоратися з більшим обсягом контенту, не стаючи громіздкою.

Що ще нового?

Функція пошуку отримала кілька оновлень:
- Автодоповнення: Під час введення тексту пошук пропонує запити, які дають найбільше результатів. Це не базується на поведінці користувачів — ми не відстежуємо пошукові запити, — а на статичному індексі пошуку, згенерованому під час збірки сайту.
- Збережені пошукові запити: Клацніть невелику піктограму поруч із полем пошуку, і ваш запит (і результати) будуть збережені в URL. Додайте його до закладок, і ви щоразу отримуватимете ті самі результати.

Це невелика функція, але вона може стати неймовірно корисною, оскільки вікі розширюватиметься та охоплюватиме різноманітніші теми.