@jjlmoya/utils-tabletop 1.3.0 → 1.4.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.
- package/package.json +1 -1
- package/src/category/TabletopCategorySEO.astro +2 -7
- package/src/category/i18n/en.ts +4 -4
- package/src/category/i18n/ru.ts +2 -2
- package/src/category/i18n/zh.ts +8 -8
- package/src/category/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/pages/[locale]/[slug].astro +7 -6
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/no_em_dash.test.ts +47 -0
- package/src/tests/seo_length.test.ts +1 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tool/board-game-timer/modules/ColorHelper.ts +2 -2
- package/src/tool/board-game-timer/modules/DuelViewManager.ts +4 -4
- package/src/tool/board-game-timer/modules/GameRunner.ts +1 -1
- package/src/tool/board-game-timer/modules/MultiplayerViewManager.ts +2 -2
- package/src/tool/board-game-timer/modules/SetupPanelManager.ts +1 -1
- package/src/tool/board-game-timer/modules/TimerEngine.ts +1 -1
- package/src/tool/board-game-timer/types.ts +1 -1
- package/src/tool/dice-roller-simulator/client.ts +2 -2
- package/src/tool/dice-roller-simulator/i18n/ru.ts +8 -8
- package/src/tool/dice-roller-simulator/modules/history.ts +1 -1
- package/src/tool/first-player-selector/bibliography.astro +16 -0
- package/src/tool/first-player-selector/bibliography.ts +12 -0
- package/src/tool/first-player-selector/client.ts +197 -0
- package/src/tool/first-player-selector/component.astro +77 -0
- package/src/tool/first-player-selector/entry.ts +42 -0
- package/src/tool/first-player-selector/first-player-selector.css +303 -0
- package/src/tool/first-player-selector/i18n/de.ts +226 -0
- package/src/tool/first-player-selector/i18n/en.ts +226 -0
- package/src/tool/first-player-selector/i18n/es.ts +226 -0
- package/src/tool/first-player-selector/i18n/fr.ts +227 -0
- package/src/tool/first-player-selector/i18n/id.ts +226 -0
- package/src/tool/first-player-selector/i18n/it.ts +227 -0
- package/src/tool/first-player-selector/i18n/ja.ts +227 -0
- package/src/tool/first-player-selector/i18n/ko.ts +227 -0
- package/src/tool/first-player-selector/i18n/nl.ts +226 -0
- package/src/tool/first-player-selector/i18n/pl.ts +227 -0
- package/src/tool/first-player-selector/i18n/pt.ts +226 -0
- package/src/tool/first-player-selector/i18n/ru.ts +227 -0
- package/src/tool/first-player-selector/i18n/sv.ts +226 -0
- package/src/tool/first-player-selector/i18n/tr.ts +226 -0
- package/src/tool/first-player-selector/i18n/zh.ts +227 -0
- package/src/tool/first-player-selector/index.ts +9 -0
- package/src/tool/first-player-selector/modules/AnimationEffects.ts +256 -0
- package/src/tool/first-player-selector/modules/SelectionEngine.ts +249 -0
- package/src/tool/first-player-selector/modules/SoundEffects.ts +87 -0
- package/src/tool/first-player-selector/modules/TouchTracker.ts +148 -0
- package/src/tool/first-player-selector/seo.astro +16 -0
- package/src/tool/first-player-selector/types.ts +21 -0
- package/src/tools.ts +2 -0
- package/src/types.ts +1 -2
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { FirstPlayerSelectorUI } from '../entry';
|
|
4
|
+
|
|
5
|
+
const ui: FirstPlayerSelectorUI = {
|
|
6
|
+
title: 'Startspieler Auswahl',
|
|
7
|
+
instructions: 'Lege deine Finger auf den Bildschirm oder klicke, um Pins zu setzen',
|
|
8
|
+
tapToSelect: 'Zum Auswählen tippen',
|
|
9
|
+
winner: 'Gewinner ausgewählt!',
|
|
10
|
+
reset: 'Zurücksetzen',
|
|
11
|
+
start: 'Auswahl starten',
|
|
12
|
+
setupTitle: 'Auswahleinstellungen',
|
|
13
|
+
clearPlayers: 'Alle Pins entfernen',
|
|
14
|
+
fingerMode: 'Fingermodus',
|
|
15
|
+
wheelMode: 'Roulette-Modus',
|
|
16
|
+
presetsTitle: 'Optionen',
|
|
17
|
+
soundOn: 'Ton an',
|
|
18
|
+
soundOff: 'Ton aus',
|
|
19
|
+
playerCountLabel: 'Pins / Finger',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq = [
|
|
23
|
+
{
|
|
24
|
+
question: 'Wie funktioniert der Fingermodus?',
|
|
25
|
+
answer: 'Im Fingermodus legt jeder Spieler einen Finger auf den mobilen Bildschirm. Das Tool erkennt alle Berührungspunkte, zeigt leuchtende farbige Ringe um sie herum an und startet automatisch einen kurzen Countdown. Sobald der Countdown endet, wird ein Spieler als Gewinner hervorgehoben, während die anderen ausgeblendet werden, begleitet von einer Partikelexplosion.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Kann ich dieses Tool auf einem Desktop-Computer verwenden?',
|
|
29
|
+
answer: 'Ja! Wenn du ein Gerät ohne Touch-Funktion verwendest, wechselt das Tool automatisch in den Roulette-Modus. Du kannst auf die Leinwand klicken, um farbige Pins für die Spieler zu setzen, und dann die Schaltfläche "Auswahl starten" anklicken, um das Auswahlrad zu drehen.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: 'Wie viele Spieler können teilnehmen?',
|
|
33
|
+
answer: 'Das Tool unterstützt bis zu 10 gleichzeitige Spieler. Im Fingermodus können bis zu 10 Finger gleichzeitig erkannt werden. Im Roulette-Modus kannst du durch Klicken bis zu 10 farbige Pins auf der Leinwand platzieren.',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
question: 'Ist die Auswahl wirklich zufällig?',
|
|
37
|
+
answer: 'Ja. Der Auswahlalgorithmus verwendet JavaScripts kryptografisch sicheren Math.random(), um unvoreingenommene Ergebnisse zu gewährleisten. Im Fingermodus wird der Gewinner gleichmäßig zufällig aus allen erkannten Berührungspunkten ausgewählt. Im Roulette-Modus verlangsamt sich das Rad realistisch mittels Reibungsphysik, und der endgültige Winkel bestimmt mathematisch den Gewinner.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
question: 'Wie entferne ich einen Spieler-Pin im Roulette-Modus?',
|
|
41
|
+
answer: 'Klicke einfach auf einen vorhandenen Pin, um ihn zu entfernen. Das Tool erkennt Klicks innerhalb von 30 Pixeln um jeden gesetzten Pin und löscht ihn, sodass du die Spieleraufstellung vor dem Auslösen des Drehvorgangs anpassen kannst.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
question: 'Sammelt oder überträgt dieses Tool Daten?',
|
|
45
|
+
answer: 'Überhaupt nicht. Alles läuft lokal in deinem Browser. Es werden niemals Fingerdaten, Berührungspositionen oder Auswahlergebnisse an einen Server gesendet. Dein Spieleabend bleibt absolut privat.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: 'Funktioniert es auf Projektoren oder externen Bildschirmen?',
|
|
49
|
+
answer: 'Ja. Der Roulette-Modus funktioniert hervorragend auf großen Bildschirmen und Projektoren für Tabletop-Sitzungen. Die kontrastreichen Neon-Visuals und der große Countdown-Timer sind so gestaltet, dass sie aus der ganzen Zimmerentfernung sichtbar sind.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
question: 'Warum wird der Countdown zurückgesetzt, wenn jemand den Finger hebt?',
|
|
53
|
+
answer: 'Das ist beabsichtigt. Im Fingermodus läuft der Countdown nur weiter, solange alle Spieler ihre Finger ruhig auf dem Bildschirm halten. Wenn jemand den Finger hebt oder verschiebt, wird der Timer zurückgesetzt, um sicherzustellen, dass alle bereit sind, bevor die Auswahl läuft. Dies verhindert versehentliche Auslösungen.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: 'Kann ich den Ton ändern oder stummschalten?',
|
|
57
|
+
answer: 'Ja. Klicke auf das Lautsprechersymbol in der oberen rechten Ecke, um den Ton ein- oder auszuschalten. Das Tool spielt ein Tick-Geräusch während des Countdowns und einen Fanfarenklang, wenn ein Gewinner ausgewählt wird.',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: 'Was passiert, wenn nur ein Spieler teilnimmt?',
|
|
61
|
+
answer: 'In beiden Modi sind mindestens zwei Spieler erforderlich, um eine Auswahl zu treffen. Im Fingermodus startet der Countdown erst, wenn mindestens zwei Finger erkannt werden. Im Roulette-Modus bleibt die Schaltfläche "Auswahl starten" deaktiviert, bis du mindestens zwei Pins gesetzt hast.',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const howTo = [
|
|
66
|
+
{
|
|
67
|
+
name: 'Finger oder Pins platzieren',
|
|
68
|
+
text: 'Lege im Fingermodus alle Spieler einen Finger auf den Bildschirm. Klicke im Roulette-Modus irgendwo auf die Leinwand, um Spieler-Pins zu setzen.',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Auswahl auslösen',
|
|
72
|
+
text: 'Im Fingermodus startet die Auswahl automatisch nach einigen Sekunden Halten. Im Roulette-Modus klicke auf die Schaltfläche "Auswahl starten", um das Rad zu drehen.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Gewinner anzeigen',
|
|
76
|
+
text: 'Der Gewinner wird mit einem Pulse-Effekt, Partikelausbruch und Sound-Fanfare hervorgehoben. Klicke auf "Zurücksetzen" oder hebe alle Finger an, um es erneut zu versuchen.',
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
export const content: ToolLocaleContent<FirstPlayerSelectorUI> = {
|
|
81
|
+
slug: 'erstspieler-auswahl',
|
|
82
|
+
title: 'Startspielerauswahl: Finger Chooser & Zug Roulette',
|
|
83
|
+
description: 'Wähle mit diesem spektakulären Finger Chooser und interaktiven Zug Roulette aus, wer in deinen Brettspielen beginnt.',
|
|
84
|
+
ui,
|
|
85
|
+
seo: [
|
|
86
|
+
{ type: 'title', text: 'Fairness und Strategie: Den Startspielervorteil in Brettspielen ausgleichen', level: 2 },
|
|
87
|
+
{ type: 'paragraph', html: 'Die Bestimmung des Startspielers in Tabletop-Runden kann den Spielverlauf stark beeinflussen. In der Spieltheorie bezeichnet der Startspielervorteil (First-Player Advantage, FPA) den statistischen Vorsprung, den der Spieler mit dem ersten Zug gegenüber seinen Gegnern hat. In strategischen Schachpartien, Kriegsspielen und modernen Eurogames wie Agricola oder Puerto Rico ermöglicht der erste Zug einem Spieler, kritische Ressourcen zu sichern oder Figuren zu positionieren, bevor Gegner reagieren können. Um FPA zu vermeiden und ein faires Spielfeld zu garantieren, ist eine zuverlässige, unvoreingenommene Auswahlmethode unerlässlich. Unser digitaler Startspieler-Auswahlgenerator garantiert absolute Zufälligkeit, sodass Spielgruppen sofort die Zugreihenfolge festlegen und direkt mit dem Spielen beginnen können.' },
|
|
88
|
+
{
|
|
89
|
+
type: 'stats',
|
|
90
|
+
items: [
|
|
91
|
+
{ value: '100% Zufall', label: 'Unvoreingenommene Auswahl' },
|
|
92
|
+
{ value: '2 Sekunden', label: 'Countdown-Start' },
|
|
93
|
+
{ value: 'Multitouch', label: 'Mobil kompatibel' },
|
|
94
|
+
],
|
|
95
|
+
columns: 3,
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Tabletop-Regeln vs. Digitale Zufallsgeneratoren: Die Touch-Revolution', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Viele moderne Brettspielregelbücher enthalten thematische Startspielerregeln wie "der jüngste Spieler beginnt", "derjenige, der zuletzt auf einem Bauernhof war, beginnt" oder "der größte Spieler beginnt". Obwohl sie in den ersten Partien unterhaltsam sind, werden diese Regeln für regelmäßige Spielrunden schnell repetitiv, statisch und unfair. Physische Zufallsgeneratoren wie Würfelwürfe oder Kartenziehen verlängern die Aufbauzeit und sind anfällig für menschliche Voreingenommenheit oder schlechtes Mischen. Der Finger-Chooser-Mechanismus löst dieses Problem, indem er einen schnellen Touch-and-Hold-Zufallsgenerator bietet, der in Sekundenschnelle einen Startspieler auswählt, ohne zusätzliche Karten oder Würfel zu benötigen.' },
|
|
99
|
+
{
|
|
100
|
+
type: 'table',
|
|
101
|
+
headers: ['Auswahlmethode', 'Geschwindigkeit und Aufbau', 'Zufallsqualität', 'Am besten geeignet für'],
|
|
102
|
+
rows: [
|
|
103
|
+
['Beliebige Regelbuchregeln', 'Sofort, aber repetitiv', 'Keine Zufälligkeit nach dem ersten Spiel', 'Familienspiele und Partyspiele'],
|
|
104
|
+
['Würfelvergleich', 'Erfordert Würfelsuche und -wurf, anfällig für Gleichstand', 'Hohe Zufälligkeit, aber mühsam bei großen Gruppen', 'Kriegsspiele und Rollenspiele'],
|
|
105
|
+
['Kartenziehen', 'Erfordert Mischen und Austeilen', 'Gute Zufälligkeit, aber physische Karten nötig', 'Deck-Building- und Kartenspiele'],
|
|
106
|
+
['Touch-Finger-Auswahl', 'Sofort, kein Aufbau, visuelle Animationen', 'Absolute algorithmische Zufälligkeit', 'Alle Tabletop- und Brettspiele'],
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'tip',
|
|
111
|
+
title: 'Optimierung deines Multitouch Auswahl Setups',
|
|
112
|
+
html: 'Für die beste Erfahrung im Fingermodus lege dein Tablet oder Smartphone flach in die Tischmitte. Alle Spieler sollten einen Finger deutlich auf die Leinwand legen. Der Countdown wird zurückgesetzt, wenn ein Spieler seinen Finger anhebt oder verschiebt, wodurch versehentliche Auslösungen verhindert und absolute Einigkeit vor dem Start des Auswahlvorgangs sichergestellt wird.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Werkzeugauswahl: Touch Finger Chooser vs. Spin Roulette',
|
|
117
|
+
level: 3,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'Je nach Hardware-Setup und Umgebung kannst du zwischen zwei verschiedenen Layout-Modi wechseln, die die Bildschirmfläche und Zugänglichkeit maximieren:' },
|
|
122
|
+
{
|
|
123
|
+
type: 'proscons',
|
|
124
|
+
title: 'Vergleich der Auswahlmodi',
|
|
125
|
+
items: [
|
|
126
|
+
{
|
|
127
|
+
pro: 'Der Fingermodus bietet ein extrem schnelles und taktiles Erlebnis, bei dem bis zu 10 Spieler gleichzeitig Finger auflegen können.',
|
|
128
|
+
con: 'Erfordert einen touchfähigen Bildschirm wie ein Smartphone oder Tablet.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
pro: 'Der Roulette-Modus funktioniert auf jedem Laptop, Desktop oder Projektorbildschirm und ist ideal für virtuelle Sitzungen und Remote-Spieleabende.',
|
|
132
|
+
con: 'Erfordert Klicken, um manuell Pins zu setzen, bevor der Spin ausgelöst wird.',
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'title',
|
|
138
|
+
text: 'Visuelle Optimierung: Multitouch Netze vs. Verzögerungsräder',
|
|
139
|
+
level: 3,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'comparative',
|
|
143
|
+
items: [
|
|
144
|
+
{
|
|
145
|
+
title: 'Multitouch Auswahl',
|
|
146
|
+
description: 'Verfolgt mehrere einzelne Berührungspunkte auf dem Bildschirm. Zeichnet neonfarbene Verbindungsnetze und schrumpfende Countdown-Ringe um jeden Finger, die in einem Feier-Ausbruch gipfeln.',
|
|
147
|
+
icon: 'mdi:gesture-double-tap',
|
|
148
|
+
highlight: true,
|
|
149
|
+
points: [
|
|
150
|
+
'Gleichzeitige Berührungsverfolgung',
|
|
151
|
+
'Taktile Halte- und Loslass-Prüfungen',
|
|
152
|
+
'Spektakuläre Partikelexplosionen',
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
title: 'Spin Roulette Rad',
|
|
157
|
+
description: 'Zeichnet farbige Spieler-Pins um einen mathematischen Mittelpunkt. Dreht ein farbiges Sektor-Rad, das durch simulierte Reibung natürlich langsamer wird, bevor der Gewinner bestimmt wird.',
|
|
158
|
+
icon: 'mdi:compass-outline',
|
|
159
|
+
highlight: false,
|
|
160
|
+
points: [
|
|
161
|
+
'Mittelpunkt-basierte Ausrichtung',
|
|
162
|
+
'Reibungsbasierte Verlangsamungsphysik',
|
|
163
|
+
'Universelle Desktop-Mausunterstützung',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
columns: 2,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'glossary',
|
|
171
|
+
items: [
|
|
172
|
+
{
|
|
173
|
+
term: 'Startspielervorteil (FPA)',
|
|
174
|
+
definition: 'Eine Zugreihenfolge-Verzerrung in Brettspielen, bei der der beginnende Spieler einen statistisch signifikanten Vorteil bei der Aktionsauswahl oder Ressourcenkontrolle erhält.',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Touch-Auswahl-Protokoll',
|
|
178
|
+
definition: 'Eine Touch-and-Hold-Interaktion, bei der alle Teilnehmer ihre Finger auf einen Touchscreen legen, bis ein einzelner Gewinner zufällig hervorgehoben wird.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'Verzögerungsphysik',
|
|
182
|
+
definition: 'Eine mathematische Animationsroutine, die Reibungsmultiplikatoren auf ein sich drehendes Rad anwendet, um natürliche Trägheit zu simulieren und Spannung aufzubauen.',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Mittelpunktberechnung',
|
|
186
|
+
definition: 'Der berechnete Mittelpunkt einer verstreuten Menge von Koordinaten-Pins, der als Drehpunkt für die Roulette-Radgrafik dient.',
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
faq: faq,
|
|
192
|
+
bibliography,
|
|
193
|
+
howTo: howTo,
|
|
194
|
+
schemas: [
|
|
195
|
+
{
|
|
196
|
+
'@context': 'https://schema.org',
|
|
197
|
+
'@type': 'FAQPage',
|
|
198
|
+
'mainEntity': faq.map((f) => ({
|
|
199
|
+
'@type': 'Question',
|
|
200
|
+
'name': f.question,
|
|
201
|
+
'acceptedAnswer': {
|
|
202
|
+
'@type': 'Answer',
|
|
203
|
+
'text': f.answer,
|
|
204
|
+
},
|
|
205
|
+
})),
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
'@context': 'https://schema.org',
|
|
209
|
+
'@type': 'SoftwareApplication',
|
|
210
|
+
'name': 'Startspielerauswahl & Finger Chooser',
|
|
211
|
+
'operatingSystem': 'Alle',
|
|
212
|
+
'applicationCategory': 'UtilitiesApplication',
|
|
213
|
+
'browserRequirements': 'Erfordert HTML5 und JavaScript.'
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
'@context': 'https://schema.org',
|
|
217
|
+
'@type': 'HowTo',
|
|
218
|
+
'name': 'Startspielerauswahl verwenden',
|
|
219
|
+
'step': howTo.map((h) => ({
|
|
220
|
+
'@type': 'HowToStep',
|
|
221
|
+
'name': h.name,
|
|
222
|
+
'text': h.text,
|
|
223
|
+
})),
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
};
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { FirstPlayerSelectorUI } from '../entry';
|
|
4
|
+
|
|
5
|
+
const ui: FirstPlayerSelectorUI = {
|
|
6
|
+
title: 'First Player Selector',
|
|
7
|
+
instructions: 'Place your fingers on the screen or click to add pins',
|
|
8
|
+
tapToSelect: 'Tap to Select',
|
|
9
|
+
winner: 'Winner chosen!',
|
|
10
|
+
reset: 'Reset',
|
|
11
|
+
start: 'Start Choice',
|
|
12
|
+
setupTitle: 'Selector Settings',
|
|
13
|
+
clearPlayers: 'Clear All Pins',
|
|
14
|
+
fingerMode: 'Finger Mode',
|
|
15
|
+
wheelMode: 'Roulette Mode',
|
|
16
|
+
presetsTitle: 'Options',
|
|
17
|
+
soundOn: 'Sound On',
|
|
18
|
+
soundOff: 'Sound Off',
|
|
19
|
+
playerCountLabel: 'Pins / Fingers',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const faq = [
|
|
23
|
+
{
|
|
24
|
+
question: 'How does Finger Mode work?',
|
|
25
|
+
answer: 'In Finger Mode, each player places a finger on the mobile screen. The tool detects all touch points, displays glowing colored rings around them, and automatically starts a short countdown. Once the countdown ends, one player is highlighted as the winner while others fade out, accompanied by an explosion of particles.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Can I use this tool on a desktop computer?',
|
|
29
|
+
answer: 'Yes! If you are on a non-touch device, the tool automatically defaults to Roulette Mode. You can click on the canvas to place colored pins representing players, then click the Start Choice button to spin the selector wheel.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
question: 'How many players can participate?',
|
|
33
|
+
answer: 'The tool supports up to 10 simultaneous players. In Finger Mode, up to 10 fingers can be detected at once. In Roulette Mode, you can place up to 10 colored pins on the canvas by clicking.',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
question: 'Is the selection truly random?',
|
|
37
|
+
answer: 'Yes. The selection algorithm uses JavaScript\'s cryptographic-grade Math.random() to ensure unbiased results. In Finger Mode, the winner is chosen uniformly at random among all detected touch points. In Roulette Mode, the wheel decelerates realistically using friction physics, and the final angle determines the winner mathematically.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
question: 'How do I remove a player pin in Roulette Mode?',
|
|
41
|
+
answer: 'Simply click on an existing pin to remove it. The tool detects clicks within 30 pixels of any placed pin and deletes it, allowing you to adjust the player lineup before triggering the spin.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
question: 'Does this tool collect or transmit any data?',
|
|
45
|
+
answer: 'Not at all. Everything runs locally in your browser. No finger data, touch positions, or selection results are ever sent to any server. Your game night stays completely private.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
question: 'Does it work on projectors or external screens?',
|
|
49
|
+
answer: 'Yes. Roulette Mode works great on large screens and projectors for tabletop sessions. The high-contrast neon visuals and big countdown timer are designed to be visible from across the room.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
question: 'Why does the countdown reset when someone lifts their finger?',
|
|
53
|
+
answer: 'This is intentional. In Finger Mode, the countdown only proceeds while all players keep their fingers steady on the screen. If anyone lifts or shifts, the timer resets to ensure everyone is committed before the selection runs. This prevents accidental triggers.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
question: 'Can I change the sound or mute it?',
|
|
57
|
+
answer: 'Yes. Click the speaker icon in the top-right corner to toggle sound on or off. The tool plays a tick sound during countdown and a fanfare when a winner is chosen.',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
question: 'What happens if there is only one player?',
|
|
61
|
+
answer: 'In both modes, at least two players are required to make a selection. In Finger Mode, the countdown will not start until at least two fingers are detected. In Roulette Mode, the Start Choice button remains disabled until you place at least two pins.',
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const howTo = [
|
|
66
|
+
{
|
|
67
|
+
name: 'Place Fingers or Pins',
|
|
68
|
+
text: 'In Finger Mode, have all players place one finger on the screen. In Roulette Mode, click anywhere on the canvas to place player pins.',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Trigger Selection',
|
|
72
|
+
text: 'For Finger Mode, the selection starts automatically after holding for a few seconds. For Roulette Mode, click the Start Choice button to spin.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'See the Winner',
|
|
76
|
+
text: 'The winner is highlighted with a pulse effect, particle burst, and sound fanfare. Click Reset or lift all fingers to try again.',
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
|
|
80
|
+
export const content: ToolLocaleContent<FirstPlayerSelectorUI> = {
|
|
81
|
+
slug: 'first-player-selector',
|
|
82
|
+
title: 'First Player Selector: Finger Chooser & Turn Roulette',
|
|
83
|
+
description: 'Choose who goes first in your board games with this spectacular finger chooser and interactive turn roulette.',
|
|
84
|
+
ui,
|
|
85
|
+
seo: [
|
|
86
|
+
{ type: 'title', text: 'Fairness and Strategy: Resolving the First-Player Advantage in Board Games', level: 2 },
|
|
87
|
+
{ type: 'paragraph', html: 'Determining the starting player in tabletop sessions can heavily influence game dynamics. In game theory, the First-Player Advantage (FPA) refers to the statistical edge that the player taking the first turn has over their opponents. In strategic chess matches, wargames, and modern Eurogames like Agricola or Puerto Rico, taking the first action allows a player to secure critical resources or position pieces before opponents can react. To mitigate FPA and guarantee a balanced playing field, a reliable, unbiased selection method is essential. Our digital starting player selector guarantees absolute randomness, allowing gaming groups to establish turn order instantly and get straight to playing.' },
|
|
88
|
+
{
|
|
89
|
+
type: 'stats',
|
|
90
|
+
items: [
|
|
91
|
+
{ value: '100% Random', label: 'Unbiased Selection' },
|
|
92
|
+
{ value: '2 Seconds', label: 'Countdown Trigger' },
|
|
93
|
+
{ value: 'Touch', label: 'Mobile Compatible' },
|
|
94
|
+
],
|
|
95
|
+
columns: 3,
|
|
96
|
+
},
|
|
97
|
+
{ type: 'title', text: 'Tabletop Rules vs. Digital Randomizers: The Touch Revolution', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Many modern board game rulebooks include thematic starting player rules, such as "the youngest player goes first," "the last person to visit a farm goes first," or "the tallest player goes first." While amusing during initial games, these rules quickly become repetitive, static, and unfair for regular playgroups. Physical randomizers like roll-offs or card draws add setup time and are prone to human bias or poor shuffling. The finger-chooser mechanic solves this by offering a fast, touch-and-hold randomizer that selects a starting player in seconds without requiring extra cards or dice.' },
|
|
99
|
+
{
|
|
100
|
+
type: 'table',
|
|
101
|
+
headers: ['Selection Method', 'Speed and Setup', 'Randomness Quality', 'Best Suited For'],
|
|
102
|
+
rows: [
|
|
103
|
+
['Arbitrary Rulebook Rules', 'Instant, but repetitive', 'Zero randomness after the first game', 'Family games and party games'],
|
|
104
|
+
['Dice Roll-Offs', 'Requires finding and rolling dice, prone to ties', 'High randomness, but tedious for large groups', 'Wargames and RPGs'],
|
|
105
|
+
['Card Drawing', 'Requires shuffling and dealing', 'Good randomness, but requires physical cards', 'Deck-builders and card games'],
|
|
106
|
+
['Touch Finger Selector', 'Instant, zero setup, visual animations', 'Absolute algorithmic randomness', 'All tabletop and board games'],
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
type: 'tip',
|
|
111
|
+
title: 'Optimizing Your Touch Chooser Setup',
|
|
112
|
+
html: 'For the best experience in Finger Mode, place your tablet or smartphone flat in the center of the table. Have all players place a single finger clearly on the canvas. The countdown resets if a player lifts or shifts their finger, preventing accidental trigger selections and ensuring absolute consensus before the picker runs.',
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
type: 'title',
|
|
116
|
+
text: 'Choosing Your Tool: Touch Finger Chooser vs. Spin Roulette',
|
|
117
|
+
level: 3,
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
type: 'paragraph',
|
|
121
|
+
html: 'Depending on your hardware setup and environment, you can toggle between two distinct layout modes designed to maximize screen real estate and accessibility:' },
|
|
122
|
+
{
|
|
123
|
+
type: 'proscons',
|
|
124
|
+
title: 'Comparing Selection Modes',
|
|
125
|
+
items: [
|
|
126
|
+
{
|
|
127
|
+
pro: 'Finger Mode offers an incredibly fast and tactile experience, allowing up to 10 players to place fingers simultaneously.',
|
|
128
|
+
con: 'Requires a touch-capable screen like a smartphone or tablet.',
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
pro: 'Roulette Mode operates on any laptop, desktop, or projector screen, making it ideal for virtual sessions and remote game nights.',
|
|
132
|
+
con: 'Requires clicking to manually place pins before triggering the spin.',
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
type: 'title',
|
|
138
|
+
text: 'Visual Optimization: Touch Webs vs. Decelerating Wheels',
|
|
139
|
+
level: 3,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
type: 'comparative',
|
|
143
|
+
items: [
|
|
144
|
+
{
|
|
145
|
+
title: 'Touch Chooser',
|
|
146
|
+
description: 'Tracks multiple distinct touch points on screen. Draws neon connection webs and shrinking countdown rings around each finger, culminating in a celebration burst.',
|
|
147
|
+
icon: 'mdi:gesture-double-tap',
|
|
148
|
+
highlight: true,
|
|
149
|
+
points: [
|
|
150
|
+
'Simultaneous touch tracking',
|
|
151
|
+
'Tactile hold-and-release checks',
|
|
152
|
+
'Spectacular particle explosions',
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
title: 'Spin Roulette Wheel',
|
|
157
|
+
description: 'Plots colored player pins around a mathematical centroid. Spins a colored sector wheel that slows down naturally using simulated friction before designating the winner.',
|
|
158
|
+
icon: 'mdi:compass-outline',
|
|
159
|
+
highlight: false,
|
|
160
|
+
points: [
|
|
161
|
+
'Centroid-based alignment',
|
|
162
|
+
'Friction-based slowdown physics',
|
|
163
|
+
'Universal desktop mouse support',
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
columns: 2,
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
type: 'glossary',
|
|
171
|
+
items: [
|
|
172
|
+
{
|
|
173
|
+
term: 'First-Player Advantage (FPA)',
|
|
174
|
+
definition: 'A turn-order bias in board games where the starting player gains a statistically significant edge in action-selection or resource control.',
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
term: 'Touch Selection Protocol',
|
|
178
|
+
definition: 'A touch-and-hold interaction where all participants place their fingers on a touch screen until a single winner is randomly highlighted.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
term: 'Deceleration Physics',
|
|
182
|
+
definition: 'A mathematical animation routine that applies friction multipliers to a spinning wheel to simulate natural inertia and build anticipation.',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
term: 'Centroid Calculation',
|
|
186
|
+
definition: 'The computed center point of a scattered set of coordinate pins, used as the rotation pivot for the roulette wheel graphics.',
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
faq: faq,
|
|
192
|
+
bibliography,
|
|
193
|
+
howTo: howTo,
|
|
194
|
+
schemas: [
|
|
195
|
+
{
|
|
196
|
+
'@context': 'https://schema.org',
|
|
197
|
+
'@type': 'FAQPage',
|
|
198
|
+
'mainEntity': faq.map((f) => ({
|
|
199
|
+
'@type': 'Question',
|
|
200
|
+
'name': f.question,
|
|
201
|
+
'acceptedAnswer': {
|
|
202
|
+
'@type': 'Answer',
|
|
203
|
+
'text': f.answer,
|
|
204
|
+
},
|
|
205
|
+
})),
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
'@context': 'https://schema.org',
|
|
209
|
+
'@type': 'SoftwareApplication',
|
|
210
|
+
'name': 'First Player Selector & Finger Chooser',
|
|
211
|
+
'operatingSystem': 'All',
|
|
212
|
+
'applicationCategory': 'UtilitiesApplication',
|
|
213
|
+
'browserRequirements': 'Requires HTML5. Requires JavaScript.',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
'@context': 'https://schema.org',
|
|
217
|
+
'@type': 'HowTo',
|
|
218
|
+
'name': 'How to Use the First Player Selector',
|
|
219
|
+
'step': howTo.map((h) => ({
|
|
220
|
+
'@type': 'HowToStep',
|
|
221
|
+
'name': h.name,
|
|
222
|
+
'text': h.text,
|
|
223
|
+
})),
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
};
|