@jjlmoya/utils-games-development 1.51.0 → 1.52.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 +2 -2
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/saveFileEditor/bibliography.astro +6 -0
- package/src/tool/saveFileEditor/bibliography.ts +12 -0
- package/src/tool/saveFileEditor/component.astro +351 -0
- package/src/tool/saveFileEditor/entry.ts +28 -0
- package/src/tool/saveFileEditor/game-save-file-editor.css +250 -0
- package/src/tool/saveFileEditor/i18n/de.ts +182 -0
- package/src/tool/saveFileEditor/i18n/en.ts +182 -0
- package/src/tool/saveFileEditor/i18n/es.ts +182 -0
- package/src/tool/saveFileEditor/i18n/fr.ts +182 -0
- package/src/tool/saveFileEditor/i18n/id.ts +182 -0
- package/src/tool/saveFileEditor/i18n/it.ts +182 -0
- package/src/tool/saveFileEditor/i18n/ja.ts +182 -0
- package/src/tool/saveFileEditor/i18n/ko.ts +182 -0
- package/src/tool/saveFileEditor/i18n/nl.ts +182 -0
- package/src/tool/saveFileEditor/i18n/pl.ts +182 -0
- package/src/tool/saveFileEditor/i18n/pt.ts +182 -0
- package/src/tool/saveFileEditor/i18n/ru.ts +182 -0
- package/src/tool/saveFileEditor/i18n/sv.ts +182 -0
- package/src/tool/saveFileEditor/i18n/tr.ts +182 -0
- package/src/tool/saveFileEditor/i18n/zh.ts +182 -0
- package/src/tool/saveFileEditor/index.ts +11 -0
- package/src/tool/saveFileEditor/logic.test.ts +69 -0
- package/src/tool/saveFileEditor/logic.ts +139 -0
- package/src/tool/saveFileEditor/seo.astro +15 -0
- package/src/tool/saveFileEditor/ui.ts +24 -0
- package/src/tools.ts +2 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { SaveFileEditorUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<SaveFileEditorUI> = {
|
|
6
|
+
slug: 'game-save-bestand-editor',
|
|
7
|
+
title: 'Game Save Bestand Obfuscator en Editor',
|
|
8
|
+
description: 'Ontsleutel, inspecteer, bewerk JSON payloads en versleutel game save bestanden opnieuw met Base64, XOR masking of platte tekst 100% lokaal in je browser.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Game Save Bestand Obfuscator & Editor',
|
|
11
|
+
subtitle: 'Inspecteer, wijzig en versleutel lokale save bestanden veilig zonder serverlekken',
|
|
12
|
+
dropSaveFile: 'Sleep het game save bestand hier naartoe',
|
|
13
|
+
orSelectFile: 'of klik om een lokaal bestand te kiezen',
|
|
14
|
+
encryptionMethod: 'Versleutelingsformaat',
|
|
15
|
+
methodBase64: 'Base64 Codering',
|
|
16
|
+
methodXor: 'XOR Masker + Base64',
|
|
17
|
+
methodRaw: 'Platte JSON / Onversleuteld',
|
|
18
|
+
xorKeyLabel: 'XOR Geheime Sleutel',
|
|
19
|
+
xorKeyPlaceholder: 'bijv. MijnGeheimeSleutel2026',
|
|
20
|
+
jsonRawTitle: 'Gedecodeerde JSON Payload (Live Editor)',
|
|
21
|
+
encodeAndDownload: 'Versleutelen & Bestand Downloaden',
|
|
22
|
+
copyEncoded: 'Kopieer Versleutelde Tekst',
|
|
23
|
+
copiedNotice: 'Gekopieerd naar Klembord!',
|
|
24
|
+
decodedKeysCount: 'Totaal Aantal Parameters',
|
|
25
|
+
dataSize: 'Payload Grootte',
|
|
26
|
+
detectedFormat: 'Gedetecteerd Formaat',
|
|
27
|
+
exportPreviewLabel: 'Voorbeeld van Versleutelde Uitvoer',
|
|
28
|
+
decodePanelTitle: 'Decoderen en Live JSON Editor',
|
|
29
|
+
exportPanelTitle: 'Opnieuw Versleutelde Uitvoer',
|
|
30
|
+
decodeError: 'Het ontcijferen van het save bestand is mislukt',
|
|
31
|
+
bytesUnit: 'B',
|
|
32
|
+
},
|
|
33
|
+
seo: [
|
|
34
|
+
{
|
|
35
|
+
type: 'title',
|
|
36
|
+
level: 2,
|
|
37
|
+
text: 'Veiligheid en Obfuscantie Protocollen voor Game Saves',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'paragraph',
|
|
41
|
+
html: 'Videogames serialiseren de voortgang van spelers naar permanente opslagformaten om inventarissen, vrijgespeelde niveaus en spelerattributen te bewaren tussen speelsessies. Om onbevoegde aanpassingen in gewone tekstverwerkers door eindgebruikers te voorkomen, obfusceren gamestudio s savebestanden met binaire coderingen zoals Base64 of bitwise XOR-maskering met een geheime sleutel. Tijdens interne QA-tests en live operaties debugging hebben ontwikkelingsteams directe toegang nodig om ruwe JSON-structuren te inspecteren, grenswaarden te testen en gewijzigde gegevens opnieuw te versleutelen zonder de game opnieuw te compileren.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'stats',
|
|
45
|
+
columns: 4,
|
|
46
|
+
items: [
|
|
47
|
+
{ label: 'Client Verwerkingsprivacy', value: '100% Lokaal' },
|
|
48
|
+
{ label: 'Ondersteunde Decoders', value: 'Base64 / XOR / JSON' },
|
|
49
|
+
{ label: 'Decodeer Latentie', value: '0 ms' },
|
|
50
|
+
{ label: 'Datalek Risico', value: 'Nul' },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'title',
|
|
55
|
+
level: 2,
|
|
56
|
+
text: 'Vergelijking van Obfuscantie Schema s',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'comparative',
|
|
60
|
+
columns: 3,
|
|
61
|
+
items: [
|
|
62
|
+
{
|
|
63
|
+
title: 'Base64 Codering',
|
|
64
|
+
description: 'Snelle tekstconversie die eenvoudige bewerkingen in Kladblok voorkomt, maar geen echte cryptografische beveiliging biedt.',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: 'XOR Maskering + Base64',
|
|
68
|
+
description: 'Standaardpraktijk bij indie gameontwikkeling. Mengt tekstbytes met een geheime sleutel tegen geheugen-editors.',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: 'Platte JSON Payload',
|
|
72
|
+
description: 'Leesbare save-status zonder versleuteling. Ideaal voor prototypes en interne team-iteraties.',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'title',
|
|
78
|
+
level: 2,
|
|
79
|
+
text: 'QA Testpraktijken voor Verificatie van Save Status',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'tip',
|
|
83
|
+
title: 'Beste Praktijken voor Game Save Beveiliging tijdens QA',
|
|
84
|
+
html: 'Gebruik altijd afzonderlijke debugsleutels voor interne builds. Gebruik lokale inspecteurs om grenswaarden en statistieken te testen zonder de gamecode opnieuw te compileren.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'title',
|
|
88
|
+
level: 2,
|
|
89
|
+
text: 'Tabel met Richtlijnen voor Spelstatus Parameters',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'table',
|
|
93
|
+
headers: ['Datatype', 'Aanbevolen Formaat', 'Veelvoorkomende Toepassing', 'Obfuscantielaag'],
|
|
94
|
+
rows: [
|
|
95
|
+
['Numerieke Gehele Getallen', '32-bit Integer', 'Munten, Level, XP, Munitie', 'XOR Gemaskerd'],
|
|
96
|
+
['Booleaanse Vlaggen', 'Standaard Boolean', 'Tutorial Voltooid, Baas Verslagen', 'Base64 / XOR'],
|
|
97
|
+
['Geneste Objecten', 'JSON Hiërarchie', 'Spelersinventaris, Vaardigheden', 'Base64 Gecodeerd'],
|
|
98
|
+
['Tijdstempel Strings', 'ISO 8601 UTC', 'Dagelijkse Login, Opslagtijdstempel', 'XOR Gemaskerd'],
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
level: 2,
|
|
104
|
+
text: 'Reverse Engineering en Anti Tamper Overwegingen',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Hoewel obfuscantie aan de clientzijde voorkomt dat incidentele spelers opslagbestanden wijzigen in standaard tekstverwerkers, zijn XOR en Base64 geen cryptografische algoritmen. Geheugenscanners en tools zoals RenderDoc of x64dbg kunnen sleutelgeneratieroutines in gecompileerde bestanden inspecteren. Voor competitieve games zijn serververificatie of cryptografische HMAC-handtekeningen essentieel.',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
112
|
+
faq: [
|
|
113
|
+
{
|
|
114
|
+
question: 'Worden mijn game save bestanden geüpload naar een externe server?',
|
|
115
|
+
answer: 'Nee. Alle decodering, JSON-structuurbewerking en her-versleuteling vinden 100% plaats binnen je eigen webbrowser.',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
question: 'Hoe werkt XOR-sleutelobfuscantie in game-engines zoals Unity of Godot?',
|
|
119
|
+
answer: 'XOR-obfuscantie voert bitwise XOR-operaties uit op UTF-8 bytes van de JSON-string met de tekens van een geheime sleutel.',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
howTo: [
|
|
123
|
+
{
|
|
124
|
+
name: 'Bestand Laden of Plakken',
|
|
125
|
+
text: 'Upload je versleutelde savebestand of sleep het naar de uploadzone.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'Selecteer Decodeermethode en Sleutel',
|
|
129
|
+
text: 'Kies Base64 of XOR Maskering en voer de geheime sleutel in.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'JSON Status Bewerken',
|
|
133
|
+
text: 'Pas waarden voor niveau, goud, inventaris en spelvlaggen direct aan in de live editor.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Versleutelen en Exporteren',
|
|
137
|
+
text: 'Download het gewijzigde savebestand gereed voor testen in de game.',
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
schemas: [
|
|
141
|
+
{
|
|
142
|
+
'@context': 'https://schema.org',
|
|
143
|
+
'@type': 'SoftwareApplication',
|
|
144
|
+
name: 'Game Save Bestand Editor',
|
|
145
|
+
applicationCategory: 'DeveloperApplication',
|
|
146
|
+
operatingSystem: 'Any',
|
|
147
|
+
offers: {
|
|
148
|
+
'@type': 'Offer',
|
|
149
|
+
price: '0',
|
|
150
|
+
priceCurrency: 'EUR',
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
'@context': 'https://schema.org',
|
|
155
|
+
'@type': 'FAQPage',
|
|
156
|
+
mainEntity: [
|
|
157
|
+
{
|
|
158
|
+
'@type': 'Question',
|
|
159
|
+
name: 'Worden mijn game save bestanden geüpload naar een externe server?',
|
|
160
|
+
acceptedAnswer: {
|
|
161
|
+
'@type': 'Answer',
|
|
162
|
+
text: 'Nee. Alle verwerkingen vinden 100% lokaal in je browser plaats.',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
'@context': 'https://schema.org',
|
|
169
|
+
'@type': 'HowTo',
|
|
170
|
+
name: 'Hoe Versleutelde Game Save Bestanden te Bewerken',
|
|
171
|
+
step: [
|
|
172
|
+
{
|
|
173
|
+
'@type': 'HowToStep',
|
|
174
|
+
name: 'Bestand Laden',
|
|
175
|
+
text: 'Upload je versleutelde savebestand.',
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
bibliographyTitle: 'Referenties en Verder Lezen',
|
|
181
|
+
bibliography: bibliographyEntries,
|
|
182
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { SaveFileEditorUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<SaveFileEditorUI> = {
|
|
6
|
+
slug: 'edytor-plikow-zapisu-gier',
|
|
7
|
+
title: 'Edytor i Ofuskator Plików Zapisu Gier',
|
|
8
|
+
description: 'Odszyfruj, sprawdzaj, edytuj dane JSON i ponownie szyfruj pliki zapisu stanu gry przy użyciu Base64, maskowania XOR lub czystego tekstu 100% lokalnie w przeglądarce.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Edytor i Ofuskator Zapisu Stanu Gry',
|
|
11
|
+
subtitle: 'Bezpiecznie sprawdzaj, modyfikuj i szyfruj lokalne pliki zapisu bez przesyłania danych na serwer',
|
|
12
|
+
dropSaveFile: 'Przeciągnij i upuść plik zapisu gry tutaj',
|
|
13
|
+
orSelectFile: 'lub kliknij, aby wybrać plik z dysku',
|
|
14
|
+
encryptionMethod: 'Format Szyfrowania',
|
|
15
|
+
methodBase64: 'Kodowanie Base64',
|
|
16
|
+
methodXor: 'Maska XOR + Base64',
|
|
17
|
+
methodRaw: 'Czysty JSON / Nieszyfrowany',
|
|
18
|
+
xorKeyLabel: 'Tajny Klucz XOR',
|
|
19
|
+
xorKeyPlaceholder: 'np. MojTajnyKluczGry2026',
|
|
20
|
+
jsonRawTitle: 'Odszyfrowane Dane JSON (Edytor Na Żywo)',
|
|
21
|
+
encodeAndDownload: 'Zaszyfruj i Pobierz Plik Zapisu',
|
|
22
|
+
copyEncoded: 'Kopiuj Zaszyfrowany Tekst',
|
|
23
|
+
copiedNotice: 'Skopiowano do Schowka!',
|
|
24
|
+
decodedKeysCount: 'Liczba Parametrów',
|
|
25
|
+
dataSize: 'Rozmiar Danych',
|
|
26
|
+
detectedFormat: 'Wykryty Format',
|
|
27
|
+
exportPreviewLabel: 'Podgląd Zaszyfrowanego Wyjścia',
|
|
28
|
+
decodePanelTitle: 'Odszyfrowywanie i Edytor JSON Na Żywo',
|
|
29
|
+
exportPanelTitle: 'Zaszyfrowane Dane Wyjściowe',
|
|
30
|
+
decodeError: 'Nie udało się odszyfrować pliku zapisu gry',
|
|
31
|
+
bytesUnit: 'B',
|
|
32
|
+
},
|
|
33
|
+
seo: [
|
|
34
|
+
{
|
|
35
|
+
type: 'title',
|
|
36
|
+
level: 2,
|
|
37
|
+
text: 'Bezpieczeństwo i Protokoły Ofuskacji Plików Zapisu Gier',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'paragraph',
|
|
41
|
+
html: 'Gry komputerowe i mobilne regularnie szeregują stan postępu gracza w trwałych formatach pamięci masowej, aby zachować stan ekwipunku, odblokowane poziomy, atrybuty postaci oraz flagi fabularne między sesjami rozgrywki. Aby zapobiec bezpośrednim modyfikacjom dokonywanym przez użytkowników w prostych edytorach tekstu, studia deweloperskie stosują ofuskację plików zapisu za pomocą schematów kodowania binarnego, takich jak Base64, lub bitowego maskowania XOR przy użyciu tajnego klucza. Podczas wewnętrznych testów kontroli jakości QA i debugowania, zespoły programistów potrzebują natychmiastowej możliwości inspekcji struktur JSON, testowania wartości brzegowych i ponownego szyfrowania danych bez konieczności ponownej kompilacji całej gry.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'stats',
|
|
45
|
+
columns: 4,
|
|
46
|
+
items: [
|
|
47
|
+
{ label: 'Prywatność Przetwarzania', value: '100% Lokalnie' },
|
|
48
|
+
{ label: 'Obsługiwane Dekodery', value: 'Base64 / XOR / JSON' },
|
|
49
|
+
{ label: 'Opóźnienie Dekodowania', value: '0 ms' },
|
|
50
|
+
{ label: 'Ryzyko Wycieku Danych', value: 'Zero' },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'title',
|
|
55
|
+
level: 2,
|
|
56
|
+
text: 'Porównanie Schematów Ofuskacji',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'comparative',
|
|
60
|
+
columns: 3,
|
|
61
|
+
items: [
|
|
62
|
+
{
|
|
63
|
+
title: 'Kodowanie Base64',
|
|
64
|
+
description: 'Szybka konwersja tekstu zapobiegająca przypadkowej edycji w notatniku, lecz niezapewniająca bezpieczeństwa kryptograficznego.',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: 'Maskowanie XOR + Base64',
|
|
68
|
+
description: 'Standardowa praktyka w grach niezależnych. Łączy bajty tekstu z tajnym kluczem w celu ochrony przed edytorami pamięci.',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: 'Czysty JSON',
|
|
72
|
+
description: 'Czytelny plik zapisu bez szyfrowania. Idealny do wczesnego prototypowania oraz wewnętrznych testów zespołu.',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'title',
|
|
78
|
+
level: 2,
|
|
79
|
+
text: 'Praktyki Testowania QA do Weryfikacji Stanu Gry',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'tip',
|
|
83
|
+
title: 'Najlepsze Praktyki Bezpieczeństwa Zapisów w QA',
|
|
84
|
+
html: 'Zawsze utrzymuj osobne klucze debugowania dla wersji wewnętrznych i produkcyjnych. Podczas weryfikacji błędów używaj lokalnych edytorów, aby wymusić wartości graniczne ekwipunku bez kompilowania kodu gry.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'title',
|
|
88
|
+
level: 2,
|
|
89
|
+
text: 'Tabela Wytycznych dla Parametrów Stanu Gry',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'table',
|
|
93
|
+
headers: ['Typ Danych', 'Zalecany Format', 'Częste Zastosowanie', 'Warstwa Ofuskacji'],
|
|
94
|
+
rows: [
|
|
95
|
+
['Liczby Całkowite', '32-bitowy Integer', 'Monety, Poziom, XP, Amunicja', 'Maska XOR'],
|
|
96
|
+
['Flagi Logiczne', 'Standardowy Boolean', 'Samouczek Ukończony, Boss Pokonany', 'Base64 / XOR'],
|
|
97
|
+
['Obiekty Zagnieżdżone', 'Hierarchia JSON', 'Ekwipunek Gracza, Drzewo Umiejętności', 'Kodowanie Base64'],
|
|
98
|
+
['Znaczniki Czasu', 'ISO 8601 UTC', 'Codzienny Logowanie, Czas Zapisu', 'Maska XOR'],
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
level: 2,
|
|
104
|
+
text: 'Inżynieria Wsteczna i Ochrona Przed Modyfikacją',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Choć ofuskacja po stronie klienta zapobiega edycji plików przez niedoświadczonych graczy, maskowanie XOR i Base64 nie są pełnymi algorytmami kryptograficznymi. Narzędzia do analizy pamięci, takie jak RenderDoc czy x64dbg, mogą odczytać procedury generowania kluczy bezpośrednio z zebranych plików wykonywalnych. W grach wieloosobowych niezbędna jest weryfikacja po stronie serwera lub stosowanie podpisów kryptograficznych HMAC.',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
faqTitle: 'Często Zadawane Pytania',
|
|
112
|
+
faq: [
|
|
113
|
+
{
|
|
114
|
+
question: 'Czy moje pliki zapisu gry są przesyłane na zewnętrzny serwer?',
|
|
115
|
+
answer: 'Nie. Cały proces dekodowania, edycji drzewa JSON i ponownego szyfrowania odbywa się w 100% wewnątrz Twojej przeglądarki internetowej.',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
question: 'Jak działa ofuskacja kluczem XOR w silnikach takich jak Unity lub Godot?',
|
|
119
|
+
answer: 'Ofuskacja XOR wykonuje operację bitową XOR na bajtach UTF-8 ciągu JSON przy użyciu znaków tajnego klucza, a następnie przekształca wynik do formatu Base64.',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
howTo: [
|
|
123
|
+
{
|
|
124
|
+
name: 'Wczytaj lub Wklej Plik Zapisu',
|
|
125
|
+
text: 'Prześlij swój zaszyfrowany plik zapisu stanu gry lub przeciągnij go do strefy zrzutu.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'Wybierz Metodę Dekodowania i Klucz',
|
|
129
|
+
text: 'Wybierz Base64 lub Maskowanie XOR i wprowadź tajny klucz gry.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'Edytuj Stan JSON',
|
|
133
|
+
text: 'Zmieniaj poziomy, złoto, przedmioty w ekwipunku oraz flagi gry bezpośrednio w edytorze na żywo.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Zaszyfruj i Eksportuj',
|
|
137
|
+
text: 'Pobierz zmodyfikowany plik zapisu przygotowany do testów w grze.',
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
schemas: [
|
|
141
|
+
{
|
|
142
|
+
'@context': 'https://schema.org',
|
|
143
|
+
'@type': 'SoftwareApplication',
|
|
144
|
+
name: 'Edytor Plików Zapisu Gier',
|
|
145
|
+
applicationCategory: 'DeveloperApplication',
|
|
146
|
+
operatingSystem: 'Any',
|
|
147
|
+
offers: {
|
|
148
|
+
'@type': 'Offer',
|
|
149
|
+
price: '0',
|
|
150
|
+
priceCurrency: 'PLN',
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
'@context': 'https://schema.org',
|
|
155
|
+
'@type': 'FAQPage',
|
|
156
|
+
mainEntity: [
|
|
157
|
+
{
|
|
158
|
+
'@type': 'Question',
|
|
159
|
+
name: 'Czy moje pliki zapisu gry są przesyłane na zewnętrzny serwer?',
|
|
160
|
+
acceptedAnswer: {
|
|
161
|
+
'@type': 'Answer',
|
|
162
|
+
text: 'Nie. Całe przetwarzanie odbywa się w 100% lokalnie w przeglądarce.',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
'@context': 'https://schema.org',
|
|
169
|
+
'@type': 'HowTo',
|
|
170
|
+
name: 'Jak Edytować Zaszyfrowane Pliki Zapisu Gier',
|
|
171
|
+
step: [
|
|
172
|
+
{
|
|
173
|
+
'@type': 'HowToStep',
|
|
174
|
+
name: 'Wczytaj Plik Zapisu',
|
|
175
|
+
text: 'Prześlij zaszyfrowany plik zapisu.',
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
bibliographyTitle: 'Referencje i Dalsza Lektura',
|
|
181
|
+
bibliography: bibliographyEntries,
|
|
182
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { SaveFileEditorUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<SaveFileEditorUI> = {
|
|
6
|
+
slug: 'editor-salvamento-jogo',
|
|
7
|
+
title: 'Editor e Ofuscador de Save de Jogo',
|
|
8
|
+
description: 'Descriptografe, inspecione, edite payloads JSON e criptografe arquivos de save de jogos usando Base64, máscara XOR ou texto simples 100% localmente no navegador.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Editor e Ofuscador de Save de Jogo',
|
|
11
|
+
subtitle: 'Inspecione, modifique e criptografe arquivos de save locais com segurança e sem envio a servidores',
|
|
12
|
+
dropSaveFile: 'Arraste e solte o arquivo de save aqui',
|
|
13
|
+
orSelectFile: 'ou clique para selecionar um arquivo local',
|
|
14
|
+
encryptionMethod: 'Formato de Criptografia',
|
|
15
|
+
methodBase64: 'Codificação Base64',
|
|
16
|
+
methodXor: 'Máscara XOR + Base64',
|
|
17
|
+
methodRaw: 'JSON Simples / Não Criptografado',
|
|
18
|
+
xorKeyLabel: 'Chave Secreta XOR',
|
|
19
|
+
xorKeyPlaceholder: 'ex. MinhaChaveSecreta2026',
|
|
20
|
+
jsonRawTitle: 'Payload JSON Decodificado (Editor em Tempo Real)',
|
|
21
|
+
encodeAndDownload: 'Criptografar e Baixar Arquivo',
|
|
22
|
+
copyEncoded: 'Copiar Texto Criptografado',
|
|
23
|
+
copiedNotice: 'Copiado para a Área de Transferência!',
|
|
24
|
+
decodedKeysCount: 'Total de Parâmetros',
|
|
25
|
+
dataSize: 'Tamanho do Payload',
|
|
26
|
+
detectedFormat: 'Formato Detectado',
|
|
27
|
+
exportPreviewLabel: 'Pré-visualização da Saída Criptografada',
|
|
28
|
+
decodePanelTitle: 'Decodificação e Editor JSON em Tempo Real',
|
|
29
|
+
exportPanelTitle: 'Payload de Saída Re Criptografado',
|
|
30
|
+
decodeError: 'Falha ao decodificar o arquivo de save',
|
|
31
|
+
bytesUnit: 'B',
|
|
32
|
+
},
|
|
33
|
+
seo: [
|
|
34
|
+
{
|
|
35
|
+
type: 'title',
|
|
36
|
+
level: 2,
|
|
37
|
+
text: 'Segurança e Protocolos de Ofuscação em Saves de Jogos',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
type: 'paragraph',
|
|
41
|
+
html: 'Os videogames serializam o progresso do jogador em formatos de armazenamento persistentes para manter inventários, níveis desbloqueados e atributos ao longo das sessões. Para evitar modificações diretas em editores de texto por parte dos usuários, os estúdios ofuscam arquivos de save com esquemas de codificação binária como Base64 ou máscaras XOR bit a bit combinadas com uma chave secreta. Durante os testes de controle de qualidade QA e depuração de operações ao vivo, as equipes de desenvolvimento precisam da capacidade imediata de inspecionar estruturas JSON brutas, forçar estados limite de teste e re-criptografar os dados modificados para implantação sem a necessidade de recompilar executáveis.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
type: 'stats',
|
|
45
|
+
columns: 4,
|
|
46
|
+
items: [
|
|
47
|
+
{ label: 'Privacidade de Processamento', value: '100% Local' },
|
|
48
|
+
{ label: 'Decodificadores Suportados', value: 'Base64 / XOR / JSON' },
|
|
49
|
+
{ label: 'Latência', value: '0 ms' },
|
|
50
|
+
{ label: 'Risco de Vazamento', value: 'Zero' },
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'title',
|
|
55
|
+
level: 2,
|
|
56
|
+
text: 'Comparação de Esquemas de Ofuscação',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
type: 'comparative',
|
|
60
|
+
columns: 3,
|
|
61
|
+
items: [
|
|
62
|
+
{
|
|
63
|
+
title: 'Codificação Base64',
|
|
64
|
+
description: 'Conversão rápida para evitar edições simples sem oferecer segurança criptográfica real.',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: 'Máscara XOR + Base64',
|
|
68
|
+
description: 'Prática comum no desenvolvimento indie. Mistura bytes com uma chave secreta contra editores de memória.',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
title: 'Payload JSON Simples',
|
|
72
|
+
description: 'Save legível sem criptografia. Ideal para prototipagem e builds de depuração.',
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'title',
|
|
78
|
+
level: 2,
|
|
79
|
+
text: 'Práticas de Teste de QA para Saves',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'tip',
|
|
83
|
+
title: 'Melhores Práticas em Testes de QA',
|
|
84
|
+
html: 'Mantenha chaves de depuração separadas para builds internas. Use inspetores locais para testar limites sem recompilar o código do jogo.',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'title',
|
|
88
|
+
level: 2,
|
|
89
|
+
text: 'Diretrizes de Parâmetros do Jogo',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
type: 'table',
|
|
93
|
+
headers: ['Tipo de Dado', 'Formato Recomendado', 'Caso de Uso', 'Camada de Ofuscação'],
|
|
94
|
+
rows: [
|
|
95
|
+
['Inteiros Numéricos', 'Inteiro 32-bit', 'Moedas, Nível, XP, Munição', 'Máscara XOR'],
|
|
96
|
+
['Flags Booleanas', 'Booleano Padrão', 'Tutorial Concluído, Chefe Derrotado', 'Base64 / XOR'],
|
|
97
|
+
['Objetos Aninhados', 'Hierarquia JSON', 'Inventário, Habilidades', 'Base64'],
|
|
98
|
+
['Timestamps', 'ISO 8601 UTC', 'Login Diário, Timestamp de Save', 'Máscara XOR'],
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
type: 'title',
|
|
103
|
+
level: 2,
|
|
104
|
+
text: 'Engenharia Reversa e Anti Adulteração',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'paragraph',
|
|
108
|
+
html: 'Embora a ofuscação no cliente evite edições casuais, XOR e Base64 não são criptografia forte. Ferramentas de análise de memória como RenderDoc ou x64dbg podem inspecionar rotinas de geração de chaves em código compilado. Para jogos competitivos, assinaturas HMAC ou validações no servidor são necessárias para detectar alterações.',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
faqTitle: 'Perguntas Frequentes',
|
|
112
|
+
faq: [
|
|
113
|
+
{
|
|
114
|
+
question: 'Meus arquivos são enviados para algum servidor?',
|
|
115
|
+
answer: 'Não. Todo o processo acontece 100% no seu navegador.',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
question: 'Como funciona a ofuscação XOR no Unity ou Godot?',
|
|
119
|
+
answer: 'A ofuscação XOR aplica operações bit a bit nos bytes da string JSON usando uma chave secreta.',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
howTo: [
|
|
123
|
+
{
|
|
124
|
+
name: 'Carregar Arquivo',
|
|
125
|
+
text: 'Envie seu arquivo de save criptografado.',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'Selecionar Método',
|
|
129
|
+
text: 'Escolha o formato e digite a chave secreta.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'Editar JSON',
|
|
133
|
+
text: 'Modifique os valores no editor em tempo real.',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
name: 'Exportar e Baixar',
|
|
137
|
+
text: 'Baixe o novo arquivo modificado para testar.',
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
schemas: [
|
|
141
|
+
{
|
|
142
|
+
'@context': 'https://schema.org',
|
|
143
|
+
'@type': 'SoftwareApplication',
|
|
144
|
+
name: 'Editor de Save de Jogo',
|
|
145
|
+
applicationCategory: 'DeveloperApplication',
|
|
146
|
+
operatingSystem: 'Any',
|
|
147
|
+
offers: {
|
|
148
|
+
'@type': 'Offer',
|
|
149
|
+
price: '0',
|
|
150
|
+
priceCurrency: 'BRL',
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
'@context': 'https://schema.org',
|
|
155
|
+
'@type': 'FAQPage',
|
|
156
|
+
mainEntity: [
|
|
157
|
+
{
|
|
158
|
+
'@type': 'Question',
|
|
159
|
+
name: 'Meus arquivos são enviados para algum servidor?',
|
|
160
|
+
acceptedAnswer: {
|
|
161
|
+
'@type': 'Answer',
|
|
162
|
+
text: 'Não. Todo o processo acontece 100% no seu navegador.',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
'@context': 'https://schema.org',
|
|
169
|
+
'@type': 'HowTo',
|
|
170
|
+
name: 'Como Editar Saves de Jogos',
|
|
171
|
+
step: [
|
|
172
|
+
{
|
|
173
|
+
'@type': 'HowToStep',
|
|
174
|
+
name: 'Carregar Arquivo',
|
|
175
|
+
text: 'Envie seu arquivo de save criptografado.',
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
bibliographyTitle: 'Referências e Leituras Adicionais',
|
|
181
|
+
bibliography: bibliographyEntries,
|
|
182
|
+
};
|