@jjlmoya/utils-tabletop 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/package.json +65 -0
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/TabletopCategorySEO.astro +14 -0
  4. package/src/category/i18n/de.ts +27 -0
  5. package/src/category/i18n/en.ts +27 -0
  6. package/src/category/i18n/es.ts +27 -0
  7. package/src/category/i18n/fr.ts +27 -0
  8. package/src/category/i18n/id.ts +27 -0
  9. package/src/category/i18n/it.ts +27 -0
  10. package/src/category/i18n/ja.ts +27 -0
  11. package/src/category/i18n/ko.ts +27 -0
  12. package/src/category/i18n/nl.ts +27 -0
  13. package/src/category/i18n/pl.ts +27 -0
  14. package/src/category/i18n/pt.ts +27 -0
  15. package/src/category/i18n/ru.ts +27 -0
  16. package/src/category/i18n/sv.ts +27 -0
  17. package/src/category/i18n/tr.ts +27 -0
  18. package/src/category/i18n/zh.ts +27 -0
  19. package/src/category/index.ts +27 -0
  20. package/src/components/PreviewNavSidebar.astro +116 -0
  21. package/src/components/PreviewToolbar.astro +143 -0
  22. package/src/data.ts +10 -0
  23. package/src/entries.ts +10 -0
  24. package/src/env.d.ts +5 -0
  25. package/src/index.ts +21 -0
  26. package/src/layouts/PreviewLayout.astro +117 -0
  27. package/src/pages/[locale]/[slug].astro +161 -0
  28. package/src/pages/[locale].astro +251 -0
  29. package/src/pages/index.astro +4 -0
  30. package/src/tests/faq_count.test.ts +18 -0
  31. package/src/tests/i18n_coverage.test.ts +36 -0
  32. package/src/tests/locale_completeness.test.ts +29 -0
  33. package/src/tests/mocks/astro_mock.js +2 -0
  34. package/src/tests/no_en_dash.test.ts +41 -0
  35. package/src/tests/no_h1_in_components.test.ts +48 -0
  36. package/src/tests/schemas_fulfillment.test.ts +23 -0
  37. package/src/tests/seo_length.test.ts +22 -0
  38. package/src/tests/shared-test-helpers.ts +56 -0
  39. package/src/tests/slug_language_code_format.test.ts +23 -0
  40. package/src/tests/slug_uniqueness.test.ts +81 -0
  41. package/src/tests/title_quality.test.ts +55 -0
  42. package/src/tests/tool_exports.test.ts +34 -0
  43. package/src/tests/tool_validation.test.ts +16 -0
  44. package/src/tool/board-game-timer/bibliography.astro +16 -0
  45. package/src/tool/board-game-timer/bibliography.ts +12 -0
  46. package/src/tool/board-game-timer/board-game-timer.css +1615 -0
  47. package/src/tool/board-game-timer/client.ts +17 -0
  48. package/src/tool/board-game-timer/component.astro +22 -0
  49. package/src/tool/board-game-timer/components/DuelTimer.astro +75 -0
  50. package/src/tool/board-game-timer/components/MultiplayerTimer.astro +58 -0
  51. package/src/tool/board-game-timer/components/SetupPanel.astro +155 -0
  52. package/src/tool/board-game-timer/components/StatsModal.astro +52 -0
  53. package/src/tool/board-game-timer/entry.ts +76 -0
  54. package/src/tool/board-game-timer/i18n/de.ts +303 -0
  55. package/src/tool/board-game-timer/i18n/en.ts +304 -0
  56. package/src/tool/board-game-timer/i18n/es.ts +303 -0
  57. package/src/tool/board-game-timer/i18n/fr.ts +303 -0
  58. package/src/tool/board-game-timer/i18n/id.ts +303 -0
  59. package/src/tool/board-game-timer/i18n/it.ts +303 -0
  60. package/src/tool/board-game-timer/i18n/ja.ts +306 -0
  61. package/src/tool/board-game-timer/i18n/ko.ts +303 -0
  62. package/src/tool/board-game-timer/i18n/nl.ts +303 -0
  63. package/src/tool/board-game-timer/i18n/pl.ts +303 -0
  64. package/src/tool/board-game-timer/i18n/pt.ts +303 -0
  65. package/src/tool/board-game-timer/i18n/ru.ts +303 -0
  66. package/src/tool/board-game-timer/i18n/sv.ts +303 -0
  67. package/src/tool/board-game-timer/i18n/tr.ts +303 -0
  68. package/src/tool/board-game-timer/i18n/zh.ts +303 -0
  69. package/src/tool/board-game-timer/index.ts +9 -0
  70. package/src/tool/board-game-timer/logic.test.ts +282 -0
  71. package/src/tool/board-game-timer/logic.ts +6 -0
  72. package/src/tool/board-game-timer/modules/ColorHelper.ts +26 -0
  73. package/src/tool/board-game-timer/modules/DuelViewManager.ts +120 -0
  74. package/src/tool/board-game-timer/modules/FormatHelper.ts +12 -0
  75. package/src/tool/board-game-timer/modules/GameRunner.ts +136 -0
  76. package/src/tool/board-game-timer/modules/GameState.ts +48 -0
  77. package/src/tool/board-game-timer/modules/MultiplayerViewManager.ts +163 -0
  78. package/src/tool/board-game-timer/modules/SetupPanelManager.ts +209 -0
  79. package/src/tool/board-game-timer/modules/SoundManager.ts +109 -0
  80. package/src/tool/board-game-timer/modules/SpeechManager.ts +1 -0
  81. package/src/tool/board-game-timer/modules/StatsManager.ts +87 -0
  82. package/src/tool/board-game-timer/modules/StatsModalManager.ts +74 -0
  83. package/src/tool/board-game-timer/modules/TimerEngine.ts +175 -0
  84. package/src/tool/board-game-timer/modules/TimerEngineBase.ts +49 -0
  85. package/src/tool/board-game-timer/modules/TimerEngineClock.ts +127 -0
  86. package/src/tool/board-game-timer/modules/TimerStateHelper.ts +55 -0
  87. package/src/tool/board-game-timer/modules/particles.ts +108 -0
  88. package/src/tool/board-game-timer/seo.astro +16 -0
  89. package/src/tool/board-game-timer/types.ts +97 -0
  90. package/src/tool/dice-roller-simulator/bibliography.astro +16 -0
  91. package/src/tool/dice-roller-simulator/bibliography.ts +12 -0
  92. package/src/tool/dice-roller-simulator/client.ts +273 -0
  93. package/src/tool/dice-roller-simulator/component.astro +75 -0
  94. package/src/tool/dice-roller-simulator/components/DiceGrid.astro +55 -0
  95. package/src/tool/dice-roller-simulator/components/RollHistorySection.astro +26 -0
  96. package/src/tool/dice-roller-simulator/components/RollResultBanner.astro +10 -0
  97. package/src/tool/dice-roller-simulator/components/StatsPanel.astro +36 -0
  98. package/src/tool/dice-roller-simulator/dice-roller-simulator.css +1319 -0
  99. package/src/tool/dice-roller-simulator/entry.ts +39 -0
  100. package/src/tool/dice-roller-simulator/i18n/de.ts +305 -0
  101. package/src/tool/dice-roller-simulator/i18n/en.ts +305 -0
  102. package/src/tool/dice-roller-simulator/i18n/es.ts +305 -0
  103. package/src/tool/dice-roller-simulator/i18n/fr.ts +305 -0
  104. package/src/tool/dice-roller-simulator/i18n/id.ts +305 -0
  105. package/src/tool/dice-roller-simulator/i18n/it.ts +305 -0
  106. package/src/tool/dice-roller-simulator/i18n/ja.ts +305 -0
  107. package/src/tool/dice-roller-simulator/i18n/ko.ts +305 -0
  108. package/src/tool/dice-roller-simulator/i18n/nl.ts +305 -0
  109. package/src/tool/dice-roller-simulator/i18n/pl.ts +305 -0
  110. package/src/tool/dice-roller-simulator/i18n/pt.ts +305 -0
  111. package/src/tool/dice-roller-simulator/i18n/ru.ts +305 -0
  112. package/src/tool/dice-roller-simulator/i18n/sv.ts +305 -0
  113. package/src/tool/dice-roller-simulator/i18n/tr.ts +305 -0
  114. package/src/tool/dice-roller-simulator/i18n/zh.ts +305 -0
  115. package/src/tool/dice-roller-simulator/index.ts +9 -0
  116. package/src/tool/dice-roller-simulator/modules/chart.ts +32 -0
  117. package/src/tool/dice-roller-simulator/modules/history.ts +87 -0
  118. package/src/tool/dice-roller-simulator/modules/particles.ts +22 -0
  119. package/src/tool/dice-roller-simulator/seo.astro +16 -0
  120. package/src/tools.ts +9 -0
  121. package/src/types.ts +70 -0
@@ -0,0 +1,306 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { BoardGameTimerUI } from '../entry';
4
+
5
+ const ui: BoardGameTimerUI = {
6
+ title: 'ボードゲームタイマー',
7
+ setupTitle: 'ゲーム設定',
8
+ playerNamePlaceholder: 'プレイヤー名',
9
+ addPlayer: 'プレイヤーを追加',
10
+ removePlayer: '削除',
11
+ startGame: 'ゲーム開始',
12
+ pauseGame: '一時停止',
13
+ resumeGame: '再開',
14
+ resetGame: 'リセット',
15
+ nextTurn: '手番終了',
16
+ addTime: '+30秒',
17
+ removeTime: '-30秒',
18
+ playerLabel: 'プレイヤー',
19
+ minutesLabel: '分',
20
+ secondsLabel: '秒',
21
+ expiredLabel: '時間切れ',
22
+ overtimeLabel: '延長時間',
23
+ turnIndicator: 'あなたの手番',
24
+ warningLowTime: '残り時間少',
25
+ pausedOverlay: 'ゲーム一時停止中',
26
+ roundLabel: 'ラウンド',
27
+ settingsTitle: '設定',
28
+ baseTimeLabel: '持ち時間',
29
+ incrementLabel: '加算/遅延',
30
+ warningTimeLabel: '警告の閾値',
31
+ confirmLabel: '確定',
32
+ cancelLabel: 'キャンセル',
33
+ noPlayersHint: '開始するには少なくとも2人のプレイヤーを追加してください',
34
+ addPlayerHint: 'プレイヤー名を入力',
35
+ timeUpLabel: '時間切れです!',
36
+ presetsTitle: 'プリセット',
37
+ timeControlTitle: '時間制限設定',
38
+ modeLabel: 'モード',
39
+ modeNormal: '通常のカウントダウン',
40
+ modeFischer: 'フィッシャー (加算)',
41
+ modeBronstein: 'ブロンシュタイン (遅延)',
42
+ modeHourglass: 'アワーグラス',
43
+ modeTurn: 'ターンリセット',
44
+ audioTitle: '音声アラート',
45
+ soundAlerts: '効果音',
46
+ playersTitle: 'プレイヤー',
47
+ playersAdded: '追加されたプレイヤー',
48
+ statsTitle: 'ゲーム統計',
49
+ totalGameTime: '合計時間',
50
+ totalRounds: '合計ラウンド',
51
+ slowestPlayer: '最も遅いプレイヤー',
52
+ playerPerformance: 'プレイヤー時間分析',
53
+ playAgain: '新しいゲーム',
54
+ };
55
+
56
+ export const content: ToolLocaleContent<BoardGameTimerUI> = {
57
+ slug: 'board-game-timer',
58
+ title: 'ボードゲームタイマー: 対局チェスクロック&マルチプレイヤーターン管理',
59
+ description: 'プロ仕様のボードゲームタイマーで手番を記録し、プレイ時間を管理しましょう。チェスクロック対局モード、マルチプレイヤーレイアウト、フィッシャー加算、ブロンシュタイン遅延、アワーグラスなどをサポートしています。',
60
+ ui,
61
+ seo: [
62
+ { type: 'title', text: 'テーブルトップのペースを支配する: プロ仕様の時間制限設定がゲームプレイを向上させる理由', level: 2 },
63
+ { type: 'paragraph', html: '現代のボードゲームにおいて、時間管理は非常に重要な要素です。テンポの速いパーティーゲームでも、深い戦略を要するウォーゲームでも、思考時間を制限することで、すべてのプレイヤーに公平な手番を提供できます。フィッシャー加算、ブロンシュタイン遅延、アワーグラスなどのプロ向け時間計測方式を導入することで、長考(思考の麻痺)を防止し、一貫したゲームペースを維持し、盤上に新たな戦略的選択肢を加えることができます。' },
64
+ {
65
+ type: 'stats',
66
+ items: [
67
+ { value: '2-8名', label: '対応人数' },
68
+ { value: '5モード', label: '時間設定' },
69
+ { value: '100ms', label: 'エンジン精度' },
70
+ ],
71
+ columns: 3,
72
+ },
73
+ { type: 'title', text: 'フィッシャー、ブロンシュタイン、アワーグラス: 高度な時間制限ルール解説', level: 2 },
74
+ { type: 'paragraph', html: '当アプリのボードゲームタイマーは、大会などで使われる本格的な対局ルールに対応しており、ゲームセッションをスムーズに進めることができます。' },
75
+ {
76
+ type: 'table',
77
+ headers: ['モード', '仕組み', '最適なゲーム'],
78
+ rows: [
79
+ ['通常のカウントダウン', '標準的なカウントダウンタイマーで、手番終了時に一時停止します。', '全体で持ち時間を共有するカジュアルなボードゲーム'],
80
+ ['フィッシャー (加算)', '手番を終えるたびに、あらかじめ設定した秒数が持ち時間に追加されます。', '早い手番で持ち時間のバッファを作ることができる、戦略ユーロやウォーゲーム'],
81
+ ['ブロンシュタイン (遅延)', '手番開始時に遅延時間(猶予)が与えられ、その間はメインタイマーが減りません。', 'コマの整理など、短い処理を行う手番をノーコストにしたい複雑なタクティカルゲーム'],
82
+ ['アワーグラス', '自分の持ち時間が減少するのと同時に、対戦相手の持ち時間が増加します。', '白熱する2人対局やチェスなどの対戦型デュエルゲーム'],
83
+ ['ターンリセット', '手番ごとに一定の時間が与えられ、次の手番になると再び全回復します。', 'テンポの速いパーティーゲーム、クイズ、クイックラウンドなど'],
84
+ ],
85
+ },
86
+ {
87
+ type: 'tip',
88
+ title: '最適な時間設定を見つけるには',
89
+ html: 'おすすめの初期設定としては、手軽なパーティーゲームなら30〜45秒、中量級のユーロゲームなら1〜2分(5秒のブロンシュタイン遅延付き)、重量級の戦略ボードゲームなら30〜45分(10秒のフィッシャー加算付き)をお試しください。',
90
+ },
91
+ {
92
+ type: 'title',
93
+ text: '表示の最適化: 対面対局用のスプリット画面 vs マルチプレイヤー用の共通エンドボタン',
94
+ level: 3,
95
+ },
96
+ {
97
+ type: 'paragraph',
98
+ html: '2人プレイヤーでの対局を開始すると、画面は自動的にチェスクロック式の分割画面になります。各々の表示領域を180度回転できるため、テーブルの向かい側に座る相手からも時間がはっきりと確認できます。3人以上のプレイヤーでは、アクティブなプレイヤーを光らせて示すマルチプレイヤーグリッドに切り替わり、個別のカード調整機能と、テーブルの中央に置いて共通ブザーのように使える巨大な手番終了ボタンが用意されています。',
99
+ },
100
+ {
101
+ type: 'proscons',
102
+ title: 'フィッシャー加算 vs ブロンシュタイン遅延の徹底比較',
103
+ items: [
104
+ {
105
+ pro: 'フィッシャー方式は、素早い手番を繰り返すことで将来のターンのための持ち時間を貯蓄できます。',
106
+ con: '素早いプレイを続けると全体のゲーム時間が想定より長くなる可能性があります。',
107
+ },
108
+ {
109
+ pro: 'ブロンシュタイン方式は、管理処理などの短いターンでの持ち時間ロスを防ぎつつ、過度な時間の貯蓄を抑えられます。',
110
+ con: 'ゲーム盤の整理に必要な時間に合わせて、適切な遅延猶予を設定する必要があります。',
111
+ },
112
+ {
113
+ pro: 'アワーグラス方式は、自分の減った時間が相手にそのまま渡るため、非常に緊張感のある対局が楽しめます。',
114
+ con: '3人以上のプレイでは数学的に計算が複雑になり、戦略性が低下します。',
115
+ },
116
+ ],
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: 'ターンタイマーの恩恵を受ける主なボードゲームジャンル',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'comparative',
125
+ items: [
126
+ {
127
+ title: '戦略系ユーロゲーム',
128
+ description: 'ワーカープレイスメントや資源管理など、手番の複雑さが変化するゲーム。フィッシャー加算を用いることで、序盤のターンを急ぎ、終盤の重要な局面でじっくり考えるバッファを作れます。',
129
+ icon: 'mdi:chess-knight',
130
+ highlight: true,
131
+ points: [
132
+ '長考(思考のフリーズ)の防止',
133
+ '手番の難易度に応じた時間管理',
134
+ '時間そのものをリソースとして活用',
135
+ ],
136
+ },
137
+ {
138
+ title: 'パーティー&クイズゲーム',
139
+ description: '直感とスピードが求められる楽しいゲーム。固定ターンリセットタイマーを導入すれば、テンポを保ち、一人の長考で場が冷めてしまうのを防ぎます。',
140
+ icon: 'mdi:party-popper',
141
+ highlight: false,
142
+ points: [
143
+ '短い固定カウントダウン',
144
+ 'パーティーの熱量を維持',
145
+ '即座の判断を促す',
146
+ ],
147
+ },
148
+ {
149
+ title: '大会やトーナメントのデュエル',
150
+ description: '厳密なチェスクロックを必要とする対局では、公平な条件を維持しつつ、複数の対局テーブルの進行スケジュールを合わせるために回転表示対応のタイマーが必須です。',
151
+ icon: 'mdi:trophy',
152
+ highlight: false,
153
+ points: [
154
+ '180度の画面反転対応',
155
+ '100ms単位の正確な時間追跡',
156
+ 'サドンデス・時間切れ判定の厳格化',
157
+ ],
158
+ },
159
+ ],
160
+ columns: 3,
161
+ },
162
+ {
163
+ type: 'glossary',
164
+ items: [
165
+ {
166
+ term: 'フィッシャー加算 (Fischer Increment)',
167
+ definition: '手番を終えてボタンを押した直後に、あらかじめ決められた一定の秒数が持ち時間に加えられるルール。',
168
+ },
169
+ {
170
+ term: 'ブロンシュタイン遅延 (Bronstein Delay)',
171
+ definition: '手番開始時に一定時間の猶予(遅延時間)が与えられ、その時間内に手番を終了すれば、メインの持ち時間が一切減らないルール。',
172
+ },
173
+ {
174
+ term: 'アワーグラスモード (Hourglass Mode)',
175
+ definition: '自分のタイマーが減った分だけ、対戦相手のタイマーがリアルタイムで増加する双方向の計測ルール。',
176
+ },
177
+ {
178
+ term: '長考・パニック (Analysis Paralysis)',
179
+ definition: '選択肢が多すぎてプレイヤーが思考停止に陥り、ゲーム全体の進行が止まって他の参加者の体験を損ねてしまう状態。',
180
+ },
181
+ {
182
+ term: 'ゲーム分析アナリティクス',
183
+ definition: 'ゲーム終了後に表示される、総ラウンド数、平均思考速度、最長手番時間、および最も思考が長かったプレイヤーなどのまとめ指標。',
184
+ },
185
+ ],
186
+ },
187
+ ],
188
+ faq: [
189
+ {
190
+ question: '対局(Duel)モードのレイアウトはどのように使いますか?',
191
+ answer: 'プレイヤー数を2人に設定して開始すると、画面は自動的にチェスクロック式のスプリット表示になります。各プレイヤーの領域をタップすると手番が相手に移ります。対面で座っている場合は、表示を180度反転させることができます。',
192
+ },
193
+ {
194
+ question: 'フィッシャーモードとブロンシュタインモードの違いは何ですか?',
195
+ answer: 'フィッシャーモードは手番終了後に持ち時間が追加され、早く打てば持ち時間を蓄積できます。ブロンシュタインモードは手番開始時に猶予時間が与えられ、その時間内でのプレイであれば持ち時間は減りません。',
196
+ },
197
+ {
198
+ question: 'ゲーム終了後にプレイの統計データを確認できますか?',
199
+ answer: 'はい。ゲーム終了時や時間切れの際、統計モーダルが表示され、総プレイ時間、ラウンド数、各プレイヤーの平均および最大思考時間、プレイヤーの速度ランキングを確認できます。',
200
+ },
201
+ {
202
+ question: 'ページを再読み込みしてもプレイヤー情報は保存されますか?',
203
+ answer: 'はい、プレイヤーリストと選択したカラー情報はブラウザのローカルストレージに自動的に保存されるため、再度ページを訪れたときにも前回の設定が復元されます。',
204
+ },
205
+ {
206
+ question: 'ゲーム中に時間を増減させることは可能ですか?',
207
+ answer: 'はい。マルチプレイヤーモードの各プレイヤーカードには「+30秒」および「-30秒」のボタンがあり、プレイ中いつでも残り時間をその場で調整することができます。',
208
+ },
209
+ ],
210
+ bibliography,
211
+ howTo: [
212
+ {
213
+ name: 'ゲームルールの設定',
214
+ text: 'プリセット(カジュアル、ブリッツ、戦略的、アワーグラス)を選択するか、基本時間、加算/遅延秒数、警告しきい値などをカスタマイズします。',
215
+ },
216
+ {
217
+ name: 'プレイヤーの登録と順序整理',
218
+ text: 'プレイヤー名を入力してカラーを選びます。矢印アイコンを使って手番の順番を並べ替えることができます。設定は自動保存されます。',
219
+ },
220
+ {
221
+ name: 'ゲーム開始と手番の交代',
222
+ text: 'ゲームを開始します。対局(Duel)モードでは自身の画面半分をタップして交代します。マルチプレイヤーモードでは中央の巨大な「手番終了」ボタンを使用します。',
223
+ },
224
+ ],
225
+ schemas: [
226
+ {
227
+ '@context': 'https://schema.org',
228
+ '@type': 'SoftwareApplication',
229
+ 'name': 'ボードゲームタイマー&ターン管理',
230
+ 'operatingSystem': 'All',
231
+ 'applicationCategory': 'UtilitiesApplication',
232
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.'
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'FAQPage',
237
+ 'mainEntity': [
238
+ {
239
+ '@type': 'Question',
240
+ 'name': '対局(Duel)モードのレイアウトはどのように使いますか?',
241
+ 'acceptedAnswer': {
242
+ '@type': 'Answer',
243
+ 'text': 'プレイヤー数を2人に設定して開始すると、画面は自動的にチェスクロック式のスプリット表示になります。各プレイヤーの領域をタップすると手番が相手に移ります。対面で座っている場合は、表示を180度反転させることができます。'
244
+ }
245
+ },
246
+ {
247
+ '@type': 'Question',
248
+ 'name': 'フィッシャーモードとブロンシュタインモードの違いは何ですか?',
249
+ 'acceptedAnswer': {
250
+ '@type': 'Answer',
251
+ 'text': 'フィッシャーモードは手番終了後に持ち時間が追加され、早く打てば持ち時間を蓄積できます。ブロンシュタインモードは手番開始時に猶予時間が与えられ、その時間内でのプレイであれば持ち時間は減りません。'
252
+ }
253
+ },
254
+ {
255
+ '@type': 'Question',
256
+ 'name': 'ゲーム終了後にプレイの統計データを確認できますか?',
257
+ 'acceptedAnswer': {
258
+ '@type': 'Answer',
259
+ 'text': 'はい。ゲーム終了時や時間切れの際、統計モーダルが表示され、総プレイ時間、ラウンド数、各プレイヤーの平均および最大思考時間、プレイヤーの速度ランキングを確認できます。'
260
+ }
261
+ },
262
+ {
263
+ '@type': 'Question',
264
+ 'name': 'ページを再読み込みしてもプレイヤー情報は保存されますか?',
265
+ 'acceptedAnswer': {
266
+ '@type': 'Answer',
267
+ 'text': 'はい、プレイヤーリストと選択したカラー情報はブラウザのローカルストレージに自動的に保存されるため、再度ページを訪れたときにも前回の設定が復元されます。'
268
+ }
269
+ },
270
+ {
271
+ '@type': 'Question',
272
+ 'name': 'ゲーム中に時間を増減させることは可能ですか?',
273
+ 'acceptedAnswer': {
274
+ '@type': 'Answer',
275
+ 'text': 'はい。マルチプレイヤーモードの各プレイヤーカードには「+30秒」および「-30秒」のボタンがあり、プレイ中いつでも残り時間をその場で調整することができます。'
276
+ }
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ '@context': 'https://schema.org',
282
+ '@type': 'HowTo',
283
+ 'name': 'ボードゲームタイマーの使い方',
284
+ 'step': [
285
+ {
286
+ '@type': 'HowToStep',
287
+ 'name': 'ゲームルールの設定',
288
+ 'stepValue': '1',
289
+ 'text': 'プリセット(カジュアル、ブリッツ、戦略的、アワーグラス)を選択するか、基本時間、加算/遅延秒数、警告しきい値などをカスタマイズします。'
290
+ },
291
+ {
292
+ '@type': 'HowToStep',
293
+ 'name': 'プレイヤーの登録と順序整理',
294
+ 'stepValue': '2',
295
+ 'text': 'プレイヤー名を入力してカラーを選びます。矢印アイコンを使って手番の順番を並べ替えることができます。設定は自動保存されます。'
296
+ },
297
+ {
298
+ '@type': 'HowToStep',
299
+ 'name': 'ゲーム開始と手番の交代',
300
+ 'stepValue': '3',
301
+ 'text': 'ゲームを開始します。対局(Duel)モードでは自身の画面半分をタップして交代します。マルチプレイヤーモードでは中央の巨大な「手番終了」ボタンを使用します。'
302
+ }
303
+ ]
304
+ }
305
+ ],
306
+ };
@@ -0,0 +1,303 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { BoardGameTimerUI } from '../entry';
4
+
5
+ const ui: BoardGameTimerUI = {
6
+ title: '보드게임 타이머',
7
+ setupTitle: '게임 설정',
8
+ playerNamePlaceholder: '플레이어 이름',
9
+ addPlayer: '플레이어 추가',
10
+ removePlayer: '삭제',
11
+ startGame: '게임 시작',
12
+ pauseGame: '일시정지',
13
+ resumeGame: '재개',
14
+ resetGame: '초기화',
15
+ nextTurn: '턴 종료',
16
+ addTime: '+30초',
17
+ removeTime: '-30초',
18
+ playerLabel: '플레이어',
19
+ minutesLabel: '분',
20
+ secondsLabel: '초',
21
+ expiredLabel: '시간 초과',
22
+ overtimeLabel: '추가 시간',
23
+ turnIndicator: '당신의 턴',
24
+ warningLowTime: '시간 부족',
25
+ pausedOverlay: '게임 일시정지됨',
26
+ roundLabel: '라운드',
27
+ settingsTitle: '설정',
28
+ baseTimeLabel: '기본 시간',
29
+ incrementLabel: '증분/지연',
30
+ warningTimeLabel: '경고 임계값',
31
+ confirmLabel: '확인',
32
+ cancelLabel: '취소',
33
+ noPlayersHint: '시작하려면 최소 2명의 플레이어를 추가하세요',
34
+ addPlayerHint: '플레이어 이름 입력',
35
+ timeUpLabel: '시간이 다 되었습니다!',
36
+ presetsTitle: '프리셋',
37
+ timeControlTitle: '시간 제어',
38
+ modeLabel: '모드',
39
+ modeNormal: '일반 카운트다운',
40
+ modeFischer: '피셔 (증분)',
41
+ modeBronstein: '브론스타인 (지연)',
42
+ modeHourglass: '모래시계',
43
+ modeTurn: '턴 리셋',
44
+ audioTitle: '오디오 경고',
45
+ soundAlerts: '음향 효과',
46
+ playersTitle: '플레이어',
47
+ playersAdded: '추가된 플레이어',
48
+ statsTitle: '게임 통계',
49
+ totalGameTime: '총 시간',
50
+ totalRounds: '총 라운드',
51
+ slowestPlayer: '가장 느린 플레이어',
52
+ playerPerformance: '플레이어 시간 분석',
53
+ playAgain: '새 게임',
54
+ };
55
+
56
+ export const content: ToolLocaleContent<BoardGameTimerUI> = {
57
+ slug: 'board-game-timer',
58
+ title: '보드게임 타이머: 듀얼 체스 클록 및 멀티플레이어 턴 관리기',
59
+ description: '프로급 보드게임 타이머로 턴을 추적하고 시간을 관리하세요. 체스 클록 듀얼 모드, 멀티플레이어 레이아웃, 피셔 증분, 브론스타인 지연, 아워글래스 등을 지원합니다.',
60
+ ui,
61
+ seo: [
62
+ { type: 'title', text: '테이블탑의 페이스 지배하기: 전문적인 시간 제어가 게임 플레이를 향상시키는 이유', level: 2 },
63
+ { type: 'paragraph', html: '시간 관리는 현대 보드게임에서 매우 중요한 부분입니다. 빠른 페이스의 파티 게임을 하든, 깊이 있는 전략 게임을 하든, 생각 시간을 제한하면 모든 참가자가 공평한 차례를 누릴 수 있습니다. 피셔 증분, 브론스타인 지연, 모래시계 모드 같은 전문 타이머 방식을 사용하면 장고(장시간 고민)를 방지하고 일관된 게임 진행 속도를 보장하며 보드 위에 추가적인 전략적 선택지를 더할 수 있습니다.' },
64
+ {
65
+ type: 'stats',
66
+ items: [
67
+ { value: '2-8명', label: '지원 플레이어 수' },
68
+ { value: '5개 모드', label: '시간 제어 방식' },
69
+ { value: '100ms', label: '엔진 정밀도' },
70
+ ],
71
+ columns: 3,
72
+ },
73
+ { type: 'title', text: '피셔, 브론스타인, 모래시계: 고급 시간 제어 방식 규칙 설명', level: 2 },
74
+ { type: 'paragraph', html: '당사의 전문 보드게임 타이머는 토너먼트 대회 경기에서 영감을 받은 여러 가지 시간 측정 옵션을 지원하여 게임을 원활하게 진행시킵니다.' },
75
+ {
76
+ type: 'table',
77
+ headers: ['모드', '작동 방식', '가장 적합한 게임'],
78
+ rows: [
79
+ ['일반 카운트다운', '턴 종료 시 일시정지하는 표준적인 글로벌 카운트다운 타이머.', '공동의 생각 시간 풀을 가진 캐주얼 보드게임'],
80
+ ['피셔 (증분)', '턴을 마칠 때마다 설정한 초 단위의 시간이 플레이어의 시계에 추가됩니다.', '빠른 플레이로 시간 버퍼를 축적할 수 있는 전략 유로 게임 및 워게임'],
81
+ ['브론스타인 (지연)', '턴 시작 시 지연 시간(유예)을 부여하며, 그동안은 메인 타이머가 줄어들지 않습니다.', '짧은 규칙 정리 등 잔여 처리를 무료 시간 내에 해결하고 싶은 복잡한 전술 게임'],
82
+ ['모래시계', '내 시간이 줄어드는 동시에 상대방의 시간이 실시간으로 증가합니다.', '치열한 2인용 대결 및 체스 경기'],
83
+ ['턴 리셋', '턴마다 고정된 시간이 새로 부여되며 턴이 교체될 때 완전히 재설정됩니다.', '페이스가 빠른 파티 게임, 퀴즈 대결, 빠른 라운드 게임'],
84
+ ],
85
+ },
86
+ {
87
+ type: 'tip',
88
+ title: '이상적인 시간 설정 찾기',
89
+ html: '가벼운 파티 게임에는 30~45초, 중량급 유로 게임에는 5초 브론스타인 지연을 포함한 1~2분, 그리고 무거운 워게임이나 긴 전략 캠페인에는 10초 피셔 증분을 더한 30~45분을 설정하여 시작하는 것이 좋습니다.',
90
+ },
91
+ {
92
+ type: 'title',
93
+ text: '시각적 최적화: 대면 대결용 분할 화면 vs 멀티플레이용 중앙 턴 종료 버튼',
94
+ level: 3,
95
+ },
96
+ {
97
+ type: 'paragraph',
98
+ html: '2인 대결을 시작하면 화면이 자동으로 체스 클록식 분할 화면 레이아웃으로 바뀝니다. 각 플레이어의 화면 영역을 180도 회전할 수 있어 테이블 반대편에 앉아 있는 상대방도 남은 시간을 편리하게 볼 수 있습니다. 3인 이상의 플레이에서는 활성 플레이어를 빛으로 강조해 주는 멀티플레이어 그리드로 바뀌며, 개별 시간 조정 카드와 함께 테이블 중앙에 두고 공동 부저처럼 누를 수 있는 거대한 턴 종료 버튼이 제공됩니다.',
99
+ },
100
+ {
101
+ type: 'proscons',
102
+ title: '피셔 증분 vs 브론스타인 지연 비교 분석',
103
+ items: [
104
+ {
105
+ pro: '피셔 방식은 빠른 결정을 내리면 미래의 턴을 위해 시간을 모아둘 수 있게 보상합니다.',
106
+ con: '플레이어들이 일관되게 너무 빠르게 턴을 마치면 총 게임 시간이 늘어날 수 있습니다.',
107
+ },
108
+ {
109
+ pro: '브론스타인 방식은 시간의 과도한 축적 없이 짧은 행정적 턴 처리 동안 시간 낭비를 방지해 줍니다.',
110
+ con: '피지컬 컴포넌트 정리에 필요한 시간에 맞춰 적절한 지연 값을 설정해야 합니다.',
111
+ },
112
+ {
113
+ pro: '모래시계 방식은 내 시간이 상대방에게 그대로 넘어가기 때문에 대결에서 엄청난 긴장감을 유발합니다.',
114
+ con: '플레이어가 3명 이상일 때 수학적으로 계산이 복잡해지고 전략성이 떨어집니다.',
115
+ },
116
+ ],
117
+ },
118
+ {
119
+ type: 'title',
120
+ text: '턴 타이머의 효과를 톡톡히 보는 보드게임 장르',
121
+ level: 3,
122
+ },
123
+ {
124
+ type: 'comparative',
125
+ items: [
126
+ {
127
+ title: '전략 유로 게임',
128
+ description: '일꾼 배치 및 자원 관리 게임으로 턴의 깊이가 매번 다릅니다. 피셔 증분을 사용하면 초반을 빠르게 진행하고 후반의 중요한 결정적 국면에서 길게 생각할 시간을 확보할 수 있습니다.',
129
+ icon: 'mdi:chess-knight',
130
+ highlight: true,
131
+ points: [
132
+ '장고(생각 정지) 현상 완화',
133
+ '턴의 복잡도 변화에 맞춘 시간 설계 가능',
134
+ '시간을 적극적인 자원으로 활용',
135
+ ],
136
+ },
137
+ {
138
+ title: '파티 및 퀴즈 게임',
139
+ description: '순발력과 속도가 생명인 게임. 고정 턴 리셋 타이머를 도입하면 텐포를 높게 유지하고 한 플레이어의 긴 생각으로 분위기가 처지는 것을 막아줍니다.',
140
+ icon: 'mdi:party-popper',
141
+ highlight: false,
142
+ points: [
143
+ '짧고 고정된 카운트다운',
144
+ '파티의 재미와 텐션 유지',
145
+ '즉각적인 판단과 행동 강제',
146
+ ],
147
+ },
148
+ {
149
+ title: '대회 및 토너먼트 대결',
150
+ description: '엄격한 체스 클록 룰 하의 2인 대결에서는 대국 공정성을 보장하고 여러 경기의 타임 테이블을 맞추기 위해 화면 회전이 가능한 정밀 타이머가 필수적입니다.',
151
+ icon: 'mdi:trophy',
152
+ highlight: false,
153
+ points: [
154
+ '180도 화면 회전 대응',
155
+ '100ms 단위의 정확한 시간 측정',
156
+ '서든데스 및 추가시간 상태 적용',
157
+ ],
158
+ },
159
+ ],
160
+ columns: 3,
161
+ },
162
+ {
163
+ type: 'glossary',
164
+ items: [
165
+ {
166
+ term: '피셔 증분 (Fischer Increment)',
167
+ definition: '매 턴을 마치고 버튼을 누를 때마다 사전에 약속된 일정 초만큼 남은 시간에 합산되는 시간 제어 방법.',
168
+ },
169
+ {
170
+ term: '브론스타인 지연 (Bronstein Delay)',
171
+ definition: '턴이 시작될 때 일정량의 유예 시간을 주며, 그 유예 시간 내에 턴을 마치면 남은 시간이 전혀 깎이지 않는 제어 방법.',
172
+ },
173
+ {
174
+ term: '모래시계 모드 (Hourglass Mode)',
175
+ definition: '한 플레이어에게서 깎인 시간이 실시간으로 상대방의 시간 시계에 바로 채워지는 역동적인 매치 시간 룰.',
176
+ },
177
+ {
178
+ term: '장고 (Analysis Paralysis)',
179
+ definition: '생각할 수 있는 옵션이 너무 많아 플레이어가 정보 과부하에 걸려 턴을 넘기지 못하고 진행을 정체시키는 현상.',
180
+ },
181
+ {
182
+ term: '게임 데이터 통계',
183
+ definition: '게임이 모두 끝난 후에 표시되는 총 라운드 수, 평균 생각 속도, 최장 생각 시간, 그리고 장고를 한 플레이어 순위 등의 분석 데이터.',
184
+ },
185
+ ],
186
+ },
187
+ ],
188
+ faq: [
189
+ {
190
+ question: '듀얼(Duel) 모드 레이아웃은 어떻게 사용하나요?',
191
+ answer: '2인 플레이어로 게임을 시작하면 화면이 자동으로 분할 화면 체스 클록 레이아웃으로 변경됩니다. 각자의 영역을 누르면 자신의 턴이 끝나고 상대의 턴이 시작됩니다. 마주 보고 앉아 있는 경우 화면을 180도 회전시킬 수 있습니다.',
192
+ },
193
+ {
194
+ question: '피셔 모드와 브론스타인 모드의 차이는 무엇인가요?',
195
+ answer: '피셔 모드는 턴 종료 후에 추가 시간이 충전되므로 빠르게 플레이할수록 시간이 축적됩니다. 반면 브론스타인 모드는 턴 시작 시 유예 시간이 적용되어 그 유예 시간 이내에 완료하면 남은 시간이 소모되지 않습니다.',
196
+ },
197
+ {
198
+ question: '게임 종료 후에 플레이 통계를 확인할 수 있나요?',
199
+ answer: '네! 게임이 완전히 끝나거나 한 명의 타이머가 만료되면 통계 모달이 팝업되며 총 소요 시간, 진행 라운드 수, 평균 및 최대 생각 시간, 그리고 플레이어의 속도 랭킹을 시각적으로 보여줍니다.',
200
+ },
201
+ {
202
+ question: '새로고침을 해도 플레이어 목록이 보존되나요?',
203
+ answer: '네, 등록한 플레이어 목록과 지정된 색상 정보는 웹 브라우저의 로컬 스토리지에 자동으로 저장되므로 새로고침하거나 다음에 페이지를 다시 열어도 복구됩니다.',
204
+ },
205
+ {
206
+ question: '게임 도중에 시간을 더 주거나 줄일 수 있나요?',
207
+ answer: '네! 멀티플레이어 모드에서 각 플레이어 카드의 하단에 있는 +30초, -30초 버튼을 터치하여 라이브 게임 중에 언제든지 유연하게 시간을 조절할 수 있습니다.',
208
+ },
209
+ ],
210
+ bibliography,
211
+ howTo: [
212
+ {
213
+ name: '게임 방식 설정',
214
+ text: '프리셋(캐주얼, 블리츠, 전략, 모래시계)을 클릭하거나 기본 시간, 증분/지연 설정, 경고 임계 시간을 자유롭게 구성합니다.',
215
+ },
216
+ {
217
+ name: '플레이어 등록 및 순서 변경',
218
+ text: '플레이어 이름을 입력하고 캐릭터 색상을 정합니다. 화살표 컨트롤러로 턴 순서를 원하는 대로 변경할 수 있으며 설정은 자동 저장됩니다.',
219
+ },
220
+ {
221
+ name: '시작 및 턴 종료',
222
+ text: '게임을 시작합니다. 듀얼 모드에서는 자신의 화면 절반을 터치하여 턴을 넘기고, 멀티플레이 모드에서는 화면 중앙의 거대한 턴 종료 버튼을 누릅니다.',
223
+ },
224
+ ],
225
+ schemas: [
226
+ {
227
+ '@context': 'https://schema.org',
228
+ '@type': 'SoftwareApplication',
229
+ 'name': '보드게임 타이머 및 턴 관리기',
230
+ 'operatingSystem': 'All',
231
+ 'applicationCategory': 'UtilitiesApplication',
232
+ 'browserRequirements': 'Requires HTML5. Requires JavaScript.'
233
+ },
234
+ {
235
+ '@context': 'https://schema.org',
236
+ '@type': 'FAQPage',
237
+ 'mainEntity': [
238
+ {
239
+ '@type': 'Question',
240
+ 'name': '듀얼(Duel) 모드 레이아웃은 어떻게 사용하나요?',
241
+ 'acceptedAnswer': {
242
+ '@type': 'Answer',
243
+ 'text': '2인 플레이어로 게임을 시작하면 화면이 자동으로 분할 화면 체스 클록 레이아웃으로 변경됩니다. 각자의 영역을 누르면 자신의 턴이 끝나고 상대의 턴이 시작됩니다. 마주 보고 앉아 있는 경우 화면을 180도 회전시킬 수 있습니다.'
244
+ }
245
+ },
246
+ {
247
+ '@type': 'Question',
248
+ 'name': '피셔 모드와 브론스타인 모드의 차이는 무엇인가요?',
249
+ 'acceptedAnswer': {
250
+ '@type': 'Answer',
251
+ 'text': '피셔 모드는 턴 종료 후에 추가 시간이 충전되므로 빠르게 플레이할수록 시간이 축적됩니다. 반면 브론스타인 모드는 턴 시작 시 유예 시간이 적용되어 그 유예 시간 이내에 완료하면 남은 시간이 소모되지 않습니다.'
252
+ }
253
+ },
254
+ {
255
+ '@type': 'Question',
256
+ 'name': '게임 종료 후에 플레이 통계를 확인할 수 있나요?',
257
+ 'acceptedAnswer': {
258
+ '@type': 'Answer',
259
+ 'text': '네! 게임이 완전히 끝나거나 한 명의 타이머가 만료되면 통계 모달이 팝업되며 총 소요 시간, 진행 라운드 수, 평균 및 최대 생각 시간, 그리고 플레이어의 속도 랭킹을 시각적으로 보여줍니다.'
260
+ }
261
+ },
262
+ {
263
+ '@type': 'Question',
264
+ 'name': '새로고침을 해도 플레이어 목록이 보존되나요?',
265
+ 'acceptedAnswer': {
266
+ '@type': 'Answer',
267
+ 'text': '네, 등록한 플레이어 목록과 지정된 색상 정보는 웹 브라우저의 로컬 스토리지에 자동으로 저장되므로 새로고침하거나 다음에 페이지를 다시 열어도 복구됩니다.'
268
+ }
269
+ },
270
+ {
271
+ '@type': 'Question',
272
+ 'name': '게임 도중에 시간을 더 주거나 줄일 수 있나요?',
273
+ 'acceptedAnswer': {
274
+ '@type': 'Answer',
275
+ 'text': '네! 멀티플레이어 모드에서 각 플레이어 카드의 하단에 있는 +30초, -30초 버튼을 터치하여 라이브 게임 중에 언제든지 유연하게 시간을 조절할 수 있습니다.'
276
+ }
277
+ }
278
+ ]
279
+ },
280
+ {
281
+ '@context': 'https://schema.org',
282
+ '@type': 'HowTo',
283
+ 'name': '보드게임 타이머 사용 방법',
284
+ 'step': [
285
+ {
286
+ '@type': 'HowToStep',
287
+ 'name': '게임 방식 설정',
288
+ 'text': '프리셋(캐주얼, 블리츠, 전략, 모래시계)을 클릭하거나 기본 시간, 증분/지연 설정, 경고 임계 시간을 자유롭게 구성합니다.'
289
+ },
290
+ {
291
+ '@type': 'HowToStep',
292
+ 'name': '플레이어 등록 및 순서 변경',
293
+ 'text': '플레이어 이름을 입력하고 캐릭터 색상을 정합니다. 화살표 컨트롤러로 턴 순서를 원하는 대로 변경할 수 있으며 설정은 자동 저장됩니다.'
294
+ },
295
+ {
296
+ '@type': 'HowToStep',
297
+ 'name': '시작 및 턴 종료',
298
+ 'text': '게임을 시작합니다. 듀얼 모드에서는 자신의 화면 절반을 터치하여 턴을 넘기고, 멀티플레이 모드에서는 화면 중앙의 거대한 턴 종료 버튼을 누릅니다.'
299
+ }
300
+ ]
301
+ }
302
+ ],
303
+ };