@jjlmoya/utils-games-development 1.47.0 → 1.50.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/index.ts +2 -1
- package/src/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +1 -20
- package/src/tests/tool_validation.test.ts +2 -3
- package/src/tool/itchioGameTester/client.ts +12 -23
- package/src/tool/itchioGameTester/component.astro +0 -7
- package/src/tool/itchioGameTester/i18n/de.ts +0 -2
- package/src/tool/itchioGameTester/i18n/en.ts +0 -2
- package/src/tool/itchioGameTester/i18n/es.ts +0 -2
- package/src/tool/itchioGameTester/i18n/fr.ts +0 -2
- package/src/tool/itchioGameTester/i18n/id.ts +0 -2
- package/src/tool/itchioGameTester/i18n/it.ts +0 -2
- package/src/tool/itchioGameTester/i18n/ja.ts +0 -2
- package/src/tool/itchioGameTester/i18n/ko.ts +0 -2
- package/src/tool/itchioGameTester/i18n/nl.ts +0 -2
- package/src/tool/itchioGameTester/i18n/pl.ts +0 -2
- package/src/tool/itchioGameTester/i18n/pt.ts +0 -2
- package/src/tool/itchioGameTester/i18n/ru.ts +0 -2
- package/src/tool/itchioGameTester/i18n/sv.ts +0 -2
- package/src/tool/itchioGameTester/i18n/tr.ts +0 -2
- package/src/tool/itchioGameTester/i18n/zh.ts +0 -2
- package/src/tool/itchioGameTester/ui.ts +0 -2
- package/src/tool/spriteSheetPacker/app-client.ts +248 -0
- package/src/tool/spriteSheetPacker/bibliography.astro +6 -0
- package/src/tool/spriteSheetPacker/bibliography.ts +12 -0
- package/src/tool/spriteSheetPacker/component.astro +229 -0
- package/src/tool/spriteSheetPacker/dropzone-client.ts +55 -0
- package/src/tool/spriteSheetPacker/entry.ts +28 -0
- package/src/tool/spriteSheetPacker/exporter.ts +116 -0
- package/src/tool/spriteSheetPacker/extractor-client.ts +127 -0
- package/src/tool/spriteSheetPacker/flipbook-client.ts +60 -0
- package/src/tool/spriteSheetPacker/i18n/de.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/en.ts +275 -0
- package/src/tool/spriteSheetPacker/i18n/es.ts +275 -0
- package/src/tool/spriteSheetPacker/i18n/fr.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/id.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/it.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/ja.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/ko.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/nl.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/pl.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/pt.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/ru.ts +266 -0
- package/src/tool/spriteSheetPacker/i18n/sv.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/tr.ts +270 -0
- package/src/tool/spriteSheetPacker/i18n/zh.ts +270 -0
- package/src/tool/spriteSheetPacker/index.ts +11 -0
- package/src/tool/spriteSheetPacker/logic.test.ts +155 -0
- package/src/tool/spriteSheetPacker/logic.ts +32 -0
- package/src/tool/spriteSheetPacker/packer-core.ts +121 -0
- package/src/tool/spriteSheetPacker/packer-ui.ts +86 -0
- package/src/tool/spriteSheetPacker/seo.astro +15 -0
- package/src/tool/spriteSheetPacker/sprite-sheet-packer.css +578 -0
- package/src/tool/spriteSheetPacker/types.ts +89 -0
- package/src/tool/spriteSheetPacker/ui.ts +42 -0
- package/src/tools.ts +2 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { SpriteSheetPackerUI } from '../ui';
|
|
3
|
+
|
|
4
|
+
export const content: ToolLocaleContent<SpriteSheetPackerUI> = {
|
|
5
|
+
slug: 'sprite-sheet-packer-och-extraktor',
|
|
6
|
+
title: 'Sprite Sheet Packer och Extraktor',
|
|
7
|
+
description:
|
|
8
|
+
'Optimera 2D spelprestanda genom att packa enskilda animeringsbilder i texturatlaser eller extrahera sprites från befintliga sheets.',
|
|
9
|
+
ui: {
|
|
10
|
+
packerTab: 'Packer Studio',
|
|
11
|
+
extractorTab: 'Sprite Extraktor',
|
|
12
|
+
dropZoneTitle: 'Dra och Släpp Bildrutor',
|
|
13
|
+
dropZoneSubtitle: 'Ladda upp PNG eller WebP bilder för att generera din optimerade texturatlas',
|
|
14
|
+
selectFilesButton: 'Välj Bildfiler',
|
|
15
|
+
clearAllButton: 'Rensa Arbetsyta',
|
|
16
|
+
downloadZipButton: 'Ladda ner Paket (ZIP)',
|
|
17
|
+
copyJsonButton: 'Kopiera Atlas JSON',
|
|
18
|
+
downloadSheetPngButton: 'Ladda ner Textur PNG',
|
|
19
|
+
paddingLabel: 'Marginal mellan bildrutor (px)',
|
|
20
|
+
borderExtrusionLabel: 'Kanthelt Extrudering (px)',
|
|
21
|
+
maxTextureSizeLabel: 'Maximal Texturstorlek',
|
|
22
|
+
powerOfTwoLabel: 'Tvinga Potens av 2 (POT)',
|
|
23
|
+
trimTransparencyLabel: 'Beskär Genomskinlighet',
|
|
24
|
+
exportFormatLabel: 'Målspelsmotor Format',
|
|
25
|
+
presetPixelArt: 'Pixel Art 16x16 Preset',
|
|
26
|
+
presetHdUi: 'HD UI Atlas 1024 Preset',
|
|
27
|
+
presetMobile: 'Mobil WebGL 2048 Preset',
|
|
28
|
+
formatGenericHash: 'Generisk JSON (Hash)',
|
|
29
|
+
formatGenericArray: 'Generisk JSON (Array)',
|
|
30
|
+
formatUnity: 'Unity 2D Engine',
|
|
31
|
+
formatGodot: 'Godot 2D Engine',
|
|
32
|
+
formatPhaser: 'Phaser / PixiJS Engine',
|
|
33
|
+
formatCss: 'Web Frontend CSS',
|
|
34
|
+
previewTitle: 'Texturatlas Förhandsgranskning',
|
|
35
|
+
efficiencyBadge: 'Textureffektivitet',
|
|
36
|
+
drawCallsBadge: 'Minskade Draw Calls',
|
|
37
|
+
totalFramesBadge: 'Packade Bildrutor',
|
|
38
|
+
textureSizeBadge: 'Atlasdimension',
|
|
39
|
+
flipbookTitle: 'Animeringsspelare Flipbook',
|
|
40
|
+
flipbookFpsLabel: 'Animeringshastighet (FPS)',
|
|
41
|
+
playAnimation: 'Spela Sekvens',
|
|
42
|
+
pauseAnimation: 'Pausa',
|
|
43
|
+
extractorModeGrid: 'Fast Rutnätsuppdelning',
|
|
44
|
+
extractorModeAlpha: 'Automatisk Alfa Kanal Uppdelning',
|
|
45
|
+
frameWidthLabel: 'Bildrutans Bredd (px)',
|
|
46
|
+
frameHeightLabel: 'Bildrutans Höjd (px)',
|
|
47
|
+
marginLabel: 'Yttre Marginal (px)',
|
|
48
|
+
spacingLabel: 'Rutnätsavstånd (px)',
|
|
49
|
+
extractFramesButton: 'Extrahera Bildrutor',
|
|
50
|
+
extractedCountLabel: 'Extraherade Sprites',
|
|
51
|
+
codeSnippetTitle: 'Integreringskod för Spelmotor',
|
|
52
|
+
copySnippetButton: 'Kopiera Kod',
|
|
53
|
+
copiedToast: 'Kopierat till Urklipp',
|
|
54
|
+
},
|
|
55
|
+
seo: [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
level: 2,
|
|
59
|
+
text: 'Förståelse för GPU Batching och Optimering av Draw Calls i 2D Spelmotorer',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: 'Att samla enskilda bildrutor i en gemensam texturatlas minskar antalet anrop som skickas från processorn CPU till grafikkortet GPU.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'stats',
|
|
67
|
+
columns: 4,
|
|
68
|
+
items: [
|
|
69
|
+
{ value: '95%', label: 'Minskning av Draw Calls' },
|
|
70
|
+
{ value: '4x', label: 'Snabbare GPU Bearbetning' },
|
|
71
|
+
{ value: '60 FPS', label: 'Stabilt Mål på Mobila Enheter' },
|
|
72
|
+
{ value: '100%', label: 'Lokal Bearbetning i Webbläsaren' },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
level: 2,
|
|
78
|
+
text: 'Jämförelse mellan Enskilda Filer och Packade Texturatlaser',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'comparative',
|
|
82
|
+
columns: 2,
|
|
83
|
+
items: [
|
|
84
|
+
{
|
|
85
|
+
title: 'Enskilda Bildrutefiler',
|
|
86
|
+
description: 'Fristående PNG eller WebP filer på disken',
|
|
87
|
+
points: [
|
|
88
|
+
'Genererar ett separat renderanrop för varje enskild bildruta på skärmen',
|
|
89
|
+
'Orsakar täta kontextbyten på grafikkortet GPU',
|
|
90
|
+
'Ökar antalet HTTP förfrågningar för webbaserade spel',
|
|
91
|
+
'Sänker bildhastigheten på mobila enheter',
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
title: 'Packad Texturatlas',
|
|
96
|
+
description: 'Enkel PNG bild kombinerad med JSON koordinatdata',
|
|
97
|
+
points: [
|
|
98
|
+
'Buntar ihop hundratals sprites i ett enda GPU renderanrop',
|
|
99
|
+
'Maximerar minnesbandbredd och grafisk återgivningshastighet',
|
|
100
|
+
'Minskar nätverksanrop genom att bunta ihop bild och data',
|
|
101
|
+
'Garanterar jämn 60 FPS på alla plattformar',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
level: 2,
|
|
109
|
+
text: 'Subpixel Kamerarörelse och Kantextruderingsmatematik',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: 'Att lägga till 1 till 2 pixlars kantextrudering kopierar de yttre kantpixlarna utåt för att förhindra synliga skarvar vid kamerarörelser.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'tip',
|
|
117
|
+
title: 'Strategie för Kantextrudering',
|
|
118
|
+
html: 'Använd kantextrudering för att helt eliminera kantartefakter vid kamerarörelser i 2D spel.',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'title',
|
|
122
|
+
level: 2,
|
|
123
|
+
text: 'Rekommenderade Texturstorlekar för Olika Plattformar',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'table',
|
|
127
|
+
headers: ['Målplattform', 'Rekommenderad Maxstorlek', 'Krav på Potens av 2', 'Minnesprofil'],
|
|
128
|
+
rows: [
|
|
129
|
+
['Mobila Webbläsare', '2048 x 2048 px', 'Obligatoriskt för WebGL 1.0', 'Låg Bandbredd'],
|
|
130
|
+
['Dator PC / Konsol', '4096 x 4096 px', 'Rekommenderas', 'Hög GPU Kapacitet'],
|
|
131
|
+
['Retro Handhållna Konsoler', '1024 x 1024 px', 'Strikt Krav', 'Strikta VRAM Gränser'],
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'proscons',
|
|
136
|
+
items: [
|
|
137
|
+
{
|
|
138
|
+
pro: 'Garanterar full kompatibilitet med äldre grafikdrivrutiner och WebGL 1.0',
|
|
139
|
+
con: 'Kan lämna oanvänt genomskinligt utrymme vid få sprites',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
pro: 'Stöder automatisk generering av mipmaps i hårdvaran',
|
|
143
|
+
con: 'Kräver noggrann marginaljustering vid oregelbundna former',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Optimerar VRAM minnesallokering på grafikkortet',
|
|
147
|
+
con: 'Ökar den initiala texturytan något',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'title',
|
|
153
|
+
level: 2,
|
|
154
|
+
text: 'Viktiga Begrepp inom Sprite Packning',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'glossary',
|
|
158
|
+
items: [
|
|
159
|
+
{
|
|
160
|
+
term: 'Draw Call',
|
|
161
|
+
definition: 'Ett kommando från processorn till grafikkortet att rita geometri och texturer.',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
term: 'Bin Packing',
|
|
165
|
+
definition: 'En algoritm för att arrangera rektangulära objekt optimalt i en minimal yta.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
term: 'Border Extrusion',
|
|
169
|
+
definition: 'Duplicering av yttre kantpixlar utåt för att förhindra synliga skarvar vid kamerarörelser.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
term: 'Flipbook Animation',
|
|
173
|
+
definition: 'Snabb sekventiell uppspelning av bildrutor för att simulera kontinuerlig rörelse i 2D spel.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
level: 2,
|
|
180
|
+
text: 'Checklista för Prestanda',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'diagnostic',
|
|
184
|
+
variant: 'info',
|
|
185
|
+
title: 'Produktionsregler',
|
|
186
|
+
html: 'Gruppera animationer i gemensamma atlaser och använd potenser av två för WebGL byggen.',
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
faq: [
|
|
190
|
+
{
|
|
191
|
+
question: 'Vad är ett sprite sheet och varför är det viktigt?',
|
|
192
|
+
answer:
|
|
193
|
+
'Ett sprite sheet är en enskild bildfil som innehåller flera animeringsbilder.',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
question: 'Hur fungerar den lokala bearbetningen i verktyget?',
|
|
197
|
+
answer:
|
|
198
|
+
'Alla beräkningar sker lokalt i din webbläsare via HTML5 Canvas API.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
question: 'Kan jag extrahera bilder från ett befintligt sprite sheet?',
|
|
202
|
+
answer:
|
|
203
|
+
'Ja. Växla till Extraktor läget och ladda upp din bild.',
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
howTo: [
|
|
207
|
+
{
|
|
208
|
+
name: 'Ladda upp Bildrutor',
|
|
209
|
+
text: 'Dra och släpp dina PNG eller WebP filer i uppladdningsområdet.',
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'Justera Inställningar',
|
|
213
|
+
text: 'Ställ in marginaler kantextrudering och maximal texturstorlek.',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'Förhandsgranska och Ladda ner',
|
|
217
|
+
text: 'Kontrollera animationen i spelaren och ladda ner ditt ZIP paket.',
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
schemas: [
|
|
221
|
+
{
|
|
222
|
+
'@context': 'https://schema.org',
|
|
223
|
+
'@type': 'SoftwareApplication',
|
|
224
|
+
name: 'Sprite Sheet Packer och Extraktor',
|
|
225
|
+
applicationCategory: 'DeveloperApplication',
|
|
226
|
+
operatingSystem: 'Any',
|
|
227
|
+
offers: {
|
|
228
|
+
'@type': 'Offer',
|
|
229
|
+
price: '0',
|
|
230
|
+
priceCurrency: 'USD',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
'@context': 'https://schema.org',
|
|
235
|
+
'@type': 'FAQPage',
|
|
236
|
+
mainEntity: [
|
|
237
|
+
{
|
|
238
|
+
'@type': 'Question',
|
|
239
|
+
name: 'Vad är ett sprite sheet och varför är det viktigt?',
|
|
240
|
+
acceptedAnswer: {
|
|
241
|
+
'@type': 'Answer',
|
|
242
|
+
text: 'Ett sprite sheet är en enskild bildfil som innehåller flera animeringsbilder.',
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
'@context': 'https://schema.org',
|
|
249
|
+
'@type': 'HowTo',
|
|
250
|
+
name: 'Hur man packar och extraherar sprite sheets',
|
|
251
|
+
step: [
|
|
252
|
+
{
|
|
253
|
+
'@type': 'HowToStep',
|
|
254
|
+
name: 'Ladda upp Bildrutor',
|
|
255
|
+
text: 'Dra och släpp dina PNG eller WebP filer i uppladdningsområdet.',
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
bibliography: [
|
|
261
|
+
{
|
|
262
|
+
name: 'Godot Engine 2D Sprite Sheets Documentation',
|
|
263
|
+
url: 'https://docs.godotengine.org/en/stable/tutorials/2d/2d_sprite_animation.html',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: 'Unity Sprite Atlas Manual',
|
|
267
|
+
url: 'https://docs.unity3d.com/Manual/class-SpriteAtlas.html',
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
};
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { SpriteSheetPackerUI } from '../ui';
|
|
3
|
+
|
|
4
|
+
export const content: ToolLocaleContent<SpriteSheetPackerUI> = {
|
|
5
|
+
slug: 'sprite-sheet-paketleyici-ve-cikartici',
|
|
6
|
+
title: 'Sprite Sheet Paketleyici ve Çıkartıcı',
|
|
7
|
+
description:
|
|
8
|
+
'Tekil animasyon karelerini doku atlaslarında birleştirerek veya mevcut sayfalardan sprite kareleri çıkartarak 2D oyun performansını optimize edin.',
|
|
9
|
+
ui: {
|
|
10
|
+
packerTab: 'Paketleme Stüdyosu',
|
|
11
|
+
extractorTab: 'Sprite Çıkartıcı',
|
|
12
|
+
dropZoneTitle: 'Kareleri Buraya Sürükleyin',
|
|
13
|
+
dropZoneSubtitle: 'Optimize edilmiş doku atlasınızı oluşturmak için PNG veya WebP görselleri yükleyin',
|
|
14
|
+
selectFilesButton: 'Görsel Dosyaları Seç',
|
|
15
|
+
clearAllButton: 'Çalışma Alanını Temizle',
|
|
16
|
+
downloadZipButton: 'Paketi İndir (ZIP)',
|
|
17
|
+
copyJsonButton: 'Atlas JSON Kopyala',
|
|
18
|
+
downloadSheetPngButton: 'Doku PNG İndir',
|
|
19
|
+
paddingLabel: 'Kare Mesafesi (px)',
|
|
20
|
+
borderExtrusionLabel: 'Kenar Uzatması (px)',
|
|
21
|
+
maxTextureSizeLabel: 'Maksimum Doku Boyutu',
|
|
22
|
+
powerOfTwoLabel: '2 nin Kuvvetine Zorla (POT)',
|
|
23
|
+
trimTransparencyLabel: 'Şeffaflığı Kırp',
|
|
24
|
+
exportFormatLabel: 'Hedef Motor Formatı',
|
|
25
|
+
presetPixelArt: 'Pixel Art 16x16 Şablonu',
|
|
26
|
+
presetHdUi: 'HD UI Atlas 1024 Şablonu',
|
|
27
|
+
presetMobile: 'Mobil WebGL 2048 Şablonu',
|
|
28
|
+
formatGenericHash: 'Genel JSON (Hash)',
|
|
29
|
+
formatGenericArray: 'Genel JSON (Array)',
|
|
30
|
+
formatUnity: 'Unity 2D Motoru',
|
|
31
|
+
formatGodot: 'Godot 2D Motoru',
|
|
32
|
+
formatPhaser: 'Phaser / PixiJS Motoru',
|
|
33
|
+
formatCss: 'Web Frontend CSS',
|
|
34
|
+
previewTitle: 'Doku Atlası Önizlemesi',
|
|
35
|
+
efficiencyBadge: 'Doku Verimliliği',
|
|
36
|
+
drawCallsBadge: 'Azaltılan Draw Call',
|
|
37
|
+
totalFramesBadge: 'Paketlenen Kare Sayısı',
|
|
38
|
+
textureSizeBadge: 'Atlas Boyutu',
|
|
39
|
+
flipbookTitle: 'Animasyon Oynatıcı Flipbook',
|
|
40
|
+
flipbookFpsLabel: 'Animasyon Hızı (FPS)',
|
|
41
|
+
playAnimation: 'Oynat',
|
|
42
|
+
pauseAnimation: 'Duraklat',
|
|
43
|
+
extractorModeGrid: 'Sabit Izgara Kesimi',
|
|
44
|
+
extractorModeAlpha: 'Otomatik Alfa Kanalı Kesimi',
|
|
45
|
+
frameWidthLabel: 'Kare Genişliği (px)',
|
|
46
|
+
frameHeightLabel: 'Kare Yüksekliği (px)',
|
|
47
|
+
marginLabel: 'Dış Kenar Boşluğu (px)',
|
|
48
|
+
spacingLabel: 'Izgara Aralığı (px)',
|
|
49
|
+
extractFramesButton: 'Kareleri Çıkart',
|
|
50
|
+
extractedCountLabel: 'Çıkartılan Spritelar',
|
|
51
|
+
codeSnippetTitle: 'Motor Entegrasyon Kodu',
|
|
52
|
+
copySnippetButton: 'Kodu Kopyala',
|
|
53
|
+
copiedToast: 'Panoya Kopyalandı',
|
|
54
|
+
},
|
|
55
|
+
seo: [
|
|
56
|
+
{
|
|
57
|
+
type: 'title',
|
|
58
|
+
level: 2,
|
|
59
|
+
text: '2D Oyun Motorlarında GPU Batching ve Draw Call Optimizasyonu',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'paragraph',
|
|
63
|
+
html: 'Tekil görsel karelerini tek bir doku atlasında toplamak, işlemciden ekran kartına gönderilen çizim komutu sayısını (draw call) önemli ölçüde azaltır.',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
type: 'stats',
|
|
67
|
+
columns: 4,
|
|
68
|
+
items: [
|
|
69
|
+
{ value: '%95', label: 'Draw Call Azalması' },
|
|
70
|
+
{ value: '4x', label: 'Daha Hızlı GPU İşleme' },
|
|
71
|
+
{ value: '60 FPS', label: 'Mobilde Kararlı Hedef' },
|
|
72
|
+
{ value: '100%', label: 'Tarayıcıda Yerel İşlem' },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
type: 'title',
|
|
77
|
+
level: 2,
|
|
78
|
+
text: 'Tekil Görsel Dosyaları ile Paketlemiş Doku Atlasları Karşılaştırması',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
type: 'comparative',
|
|
82
|
+
columns: 2,
|
|
83
|
+
items: [
|
|
84
|
+
{
|
|
85
|
+
title: 'Tekil Görsel Dosyaları',
|
|
86
|
+
description: 'Ayrı ayrı kaydedilmiş PNG veya WebP dosyaları',
|
|
87
|
+
points: [
|
|
88
|
+
'Erandaki her bir kare için ayrı bir çizim komutu oluşturur',
|
|
89
|
+
'Ekran kartında sürekli bağlam değişimine yol açar',
|
|
90
|
+
'Web oyunlarında HTTP istek sayısını artırır',
|
|
91
|
+
'Mobil cihazlarda kare hızının düşmesine neden olur',
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
title: 'Paketlenmiş Doku Atlası',
|
|
96
|
+
description: 'JSON koordinat verisi ile birleştirilmiş tek PNG görseli',
|
|
97
|
+
points: [
|
|
98
|
+
'Yüzlerce sprite karesini tek bir GPU çizim komutunda birleştirir',
|
|
99
|
+
'Bellek bant genişliğini ve grafik işleme hızını en üst düzeye çıkarır',
|
|
100
|
+
'Görsel ve veriyi birleştirerek dosya isteklerini azaltır',
|
|
101
|
+
'Tüm platformlarda akıcı 60 FPS performansı sağlar',
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'title',
|
|
108
|
+
level: 2,
|
|
109
|
+
text: 'Alt Piksel Kamera Hareketi ve Kenar Uzatma Matematiği',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'paragraph',
|
|
113
|
+
html: '1 ila 2 piksellik kenar uzatması (Border Extrusion) uygulamak, dış kenar piksellerini dışarıya doğru kopyalayarak kamera hareketlerinde oluşan çizgi kusurlarını engeller.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'tip',
|
|
117
|
+
title: 'Kenar Uzatma Stratejisi',
|
|
118
|
+
html: 'Kamera hareketlerinde piksel sızmasını tamamen önlemek için paketleme esnasında kenar uzatması kullanın.',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'title',
|
|
122
|
+
level: 2,
|
|
123
|
+
text: 'Farklı Platformlar İçin Önerilen Doku Boyutları',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
type: 'table',
|
|
127
|
+
headers: ['Hedef Platform', 'Önerilen Maks Boyut', '2 nin Kuvveti Şartı', 'Bellek Profili'],
|
|
128
|
+
rows: [
|
|
129
|
+
['Mobil Tarayıcılar', '2048 x 2048 px', 'WebGL 1.0 İçin Zorunlu', 'Düşük Bant Genişliği'],
|
|
130
|
+
['Masaüstü PC / Konsol', '4096 x 4096 px', 'Önerilir', 'Yüksek GPU Kapasitesi'],
|
|
131
|
+
['Retro El Konsolları', '1024 x 1024 px', 'Kesin Şart', 'Katı VRAM Sınırları'],
|
|
132
|
+
],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'proscons',
|
|
136
|
+
items: [
|
|
137
|
+
{
|
|
138
|
+
pro: 'Eski grafik sürücüleri ve WebGL 1.0 ile %100 uyumluluk sağlar',
|
|
139
|
+
con: 'Az sayıda sprite olduğunda kullanılmayan şeffaf alan bırakabilir',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
pro: 'Donanımsal otomatik mipmap oluşturmayı destekler',
|
|
143
|
+
con: 'Düzensiz şekillerde dikkatli kenar boşluğu ayarı gerektirir',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
pro: 'Ekran kartındaki VRAM bellek tahsisini optimize eder',
|
|
147
|
+
con: 'Başlangıç doku alanını az miktarda artırır',
|
|
148
|
+
},
|
|
149
|
+
],
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'title',
|
|
153
|
+
level: 2,
|
|
154
|
+
text: 'Sprite Paketleme Temel Terimleri',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'glossary',
|
|
158
|
+
items: [
|
|
159
|
+
{
|
|
160
|
+
term: 'Draw Call',
|
|
161
|
+
definition: 'İşlemcinin ekran kartına grafik çizmesi için gönderdiği komut.',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
term: 'Bin Packing',
|
|
165
|
+
definition: 'Dikdörtgen elemanları en küçük alana optimal şekilde yerleştirme algoritması.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
term: 'Border Extrusion',
|
|
169
|
+
definition: 'Kamera hareketinde çizgi kusurlarını engellemek için dış kenar piksellerini kopyalama.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
term: 'Flipbook Animation',
|
|
173
|
+
definition: '2D oyunlarda sürekli hareketi simüle etmek için karelerin hızlıca sırayla oynatılması.',
|
|
174
|
+
},
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
type: 'title',
|
|
179
|
+
level: 2,
|
|
180
|
+
text: 'Performans Kontrol Listesi',
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
type: 'diagnostic',
|
|
184
|
+
variant: 'info',
|
|
185
|
+
title: 'Üretim Kuralları',
|
|
186
|
+
html: 'Animasyonları ortak atlaslarda toplayın ve WebGL derlemelerinde 2 nin kuvveti boyutlarını kullanın.',
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
faq: [
|
|
190
|
+
{
|
|
191
|
+
question: 'Sprite sheet nedir ve 2D oyunlar için neden önemlidir?',
|
|
192
|
+
answer:
|
|
193
|
+
'Sprite sheet, birden fazla animasyon karesini içeren tek bir görsel dosyasıdır. Oyun motorunun tek bir GPU komutuyla çok sayıda nesneyi çizmesini sağlar.',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
question: 'Bu araçtaki yerel işleme nasıl çalışır?',
|
|
197
|
+
answer:
|
|
198
|
+
'Tüm işlemler sunucuya hiçbir veri gönderilmeden tarayıcınızın HTML5 Canvas API sinde yerel olarak gerçekleşir.',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
question: 'Mevcut bir sprite sayfasından kareleri çıkartabilir miyim?',
|
|
202
|
+
answer:
|
|
203
|
+
'Evet. Çıkartıcı moduna geçin, görselinizi yükleyin ve ızgara boyutlarını ayarlayın.',
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
howTo: [
|
|
207
|
+
{
|
|
208
|
+
name: 'Kareleri Yükleyin',
|
|
209
|
+
text: 'PNG veya WebP dosyalarınızı yükleme alanına sürükleyin.',
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
name: 'Ayarları Yapılandırın',
|
|
213
|
+
text: 'Mesafe, kenar uzatması ve hedef motor formatını seçin.',
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
name: 'Önizleyin ve İndirin',
|
|
217
|
+
text: 'Flipbook oynatıcıda animasyonu kontrol edin ve ZIP paketini indirin.',
|
|
218
|
+
},
|
|
219
|
+
],
|
|
220
|
+
schemas: [
|
|
221
|
+
{
|
|
222
|
+
'@context': 'https://schema.org',
|
|
223
|
+
'@type': 'SoftwareApplication',
|
|
224
|
+
name: 'Sprite Sheet Paketleyici ve Çıkartıcı',
|
|
225
|
+
applicationCategory: 'DeveloperApplication',
|
|
226
|
+
operatingSystem: 'Any',
|
|
227
|
+
offers: {
|
|
228
|
+
'@type': 'Offer',
|
|
229
|
+
price: '0',
|
|
230
|
+
priceCurrency: 'USD',
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
'@context': 'https://schema.org',
|
|
235
|
+
'@type': 'FAQPage',
|
|
236
|
+
mainEntity: [
|
|
237
|
+
{
|
|
238
|
+
'@type': 'Question',
|
|
239
|
+
name: 'Sprite sheet nedir ve 2D oyunlar için neden önemlidir?',
|
|
240
|
+
acceptedAnswer: {
|
|
241
|
+
'@type': 'Answer',
|
|
242
|
+
text: 'Sprite sheet, birden fazla animasyon karesini içeren tek bir görsel dosyasıdır.',
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
'@context': 'https://schema.org',
|
|
249
|
+
'@type': 'HowTo',
|
|
250
|
+
name: 'Sprite sheet nasıl paketlenir ve çıkartılır',
|
|
251
|
+
step: [
|
|
252
|
+
{
|
|
253
|
+
'@type': 'HowToStep',
|
|
254
|
+
name: 'Kareleri Yükleyin',
|
|
255
|
+
text: 'PNG veya WebP dosyalarınızı yükleme alanına sürükleyin.',
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
bibliography: [
|
|
261
|
+
{
|
|
262
|
+
name: 'Godot Engine 2D Sprite Sheets Documentation',
|
|
263
|
+
url: 'https://docs.godotengine.org/en/stable/tutorials/2d/2d_sprite_animation.html',
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
name: 'Unity Sprite Atlas Manual',
|
|
267
|
+
url: 'https://docs.unity3d.com/Manual/class-SpriteAtlas.html',
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
};
|