Discourse ゲーミフィケーション

<div data-theme-toc="true"></div>
:discourse2: 概要
:open_book: インストールガイド
:test_tube: デモ

機能

Discourse は標準でゲーミフィケーション機能(バッジ、信頼レベル)を備えていますが、コミュニティによってはさらにレベルアップしたい場合があります。そこで登場するのが GitHub - discourse/discourse-gamification です。

このプラグインを使用すると、管理者はコミュニティ参加によってポイントが付与されるコミュニティスコアリングコンテストを簡単に作成および調整できます。

ポイントは、その日のイベントに対して1時間ごとに自動的に更新され、スコアは1日1回、過去10日間のスコアを再計算します。

Cheers

ユーザーは、コミュニティで特定の操作を実行することで「Cheers」を獲得します。各ユーザーのCheersスコアは、ユーザーカード、ユーザープロフィールに表示され、ユーザーディレクトリで有効にすることができます。

プラグインは気に入ったが、「cheers」という名前がコミュニティに最適ではない場合、Discourse のすべてのテキストをカスタマイズする を使用して、任意の名称に変更できます。

リーダーボード

管理者は複数のリーダーボードを作成でき、それぞれにカスタムの以下の設定が可能です。

  • 開始日
  • 終了日
  • 競合するユーザー
  • リーダーボードのプライバシー

デフォルトでは、/leaderboard にデフォルトのリーダーボードが用意されており、スコアが付与され始めた最初の日からのすべてのユーザーが表示されます。

デモは Discourse Meta で確認できます。

スコアリング対象

現在、以下のイベントで Cheers が付与されます。

  • 毎日の訪問
  • 受諾されたフラグ
  • 与えられたいいね
  • 受け取ったいいね
  • 作成された投稿
  • 読まれた投稿
  • 受諾された解決策(Discourse Solved (Accepted answer plugin) が必要)
  • 読んだ時間
  • 作成されたトピック
  • 受諾されたユーザー招待

今後のスコアリング対象については、ロードマップ を参照してください。

スコアのバックフィル

UI の「スコアの再計算」ボタンを使用して、履歴スコアを計算するバックフィルを実行できます。これは /admin/plugins/gamification ページにあります。

これは、スコアリング対象や対象となるスコアリングカテゴリを変更した場合に、リーダーボードを再計算するためにも使用できます。1日に最大5回までリスコアを生成でき、期間を選択(またはカスタム設定)できます。

設定

グローバルなカスタマイズには以下が含まれます。

  • 各アクションのスコア乗数
  • ポイントを獲得できるカテゴリの制限
  • プラグインの有効化と無効化

これらのプラグインレベルの設定は、/admin/site_settings/category/plugins?filter=plugin%3Adiscourse-gamification にあります。

リーダーボードを作成、削除、更新するには、管理者は /admin/plugins/gamification にアクセスできます。

ウィジェットとしての使用

これは、Right Sidebar Blocks theme component 内の小さな形式のウィジェットとしても表示できます。詳細についてはそちらを参照してください。

スコアに基づくバッジ

Enable Badge SQL を使用して、ゲーミフィケーションスコアに基づく自動バッジを設定できます。

ユーザーが9000以上のCheersを持っている場合のバッジの例を以下に示します。

SELECT user_id, current_timestamp AS granted_at
FROM gamification_scores
WHERE (:backfill OR user_id IN (:user_ids))
GROUP BY 1
HAVING SUM(score) > 9000

変更履歴

  • 2022-05-02T03:00:00Z - 公開リリース
  • 2022-05-10T05:00:00Z - 最近の変更をロードマップに追加

ロードマップ

(おおよその順序)

  • リーダーボードが prioritize usernames in ux の無効化を尊重するようにする

  • リーダーボードの表彰台で高解像度のアバターを使用する

  • バッジごとのカスタムスコアリングを追加する

  • リアクションごとのスコアリングを追加する(Discourse Reactions Beyond Likes が必要)

  • チャットイベントのスコアリングを追加する(Discourse Chat が必要)

  • 投票イベントのスコアリングを追加する(投票の作成、投票への参加)

  • メディアイベントのスコアリングを追加する(画像の投稿、動画の投稿、oneboxの投稿)

実装済み:

  • カスタムスコア列のユーザーディレクトリでi18nテーブルタイトルを修正
  • ステージングユーザーを無視
  • 匿名化されたユーザーを無視(メールアドレスが @anonymized.invalid に一致)
  • リーダーボード編集フォームのスタイル設定
  • リーダーボードの「あなた」リンクがフローティングヘッダーに対応するために、より大きなオフセットを必要とする..
  • 自分のユーザーの位置が100を超える場合に、リーダーボードで自分のユーザーのハイライトが機能しない問題を修正
  • ユーザーカード/プロフィールのCheersスコアにi18nの桁区切りを追加
  • リーダーボードに期間フィルターを追加
  • リーダーボード設定にデフォルトの期間フィルターを追加
  • リーダーボード設定に excluded_groups_ids を追加
  • 管理者がユーザーに任意のポイントを付与/削除できるようにし、Discourse外のスコアリングイベントとの統合を可能にする
  • スコアをクリックするとリーダーボードにリンクするようにする(ユーザープロフィールとユーザーカードの両方)

:discourse2: 私たちがホストしていますか?このプラグインは、当社の Business および Enterprise プランで利用可能です Gamification | Discourse - Civilized Discussion

「いいね!」 112