Энциклопедия:Портал сообщества

Материал из Ролевая энциклопедии
Версия от 12:29, 10 апреля 2024; Demetrius (обсуждение | вклад) (Новая тема: Другой интерфейс для категорий языка)
Перейти к: навигация, поиск
Архив

Кто все эти люди?

Сегодня что, день нашествия клоунов-космодесантников-убийц? О_о

Я имею в виду вот это и вот это. Дядя Радагаст, ты, кажется, единственный, кто обладает правом удалять статьи... Vantala (обсуждение) 22:12, июня 3, 2013 (UTC)

WAHA WIKI

сегодня случайным образом потыкал по разным ссылкам на нашей заглавной странице и обнаружил очень хорошего качества соседнюю вики про вархаммер на русском языке. вот, например, зацените бестиарий: w:c:ru.waha:Категория:Бестиарий. будем потихоньку оттуда импортировать и внедрять себе? --Radaghast Kary (обсуждение) 08:57, апреля 1, 2015 (UTC)

Лингвистическое наблюдение

А вы замечали, что сокращение "вн. ссылка" может быть с равной вероятностью прочтено как "внешняя ссылка" и как "внутренняя ссылка"? Я ни на чём не настаиваю, просто использование этого сокращения, мне кажется, способно порождать путаницу... --Vantala (обсуждение) 16:47, апреля 19, 2015 (UTC)

б. исполнено! --Radaghast Kary (обсуждение) 20:45, апреля 19, 2015 (UTC)

Ещё про HTTPS

Ещё одна причина, почему нам нужен HTTPS: если в Firefox'е использовать Private Browsing, Firefox принудительно перенаправляет всё, что можно, на https. В нашем случае получается, что открывается не то, что надо. Demetrius (обсуждение) 12:16, 19 января 2024 (MSK)

Похоже, иметь на одном сервере, одном ip и одном порту несколько сайтов с разными сертификатами — вообще отдельная проблема, которую нам создали добрые силы интернета 3.0. Это не так просто как изменить пару строчек в конфиге и получить результат. На выходных я попробую одно решение, но если нет — то даже не знаю. EvilCat (обсуждение) 15:24, 19 января 2024 (MSK)
Ох. Печально. Придётся превращаться в wiki.rpgverse.pokeliga.com. 🙃 Если что, готов оплачивать реверс-прокси или какое-то ещё решение. Demetrius (обсуждение) 15:36, 19 января 2024 (MSK)


Map-making games?

Писал про Corny Groń и задумался, нужны ли нам (а) статья про механику рисования карт, (б) категория для игр с такой механикой.

Кроме Чёрного граня из игр, где такая механика есть, можно вспомнить:

  • Игры от BlackwellWriter: Delve, Rise, Umbra
  • Предшественник Чёрного граня Dark Fort (не нахожу ссылки, где его скачать/купить, вроде его на Кикстартере по Мёрк Борью раздавали)
  • Старые версии D&D и ретроклоны (например, вот про эту механику в OSE SRD)

Если заводить такую категорию / статью, то как её назвать. «Игры с созданием карты»? «Картографические игры»? «Рисование карты»? Demetrius (обсуждение) 11:32, 21 января 2024 (MSK)

Кстати, записывать ли сюда системы, где карта составляется из игральных карт? (Carta system, WasteCrawl) Это вариация той же механики — или это другая механика?

И что делать с рисованием карт мастером заранее. Это вариация рисования карт игроками или это совсем другое? А если не заранее, а по ходу игры? Demetrius (обсуждение) 16:10, 21 января 2024 (MSK)

Как более эксперт чем я по таким играм, думаю, ты сам можешь ответить на эти вопросы %) Мне было бы интересно прочитать об этом. Я знаю про journaling games, а вот про map-making games - не знаю.
Но что касается рисования карт мастером заранее или по ходу - это тогда все данжен-каулеры и гекс-краулеры туда пойдут. Не знаю, наверное нужно просто посмотреть на использование этого термина, и там будет ответ. EvilCat (обсуждение) 09:21, 22 января 2024 (MSK)
У меня проблема с определением границ явления. У меня есть:
  1. Игры, где тебе генерируется карта и ты её рисуешь («поляна, 3 выхода, на ней волк»)
  2. Генераторы карт, подозрительно похожие на такие игры («комната 3x5, 2 выхода, в ней слабые противники»), но предполагаемые к использованию перед игрой, а не во время
  3. Игры, где тебе дана колода карт NxM в виде карты и ты ее раскрываешь (большинство по Carta System) — это ещё похоже на рисование колоды, т.к. у тебя карты расположены в географическом порядке
  4. Игры, где подземелье генерируется колодой карт, но колода отражает не физическое расположение игр, а порядок посещения их игроком (правила с колодой карт из Dungeon Smashers) — это уже не похоже на рисование карт‚ но ещё похоже на открывание колоды в Carta System
  5. Игры, где тебе дана заранее заданная карта и ты на ней что-то помечаешь (таких очень много... например, Запретные земли)
  6. Игры, где игрок рисует заранее нарисованную карту по словесному описанию мастера (старые D&D)
И я не понимаю, где границы между ними! Я склонен разбить на самые маленькие механики («генерация карты по локациям/комнатам», «генерация карты колодой карт», «генерация карты броском кубиков») и в них описывать как применение ГМами, так и применение в играх («как основная механика»). Но не уверен.
«это тогда все данжен-каулеры и гекс-краулеры туда пойдут» — возможно, они и должны туда пойти? Многие игры с рисованием карт прямо пишут «а ещё вы можете использовать наши правила, чтобы сгенерировать карту для других игр»...
Вообще, у меня в целом проблема с определением таких границ. Например, книги для соло-игроков и книги для ГМов часто содержат примерно одинаковые случайные таблицы, а вся разница — в предисловии.
Ещё здесь мы упираемся в идею, что вообще такое игра, где её границы? Когда мастер рисует карту заранее, это ещё не игра? А когда человек рисует такую же карту по таким же принципам, но ради самой себя, это уже игра? Я не понимаю... :( Demetrius (обсуждение) 12:16, 22 января 2024 (MSK)
Насколько я понимаю, термин реально существующий... Для начала можно написать статью об этом термине - кто его употребляет, что подразумевают, какие свои игры они к таким отнесли и какие уже существовавшие...
После этого мы можем подхватить термин и использовать его самостоятельно, понимая все тонкости. Например, так было с термином "animal fantasy" на ВикиФуре: жанр как бы есть, но его поклонники не организованы, поэтому термин не вполне существует. Изучение его истории помогло нам понять, что он также используется для классификации детских сказок, но это скорее совпадение. Мы вывели критерии и иеперь категоризием так книги самостоятельно, не опираясь на вторичные источники. EvilCat (обсуждение) 16:55, 22 января 2024 (MSK)

Материалы из Википедии

У нас есть какой-то шаблон для отмечания материалов, переведённых из Википедии? Я подумываю позаимствовать статью Wolves of Freeport, я по любому не напишу лучше, чем у них. Demetrius (обсуждение) 18:21, 1 февраля 2024 (MSK)

Ты не поверишь… {{Википедия}}
P.S. Кажется, пространство «Энциклопедия» мы импортировать не будем, там что правки можно не отмечать. EvilCat (обсуждение) 21:40, 1 февраля 2024 (MSK)
Блин, слона и не заметил. Спасибо!

Версия MediaWiki

На выходных попробую обновить версию MW до актуальной. Это дело немаленькое: нужно всё забэкапить лишний раз, проверить совместимость плагинов и т. д. Не гарантирую, что всё получится или что время на выходных не денется куда-нибудь внезапно, но надо попробовать, тогда можно будет спокойно ставить свежие версии плагинов (видео, Math, Lua, даже Semantic Media Wiki при желании). EvilCat (обсуждение) 12:17, 6 февраля 2024 (MSK)

Большое спасибо! Знаю, что это сложно. Demetrius (обсуждение) 16:10, 6 февраля 2024 (MSK)

Плохие новости: без переезда на свежий CentOS обновиться не получится :\

Хорошие новости: для переезда около двух лет назад не хватало совместимости некоторых нужных свежих пакетов друг с другом, и к счастью за два года они договорились. Для переезда готово всё, нужно только несколько свободных выходных. Наверное, следующие и послеследующие, если ничего не случится. EvilCat (обсуждение) 12:15, 11 февраля 2024 (MSK)

Возможная проблема с аттрибуцией для удалённых статей Википедии

Когда в Википедии удаляют статью, удаляется и её история. Но если мы сохраняем статью (например, Неттерсгеймский договор), то у нас таким образом материал без атрибуции. Потенциальное нарушение T_T (хотя, наверное, это как abandonware; если автор появится, мы с радостью его упомянем).

Что с этим делать? Видимо, когда используешь материалы Википедии, надо дублировать список авторов на странице обсуждения? (Есть ли какой-то простой способ составить такой список?) Или это стоит делать только для статей с высокой вероятностью удаления? Demetrius (обсуждение) 19:36, 25 февраля 2024 (MSK)

Другой интерфейс для категорий языка

Предлагаю сделать другой интерфейс для категорий по языку. Сейчас они занимают слишком много места (см. пример в статье Cairn (OSR)).

Предлагаю языковые категории скрытымь из основного списка (возможно, как Категория:Страницы с оригинальным материалом RPGverse), а интерфейс для категорий добавить через тему или через JS.

Через тему правильнее, через JS легче. JS выглядел бы как-то так (на всякий случай на ES5, у нас вроде ES5 используется?):

// Этот код нужно запускать после того, как страница загрузится
// (напр., через document.addEventListener('DOMContentLoaded, ...))
(function () {
  var LANGUAGE_CATEGORY_NAME_REGEXP = /^Ролевые (материалы|системы) (на .*языке.*|без английской версии)$/;
  var CATEGORY_NAMESPACE_ID = 14;
  var PARENT_DIV_ID = 'rpgverse-lang-catlinks';
  var GENERALIZING_CAT_NAME = 'Ролевые материалы по языку';
  var GENERALIZING_CAT_TITLE = 'По языку';
  var COLON_TEXT = ': ';
  var CATLINKS_ELEMENT_ID = 'catlinks'
  var NORMAL_CAT_LINKS_PARENT_ID = 'mw-normal-catlinks'
  
  /**
   * Превращает полное имя категории («Ролевые материалы на китайском языке»)
   * в краткое («на китайском»).
   * 
   * Теряет различие между ссылками на категории («Ролевые материалы на X языке»
   * и «Ролевые системы на X языке»).
   * 
   * @param {string} fullName Полное имя (без префикса пространства имён)
   * @returns {string} Краткое имя
   */
  function makeShortCategoryText(fullName) {
    return fullName.replace(/^Ролевые (материалы|системы) /, '').replace(/ языке$/, '')
  }

  /**
   * Получает список категорий текущей страницы как массив объектов со
   * свойствами name (имя категории без пространства имён)
   * и shortName (текст вроде «на N языке»)
   *
   * @returns {{name: string; shortName: text}[]}
   */
  function getLanguageCategories() {
    var materialsByLanguage = mw.config.get( 'wgCategories' )
      .filter(function (catName) {
        return catName.match(LANGUAGE_CATEGORY_NAME_REGEXP)
      });
    var results = [];
    materialsByLanguage.forEach(function (name) {
      results.push({
        name: name,
        shortName: makeShortCategoryText(name)
      });
    })
    return results;
  }
  
  /**
   * @param {string} name Название категории (без префикса пространства имён)
   * @param {string} title Текст ссылки
   * @return {HTMLElement} Элемент <a> со ссылкой на категорию
   */
  function makeCategoryLink(name, title) {
    var articlePath = mw.config.get('wgArticlePath');
    var categoryNamespace = mw.config.get('wgFormattedNamespaces')[CATEGORY_NAMESPACE_ID];
    var qualifiedName = categoryNamespace + ':' + name;
    
    var className = '';
    if (document.querySelector) {
      // TODO: этот код не будет работать на старых браузерах, там все ссылки будут синие
      // Возможно, стоит либо переписать всё на ES6 (если не нужна), либо на jQuery (если нужна)
      var existingLink = document.querySelector('[title*="' + qualifiedName.replace(/["\\]/g, '\\$&') + '"]');
      if (existingLink && existingLink.title.indexOf(qualifiedName) === 0) {
        className = existingLink.className;
      }
    }
        
    var element = document.createElement('a');
    element.href = articlePath.replace('$1', qualifiedName);
    element.title = qualifiedName;
    element.innerText = title;
    element.className = className;
    return element;
  }
  
  /**
   *
   * @param {{name: string; shortName: text}[]} categories
   * @returns {HTMLElement} Элемент <ul>
   */
  function makeLanguageCategoriesList(categories) {
    var listElement = document.createElement('ul');
    
    categories.forEach(function (category) {
      var itemElement = document.createElement('li');
      itemElement.appendChild(makeCategoryLink(category.name, category.shortName));    
      listElement.appendChild(itemElement);
    });
    return listElement;
  }

  /**
   * @param {{name: string; shortName: text}[]} categories
   * @returns {HTMLElement} Элемент <div>
   */
  function makeLanguageCategoriesDiv(categories) {
    var parentElement = document.createElement('div');
    parentElement.id = PARENT_DIV_ID;
    
    parentElement.appendChild(makeCategoryLink(GENERALIZING_CAT_NAME, GENERALIZING_CAT_TITLE));
    parentElement.appendChild(document.createTextNode(COLON_TEXT));
    parentElement.appendChild(makeLanguageCategoriesList(categories));
    return parentElement;
  }
  
  /**
   * Скрывает языковые категории из основного списка.
   *
   * TODO: может, лучше скрыть категории через встроенный механизм MediaWiki?
   *
   * @param {{name: string; shortName: text}[]} categories
   */
  function hideLanguageCategoriesFromNormalCatLinks(categories) {
    var categoryNamespace = mw.config.get('wgFormattedNamespaces')[CATEGORY_NAMESPACE_ID];
    var normalCatLinksParent = document.getElementById(NORMAL_CAT_LINKS_PARENT_ID);
    
    // TODO: этот код не будет работать на старых браузерах, нам нужна их поддержка?
    // Возможно, стоит либо переписать всё на ES6 (если не нужна), либо на jQuery (если нужна)
    if (!normalCatLinksParent.querySelector) {
     // degrade gracefully на старых браузерах (кто-то ими ещё пользуется? там полинтернета поломано)
      return
    }
    
    categories.forEach(function (category) {
      var qualifiedName = categoryNamespace + ':' + category.name;
      var existingLink = normalCatLinksParent.querySelector('[title*="' + qualifiedName.replace(/["\\]/g, '\\$&') + '"]');
      if (existingLink && existingLink.title.indexOf(qualifiedName) === 0) {
        existingLink.style.display = 'none';
      }
    });
  }

  /**
   * Размещает список категорий по языку на странице.
   *
   * @param {{name: string; shortName: text}[]} categories
   */
  function placeLinksByLanguageOnPage(categories) {
    var catlinksElement = document.getElementById(CATLINKS_ELEMENT_ID);
    if (!catlinksElement) {
      console.error('Cannot find element with ID ' + CATLINKS_ELEMENT_ID);
      return
    }
    
    if (categories.length < 1) {
      return
    }
    catlinksElement.appendChild(makeLanguageCategoriesDiv(categories))
  }
  
  var categories = getLanguageCategories()
  placeLinksByLanguageOnPage(categories);
  hideLanguageCategoriesFromNormalCatLinks(categories)
})()

Demetrius (обсуждение) 12:28, 10 апреля 2024 (MSK)