@jjlmoya/utils-games-development 1.54.0 → 1.56.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 (65) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +7 -1
  3. package/src/index.ts +2 -0
  4. package/src/tests/contrast_legibility.test.ts +291 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/itchioGameTester/itchio-game-tester.css +3 -3
  8. package/src/tool/localizationSanitizer/localization-sanitizer.css +17 -15
  9. package/src/tool/pixelArtPaletteSwapper/app-client.ts +229 -0
  10. package/src/tool/pixelArtPaletteSwapper/bibliography.astro +6 -0
  11. package/src/tool/pixelArtPaletteSwapper/bibliography.ts +16 -0
  12. package/src/tool/pixelArtPaletteSwapper/component.astro +153 -0
  13. package/src/tool/pixelArtPaletteSwapper/entry.ts +28 -0
  14. package/src/tool/pixelArtPaletteSwapper/i18n/de.ts +233 -0
  15. package/src/tool/pixelArtPaletteSwapper/i18n/en.ts +233 -0
  16. package/src/tool/pixelArtPaletteSwapper/i18n/es.ts +233 -0
  17. package/src/tool/pixelArtPaletteSwapper/i18n/fr.ts +233 -0
  18. package/src/tool/pixelArtPaletteSwapper/i18n/id.ts +233 -0
  19. package/src/tool/pixelArtPaletteSwapper/i18n/it.ts +233 -0
  20. package/src/tool/pixelArtPaletteSwapper/i18n/ja.ts +225 -0
  21. package/src/tool/pixelArtPaletteSwapper/i18n/ko.ts +225 -0
  22. package/src/tool/pixelArtPaletteSwapper/i18n/nl.ts +233 -0
  23. package/src/tool/pixelArtPaletteSwapper/i18n/pl.ts +233 -0
  24. package/src/tool/pixelArtPaletteSwapper/i18n/pt.ts +233 -0
  25. package/src/tool/pixelArtPaletteSwapper/i18n/ru.ts +233 -0
  26. package/src/tool/pixelArtPaletteSwapper/i18n/sv.ts +233 -0
  27. package/src/tool/pixelArtPaletteSwapper/i18n/tr.ts +233 -0
  28. package/src/tool/pixelArtPaletteSwapper/i18n/zh.ts +225 -0
  29. package/src/tool/pixelArtPaletteSwapper/index.ts +12 -0
  30. package/src/tool/pixelArtPaletteSwapper/logic.test.ts +43 -0
  31. package/src/tool/pixelArtPaletteSwapper/logic.ts +171 -0
  32. package/src/tool/pixelArtPaletteSwapper/pixel-art-palette-swapper.css +728 -0
  33. package/src/tool/pixelArtPaletteSwapper/seo.astro +15 -0
  34. package/src/tool/pixelArtPaletteSwapper/ui.ts +35 -0
  35. package/src/tool/retroSfxGenerator/bibliography.astro +6 -0
  36. package/src/tool/retroSfxGenerator/bibliography.ts +16 -0
  37. package/src/tool/retroSfxGenerator/client.ts +263 -0
  38. package/src/tool/retroSfxGenerator/component.astro +146 -0
  39. package/src/tool/retroSfxGenerator/entry.ts +27 -0
  40. package/src/tool/retroSfxGenerator/i18n/de.ts +211 -0
  41. package/src/tool/retroSfxGenerator/i18n/en.ts +224 -0
  42. package/src/tool/retroSfxGenerator/i18n/es.ts +211 -0
  43. package/src/tool/retroSfxGenerator/i18n/fr.ts +211 -0
  44. package/src/tool/retroSfxGenerator/i18n/id.ts +211 -0
  45. package/src/tool/retroSfxGenerator/i18n/it.ts +211 -0
  46. package/src/tool/retroSfxGenerator/i18n/ja.ts +211 -0
  47. package/src/tool/retroSfxGenerator/i18n/ko.ts +211 -0
  48. package/src/tool/retroSfxGenerator/i18n/nl.ts +211 -0
  49. package/src/tool/retroSfxGenerator/i18n/pl.ts +211 -0
  50. package/src/tool/retroSfxGenerator/i18n/pt.ts +211 -0
  51. package/src/tool/retroSfxGenerator/i18n/ru.ts +211 -0
  52. package/src/tool/retroSfxGenerator/i18n/sv.ts +211 -0
  53. package/src/tool/retroSfxGenerator/i18n/tr.ts +211 -0
  54. package/src/tool/retroSfxGenerator/i18n/zh.ts +211 -0
  55. package/src/tool/retroSfxGenerator/index.ts +11 -0
  56. package/src/tool/retroSfxGenerator/logic.test.ts +61 -0
  57. package/src/tool/retroSfxGenerator/logic.ts +214 -0
  58. package/src/tool/retroSfxGenerator/retro-sfx-generator.css +435 -0
  59. package/src/tool/retroSfxGenerator/seo.astro +15 -0
  60. package/src/tool/retroSfxGenerator/ui.ts +41 -0
  61. package/src/tool/saveFileEditor/game-save-file-editor.css +5 -5
  62. package/src/tool/spriteSheetPacker/sprite-sheet-packer.css +5 -5
  63. package/src/tool/steamBbcodeTranslator/steam-bbcode-translator.css +8 -8
  64. package/src/tool/steamCapsuleGenerator/steam-capsule-generator.css +6 -6
  65. package/src/tools.ts +4 -0
@@ -0,0 +1,233 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'cambia-tavolozza-pixel-art',
6
+ title: 'Cambia Tavolozza per Pixel Art',
7
+ description: 'Riduci sprite e fogli di sprite alle tavolozze di console classiche o a una lista personalizzata di colori esadecimali nel browser.',
8
+ ui: {
9
+ uploadTitle: 'Trascina uno sprite o foglio di sprite',
10
+ uploadHint: 'PNG, JPEG o WebP elaborati direttamente sul tuo dispositivo',
11
+ chooseImage: 'Scegli immagine',
12
+ replaceImage: 'Sostituisci immagine',
13
+ paletteTitle: 'Scegli tavolozza',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'Ispirata al NES',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'Colori personalizzati',
20
+ customPaletteHint: 'Separa i valori esadecimali con virgole, spazi o a capo.',
21
+ applyCustomPalette: 'Applica tavolozza',
22
+ resetCustomPalette: 'Ripristina',
23
+ sourcePreview: 'Originale',
24
+ resultPreview: 'Risultato ridotto',
25
+ waitingForImage: 'In attesa di un immagine',
26
+ uploadToPreview: 'Carica un immagine per la prima vista',
27
+ resultEmpty: 'Le versioni originale e ridotta appariranno affiancate.',
28
+ downloadPng: 'Scarica PNG',
29
+ downloadDisabled: 'Carica un immagine per abilitare l esportazione.',
30
+ colorCount: 'Colori originali',
31
+ mappedCount: 'Colori usati',
32
+ imageSize: 'Dimensione immagine',
33
+ paletteCount: 'colori tavolozza',
34
+ preserveAlpha: 'Conserva trasparenza',
35
+ zoomLabel: 'Zoom',
36
+ processing: 'Mappatura pixel in corso',
37
+ invalidPalette: 'Aggiungi almeno un colore esadecimale valido',
38
+ invalidImage: 'Scegli un immagine PNG, JPEG o WebP',
39
+ readyStatus: 'Pronto',
40
+ dropActive: 'Rilascia per caricare',
41
+ mappedSummary: 'Mappati {source} colori originali in {mapped} colori tavolozza',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'Trasforma uno Sprite a Colori in una Tavolozza Retro Deliberata',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: 'Una tavolozza limitata è molto più di una restrizione tecnica. Dona a uno sprite un vocabolario cromatico coerente, fa percepire gli elementi di una scena come appartenenti al medesimo mondo e suggerisce il carattere visivo di una specifica console o architettura fantasy. Questo strumento di cambio tavolozza nel browser ti consente di confrontare l immagine originale con una versione ridotta mentre sperimenti con Game Boy, ispirate al NES, PICO-8, Commodore 64, DawnBringer 16 e tavolozze personalizzate.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Come Funziona la Mappatura al Colore Più Vicino',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: 'Lo strumento legge i canali rosso, verde e blu di ogni pixel visibile e confronta quel colore con ciascun valore presente nella tavolozza selezionata. Sceglie l elemento della tavolozza con la minore distanza RGB al quadrato e scrive il colore sostitutivo in un nuovo buffer di canvas. Il canale alfa viene mantenuto separato, in modo che i pixel trasparenti rimangano tali e i bordi parzialmente trasparenti conservino la loro opacità originale quando l opzione Conserva trasparenza è attiva.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'Riduzione tavolozza',
68
+ description: 'Ogni colore originale viene sostituito dal campione disponibile più vicino.',
69
+ points: [
70
+ 'Veloce e prevedibile per sprite, icone, elementi di mappa e interfacce',
71
+ 'Conserva accuratamente le dimensioni e le posizioni originali dei pixel',
72
+ 'Rende semplice la verifica e il controllo di un budget cromatico stabilito',
73
+ ],
74
+ },
75
+ {
76
+ title: 'Cambio tavolozza (Palette Swapping)',
77
+ description: 'La stessa illustrazione può essere rimappata su un altro insieme di colori scelto con cura.',
78
+ points: [
79
+ 'Utile per costumi alternativi, variazioni di ambientazione e stati di danno',
80
+ 'Le liste esadecimali personalizzate permettono di adeguarla alla propria direzione artistica',
81
+ 'Il file PNG scaricato è subito pronto per essere reimportato nel tuo editor',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Scegliere una Tavolozza per la Pixel Art',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Tavolozza', 'Colori', 'Uso consigliato', 'Aspetti da valutare'],
94
+ rows: [
95
+ ['Game Boy', '4', 'Stile monocromatico portatile e studi di valori ben definiti', 'La gamma ristretta di valori può fondere materiali con tonalità simili'],
96
+ ['Ispirata al NES', '16', 'Sprite arcade ben marcati, personaggi e elementi di mappa', 'I colori molto luminosi possono sovrastare i dettagli più piccoli'],
97
+ ['PICO-8', '16', 'Pixel art moderna con accenti cromatici saturi', 'Le tonalità molto sature richiedono un contrasto intenzionale'],
98
+ ['Commodore 64', '16', 'Scene retro morbide ed estetica da computer classico', 'Il basso contrasto trae vantaggio da sagome ben definite'],
99
+ ['DawnBringer 16', '16', 'Tavolozza versatile e selezionata a mano per pixel art generale', 'Le rampe di colore richiedono comunque una direzione della luce chiara'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'Flusso di Lavoro Pratico per Fogli Sprite',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Inizia con l immagine di origine più grande che riesci a modificare comodamente, quindi carica lo sprite o il foglio sprite esportato qui. Seleziona una preimpostazione per definire lo stile oppure incolla una lista personalizzata da una libreria di colori. Ispeziona le due tele a un livello di zoom più elevato per verificare se si sono persi dettagli del volto, contorni uniti o punti di luce che non si staccano più dal colore di base. Se il risultato appare poco definito, prova una tavolozza con stacchi di valore più marcati o aggiungi un colore di accento deliberato alla lista.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: 'Mantenere una Tavolozza Intenzionale',
114
+ html: 'Una lista di colori più ampia non è automaticamente migliore. Inizia con 4-16 colori, assegna a ogni colore un ruolo preciso e riserva i valori più luminosi per i punti focali o i punti di luce più importanti. L algoritmo del colore più vicino conserva la posizione dei pixel, ma non può decidere quali colori debbano guidare la gerarchia visiva del tuo sprite.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: 'Lista di Controllo per l Esportazione in Pixel Art',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'Prima di Importare il File PNG Ridotto',
125
+ html: 'Controlla il risultato al 100% di scala e alle dimensioni finali all interno del gioco, conferma che i bordi trasparenti siano puliti, verifica che le sagome principali rimangano ben leggibili e conserva il file sorgente originale accanto al file esportato per poter modificare la tavolozza senza dover ricominciare da capo.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'Quantizzazione del colore',
132
+ definition: 'Il processo di riduzione di un ampio insieme di colori originali a un insieme più piccolo e definito.',
133
+ },
134
+ {
135
+ term: 'Rampa di colore',
136
+ definition: 'Una sequenza ordinata di toni scuri, medi e chiari utilizzata per ombreggiare una superficie o un materiale.',
137
+ },
138
+ {
139
+ term: 'Tavolozza indicizzata',
140
+ definition: 'Una tabella di colori compatta in cui i pixel fanno riferimento a indici di una lista condivisa anziché memorizzare ogni volta i colori completi.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: 'Lo strumento carica le mie immagini su un server?',
148
+ answer: 'No. L immagine viene decodificata in una tela nel tuo browser, mappata localmente in JavaScript ed esportata direttamente come PNG. Lo strumento non richiede alcun passaggio di caricamento esterno.',
149
+ },
150
+ {
151
+ question: 'Posso usare una mia tavolozza personalizzata?',
152
+ answer: 'Sì. Incolla valori esadecimali a 6 o 3 cifre nel campo Colori personalizzati, separati da virgole, spazi o a capo, quindi seleziona Applica tavolozza.',
153
+ },
154
+ {
155
+ question: 'La dimensione del mio sprite viene modificata?',
156
+ answer: 'No. Il file scaricato mantiene la larghezza, l altezza, le posizioni dei pixel e i valori alfa originali quando l opzione Conserva trasparenza è attiva.',
157
+ },
158
+ {
159
+ question: 'Quale algoritmo viene utilizzato?',
160
+ answer: 'Ogni pixel visibile viene assegnato al colore più vicino nella tavolozza selezionata utilizzando la distanza euclidea al quadrato nello spazio RGB. È un metodo rapido, deterministico e facile da previsualizzare, che non applica dithering o correzione cromatica percettiva Lab.',
161
+ },
162
+ ],
163
+ howTo: [
164
+ {
165
+ name: 'Carica uno sprite',
166
+ text: 'Trascina uno sprite o foglio sprite PNG, JPEG o WebP nell area di lavoro, oppure usa il pulsante Scegli immagine.',
167
+ },
168
+ {
169
+ name: 'Scegli una tavolozza',
170
+ text: 'Seleziona una preimpostazione classica o inserisci i tuoi colori esadecimali. Il risultato si aggiorna immediatamente.',
171
+ },
172
+ {
173
+ name: 'Confronta ed esporta',
174
+ text: 'Ispeziona la tela originale e quella con la tavolozza ridotta, regola lo zoom e scarica il risultato in formato PNG.',
175
+ },
176
+ ],
177
+ schemas: [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'SoftwareApplication',
181
+ name: 'Cambia Tavolozza per Pixel Art',
182
+ applicationCategory: 'DesignApplication',
183
+ operatingSystem: 'Any',
184
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
185
+ },
186
+ {
187
+ '@context': 'https://schema.org',
188
+ '@type': 'FAQPage',
189
+ mainEntity: [
190
+ {
191
+ '@type': 'Question',
192
+ name: 'Lo strumento carica le mie immagini su un server?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'No. L immagine viene elaborata localmente nel browser ed esportata direttamente in PNG.',
196
+ },
197
+ },
198
+ {
199
+ '@type': 'Question',
200
+ name: 'Posso usare una mia tavolozza personalizzata?',
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: 'Sì. Inserisci i codici esadecimali nel campo Colori personalizzati e applica la tavolozza.',
204
+ },
205
+ },
206
+ ],
207
+ },
208
+ {
209
+ '@context': 'https://schema.org',
210
+ '@type': 'HowTo',
211
+ name: 'Come ridurre uno sprite a una tavolozza retro',
212
+ step: [
213
+ { '@type': 'HowToStep', name: 'Carica uno sprite', text: 'Trascina un file nell area di lavoro.' },
214
+ { '@type': 'HowToStep', name: 'Scegli una tavolozza', text: 'Seleziona una preimpostazione o inserisci i tuoi colori.' },
215
+ { '@type': 'HowToStep', name: 'Confronta ed esporta', text: 'Ispeziona il risultato e scarica il file PNG.' },
216
+ ],
217
+ },
218
+ ],
219
+ bibliography: [
220
+ {
221
+ name: 'MDN Canvas API',
222
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
223
+ },
224
+ {
225
+ name: 'Lospec Palette List',
226
+ url: 'https://lospec.com/palette-list',
227
+ },
228
+ {
229
+ name: 'W3C Portable Network Graphics Specification',
230
+ url: 'https://www.w3.org/TR/png-3/',
231
+ },
232
+ ],
233
+ };
@@ -0,0 +1,225 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'pixel-art-palette-swapper',
6
+ title: 'ドット絵パレットスワッパー',
7
+ description: 'スプライトやスプライトシートをクラシックなゲーム機のパレットやカスタムカラーにブラウザ上で変換。',
8
+ ui: {
9
+ uploadTitle: 'スプライトをドラッグ&ドロップ',
10
+ uploadHint: 'PNG、JPEG、WebPをローカル環境で処理します',
11
+ chooseImage: '画像を選択',
12
+ replaceImage: '画像を差し替え',
13
+ paletteTitle: 'パレットを選択',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'NES風',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'カスタムカラー',
20
+ customPaletteHint: 'Hexカラーコードをカンマ、スペース、改行で区切って入力。',
21
+ applyCustomPalette: 'パレットを適用',
22
+ resetCustomPalette: 'リセット',
23
+ sourcePreview: 'オリジナル',
24
+ resultPreview: '変換結果',
25
+ waitingForImage: '画像を選択してください',
26
+ uploadToPreview: '画像をアップロードするとプレビューが表示されます',
27
+ resultEmpty: '元の画像と減色後の画像が左右に並んで表示されます。',
28
+ downloadPng: 'PNGをダウンロード',
29
+ downloadDisabled: '画像をアップロードしてエクスポートを有効化。',
30
+ colorCount: '元の色数',
31
+ mappedCount: '使用色数',
32
+ imageSize: '画像サイズ',
33
+ paletteCount: 'パレット色数',
34
+ preserveAlpha: '透過を維持',
35
+ zoomLabel: 'ズーム',
36
+ processing: 'ピクセルを減色中',
37
+ invalidPalette: '有効なHexカラーコードを入力してください',
38
+ invalidImage: 'PNG、JPEG、WebP形式の画像を選択してください',
39
+ readyStatus: '準備完了',
40
+ dropActive: 'ドロップして読み込み',
41
+ mappedSummary: '{source}色の元画像を{mapped}色のパレットに変換しました',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'ドット絵をレトロゲーム機のカラーパレットに即座に変換',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: '限られた色数はドット絵にレトロゲーム独特の魅力を与えます。Game Boy、NES、PICO-8などのパレットに一括変換できます。',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: '減色処理の仕組み',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: '各ピクセルのRGB値を解析し、選択されたパレットの中で最も近い色に置き換えます。透明度も保持されます。',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'パレット制限',
68
+ description: '元の色を最も近いパレット色へ変換。',
69
+ points: [
70
+ 'スプライトやタイルセットに最適',
71
+ '元の解像度とピクセル位置を維持',
72
+ '使用色数を簡単に管理',
73
+ ],
74
+ },
75
+ {
76
+ title: 'パレットスワップ',
77
+ description: '色違いバージョンを簡単に作成。',
78
+ points: [
79
+ '2Pカラーや属性違いのキャラ作成に',
80
+ '独自のHexカラーリストにも対応',
81
+ '即座にPNGとして書き出し可能',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'レトロパレット比較',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['パレット', '色数', '特徴', '注意点'],
94
+ rows: [
95
+ ['Game Boy', '4', 'モノクロ携帯ゲーム機風', '明暗差が少ないとディテールが潰れやすい'],
96
+ ['NES風', '16', 'アーケード風の鮮やかな発色', '彩度の高い色の扱いに注意'],
97
+ ['PICO-8', '16', '現代的なポピュラーカラー', '鮮やかな色のコントラストを考慮'],
98
+ ['Commodore 64', '16', 'シックなレトロPCテイスト', '明確なシルエット作りが効果的'],
99
+ ['DawnBringer 16', '16', '汎用性の高い人気パレット', '光源の意識が必要'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'スプライトシートの作業フロー',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: '画像を読み込み、ズーム機能を使って拡大しながら細部の潰れがないか確認してください。',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: '色数えらびのコツ',
114
+ html: '最初は4〜16色程度に抑えると統一感が出やすくなります。',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: '書き出し前のチェックリスト',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'ゲームへの組み込み前に',
125
+ html: '原寸サイズで表示を確認し、透過部分に余計なピクセルが入っていないかチェックしましょう。',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'カラー減色(Quantization)',
132
+ definition: '多くの色で描かれた画像を限られた色数に変換する処理。',
133
+ },
134
+ {
135
+ term: 'パレットランプ(Ramp)',
136
+ definition: '陰影をつけるために段階的に並べられた同系色の系列。',
137
+ },
138
+ {
139
+ term: 'インデックスカラー',
140
+ definition: '各ピクセルがカラーテーブルの番号を参照する形式。',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: '画像はサーバーに送信されますか?',
148
+ answer: 'いいえ。すべての処理はお使いのブラウザ上でローカルに行われます。',
149
+ },
150
+ {
151
+ question: '自作のパレットを使用できますか?',
152
+ answer: 'はい。Hexコードを入力して「パレットを適用」をクリックしてください。',
153
+ },
154
+ ],
155
+ howTo: [
156
+ {
157
+ name: '画像をロード',
158
+ text: 'PNG、JPEG、WebP画像をドラッグ&ドロップします。',
159
+ },
160
+ {
161
+ name: 'パレットを選択',
162
+ text: 'プリセットを選択するか、カスタムコードを入力します。',
163
+ },
164
+ {
165
+ name: 'エクスポート',
166
+ text: '変換後のPNGファイルをダウンロードします。',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: 'ドット絵パレットスワッパー',
174
+ applicationCategory: 'DesignApplication',
175
+ operatingSystem: 'Any',
176
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
177
+ },
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: [
182
+ {
183
+ '@type': 'Question',
184
+ name: '画像はサーバーに送信されますか?',
185
+ acceptedAnswer: {
186
+ '@type': 'Answer',
187
+ text: 'いいえ。すべての処理はお使いのブラウザ上でローカルに行われます。',
188
+ },
189
+ },
190
+ {
191
+ '@type': 'Question',
192
+ name: '自作のパレットを使用できますか?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'はい。Hexコードを入力して「パレットを適用」をクリックしてください。',
196
+ },
197
+ },
198
+ ],
199
+ },
200
+ {
201
+ '@context': 'https://schema.org',
202
+ '@type': 'HowTo',
203
+ name: 'ドット絵をレトロパレットに変換する方法',
204
+ step: [
205
+ { '@type': 'HowToStep', name: '画像をロード', text: '画像をドラッグ&ドロップします。' },
206
+ { '@type': 'HowToStep', name: 'パレットを選択', text: 'プリセットを選択するかカスタムコードを入力します。' },
207
+ { '@type': 'HowToStep', name: 'エクスポート', text: '変換後のPNGファイルをダウンロードします。' },
208
+ ],
209
+ },
210
+ ],
211
+ bibliography: [
212
+ {
213
+ name: 'MDN Canvas API',
214
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
215
+ },
216
+ {
217
+ name: 'Lospec Palette List',
218
+ url: 'https://lospec.com/palette-list',
219
+ },
220
+ {
221
+ name: 'W3C Portable Network Graphics Specification',
222
+ url: 'https://www.w3.org/TR/png-3/',
223
+ },
224
+ ],
225
+ };
@@ -0,0 +1,225 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'pixel-art-palette-swapper',
6
+ title: '도트 그래픽 팔레트 스왑 도구',
7
+ description: '스프라이트와 스프라이트 시트의 색상을 레트로 콘솔 팔레트나 사용자 지정 Hex 색상으로 브라우저에서 직접 변경하세요.',
8
+ ui: {
9
+ uploadTitle: '스프라이트 파일 드래그 앤 드롭',
10
+ uploadHint: 'PNG, JPEG, WebP 파일이 브라우저에서 안전하게 처리됩니다',
11
+ chooseImage: '이미지 선택',
12
+ replaceImage: '이미지 교체',
13
+ paletteTitle: '팔레트 선택',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'NES 스타일',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: '사용자 지정 색상',
20
+ customPaletteHint: 'Hex 색상 코드를 쉼표, 공백 또는 줄바꿈으로 구분하여 입력하세요.',
21
+ applyCustomPalette: '팔레트 적용',
22
+ resetCustomPalette: '초기화',
23
+ sourcePreview: '원본',
24
+ resultPreview: '변환 결과',
25
+ waitingForImage: '이미지 대기 중',
26
+ uploadToPreview: '이미지를 업로드하면 미리보기가 표시됩니다',
27
+ resultEmpty: '원본과 색상이 변환된 이미지가 나란히 표시됩니다.',
28
+ downloadPng: 'PNG 다운로드',
29
+ downloadDisabled: '내보내기를 활성화하려면 이미지를 업로드하세요.',
30
+ colorCount: '원본 색상 수',
31
+ mappedCount: '사용된 색상 수',
32
+ imageSize: '이미지 크기',
33
+ paletteCount: '팔레트 색상 수',
34
+ preserveAlpha: '투명도 유지',
35
+ zoomLabel: '확대',
36
+ processing: '픽셀 색상 변환 중',
37
+ invalidPalette: '올바른 Hex 색상 코드를 1개 이상 입력하세요',
38
+ invalidImage: 'PNG, JPEG 또는 WebP 이미지를 선택하세요',
39
+ readyStatus: '준비 완료',
40
+ dropActive: '파일을 놓아 업로드',
41
+ mappedSummary: '{source}개의 원본 색상을 {mapped}개의 팔레트 색상으로 변환했습니다',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: '도트 그래픽을 레트로 감성의 팔레트로 즉시 변환',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: '제한된 색상 수 팔레트는 도트 그래픽에 독특한 레트로 분위기를 더해줍니다. Game Boy, NES, PICO-8 팔레트로 손쉽게 변환해 보세요.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: '색상 변환 알고리즘 작동 방식',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: '각 픽셀의 RGB 값을 분석하여 선택한 팔레트에서 가장 가까운 색상으로 대체하며 투명도 채널은 그대로 유지됩니다.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: '팔레트 제한',
68
+ description: '원본 색상을 가장 가까운 팔레트 색으로 변경.',
69
+ points: [
70
+ '스프라이트 및 타일셋 작업에 최적화',
71
+ '원본 해상도와 픽셀 위치 유지',
72
+ '색상 수 관리가 용이함',
73
+ ],
74
+ },
75
+ {
76
+ title: '팔레트 스왑',
77
+ description: '동일 디자인의 다양한 색상 버전 생성.',
78
+ points: [
79
+ '2P 컬러 및 속성 변경 캐릭터 제작에 유용',
80
+ '사용자 지정 Hex 코드 지원',
81
+ '즉시 PNG 파일로 내보내기 가능',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: '레트로 콘솔 팔레트 비교',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['팔레트', '색상 수', '추천 용도', '주의할 점'],
94
+ rows: [
95
+ ['Game Boy', '4', '흑백 휴대용 게임기 느낌', '명암 차가 적으면 디테일이 뭉개질 수 있음'],
96
+ ['NES 스타일', '16', '아케이드풍 도트 그래픽', '채도가 높은 색상의 균형 필요'],
97
+ ['PICO-8', '16', '트렌디하고 선명한 아기자기한 스타일', '강렬한 색상 간의 대비 고려'],
98
+ ['Commodore 64', '16', '고전 PC 게임 감성', '명확한 실루엣 표현이 효과적'],
99
+ ['DawnBringer 16', '16', '범용성 높은 세련된 팔레트', '명확한 광원 표현이 필요함'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: '스프라이트 시트 작업 흐름',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: '이미지를 불러온 후 확대 기능을 사용하여 픽셀 디테일이나 경계선이 뭉개지지 않았는지 확인하세요.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: '색상 구성 팁',
114
+ html: '4개에서 16개 사이의 색상을 사용하는 것이 깔끔한 디테일을 유지하는 데 좋습니다.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: '내보내기 전 체크리스트',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: '게임 적용 전 확인',
125
+ html: '100% 원본 비율에서 외곽선과 투명 배경 부분이 깨끗한지 점검하세요.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: '색상 양자화 (Quantization)',
132
+ definition: '많은 수의 색상을 제한된 색상 집합으로 줄이는 과정.',
133
+ },
134
+ {
135
+ term: '팔레트 램프 (Ramp)',
136
+ definition: '음영을 표현하기 위해 음영 단계별로 정리된 색상 계열.',
137
+ },
138
+ {
139
+ term: '인덱스 팔레트',
140
+ definition: '픽셀이 직접 색상 코드를 갖는 대신 색상표 번호를 참조하는 방식.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: '이미지가 서버로 전송되나요?',
148
+ answer: '아니요. 모든 작업은 사용자의 브라우저 내부에서 안전하게 진행됩니다.',
149
+ },
150
+ {
151
+ question: '원하는 팔레트를 직접 입력할 수 있나요?',
152
+ answer: '네. Hex 색상 코드를 입력하고 「팔레트 적용」을 클릭하세요.',
153
+ },
154
+ ],
155
+ howTo: [
156
+ {
157
+ name: '이미지 불러오기',
158
+ text: 'PNG, JPEG 또는 WebP 이미지를 드래그 앤 드롭합니다.',
159
+ },
160
+ {
161
+ name: '팔레트 선택',
162
+ text: '프리셋을 선택하거나 직접 Hex 코드를 입력합니다.',
163
+ },
164
+ {
165
+ name: '내보내기',
166
+ text: '색상이 변환된 PNG 이미지를 다운로드합니다.',
167
+ },
168
+ ],
169
+ schemas: [
170
+ {
171
+ '@context': 'https://schema.org',
172
+ '@type': 'SoftwareApplication',
173
+ name: '도트 그래픽 팔레트 스왑 도구',
174
+ applicationCategory: 'DesignApplication',
175
+ operatingSystem: 'Any',
176
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
177
+ },
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'FAQPage',
181
+ mainEntity: [
182
+ {
183
+ '@type': 'Question',
184
+ name: '이미지가 서버로 전송되나요?',
185
+ acceptedAnswer: {
186
+ '@type': 'Answer',
187
+ text: '아니요. 모든 작업은 사용자의 브라우저 내부에서 안전하게 진행됩니다.',
188
+ },
189
+ },
190
+ {
191
+ '@type': 'Question',
192
+ name: '원하는 팔레트를 직접 입력할 수 있나요?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: '네. Hex 색상 코드를 입력하고 「팔레트 적용」을 클릭하세요.',
196
+ },
197
+ },
198
+ ],
199
+ },
200
+ {
201
+ '@context': 'https://schema.org',
202
+ '@type': 'HowTo',
203
+ name: '도트 그래픽 색상 변환 방법',
204
+ step: [
205
+ { '@type': 'HowToStep', name: '이미지 불러오기', text: '이미지를 드래그 앤 드롭합니다.' },
206
+ { '@type': 'HowToStep', name: '팔레트 선택', text: '프리셋을 선택하거나 직접 Hex 코드를 입력합니다.' },
207
+ { '@type': 'HowToStep', name: '내보내기', text: '색상이 변환된 PNG 이미지를 다운로드합니다.' },
208
+ ],
209
+ },
210
+ ],
211
+ bibliography: [
212
+ {
213
+ name: 'MDN Canvas API',
214
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
215
+ },
216
+ {
217
+ name: 'Lospec Palette List',
218
+ url: 'https://lospec.com/palette-list',
219
+ },
220
+ {
221
+ name: 'W3C Portable Network Graphics Specification',
222
+ url: 'https://www.w3.org/TR/png-3/',
223
+ },
224
+ ],
225
+ };