@jjlmoya/utils-creative 1.26.0 → 1.28.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 +2 -2
- package/src/category/i18n/de.ts +2 -2
- package/src/category/i18n/en.ts +2 -2
- package/src/category/i18n/es.ts +2 -2
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/id.ts +2 -2
- package/src/category/i18n/it.ts +2 -2
- package/src/category/i18n/ja.ts +2 -2
- package/src/category/i18n/ko.ts +2 -2
- package/src/category/i18n/nl.ts +2 -2
- package/src/category/i18n/pl.ts +2 -2
- package/src/category/i18n/pt.ts +2 -2
- package/src/category/i18n/ru.ts +2 -2
- package/src/category/i18n/sv.ts +2 -2
- package/src/category/i18n/tr.ts +2 -2
- package/src/category/i18n/zh.ts +2 -2
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/env.d.ts +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_translation_completeness.test.ts +75 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +17 -17
- package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
- package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
- package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
- package/src/tool/bead-pattern-generator/seo.astro +19 -19
- package/src/tool/dice-roller/bibliography.astro +8 -8
- package/src/tool/dice-roller/i18n/de.ts +134 -134
- package/src/tool/dice-roller/i18n/en.ts +134 -134
- package/src/tool/dice-roller/i18n/es.ts +125 -125
- package/src/tool/dice-roller/i18n/fr.ts +134 -134
- package/src/tool/dice-roller/i18n/id.ts +134 -134
- package/src/tool/dice-roller/i18n/it.ts +134 -134
- package/src/tool/dice-roller/i18n/ja.ts +134 -134
- package/src/tool/dice-roller/i18n/ko.ts +134 -134
- package/src/tool/dice-roller/i18n/nl.ts +134 -134
- package/src/tool/dice-roller/i18n/pl.ts +134 -134
- package/src/tool/dice-roller/i18n/pt.ts +134 -134
- package/src/tool/dice-roller/i18n/ru.ts +134 -134
- package/src/tool/dice-roller/i18n/sv.ts +134 -134
- package/src/tool/dice-roller/i18n/tr.ts +134 -134
- package/src/tool/dice-roller/i18n/zh.ts +134 -134
- package/src/tool/dice-roller/seo.astro +15 -15
- package/src/tool/excuse-generator/bibliography.astro +8 -8
- package/src/tool/excuse-generator/i18n/de.ts +120 -120
- package/src/tool/excuse-generator/i18n/en.ts +120 -120
- package/src/tool/excuse-generator/i18n/es.ts +118 -118
- package/src/tool/excuse-generator/i18n/fr.ts +120 -120
- package/src/tool/excuse-generator/i18n/id.ts +120 -120
- package/src/tool/excuse-generator/i18n/it.ts +120 -120
- package/src/tool/excuse-generator/i18n/ja.ts +120 -120
- package/src/tool/excuse-generator/i18n/ko.ts +120 -120
- package/src/tool/excuse-generator/i18n/nl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pt.ts +120 -120
- package/src/tool/excuse-generator/i18n/ru.ts +120 -120
- package/src/tool/excuse-generator/i18n/sv.ts +120 -120
- package/src/tool/excuse-generator/i18n/tr.ts +120 -120
- package/src/tool/excuse-generator/i18n/zh.ts +120 -120
- package/src/tool/excuse-generator/seo.astro +15 -15
- package/src/tool/fortune-cookie/bibliography.astro +8 -8
- package/src/tool/fortune-cookie/i18n/de.ts +124 -124
- package/src/tool/fortune-cookie/i18n/en.ts +124 -124
- package/src/tool/fortune-cookie/i18n/es.ts +125 -125
- package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/id.ts +124 -124
- package/src/tool/fortune-cookie/i18n/it.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
- package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
- package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
- package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
- package/src/tool/fortune-cookie/seo.astro +15 -15
- package/src/tool/synesthesia-painter/bibliography.astro +8 -8
- package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
- package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
- package/src/tool/synesthesia-painter/seo.astro +15 -15
- package/src/tool/zalgo-generator/bibliography.astro +8 -8
- package/src/tool/zalgo-generator/i18n/de.ts +109 -109
- package/src/tool/zalgo-generator/i18n/en.ts +109 -109
- package/src/tool/zalgo-generator/i18n/es.ts +109 -109
- package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/id.ts +109 -109
- package/src/tool/zalgo-generator/i18n/it.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
- package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
- package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
- package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
- package/src/tool/zalgo-generator/seo.astro +15 -15
- package/src/types.ts +1 -1
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'dice-roller';
|
|
6
|
-
const title = '주사위 굴리기';
|
|
7
|
-
const description = 'RPG 및 보드게임을 위한 완벽한 주사위 시뮬레이터입니다. 수정치 및 기록 기능과 함께 d4, d6, d8, d10, d12, d20, d100을 굴려보세요.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: '유리함(Advantage) 판정(D&D)은 어떻게 시뮬레이션 하나요?',
|
|
12
|
-
answer: 'd20 버튼을 두 번 클릭하여 주사위 주머니에 d20 두 개를 추가하세요. 주사위를 굴린 후, 두 개의 개별 결과 중 더 높은 값을 취하면 됩니다. 표시되는 합계는 두 주사위의 합이지만, 결과 상세 내역을 통해 각 주사위의 눈을 개별적으로 확인할 수 있습니다.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: '결과값에 표시되는 초록색과 빨간색은 무엇을 의미하나요?',
|
|
16
|
-
answer: '초록색 결과는 주사위에서 나올 수 있는 최댓값이 나왔음("크리티컬")을 나타냅니다. 빨간색 결과는 최솟값("1", 즉 펌블)이 나왔음을 의미합니다. 이를 통해 크리티컬 성공과 대실패를 한눈에 파악할 수 있습니다.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: '같은 종류의 주사위를 여러 개 추가할 수 있나요?',
|
|
20
|
-
answer: '네. 주사위 버튼을 클릭할 때마다 주머니에 추가됩니다. d6을 세 번 클릭하면 주머니에 "3d6"이라고 표시됩니다. 개수를 줄이려면 주머니의 각 주사위 그룹 옆에 나타나는 "−" 버튼을 클릭하세요.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: '디지털 주사위가 실제 주사위만큼 무작위한가요?',
|
|
24
|
-
answer: '통계적으로 그렇습니다. 현대의 자바스크립트 엔진은 매우 높은 품질의 균등 분포를 가진 의사 난수 알고리즘(xorshift128+)을 사용합니다. 실제 주사위는 제조상의 미세한 결함으로 인해 결과가 편향될 수 있지만, 디지털 주사위는 그런 문제가 없습니다.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'd100은 무엇이며 어떻게 사용되나요?',
|
|
28
|
-
answer: 'd100(또는 d%)은 1부터 100까지의 숫자를 생성하며, \'크툴루의 부름\'이나 \'워해머 판타지 RPG\'와 같은 퍼센트 기반 게임 시스템에서 사용됩니다. 이는 "직접 확률"을 나타냅니다. 예를 들어, 은신 기술 수치가 65%라면 성공하려면 굴림 결과가 65 이하여야 합니다.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: '주사위 풀 구성', text: '주사위 버튼(d4, d6, d8...)을 클릭하여 풀에 추가하세요. 클릭할 때마다 해당 유형의 주사위가 하나씩 추가됩니다. 한 번의 굴림에 여러 유형을 섞어서 사용할 수 있습니다.' },
|
|
34
|
-
{ name: '수정치 조정', text: '수정치 옆의 "+" 및 "−" 버튼을 사용하여 보너스 또는 페널티(D&D의 능력치 수정치 등)를 적용하세요. 수정치는 합계에 자동으로 반영됩니다.' },
|
|
35
|
-
{ name: '주사위 굴리기', text: '"주사위 굴리기" 버튼을 누르세요. 오른쪽 패널에 최종 합계와 각 주사위의 개별 결과가 표시되며, 크리티컬(최댓값)은 초록색으로, 펌블(최솟값)은 빨간색으로 표시됩니다.' },
|
|
36
|
-
{ name: '기록 확인', text: '모든 굴림은 사용된 주사위 표현식, 총 결과, 정확한 시간과 함께 기록에 남습니다. 기록은 해당 버튼으로 초기화할 수 있습니다.' },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
-
'@context': 'https://schema.org',
|
|
41
|
-
'@type': 'FAQPage',
|
|
42
|
-
mainEntity: faq.map((item) => ({
|
|
43
|
-
'@type': 'Question',
|
|
44
|
-
name: item.question,
|
|
45
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
-
})),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const howToSchema: WithContext<HowTo> = {
|
|
50
|
-
'@context': 'https://schema.org',
|
|
51
|
-
'@type': 'HowTo',
|
|
52
|
-
name: title,
|
|
53
|
-
description,
|
|
54
|
-
step: howTo.map((step) => ({
|
|
55
|
-
'@type': 'HowToStep',
|
|
56
|
-
name: step.name,
|
|
57
|
-
text: step.text,
|
|
58
|
-
})),
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
-
'@context': 'https://schema.org',
|
|
63
|
-
'@type': 'SoftwareApplication',
|
|
64
|
-
name: title,
|
|
65
|
-
description,
|
|
66
|
-
applicationCategory: 'UtilitiesApplication',
|
|
67
|
-
operatingSystem: 'Web',
|
|
68
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
-
inLanguage: 'ko',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: '자주 묻는 질문',
|
|
77
|
-
ui: {
|
|
78
|
-
title: '주사위 굴리기',
|
|
79
|
-
description: '행운이 당신과 함께하기를.',
|
|
80
|
-
rollBtn: '주사위 굴리기',
|
|
81
|
-
totalLabel: '합계',
|
|
82
|
-
historyLabel: '기록',
|
|
83
|
-
clearHistoryBtn: '기록 삭제',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: '참고 문헌',
|
|
86
|
-
addDiceLabel: '주머니에 주사위 추가',
|
|
87
|
-
bagLabel: '주사위 주머니',
|
|
88
|
-
emptyBagBtn: '비우기',
|
|
89
|
-
emptyBagText: '주사위를 클릭하여 추가하세요',
|
|
90
|
-
modifierLabel: '수정치',
|
|
91
|
-
rollManyLabel: '주사위 $COUNT개 굴리기',
|
|
92
|
-
rollOneLabel: '주사위 $COUNT개 굴리기',
|
|
93
|
-
preRollText: '주사위를 추가하고 굴리세요',
|
|
94
|
-
emptyHistoryText: '주사위 기록이 여기에 표시됩니다'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: '무작위의 예술: 주사위의 역사와 수학', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: '주사위는 인류가 가진 가장 오래된 무작위 생성기 중 하나입니다. 양과 염소의 발목뼈인 <strong>아스트라갈리(Astragali)</strong>는 기원전 5000년경 메소포타미아와 이집트에서 원시적인 4면체 주사위로 사용되었습니다. 깎아 만든 뼈에서 현대의 에폭시 수지 정이십면체에 이르기까지의 진화는 단순히 미적인 것뿐만 아니라, 확률 이론과 게임 메커니즘 설계의 여정이기도 합니다.' },
|
|
99
|
-
{ type: 'title', text: '표준 주사위 세트', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: '1974년 <strong>Dungeons & Dragons</strong>에 의해 대중화된 롤플레잉 게임용 주사위 세트는 5개의 플라톤 다면체와 2개의 추가 형태로 구성됩니다: d4(정사면체), d6(정육면체), d8(정팔면체), d10(오각 트라페조헤드론), d12(정십이면체), d20(정이십면체) 및 d100(백분율 주사위). 각 다면체는 모든 면이 나올 확률이 정확히 동일한 균등 분포를 보장합니다.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>d4 - 정사면체:</strong> 맨발로 밟았을 때 가장 위험합니다. 4개의 삼각형 면을 가지며, 면당 확률은 25%입니다. 주로 단검 피해량이나 저레벨 주문에 사용됩니다.',
|
|
103
|
-
'<strong>d6 - 정육면체:</strong> 가장 보편적인 주사위입니다. 이집트의 세네트 이후 모든 보드게임에 등장합니다. 정육면체 기하학은 완벽한 균등 배분을 보장합니다.',
|
|
104
|
-
'<strong>d8 - 정팔면체:</strong> 창이나 배틀액스의 주사위입니다. 8개의 정삼각형 면을 가지며, 면당 확률은 12.5%입니다.',
|
|
105
|
-
'<strong>d10 - 오각 트라페조헤드론:</strong> 표준 세트 중 유일하게 플라톤 다면체가 아닌 형태입니다. 각 "정점"당 두 개의 마주보는 면이 있습니다. d100(두 개의 d10 결합)에 필수적입니다.',
|
|
106
|
-
'<strong>d12 - 정십이면체:</strong> 바바리안의 주사위입니다. 12개의 오각형 면을 가집니다. 많은 시스템에서 저평가되기도 하지만, D&D 5판 바바리안의 주역입니다.',
|
|
107
|
-
'<strong>d20 - 정이십면체:</strong> RPG의 왕입니다. 20개의 삼각형 면을 가집니다. d20 시스템의 주역으로, 거의 모든 행동의 성패를 결정합니다.',
|
|
108
|
-
'<strong>d100 - 백분율:</strong> 두 개의 d10을 결합(십의 자리 + 일의 자리)한 것입니다. \'크툴루의 부름\'이나 \'워해머 판타지\'와 같은 시스템에서 세밀한 확률을 정의합니다.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '기원전 5000년', label: '최초의 주사위 (아스트라갈리)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974년', label: 'D&D를 통한 세트의 대중화', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7가지 종류', label: '표준 RPG 주사위', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: '자바스크립트 난수 주기', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: '확률과 분포 곡선', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: '주사위 한 개를 굴리면 <strong>이산 균등 분포</strong>를 얻게 됩니다. 즉, 모든 결과의 확률이 정확히 동일(1/n)합니다. 하지만 여러 개의 주사위를 결합하면 수학적인 마법이 일어나 평평했던 곡선을 <strong>정규 분포에 근접</strong>하게 변형시킵니다. 이것이 2d6이 1d12와 다른 이유입니다. 두 개의 6면 주사위로 7을 굴릴 확률은 6/36 ≈ 16.7%인 반면, 양 끝값(2와 12)이 나올 확률은 2.8%에 불과합니다.' },
|
|
118
|
-
{ type: 'tip', title: '유리함과 불리함 (D&D 5e)', html: '<strong>유리함(Advantage)</strong> 메커니즘은 2d20을 굴려 더 높은 결과를 취하는 것입니다. 통계적으로 이는 평균값을 10.5에서 약 13.8로 높여줍니다. <strong>불리함(Disadvantage)</strong>은 반대로 더 낮은 결과를 취하여 평균을 약 7.2로 떨어뜨립니다. 본 시뮬레이터에서는 주머니에 두 개의 d20을 추가하고 결과를 비교함으로써 이를 시뮬레이션할 수 있습니다.' },
|
|
119
|
-
{ type: 'title', text: '수정치: 주사위와 캐릭터 사이의 가교', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: '대부분의 RPG 시스템에서 주사위는 단독으로 작동하지 않으며, 캐릭터의 능력을 나타내는 <strong>수정치(Modifier)</strong>가 더해지거나 빼집니다. D&D 5판에서 근력 수정치가 +5라면 1d20을 굴려 5를 더한 뒤 적의 방어력(AC)과 비교합니다. 본 시뮬레이터는 이러한 메커니즘을 충실히 반영하기 위해 수정치 제어 기능을 포함하고 있습니다.' },
|
|
121
|
-
{ type: 'tip', title: '주사위 표기 표준', html: '<strong>XdY+Z</strong> 표기법은 롤플레잉 게임의 표준입니다. Y면체 주사위 X개를 굴리고 수정치 Z를 더한다는 의미입니다. "3d6+2"는 6면체 주사위 3개를 굴리고 합계에 2를 더하라는 뜻입니다. 저희 도구는 기록 기능에 이 표기법을 사용하여 굴림 결과를 쉽게 공유하거나 기록할 수 있게 합니다.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: '크리티컬 히트', definition: '주사위 눈의 최댓값이 나오는 것(예: d20에서 20이 나오는 것). 대부분의 RPG 시스템에서 특별 보너스 효과를 발생시킵니다.' },
|
|
124
|
-
{ term: '펌블 / 1 자연수 (Nat 1)', definition: '주사위의 최솟값(1)이 나오는 것. 종종 극적인 실패나 부정적인 결과를 초래합니다.' },
|
|
125
|
-
{ term: '주사위 풀', definition: '동시에 굴려지는 주사위들의 모음입니다. 본 도구의 풀에서는 각 주사위 유형이 개수별로 그룹화되어 표시됩니다(예: 3d6 + 2d8).' },
|
|
126
|
-
{ term: '수정치 (Modifier)', definition: '캐릭터의 숙련도, 능력치 보너스 또는 상황적 페널티를 나타내며 주사위 결과에 더하거나 빼는 고정된 숫자입니다.' },
|
|
127
|
-
{ term: '백분율 굴림', definition: '두 개의 d10을 사용하여 1부터 100까지의 결과를 내는 것으로, 능력치가 백분율로 측정되는 기술 기반 시스템에서 사용됩니다.' },
|
|
128
|
-
]},
|
|
129
|
-
],
|
|
130
|
-
faq,
|
|
131
|
-
bibliography,
|
|
132
|
-
howTo,
|
|
133
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'dice-roller';
|
|
6
|
+
const title = '주사위 굴리기';
|
|
7
|
+
const description = 'RPG 및 보드게임을 위한 완벽한 주사위 시뮬레이터입니다. 수정치 및 기록 기능과 함께 d4, d6, d8, d10, d12, d20, d100을 굴려보세요.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: '유리함(Advantage) 판정(D&D)은 어떻게 시뮬레이션 하나요?',
|
|
12
|
+
answer: 'd20 버튼을 두 번 클릭하여 주사위 주머니에 d20 두 개를 추가하세요. 주사위를 굴린 후, 두 개의 개별 결과 중 더 높은 값을 취하면 됩니다. 표시되는 합계는 두 주사위의 합이지만, 결과 상세 내역을 통해 각 주사위의 눈을 개별적으로 확인할 수 있습니다.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '결과값에 표시되는 초록색과 빨간색은 무엇을 의미하나요?',
|
|
16
|
+
answer: '초록색 결과는 주사위에서 나올 수 있는 최댓값이 나왔음("크리티컬")을 나타냅니다. 빨간색 결과는 최솟값("1", 즉 펌블)이 나왔음을 의미합니다. 이를 통해 크리티컬 성공과 대실패를 한눈에 파악할 수 있습니다.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '같은 종류의 주사위를 여러 개 추가할 수 있나요?',
|
|
20
|
+
answer: '네. 주사위 버튼을 클릭할 때마다 주머니에 추가됩니다. d6을 세 번 클릭하면 주머니에 "3d6"이라고 표시됩니다. 개수를 줄이려면 주머니의 각 주사위 그룹 옆에 나타나는 "−" 버튼을 클릭하세요.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '디지털 주사위가 실제 주사위만큼 무작위한가요?',
|
|
24
|
+
answer: '통계적으로 그렇습니다. 현대의 자바스크립트 엔진은 매우 높은 품질의 균등 분포를 가진 의사 난수 알고리즘(xorshift128+)을 사용합니다. 실제 주사위는 제조상의 미세한 결함으로 인해 결과가 편향될 수 있지만, 디지털 주사위는 그런 문제가 없습니다.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'd100은 무엇이며 어떻게 사용되나요?',
|
|
28
|
+
answer: 'd100(또는 d%)은 1부터 100까지의 숫자를 생성하며, \'크툴루의 부름\'이나 \'워해머 판타지 RPG\'와 같은 퍼센트 기반 게임 시스템에서 사용됩니다. 이는 "직접 확률"을 나타냅니다. 예를 들어, 은신 기술 수치가 65%라면 성공하려면 굴림 결과가 65 이하여야 합니다.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: '주사위 풀 구성', text: '주사위 버튼(d4, d6, d8...)을 클릭하여 풀에 추가하세요. 클릭할 때마다 해당 유형의 주사위가 하나씩 추가됩니다. 한 번의 굴림에 여러 유형을 섞어서 사용할 수 있습니다.' },
|
|
34
|
+
{ name: '수정치 조정', text: '수정치 옆의 "+" 및 "−" 버튼을 사용하여 보너스 또는 페널티(D&D의 능력치 수정치 등)를 적용하세요. 수정치는 합계에 자동으로 반영됩니다.' },
|
|
35
|
+
{ name: '주사위 굴리기', text: '"주사위 굴리기" 버튼을 누르세요. 오른쪽 패널에 최종 합계와 각 주사위의 개별 결과가 표시되며, 크리티컬(최댓값)은 초록색으로, 펌블(최솟값)은 빨간색으로 표시됩니다.' },
|
|
36
|
+
{ name: '기록 확인', text: '모든 굴림은 사용된 주사위 표현식, 총 결과, 정확한 시간과 함께 기록에 남습니다. 기록은 해당 버튼으로 초기화할 수 있습니다.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faq.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowTo> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howTo.map((step) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
name: step.name,
|
|
57
|
+
text: step.text,
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'SoftwareApplication',
|
|
64
|
+
name: title,
|
|
65
|
+
description,
|
|
66
|
+
applicationCategory: 'UtilitiesApplication',
|
|
67
|
+
operatingSystem: 'Web',
|
|
68
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
+
inLanguage: 'ko',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: '자주 묻는 질문',
|
|
77
|
+
ui: {
|
|
78
|
+
title: '주사위 굴리기',
|
|
79
|
+
description: '행운이 당신과 함께하기를.',
|
|
80
|
+
rollBtn: '주사위 굴리기',
|
|
81
|
+
totalLabel: '합계',
|
|
82
|
+
historyLabel: '기록',
|
|
83
|
+
clearHistoryBtn: '기록 삭제',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: '참고 문헌',
|
|
86
|
+
addDiceLabel: '주머니에 주사위 추가',
|
|
87
|
+
bagLabel: '주사위 주머니',
|
|
88
|
+
emptyBagBtn: '비우기',
|
|
89
|
+
emptyBagText: '주사위를 클릭하여 추가하세요',
|
|
90
|
+
modifierLabel: '수정치',
|
|
91
|
+
rollManyLabel: '주사위 $COUNT개 굴리기',
|
|
92
|
+
rollOneLabel: '주사위 $COUNT개 굴리기',
|
|
93
|
+
preRollText: '주사위를 추가하고 굴리세요',
|
|
94
|
+
emptyHistoryText: '주사위 기록이 여기에 표시됩니다'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: '무작위의 예술: 주사위의 역사와 수학', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: '주사위는 인류가 가진 가장 오래된 무작위 생성기 중 하나입니다. 양과 염소의 발목뼈인 <strong>아스트라갈리(Astragali)</strong>는 기원전 5000년경 메소포타미아와 이집트에서 원시적인 4면체 주사위로 사용되었습니다. 깎아 만든 뼈에서 현대의 에폭시 수지 정이십면체에 이르기까지의 진화는 단순히 미적인 것뿐만 아니라, 확률 이론과 게임 메커니즘 설계의 여정이기도 합니다.' },
|
|
99
|
+
{ type: 'title', text: '표준 주사위 세트', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: '1974년 <strong>Dungeons & Dragons</strong>에 의해 대중화된 롤플레잉 게임용 주사위 세트는 5개의 플라톤 다면체와 2개의 추가 형태로 구성됩니다: d4(정사면체), d6(정육면체), d8(정팔면체), d10(오각 트라페조헤드론), d12(정십이면체), d20(정이십면체) 및 d100(백분율 주사위). 각 다면체는 모든 면이 나올 확률이 정확히 동일한 균등 분포를 보장합니다.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>d4 - 정사면체:</strong> 맨발로 밟았을 때 가장 위험합니다. 4개의 삼각형 면을 가지며, 면당 확률은 25%입니다. 주로 단검 피해량이나 저레벨 주문에 사용됩니다.',
|
|
103
|
+
'<strong>d6 - 정육면체:</strong> 가장 보편적인 주사위입니다. 이집트의 세네트 이후 모든 보드게임에 등장합니다. 정육면체 기하학은 완벽한 균등 배분을 보장합니다.',
|
|
104
|
+
'<strong>d8 - 정팔면체:</strong> 창이나 배틀액스의 주사위입니다. 8개의 정삼각형 면을 가지며, 면당 확률은 12.5%입니다.',
|
|
105
|
+
'<strong>d10 - 오각 트라페조헤드론:</strong> 표준 세트 중 유일하게 플라톤 다면체가 아닌 형태입니다. 각 "정점"당 두 개의 마주보는 면이 있습니다. d100(두 개의 d10 결합)에 필수적입니다.',
|
|
106
|
+
'<strong>d12 - 정십이면체:</strong> 바바리안의 주사위입니다. 12개의 오각형 면을 가집니다. 많은 시스템에서 저평가되기도 하지만, D&D 5판 바바리안의 주역입니다.',
|
|
107
|
+
'<strong>d20 - 정이십면체:</strong> RPG의 왕입니다. 20개의 삼각형 면을 가집니다. d20 시스템의 주역으로, 거의 모든 행동의 성패를 결정합니다.',
|
|
108
|
+
'<strong>d100 - 백분율:</strong> 두 개의 d10을 결합(십의 자리 + 일의 자리)한 것입니다. \'크툴루의 부름\'이나 \'워해머 판타지\'와 같은 시스템에서 세밀한 확률을 정의합니다.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '기원전 5000년', label: '최초의 주사위 (아스트라갈리)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974년', label: 'D&D를 통한 세트의 대중화', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7가지 종류', label: '표준 RPG 주사위', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: '자바스크립트 난수 주기', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: '확률과 분포 곡선', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: '주사위 한 개를 굴리면 <strong>이산 균등 분포</strong>를 얻게 됩니다. 즉, 모든 결과의 확률이 정확히 동일(1/n)합니다. 하지만 여러 개의 주사위를 결합하면 수학적인 마법이 일어나 평평했던 곡선을 <strong>정규 분포에 근접</strong>하게 변형시킵니다. 이것이 2d6이 1d12와 다른 이유입니다. 두 개의 6면 주사위로 7을 굴릴 확률은 6/36 ≈ 16.7%인 반면, 양 끝값(2와 12)이 나올 확률은 2.8%에 불과합니다.' },
|
|
118
|
+
{ type: 'tip', title: '유리함과 불리함 (D&D 5e)', html: '<strong>유리함(Advantage)</strong> 메커니즘은 2d20을 굴려 더 높은 결과를 취하는 것입니다. 통계적으로 이는 평균값을 10.5에서 약 13.8로 높여줍니다. <strong>불리함(Disadvantage)</strong>은 반대로 더 낮은 결과를 취하여 평균을 약 7.2로 떨어뜨립니다. 본 시뮬레이터에서는 주머니에 두 개의 d20을 추가하고 결과를 비교함으로써 이를 시뮬레이션할 수 있습니다.' },
|
|
119
|
+
{ type: 'title', text: '수정치: 주사위와 캐릭터 사이의 가교', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: '대부분의 RPG 시스템에서 주사위는 단독으로 작동하지 않으며, 캐릭터의 능력을 나타내는 <strong>수정치(Modifier)</strong>가 더해지거나 빼집니다. D&D 5판에서 근력 수정치가 +5라면 1d20을 굴려 5를 더한 뒤 적의 방어력(AC)과 비교합니다. 본 시뮬레이터는 이러한 메커니즘을 충실히 반영하기 위해 수정치 제어 기능을 포함하고 있습니다.' },
|
|
121
|
+
{ type: 'tip', title: '주사위 표기 표준', html: '<strong>XdY+Z</strong> 표기법은 롤플레잉 게임의 표준입니다. Y면체 주사위 X개를 굴리고 수정치 Z를 더한다는 의미입니다. "3d6+2"는 6면체 주사위 3개를 굴리고 합계에 2를 더하라는 뜻입니다. 저희 도구는 기록 기능에 이 표기법을 사용하여 굴림 결과를 쉽게 공유하거나 기록할 수 있게 합니다.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: '크리티컬 히트', definition: '주사위 눈의 최댓값이 나오는 것(예: d20에서 20이 나오는 것). 대부분의 RPG 시스템에서 특별 보너스 효과를 발생시킵니다.' },
|
|
124
|
+
{ term: '펌블 / 1 자연수 (Nat 1)', definition: '주사위의 최솟값(1)이 나오는 것. 종종 극적인 실패나 부정적인 결과를 초래합니다.' },
|
|
125
|
+
{ term: '주사위 풀', definition: '동시에 굴려지는 주사위들의 모음입니다. 본 도구의 풀에서는 각 주사위 유형이 개수별로 그룹화되어 표시됩니다(예: 3d6 + 2d8).' },
|
|
126
|
+
{ term: '수정치 (Modifier)', definition: '캐릭터의 숙련도, 능력치 보너스 또는 상황적 페널티를 나타내며 주사위 결과에 더하거나 빼는 고정된 숫자입니다.' },
|
|
127
|
+
{ term: '백분율 굴림', definition: '두 개의 d10을 사용하여 1부터 100까지의 결과를 내는 것으로, 능력치가 백분율로 측정되는 기술 기반 시스템에서 사용됩니다.' },
|
|
128
|
+
]},
|
|
129
|
+
],
|
|
130
|
+
faq,
|
|
131
|
+
bibliography,
|
|
132
|
+
howTo,
|
|
133
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
+
};
|
|
@@ -1,134 +1,134 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'dobbelsteen-roller';
|
|
6
|
-
const title = 'Dobbelsteen Roller';
|
|
7
|
-
const description = 'Een complete dobbelsteensimulator voor je RPG- en bordspellen. Rol d4, d6, d8, d10, d12, d20 en d100 met modifiers en geschiedenis.';
|
|
8
|
-
|
|
9
|
-
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Hoe kan ik een worp met voordeel (advantage) simuleren (D&D)?',
|
|
12
|
-
answer: 'Voeg twee d20 dobbelstenen toe aan de zak door twee keer op de d20-knop te klikken. Let bij het rollen op de twee individuele resultaten en houd de hoogste aan. De getoonde totaalwaarde is de som, maar je kunt elke dobbelsteen afzonderlijk zien in de uitsplitsing van het resultaat.',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Wat betekent de groene of rode kleur bij de resultaten?',
|
|
16
|
-
answer: 'Groene resultaten geven aan dat de dobbelsteen de maximaal mogelijke waarde heeft gerold (een "critical"). Rode resultaten geven de minimumwaarde aan (een "1", het slechtst mogelijke resultaat). Dit maakt het gemakkelijk om crits en fumbles in één oogopslag te herkennen.',
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
question: 'Kan ik meerdere dobbelstenen van hetzelfde type toevoegen?',
|
|
20
|
-
answer: 'Ja. Elke klik op een dobbelsteen voegt deze toe aan de zak. Als je drie keer op d6 klikt, zie je "3d6" in de zak. Om het aantal te verminderen, klik je op de "−" knop die naast elke dobbelsteengroep in de zak verschijnt.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Zijn digitale dobbelstenen net zo willekeurig als fysieke?',
|
|
24
|
-
answer: 'Statistisch gezien, ja. Moderne JavaScript-engines gebruiken pseudorandom algoritmen (xorshift128+) met een zeer hoogwaardige uniforme verdeling. Een echte fysieke dobbelsteen kan kleine fabricagefoutjes hebben die de resultaten beïnvloeden; de digitale dobbelsteen heeft dat probleem niet.',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
question: 'Wat is de d100 en hoe wordt deze gebruikt?',
|
|
28
|
-
answer: 'De d100 (of d%) genereert een getal van 1 tot 100 en wordt gebruikt in percentage-gebaseerde spelsystemen, zoals Call of Cthulhu of Warhammer Fantasy Roleplay. Het vertegenwoordigt "directe waarschijnlijkheid": als je Stealthvaardigheid 65% is, moet je 65 of lager rollen om te slagen.',
|
|
29
|
-
},
|
|
30
|
-
];
|
|
31
|
-
|
|
32
|
-
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
-
{ name: 'Bouw de dobbelsteenpool op', text: 'Klik op de dobbelsteenknoppen (d4, d6, d8...) om ze aan je pool toe te voegen. Elke klik voegt één dobbelsteen van het geselecteerde type toe. Je kunt verschillende types in dezelfde worp mengen.' },
|
|
34
|
-
{ name: 'Pas de modifier aan', text: 'Gebruik de "+" en "−" knoppen naast de modifier om bonussen of straffen toe te passen (zoals de ability modifier in D&D). De modifier wordt automatisch bij het totaal opgeteld.' },
|
|
35
|
-
{ name: 'Rol de dobbelstenen', text: 'Druk op de knop "Gooi Dobbelstenen". Het rechterpaneel toont het uiteindelijke totaal en de uitsplitsing van elke individuele dobbelsteen, met crits (maximum) in het groen en fumbles (minimum) in het rood.' },
|
|
36
|
-
{ name: 'Bekijk de geschiedenis', text: 'Elke worp wordt in de geschiedenis opgenomen met de gebruikte dobbelsteennotatie, het totaalresultaat en de exacte tijd. Je kunt de geschiedenis wissen met de bijbehorende knop.' },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
-
'@context': 'https://schema.org',
|
|
41
|
-
'@type': 'FAQPage',
|
|
42
|
-
mainEntity: faq.map((item) => ({
|
|
43
|
-
'@type': 'Question',
|
|
44
|
-
name: item.question,
|
|
45
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
-
})),
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const howToSchema: WithContext<HowTo> = {
|
|
50
|
-
'@context': 'https://schema.org',
|
|
51
|
-
'@type': 'HowTo',
|
|
52
|
-
name: title,
|
|
53
|
-
description,
|
|
54
|
-
step: howTo.map((step) => ({
|
|
55
|
-
'@type': 'HowToStep',
|
|
56
|
-
name: step.name,
|
|
57
|
-
text: step.text,
|
|
58
|
-
})),
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
-
'@context': 'https://schema.org',
|
|
63
|
-
'@type': 'SoftwareApplication',
|
|
64
|
-
name: title,
|
|
65
|
-
description,
|
|
66
|
-
applicationCategory: 'UtilitiesApplication',
|
|
67
|
-
operatingSystem: 'Web',
|
|
68
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
-
inLanguage: 'nl',
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
export const content: DiceRollerLocaleContent = {
|
|
73
|
-
slug,
|
|
74
|
-
title,
|
|
75
|
-
description,
|
|
76
|
-
faqTitle: 'Veelgestelde Vragen',
|
|
77
|
-
ui: {
|
|
78
|
-
title: 'Dobbelsteen Roller',
|
|
79
|
-
description: 'Moge het geluk aan jouw zijde staan.',
|
|
80
|
-
rollBtn: 'Gooi Dobbelstenen',
|
|
81
|
-
totalLabel: 'Totaal',
|
|
82
|
-
historyLabel: 'Geschiedenis',
|
|
83
|
-
clearHistoryBtn: 'Wis Geschiedenis',
|
|
84
|
-
faqTitle: 'FAQ',
|
|
85
|
-
bibliographyTitle: 'Referenties',
|
|
86
|
-
addDiceLabel: 'Voeg dobbelstenen toe aan de zak',
|
|
87
|
-
bagLabel: 'Dobbelsteenzak',
|
|
88
|
-
emptyBagBtn: 'Leegmaken',
|
|
89
|
-
emptyBagText: 'Klik op de dobbelstenen om ze toe te voegen',
|
|
90
|
-
modifierLabel: 'Modifier',
|
|
91
|
-
rollManyLabel: 'Gooi $COUNT dobbelstenen',
|
|
92
|
-
rollOneLabel: 'Gooi $COUNT dobbelsteen',
|
|
93
|
-
preRollText: 'Voeg dobbelstenen toe en gooi',
|
|
94
|
-
emptyHistoryText: 'De geschiedenis van de worpen verschijnt hier'
|
|
95
|
-
},
|
|
96
|
-
seo: [
|
|
97
|
-
{ type: 'title', text: 'De Kunst van de Willekeur: Geschiedenis en Wiskunde van Dobbelstenen', level: 2 },
|
|
98
|
-
{ type: 'paragraph', html: 'Dobbelstenen behoren tot de oudste toevalsgeneratoren van de mensheid. <strong>Astragali</strong> - enkelbotjes van schapen en geiten - werden al in 5000 v.Chr. in Mesopotamië en Egypte als primitieve vierzijdige dobbelstenen gebruikt. De evolutie van gesneden bot naar moderne epoxyhars-icosaëders is niet alleen esthetisch: het is een reis door de kansrekening en het ontwerpen van spelmechanieken.' },
|
|
99
|
-
{ type: 'title', text: 'De Standaard Dobbelsteenfamilie', level: 3 },
|
|
100
|
-
{ type: 'paragraph', html: 'De meest verspreide set dobbelstenen in rollenspellen - gepopulariseerd door <strong>Dungeons & Dragons</strong> in 1974 - bestaat uit de vijf Platonische lichamen plus twee extra vormen: d4 (tetraëder), d6 (kubus), d8 (octaëder), d10 (pentagonale trapezoëder), d12 (dodecaëder), d20 (icosaëder) en d100 (procentuele dobbelsteen). Elk veelvlak garandeert een uniforme verdeling: alle vlakken hebben precies dezelfde kans om boven te komen.' },
|
|
101
|
-
{ type: 'list', items: [
|
|
102
|
-
'<strong>d4 - Tetraëder:</strong> Het gevaarlijkst als je er met blote voeten op stapt. Vier driehoekige vlakken, 25% kans per vlak. Veelgebruikt voor dolkschade of spreuken van laag niveau.',
|
|
103
|
-
'<strong>d6 - Kubus:</strong> De meest universele dobbelsteen. Aanwezig in alle bordspellen sinds het Egyptische Senet. Zijn kubusvormige geometrie garandeert perfecte gelijke verdeling.',
|
|
104
|
-
'<strong>d8 - Octaëder:</strong> De dobbelsteen van de speer of strijdbijl. Acht gelijkzijdige driehoekige vlakken. 12,5% kans per vlak.',
|
|
105
|
-
'<strong>d10 - Pentagonale trapezoëder:</strong> Het enige niet-Platonische lichaam in de standaardset. Twee tegenover elkaar liggende vlakken per "hoekpunt". Onmisbaar voor de d100 (twee gecombineerde d10\'s).',
|
|
106
|
-
'<strong>d12 - Dodecaëder:</strong> De dobbelsteen van de barbaar. Twaalf vijfhoekige vlakken. Ondergewaardeerd in veel systemen, hoofdrolspeler voor de D&D 5e Barbarian.',
|
|
107
|
-
'<strong>d20 - Icosaëder:</strong> De koning van de RPG. Twintig driehoekige vlakken. Hoofdrolspeler van het d20-systeem: bepaalt succes of falen van bijna alle acties.',
|
|
108
|
-
'<strong>d100 - Percentiel:</strong> Twee gecombineerde d10\'s (tientallen + eenheden). Definieert nauwkeurige waarschijnlijkheden in systemen zoals Call of Cthulhu of Warhammer Fantasy.',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'stats', items: [
|
|
111
|
-
{ value: '5000 v.Chr.', label: 'Eerste dobbelstenen (astragali)', icon: 'mdi:history' },
|
|
112
|
-
{ value: '1974', label: 'D&D populariseerde de set', icon: 'mdi:sword' },
|
|
113
|
-
{ value: '7 types', label: 'Standaard RPG-dobbelstenen', icon: 'mdi:dice-multiple' },
|
|
114
|
-
{ value: '2¹²⁸', label: 'JS willekeurige periode', icon: 'mdi:function-variant' },
|
|
115
|
-
], columns: 4 },
|
|
116
|
-
{ type: 'title', text: 'Kansrekening en Verdelingscurven', level: 3 },
|
|
117
|
-
{ type: 'paragraph', html: 'Wanneer je een enkele dobbelsteen gooit, krijg je een <strong>discrete uniforme verdeling</strong>: elk resultaat heeft precies dezelfde kans (1/n). Maar zodra je meerdere dobbelstenen combineert, transformeert de wiskundige magie die vlakke curve in een <strong>benaderende normale verdeling</strong>. Daarom is 2d6 niet hetzelfde als 1d12: met twee zeszijdige dobbelstenen is de kans op een 7 gelijk aan 6/36 ≈ 16,7%, terwijl de uitersten (2 en 12) slechts 2,8% van de tijd voorkomen.' },
|
|
118
|
-
{ type: 'tip', title: 'Voordeel en Nadeel (D&D 5e)', html: 'De <strong>Voordeel</strong>-mechaniek bestaat uit het gooien van 2d20 en het behouden van het hoogste resultaat. Wiskundig gezien verhoogt dit het gemiddelde van 10,5 naar ongeveer 13,8. <strong>Nadeel</strong> doet het tegenovergestelde: neem de laagste, waardoor het gemiddelde daalt naar ongeveer 7,2. Met onze roller kun je dit simuleren door twee d20\'s aan de zak toe te voegen en de individuele resultaten te vergelijken.' },
|
|
119
|
-
{ type: 'title', text: 'Modifiers: De Brug tussen Dobbelsteen en Personage', level: 3 },
|
|
120
|
-
{ type: 'paragraph', html: 'In de meeste RPG-systemen werkt de dobbelsteen niet alleen: een <strong>modifier</strong> die de vaardigheden van het personage vertegenwoordigt, wordt opgeteld of afgetrokken. In D&D 5e betekent een Strength-modifier van +5 dat je 1d20 gooit, er 5 bij optelt en het resultaat vergelijkt met de Armor Class van de vijand. Onze roller bevat een modifier-regelaar om deze mechanieken natuurgetrouw weer te geven.' },
|
|
121
|
-
{ type: 'tip', title: 'Standaard Dobbelsteennotatie', html: 'De <strong>XdY+Z</strong> notatie is de feitelijke standaard in rollenspellen: X dobbelstenen van Y vlakken met modifier Z. "3d6+2" betekent gooi drie zeszijdige dobbelstenen en tel 2 op bij het totaal. Onze tool gebruikt deze notatie in de geschiedenis, zodat je je worpen gemakkelijk kunt delen of vastleggen.' },
|
|
122
|
-
{ type: 'glossary', items: [
|
|
123
|
-
{ term: 'Critical Hit', definition: 'Een worp met de maximale waarde op een dobbelsteen (bijv. een 20 op een d20). Activeert meestal speciale bonus-effecten in de meeste RPG-systemen.' },
|
|
124
|
-
{ term: 'Fumble / Nat 1', definition: 'Het gooien van de minimumwaarde (1) op een dobbelsteen. Resulteert vaak in een dramatische mislukking of negatieve consequentie.' },
|
|
125
|
-
{ term: 'Dice Pool', definition: 'Een verzameling dobbelstenen die tegelijkertijd worden gegooid. De pool in onze tool toont elk dobbelsteentype gegroepeerd naar aantal (bijv. 3d6 + 2d8).' },
|
|
126
|
-
{ term: 'Modifier', definition: 'Een vast getal dat wordt opgeteld of afgetrokken van een resultaat van een worp, en dat de vaardigheid, attribuutbonus of situationele straf van een personage vertegenwoordigt.' },
|
|
127
|
-
{ term: 'Percentielworp', definition: 'Een worp met twee d10\'s om een resultaat van 1-100 te produceren, gebruikt in op vaardigheden gebaseerde systemen waarbij vermogens als percentages worden gemeten.' },
|
|
128
|
-
]},
|
|
129
|
-
],
|
|
130
|
-
faq,
|
|
131
|
-
bibliography,
|
|
132
|
-
howTo,
|
|
133
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { DiceRollerLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'dobbelsteen-roller';
|
|
6
|
+
const title = 'Dobbelsteen Roller';
|
|
7
|
+
const description = 'Een complete dobbelsteensimulator voor je RPG- en bordspellen. Rol d4, d6, d8, d10, d12, d20 en d100 met modifiers en geschiedenis.';
|
|
8
|
+
|
|
9
|
+
const faq: DiceRollerLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Hoe kan ik een worp met voordeel (advantage) simuleren (D&D)?',
|
|
12
|
+
answer: 'Voeg twee d20 dobbelstenen toe aan de zak door twee keer op de d20-knop te klikken. Let bij het rollen op de twee individuele resultaten en houd de hoogste aan. De getoonde totaalwaarde is de som, maar je kunt elke dobbelsteen afzonderlijk zien in de uitsplitsing van het resultaat.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Wat betekent de groene of rode kleur bij de resultaten?',
|
|
16
|
+
answer: 'Groene resultaten geven aan dat de dobbelsteen de maximaal mogelijke waarde heeft gerold (een "critical"). Rode resultaten geven de minimumwaarde aan (een "1", het slechtst mogelijke resultaat). Dit maakt het gemakkelijk om crits en fumbles in één oogopslag te herkennen.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Kan ik meerdere dobbelstenen van hetzelfde type toevoegen?',
|
|
20
|
+
answer: 'Ja. Elke klik op een dobbelsteen voegt deze toe aan de zak. Als je drie keer op d6 klikt, zie je "3d6" in de zak. Om het aantal te verminderen, klik je op de "−" knop die naast elke dobbelsteengroep in de zak verschijnt.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Zijn digitale dobbelstenen net zo willekeurig als fysieke?',
|
|
24
|
+
answer: 'Statistisch gezien, ja. Moderne JavaScript-engines gebruiken pseudorandom algoritmen (xorshift128+) met een zeer hoogwaardige uniforme verdeling. Een echte fysieke dobbelsteen kan kleine fabricagefoutjes hebben die de resultaten beïnvloeden; de digitale dobbelsteen heeft dat probleem niet.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Wat is de d100 en hoe wordt deze gebruikt?',
|
|
28
|
+
answer: 'De d100 (of d%) genereert een getal van 1 tot 100 en wordt gebruikt in percentage-gebaseerde spelsystemen, zoals Call of Cthulhu of Warhammer Fantasy Roleplay. Het vertegenwoordigt "directe waarschijnlijkheid": als je Stealthvaardigheid 65% is, moet je 65 of lager rollen om te slagen.',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howTo: DiceRollerLocaleContent['howTo'] = [
|
|
33
|
+
{ name: 'Bouw de dobbelsteenpool op', text: 'Klik op de dobbelsteenknoppen (d4, d6, d8...) om ze aan je pool toe te voegen. Elke klik voegt één dobbelsteen van het geselecteerde type toe. Je kunt verschillende types in dezelfde worp mengen.' },
|
|
34
|
+
{ name: 'Pas de modifier aan', text: 'Gebruik de "+" en "−" knoppen naast de modifier om bonussen of straffen toe te passen (zoals de ability modifier in D&D). De modifier wordt automatisch bij het totaal opgeteld.' },
|
|
35
|
+
{ name: 'Rol de dobbelstenen', text: 'Druk op de knop "Gooi Dobbelstenen". Het rechterpaneel toont het uiteindelijke totaal en de uitsplitsing van elke individuele dobbelsteen, met crits (maximum) in het groen en fumbles (minimum) in het rood.' },
|
|
36
|
+
{ name: 'Bekijk de geschiedenis', text: 'Elke worp wordt in de geschiedenis opgenomen met de gebruikte dobbelsteennotatie, het totaalresultaat en de exacte tijd. Je kunt de geschiedenis wissen met de bijbehorende knop.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
40
|
+
'@context': 'https://schema.org',
|
|
41
|
+
'@type': 'FAQPage',
|
|
42
|
+
mainEntity: faq.map((item) => ({
|
|
43
|
+
'@type': 'Question',
|
|
44
|
+
name: item.question,
|
|
45
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
46
|
+
})),
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const howToSchema: WithContext<HowTo> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'HowTo',
|
|
52
|
+
name: title,
|
|
53
|
+
description,
|
|
54
|
+
step: howTo.map((step) => ({
|
|
55
|
+
'@type': 'HowToStep',
|
|
56
|
+
name: step.name,
|
|
57
|
+
text: step.text,
|
|
58
|
+
})),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
62
|
+
'@context': 'https://schema.org',
|
|
63
|
+
'@type': 'SoftwareApplication',
|
|
64
|
+
name: title,
|
|
65
|
+
description,
|
|
66
|
+
applicationCategory: 'UtilitiesApplication',
|
|
67
|
+
operatingSystem: 'Web',
|
|
68
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
69
|
+
inLanguage: 'nl',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export const content: DiceRollerLocaleContent = {
|
|
73
|
+
slug,
|
|
74
|
+
title,
|
|
75
|
+
description,
|
|
76
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
77
|
+
ui: {
|
|
78
|
+
title: 'Dobbelsteen Roller',
|
|
79
|
+
description: 'Moge het geluk aan jouw zijde staan.',
|
|
80
|
+
rollBtn: 'Gooi Dobbelstenen',
|
|
81
|
+
totalLabel: 'Totaal',
|
|
82
|
+
historyLabel: 'Geschiedenis',
|
|
83
|
+
clearHistoryBtn: 'Wis Geschiedenis',
|
|
84
|
+
faqTitle: 'FAQ',
|
|
85
|
+
bibliographyTitle: 'Referenties',
|
|
86
|
+
addDiceLabel: 'Voeg dobbelstenen toe aan de zak',
|
|
87
|
+
bagLabel: 'Dobbelsteenzak',
|
|
88
|
+
emptyBagBtn: 'Leegmaken',
|
|
89
|
+
emptyBagText: 'Klik op de dobbelstenen om ze toe te voegen',
|
|
90
|
+
modifierLabel: 'Modifier',
|
|
91
|
+
rollManyLabel: 'Gooi $COUNT dobbelstenen',
|
|
92
|
+
rollOneLabel: 'Gooi $COUNT dobbelsteen',
|
|
93
|
+
preRollText: 'Voeg dobbelstenen toe en gooi',
|
|
94
|
+
emptyHistoryText: 'De geschiedenis van de worpen verschijnt hier'
|
|
95
|
+
},
|
|
96
|
+
seo: [
|
|
97
|
+
{ type: 'title', text: 'De Kunst van de Willekeur: Geschiedenis en Wiskunde van Dobbelstenen', level: 2 },
|
|
98
|
+
{ type: 'paragraph', html: 'Dobbelstenen behoren tot de oudste toevalsgeneratoren van de mensheid. <strong>Astragali</strong> - enkelbotjes van schapen en geiten - werden al in 5000 v.Chr. in Mesopotamië en Egypte als primitieve vierzijdige dobbelstenen gebruikt. De evolutie van gesneden bot naar moderne epoxyhars-icosaëders is niet alleen esthetisch: het is een reis door de kansrekening en het ontwerpen van spelmechanieken.' },
|
|
99
|
+
{ type: 'title', text: 'De Standaard Dobbelsteenfamilie', level: 3 },
|
|
100
|
+
{ type: 'paragraph', html: 'De meest verspreide set dobbelstenen in rollenspellen - gepopulariseerd door <strong>Dungeons & Dragons</strong> in 1974 - bestaat uit de vijf Platonische lichamen plus twee extra vormen: d4 (tetraëder), d6 (kubus), d8 (octaëder), d10 (pentagonale trapezoëder), d12 (dodecaëder), d20 (icosaëder) en d100 (procentuele dobbelsteen). Elk veelvlak garandeert een uniforme verdeling: alle vlakken hebben precies dezelfde kans om boven te komen.' },
|
|
101
|
+
{ type: 'list', items: [
|
|
102
|
+
'<strong>d4 - Tetraëder:</strong> Het gevaarlijkst als je er met blote voeten op stapt. Vier driehoekige vlakken, 25% kans per vlak. Veelgebruikt voor dolkschade of spreuken van laag niveau.',
|
|
103
|
+
'<strong>d6 - Kubus:</strong> De meest universele dobbelsteen. Aanwezig in alle bordspellen sinds het Egyptische Senet. Zijn kubusvormige geometrie garandeert perfecte gelijke verdeling.',
|
|
104
|
+
'<strong>d8 - Octaëder:</strong> De dobbelsteen van de speer of strijdbijl. Acht gelijkzijdige driehoekige vlakken. 12,5% kans per vlak.',
|
|
105
|
+
'<strong>d10 - Pentagonale trapezoëder:</strong> Het enige niet-Platonische lichaam in de standaardset. Twee tegenover elkaar liggende vlakken per "hoekpunt". Onmisbaar voor de d100 (twee gecombineerde d10\'s).',
|
|
106
|
+
'<strong>d12 - Dodecaëder:</strong> De dobbelsteen van de barbaar. Twaalf vijfhoekige vlakken. Ondergewaardeerd in veel systemen, hoofdrolspeler voor de D&D 5e Barbarian.',
|
|
107
|
+
'<strong>d20 - Icosaëder:</strong> De koning van de RPG. Twintig driehoekige vlakken. Hoofdrolspeler van het d20-systeem: bepaalt succes of falen van bijna alle acties.',
|
|
108
|
+
'<strong>d100 - Percentiel:</strong> Twee gecombineerde d10\'s (tientallen + eenheden). Definieert nauwkeurige waarschijnlijkheden in systemen zoals Call of Cthulhu of Warhammer Fantasy.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'stats', items: [
|
|
111
|
+
{ value: '5000 v.Chr.', label: 'Eerste dobbelstenen (astragali)', icon: 'mdi:history' },
|
|
112
|
+
{ value: '1974', label: 'D&D populariseerde de set', icon: 'mdi:sword' },
|
|
113
|
+
{ value: '7 types', label: 'Standaard RPG-dobbelstenen', icon: 'mdi:dice-multiple' },
|
|
114
|
+
{ value: '2¹²⁸', label: 'JS willekeurige periode', icon: 'mdi:function-variant' },
|
|
115
|
+
], columns: 4 },
|
|
116
|
+
{ type: 'title', text: 'Kansrekening en Verdelingscurven', level: 3 },
|
|
117
|
+
{ type: 'paragraph', html: 'Wanneer je een enkele dobbelsteen gooit, krijg je een <strong>discrete uniforme verdeling</strong>: elk resultaat heeft precies dezelfde kans (1/n). Maar zodra je meerdere dobbelstenen combineert, transformeert de wiskundige magie die vlakke curve in een <strong>benaderende normale verdeling</strong>. Daarom is 2d6 niet hetzelfde als 1d12: met twee zeszijdige dobbelstenen is de kans op een 7 gelijk aan 6/36 ≈ 16,7%, terwijl de uitersten (2 en 12) slechts 2,8% van de tijd voorkomen.' },
|
|
118
|
+
{ type: 'tip', title: 'Voordeel en Nadeel (D&D 5e)', html: 'De <strong>Voordeel</strong>-mechaniek bestaat uit het gooien van 2d20 en het behouden van het hoogste resultaat. Wiskundig gezien verhoogt dit het gemiddelde van 10,5 naar ongeveer 13,8. <strong>Nadeel</strong> doet het tegenovergestelde: neem de laagste, waardoor het gemiddelde daalt naar ongeveer 7,2. Met onze roller kun je dit simuleren door twee d20\'s aan de zak toe te voegen en de individuele resultaten te vergelijken.' },
|
|
119
|
+
{ type: 'title', text: 'Modifiers: De Brug tussen Dobbelsteen en Personage', level: 3 },
|
|
120
|
+
{ type: 'paragraph', html: 'In de meeste RPG-systemen werkt de dobbelsteen niet alleen: een <strong>modifier</strong> die de vaardigheden van het personage vertegenwoordigt, wordt opgeteld of afgetrokken. In D&D 5e betekent een Strength-modifier van +5 dat je 1d20 gooit, er 5 bij optelt en het resultaat vergelijkt met de Armor Class van de vijand. Onze roller bevat een modifier-regelaar om deze mechanieken natuurgetrouw weer te geven.' },
|
|
121
|
+
{ type: 'tip', title: 'Standaard Dobbelsteennotatie', html: 'De <strong>XdY+Z</strong> notatie is de feitelijke standaard in rollenspellen: X dobbelstenen van Y vlakken met modifier Z. "3d6+2" betekent gooi drie zeszijdige dobbelstenen en tel 2 op bij het totaal. Onze tool gebruikt deze notatie in de geschiedenis, zodat je je worpen gemakkelijk kunt delen of vastleggen.' },
|
|
122
|
+
{ type: 'glossary', items: [
|
|
123
|
+
{ term: 'Critical Hit', definition: 'Een worp met de maximale waarde op een dobbelsteen (bijv. een 20 op een d20). Activeert meestal speciale bonus-effecten in de meeste RPG-systemen.' },
|
|
124
|
+
{ term: 'Fumble / Nat 1', definition: 'Het gooien van de minimumwaarde (1) op een dobbelsteen. Resulteert vaak in een dramatische mislukking of negatieve consequentie.' },
|
|
125
|
+
{ term: 'Dice Pool', definition: 'Een verzameling dobbelstenen die tegelijkertijd worden gegooid. De pool in onze tool toont elk dobbelsteentype gegroepeerd naar aantal (bijv. 3d6 + 2d8).' },
|
|
126
|
+
{ term: 'Modifier', definition: 'Een vast getal dat wordt opgeteld of afgetrokken van een resultaat van een worp, en dat de vaardigheid, attribuutbonus of situationele straf van een personage vertegenwoordigt.' },
|
|
127
|
+
{ term: 'Percentielworp', definition: 'Een worp met twee d10\'s om een resultaat van 1-100 te produceren, gebruikt in op vaardigheden gebaseerde systemen waarbij vermogens als percentages worden gemeten.' },
|
|
128
|
+
]},
|
|
129
|
+
],
|
|
130
|
+
faq,
|
|
131
|
+
bibliography,
|
|
132
|
+
howTo,
|
|
133
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
134
|
+
};
|