@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.
Files changed (31) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/tests/locale_completeness.test.ts +2 -2
  5. package/src/tests/tool_validation.test.ts +2 -2
  6. package/src/tool/saveFileEditor/bibliography.astro +6 -0
  7. package/src/tool/saveFileEditor/bibliography.ts +12 -0
  8. package/src/tool/saveFileEditor/component.astro +351 -0
  9. package/src/tool/saveFileEditor/entry.ts +28 -0
  10. package/src/tool/saveFileEditor/game-save-file-editor.css +250 -0
  11. package/src/tool/saveFileEditor/i18n/de.ts +182 -0
  12. package/src/tool/saveFileEditor/i18n/en.ts +182 -0
  13. package/src/tool/saveFileEditor/i18n/es.ts +182 -0
  14. package/src/tool/saveFileEditor/i18n/fr.ts +182 -0
  15. package/src/tool/saveFileEditor/i18n/id.ts +182 -0
  16. package/src/tool/saveFileEditor/i18n/it.ts +182 -0
  17. package/src/tool/saveFileEditor/i18n/ja.ts +182 -0
  18. package/src/tool/saveFileEditor/i18n/ko.ts +182 -0
  19. package/src/tool/saveFileEditor/i18n/nl.ts +182 -0
  20. package/src/tool/saveFileEditor/i18n/pl.ts +182 -0
  21. package/src/tool/saveFileEditor/i18n/pt.ts +182 -0
  22. package/src/tool/saveFileEditor/i18n/ru.ts +182 -0
  23. package/src/tool/saveFileEditor/i18n/sv.ts +182 -0
  24. package/src/tool/saveFileEditor/i18n/tr.ts +182 -0
  25. package/src/tool/saveFileEditor/i18n/zh.ts +182 -0
  26. package/src/tool/saveFileEditor/index.ts +11 -0
  27. package/src/tool/saveFileEditor/logic.test.ts +69 -0
  28. package/src/tool/saveFileEditor/logic.ts +139 -0
  29. package/src/tool/saveFileEditor/seo.astro +15 -0
  30. package/src/tool/saveFileEditor/ui.ts +24 -0
  31. 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: 'editor-archivos-guardado-juegos',
7
+ title: 'Editor y Ofuscador de Archivos de Guardado de Juegos',
8
+ description: 'Desencripta, inspecciona, edita payloads JSON y vuelve a encriptar archivos de guardado usando Base64, máscaras XOR o texto plano 100% local en tu navegador.',
9
+ ui: {
10
+ title: 'Editor y Ofuscador de Guardado de Juegos',
11
+ subtitle: 'Inspecciona, modifica y encripta archivos de estado de guardado local sin filtraciones a servidores',
12
+ dropSaveFile: 'Arrastra y suelta el archivo de guardado aquí',
13
+ orSelectFile: 'o haz clic para explorar un archivo local',
14
+ encryptionMethod: 'Formato de Encriptación',
15
+ methodBase64: 'Codificación Base64',
16
+ methodXor: 'Máscara XOR + Base64',
17
+ methodRaw: 'JSON Plano / Sin Encriptar',
18
+ xorKeyLabel: 'Clave Secreta XOR',
19
+ xorKeyPlaceholder: 'ej. MiClaveSecretaJuego2026',
20
+ jsonRawTitle: 'Payload JSON Decodificado (Editor en Vivo)',
21
+ encodeAndDownload: 'Encriptar y Descargar Archivo',
22
+ copyEncoded: 'Copiar Texto Encriptado',
23
+ copiedNotice: '¡Copiado al Portapapeles!',
24
+ decodedKeysCount: 'Parámetros Totales',
25
+ dataSize: 'Tamaño del Payload',
26
+ detectedFormat: 'Formato Detectado',
27
+ exportPreviewLabel: 'Previsualización de Salida Encriptada',
28
+ decodePanelTitle: 'Decodificación y Editor JSON en Vivo',
29
+ exportPanelTitle: 'Payload de Salida Re Encriptado',
30
+ decodeError: 'Error al decodificar el archivo de guardado',
31
+ bytesUnit: 'B',
32
+ },
33
+ seo: [
34
+ {
35
+ type: 'title',
36
+ level: 2,
37
+ text: 'Seguridad y Protocolos de Ofuscación en Guardado de Juegos',
38
+ },
39
+ {
40
+ type: 'paragraph',
41
+ html: 'Los videojuegos serializan el estado de progreso del jugador en formatos de almacenamiento persistentes para mantener inventarios, niveles desbloqueados y atributos a lo largo de las sesiones de juego. Para evitar manipulaciones directas en editores de texto plano por parte de los usuarios finales, los estudios de desarrollo ofuscan estos archivos con esquemas de codificación binaria como Base64 o máscaras bit a bit XOR contra una clave secreta personalizada. Durante las pruebas internas de control de calidad y depuración de operaciones en vivo, los equipos técnicos necesitan la capacidad inmediata de inspeccionar estructuras JSON crudas, forzar estados límite de prueba y volver a encriptar los datos modificados para su despliegue sin necesidad de reevaluar ni recompilar binarios.',
42
+ },
43
+ {
44
+ type: 'stats',
45
+ columns: 4,
46
+ items: [
47
+ { label: 'Privacidad de Procesamiento', value: '100% Local' },
48
+ { label: 'Decodificadores Soportados', value: 'Base64 / XOR / JSON' },
49
+ { label: 'Latencia de Decodificación', value: '0 ms' },
50
+ { label: 'Riesgo de Filtración', value: 'Cero' },
51
+ ],
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Comparativa de Esquemas de Ofuscación',
57
+ },
58
+ {
59
+ type: 'comparative',
60
+ columns: 3,
61
+ items: [
62
+ {
63
+ title: 'Codificación Base64',
64
+ description: 'Conversión de texto rápida que evita ediciones accidentales en blocs de notas convencionales pero no ofrece seguridad criptográfica real.',
65
+ },
66
+ {
67
+ title: 'Máscara XOR + Base64',
68
+ description: 'Práctica habitual en desarrollo indie. Mezcla bytes de texto con una clave secreta personalizada para evitar editores de memoria o Cheat Engine.',
69
+ },
70
+ {
71
+ title: 'Payload JSON Plano',
72
+ description: 'Estado de guardado legible sin encriptar. Ideal para prototipado inicial, builds de depuración e iteraciones internas del equipo.',
73
+ },
74
+ ],
75
+ },
76
+ {
77
+ type: 'title',
78
+ level: 2,
79
+ text: 'Prácticas de Pruebas de QA para Verificación de Estados',
80
+ },
81
+ {
82
+ type: 'tip',
83
+ title: 'Mejores Prácticas de Seguridad en Guardados durante QA',
84
+ html: 'Mantén siempre claves de depuración separadas para builds internas y de producción. Al verificar errores en casos límite, utiliza editores locales para forzar límites de inventario y estadísticas de borde sin recompilar el código del juego.',
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Guía de Parámetros de Estado de Juego',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Tipo de Dato', 'Formato Recomendado', 'Caso de Uso Habitual', 'Capa de Ofuscación'],
94
+ rows: [
95
+ ['Enteros Numéricos', 'Entero de 32 bits', 'Monedas, Nivel, Experiencia, Munición', 'Máscara XOR'],
96
+ ['Banderas Booleanas', 'Booleano Estándar', 'Tutorial Completo, Jefe Derrotado', 'Base64 / XOR'],
97
+ ['Objetos Anidados', 'Jerarquía JSON', 'Inventario del Jugador, Árbol de Habilidades', 'Codificado en Base64'],
98
+ ['Fechas y Tiempos', 'ISO 8601 UTC', 'Recompensa Diaria, Marca de Tiempo de Guardado', 'Máscara XOR'],
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'Ingeniería Inversa y Consideraciones Anti Tamper',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Aunque la ofuscación en el cliente evita que los usuarios casuales modifiquen archivos de guardado en editores estándar, las operaciones XOR y Base64 no constituyen algoritmos criptográficos verdaderos. Las herramientas de análisis de memoria y desensamblado como RenderDoc o x64dbg permiten inspeccionar las rutinas de generación de claves en ensamblados de C++ o C# compilados. Para títulos multijugador competitivos, la validación de estado autoritativo en servidor o firmas criptográficas HMAC son esenciales para detectar alteraciones al iniciar el juego.',
109
+ },
110
+ ],
111
+ faqTitle: 'Preguntas Frecuentes',
112
+ faq: [
113
+ {
114
+ question: '¿Se suben mis archivos de guardado a un servidor remoto?',
115
+ answer: 'No. Toda la decodificación, edición de árbol JSON y re-encriptación ocurre 100% dentro de tu navegador web sin enviar datos al exterior.',
116
+ },
117
+ {
118
+ question: '¿Cómo funciona la ofuscación XOR en motores como Unity o Godot?',
119
+ answer: 'La ofuscación XOR recorre los bytes UTF-8 de la cadena JSON serializada aplicando una operación XOR bit a bit contra los caracteres de una clave secreta.',
120
+ },
121
+ ],
122
+ howTo: [
123
+ {
124
+ name: 'Cargar o Pegar Archivo de Guardado',
125
+ text: 'Sube tu archivo de guardado encriptado o arrástralo directamente a la zona de carga.',
126
+ },
127
+ {
128
+ name: 'Seleccionar Método de Decodificación y Clave',
129
+ text: 'Selecciona Base64 o Máscara XOR e introduce la clave secreta correspondiente.',
130
+ },
131
+ {
132
+ name: 'Editar el Estado JSON',
133
+ text: 'Modifica los valores numéricos, banderas o inventarios directamente en el editor JSON en vivo.',
134
+ },
135
+ {
136
+ name: 'Encriptar y Exportar',
137
+ text: 'Descarga o copia el payload resultante listo para ser probado en el motor de juego.',
138
+ },
139
+ ],
140
+ schemas: [
141
+ {
142
+ '@context': 'https://schema.org',
143
+ '@type': 'SoftwareApplication',
144
+ name: 'Editor de Archivos de Guardado de Juegos',
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: '¿Se suben mis archivos de guardado a un servidor remoto?',
160
+ acceptedAnswer: {
161
+ '@type': 'Answer',
162
+ text: 'No. Toda la decodificación y edición ocurre 100% dentro de tu navegador.',
163
+ },
164
+ },
165
+ ],
166
+ },
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'HowTo',
170
+ name: 'Cómo Editar Archivos de Guardado Encriptados',
171
+ step: [
172
+ {
173
+ '@type': 'HowToStep',
174
+ name: 'Cargar o Pegar Archivo',
175
+ text: 'Sube tu archivo de guardado encriptado.',
176
+ },
177
+ ],
178
+ },
179
+ ],
180
+ bibliographyTitle: 'Referencias y Lecturas Adicionales',
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: 'editeur-fichier-sauvegarde-jeu',
7
+ title: 'Éditeur et Obfuscateur de Sauvegarde de Jeu',
8
+ description: 'Décryptez, inspectez, modifiez les payloads JSON et ré-encryptez les sauvegardes de jeu en utilisant Base64, masques XOR ou texte brut 100% localement dans votre navigateur.',
9
+ ui: {
10
+ title: 'Éditeur et Obfuscateur de Sauvegarde de Jeu',
11
+ subtitle: 'Inspectez, modifiez et chiffrez les fichiers de sauvegarde locaux en toute sécurité sans fuites de serveur',
12
+ dropSaveFile: 'Glissez-déposez le fichier de sauvegarde ici',
13
+ orSelectFile: 'ou cliquez pour parcourir un fichier local',
14
+ encryptionMethod: 'Format de Chiffrement',
15
+ methodBase64: 'Encodage Base64',
16
+ methodXor: 'Masque XOR + Base64',
17
+ methodRaw: 'JSON Brut / Non Chiffré',
18
+ xorKeyLabel: 'Clé Secrète XOR',
19
+ xorKeyPlaceholder: 'ex. MaCléSecrète2026',
20
+ jsonRawTitle: 'Payload JSON Décodé (Éditeur en Direct)',
21
+ encodeAndDownload: 'Chiffrer et Télécharger le Fichier',
22
+ copyEncoded: 'Copier le Texte Chiffré',
23
+ copiedNotice: 'Copié dans le Presse-papier !',
24
+ decodedKeysCount: 'Paramètres Totaux',
25
+ dataSize: 'Taille du Payload',
26
+ detectedFormat: 'Format Détecté',
27
+ exportPreviewLabel: 'Aperçu de la Sortie Chiffrée',
28
+ decodePanelTitle: 'Décodage et Éditeur JSON en Direct',
29
+ exportPanelTitle: 'Payload de Sortie Ré Encrypté',
30
+ decodeError: 'Échec du décodage du fichier de sauvegarde',
31
+ bytesUnit: 'Octets',
32
+ },
33
+ seo: [
34
+ {
35
+ type: 'title',
36
+ level: 2,
37
+ text: 'Sécurité et Protocoles d Obfuscation des Sauvegardes de Jeu',
38
+ },
39
+ {
40
+ type: 'paragraph',
41
+ html: 'Les jeux vidéo sérialisent l état de progression des joueurs dans des formats de stockage persistant afin de conserver l inventaire, les niveaux débloqués et les attributs du personnage au fil des sessions. Pour éviter toute altération directe dans des éditeurs de texte par les utilisateurs, les studios obfusquent les sauvegardes avec des schémas d encodage binaire comme Base64 ou des masques XOR bit à bit associées à une clé secrète. Lors des tests d assurance qualité QA et du débogage d opérations en direct, les équipes de développement ont besoin d un accès immédiat pour inspecter les structures JSON brutes, forcer des états limites et ré-encoder les données modifiées sans recompiler les exécutables.',
42
+ },
43
+ {
44
+ type: 'stats',
45
+ columns: 4,
46
+ items: [
47
+ { label: 'Confidentialité Traitement', value: '100% Local' },
48
+ { label: 'Décodeurs Supportés', value: 'Base64 / XOR / JSON' },
49
+ { label: 'Latence de Décodage', value: '0 ms' },
50
+ { label: 'Risque de Fuite', value: 'Zéro' },
51
+ ],
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Comparaison des Schémas d Obfuscation',
57
+ },
58
+ {
59
+ type: 'comparative',
60
+ columns: 3,
61
+ items: [
62
+ {
63
+ title: 'Encodage Base64',
64
+ description: 'Conversion rapide empêchant les modifications basiques au bloc-notes sans offrir de sécurité cryptographique réelle.',
65
+ },
66
+ {
67
+ title: 'Masquage XOR + Base64',
68
+ description: 'Pratique courante dans le développement indie. Mélange les octets avec une clé secrète contre les éditeurs de mémoire.',
69
+ },
70
+ {
71
+ title: 'Payload JSON Brut',
72
+ description: 'Sauvegarde lisible non chiffrée. Idéal pour le prototypage initial et les builds de débogage internes.',
73
+ },
74
+ ],
75
+ },
76
+ {
77
+ type: 'title',
78
+ level: 2,
79
+ text: 'Pratiques de Tests QA pour la Vérification d État',
80
+ },
81
+ {
82
+ type: 'tip',
83
+ title: 'Bonnes Pratiques de Sécurité des Sauvegardes en QA',
84
+ html: 'Conservez toujours des clés de débogage séparées pour les builds internes. Utilisez des inspecteurs locaux pour forcer les limites d inventaire sans recompiler le code du jeu.',
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Guide des Paramètres d État du Jeu',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Type de Données', 'Format Recommandé', 'Cas d Usage', 'Couche d Obfuscation'],
94
+ rows: [
95
+ ['Entiers Numériques', 'Entier 32 bits', 'Pièces, Niveau, XP, Munitions', 'Masqué XOR'],
96
+ ['Drapeaux Booléens', 'Booléen Standard', 'Tutoriel Terminé, Boss Vaincu', 'Base64 / XOR'],
97
+ ['Objets Imbriqués', 'Hiérarchie JSON', 'Inventaire, Compétences', 'Encodé Base64'],
98
+ ['Horodatages', 'ISO 8601 UTC', 'Récompense Quotidienne', 'Masqué XOR'],
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'Considérations d Ingestion Inverse et Anti Altération',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Bien que l obfuscation côté client empêche les modifications occasionnelles, XOR et Base64 ne sont pas de vrais algorithmes cryptographiques. Des outils d analyse de mémoire comme RenderDoc ou x64dbg peuvent inspecter les routines de génération de clés dans les assemblages compilés. Pour les titres compétitifs, la validation serveur ou les signatures HMAC sont indispensables pour détecter toute altération.',
109
+ },
110
+ ],
111
+ faqTitle: 'Foire Aux Questions',
112
+ faq: [
113
+ {
114
+ question: 'Mes fichiers de sauvegarde sont-ils envoyés à un serveur ?',
115
+ answer: 'Non. Tout le traitement se déroule à 100% localement dans votre navigateur web.',
116
+ },
117
+ {
118
+ question: 'Comment fonctionne l obfuscation XOR dans Unity ou Godot ?',
119
+ answer: 'L obfuscation XOR applique une opération bit à bit sur les octets UTF-8 de la chaîne JSON contre une clé secrète.',
120
+ },
121
+ ],
122
+ howTo: [
123
+ {
124
+ name: 'Charger un Fichier',
125
+ text: 'Téléversez votre fichier de sauvegarde chiffré.',
126
+ },
127
+ {
128
+ name: 'Sélectionner la Clé',
129
+ text: 'Sélectionnez Base64 ou XOR et entrez la clé secrète.',
130
+ },
131
+ {
132
+ name: 'Éditer le JSON',
133
+ text: 'Modifiez les valeurs directement dans l éditeur en direct.',
134
+ },
135
+ {
136
+ name: 'Exporter et Télécharger',
137
+ text: 'Téléchargez le nouveau fichier pour vos tests.',
138
+ },
139
+ ],
140
+ schemas: [
141
+ {
142
+ '@context': 'https://schema.org',
143
+ '@type': 'SoftwareApplication',
144
+ name: 'Éditeur de Sauvegarde de Jeu',
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: 'Mes fichiers de sauvegarde sont-ils envoyés à un serveur ?',
160
+ acceptedAnswer: {
161
+ '@type': 'Answer',
162
+ text: 'Non. Tout le traitement se déroule à 100% localement.',
163
+ },
164
+ },
165
+ ],
166
+ },
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'HowTo',
170
+ name: 'Comment Éditer des Sauvegardes de Jeu',
171
+ step: [
172
+ {
173
+ '@type': 'HowToStep',
174
+ name: 'Charger un Fichier',
175
+ text: 'Téléversez votre fichier de sauvegarde.',
176
+ },
177
+ ],
178
+ },
179
+ ],
180
+ bibliographyTitle: 'Références et Lectures Complémentaires',
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-file-simpan-game',
7
+ title: 'Editor dan Obfuskator File Simpan Game',
8
+ description: 'Dekripsi, inspeksi, edit payload JSON, dan enkripsi ulang file simpanan game menggunakan Base64, XOR masking, atau teks polos 100% lokal di browser Anda.',
9
+ ui: {
10
+ title: 'Editor & Obfuskator Simpanan Game',
11
+ subtitle: 'Inspeksi, modifikasi, dan enkripsi file status simpanan lokal secara aman tanpa kebocoran server',
12
+ dropSaveFile: 'Tarik & lepas file simpanan game di sini',
13
+ orSelectFile: 'atau klik untuk menelusuri file lokal',
14
+ encryptionMethod: 'Format Enkripsi',
15
+ methodBase64: 'Pengodean Base64',
16
+ methodXor: 'Masking XOR + Base64',
17
+ methodRaw: 'JSON Polos / Tanpa Enkripsi',
18
+ xorKeyLabel: 'Kunci Rahasia XOR',
19
+ xorKeyPlaceholder: 'mis. KunciRahasiaGameSaya2026',
20
+ jsonRawTitle: 'Payload JSON Terdekode (Editor Langsung)',
21
+ encodeAndDownload: 'Enkripsi & Unduh File Simpanan',
22
+ copyEncoded: 'Salin Teks Terenkripsi',
23
+ copiedNotice: 'Tersalin ke Papan Klip!',
24
+ decodedKeysCount: 'Total Parameter',
25
+ dataSize: 'Ukuran Payload',
26
+ detectedFormat: 'Format Terdeteksi',
27
+ exportPreviewLabel: 'Pratinjau Hasil Terenkripsi',
28
+ decodePanelTitle: 'Dekode dan Editor JSON Langsung',
29
+ exportPanelTitle: 'Payload Hasil Enkripsi Ulang',
30
+ decodeError: 'Gagal mendekode file simpanan game',
31
+ bytesUnit: 'B',
32
+ },
33
+ seo: [
34
+ {
35
+ type: 'title',
36
+ level: 2,
37
+ text: 'Keamanan dan Protokol Obfuskasi File Simpan Game',
38
+ },
39
+ {
40
+ type: 'paragraph',
41
+ html: 'Game komputer dan seluler secara rutin menyerialisasikan status kemajuan pemain ke dalam format penyimpanan persisten untuk mempertahankan jumlah inventaris, tahapan yang terbuka, atribut pemain, dan bendera narasi di seluruh sesi permainan. Untuk mencegah manipulasi langsung oleh pengguna akhir melalui editor teks biasa, studio game mengobfuskasikan file simpanan menggunakan skema pengodean biner seperti Base64 atau masking bitwise XOR terhadap kunci string rahasia. Selama pengujian kontrol kualitas QA internal dan debug operasi langsung, tim pengembang memerlukan kemampuan instan untuk memeriksa struktur JSON mentah, memaksakan status uji batas, dan mengenkripsi ulang payload yang dimodifikasi untuk penyebaran tanpa perlu mengompilasi ulang biner game.',
42
+ },
43
+ {
44
+ type: 'stats',
45
+ columns: 4,
46
+ items: [
47
+ { label: 'Privasi Pemrosesan Klien', value: '100% Lokal' },
48
+ { label: 'Dekoder Ditingkatkan', value: 'Base64 / XOR / JSON' },
49
+ { label: 'Latensi Dekode', value: '0 ms' },
50
+ { label: 'Risiko Kebocoran Data', value: 'Nol' },
51
+ ],
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Perbandingan Skema Obfuskasi',
57
+ },
58
+ {
59
+ type: 'comparative',
60
+ columns: 3,
61
+ items: [
62
+ {
63
+ title: 'Pengodean Base64',
64
+ description: 'Konversi teks cepat yang mencegah pengeditan teks kasual di notepad biasa tanpa menawarkan keamanan kriptografi nyata.',
65
+ },
66
+ {
67
+ title: 'Masking XOR + Base64',
68
+ description: 'Praktik standar dalam pengembangan game indie. Menggabungkan byte teks dengan kunci rahasia khusus untuk mencegah editor memori.',
69
+ },
70
+ {
71
+ title: 'Payload JSON Polos',
72
+ description: 'Status simpanan terbaca tanpa enkripsi. Ideal untuk pembuatan prototipe awal dan iterasi tim internal.',
73
+ },
74
+ ],
75
+ },
76
+ {
77
+ type: 'title',
78
+ level: 2,
79
+ text: 'Praktik Pengujian QA untuk Verifikasi Status',
80
+ },
81
+ {
82
+ type: 'tip',
83
+ title: 'Praktik Terbaik Keamanan Simpanan selama QA',
84
+ html: 'Selalu pertahankan kunci debug terpisah untuk build internal dan build produksi. Saat memverifikasi bug batas, gunakan inspektur lokal untuk memaksakan batas inventaris dan statistik tanpa mengompilasi ulang kode game.',
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Tabel Panduan Parameter Status Game',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Tipe Data', 'Format Direkomendasikan', 'Kasus Penggunaan Umum', 'Lapisan Obfuskasi'],
94
+ rows: [
95
+ ['Integer Numerik', 'Integer 32-bit', 'Koin, Level, XP, Amunisi', 'Termasker XOR'],
96
+ ['Bendera Boolean', 'Boolean Standar', 'Tutorial Selesai, Bos Kalahkan', 'Base64 / XOR'],
97
+ ['Objek Bersarang', 'Hierarki JSON', 'Inventaris Pemain, Pohon Keterampilan', 'Terkode Base64'],
98
+ ['String Cap Waktu', 'ISO 8601 UTC', 'Login Harian, Cap Waktu Simpan', 'Termasker XOR'],
99
+ ],
100
+ },
101
+ {
102
+ type: 'title',
103
+ level: 2,
104
+ text: 'Pertimbangan Rekayasa Balik dan Anti Tamper',
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Meskipun obfuskasi di sisi klien mencegah pemain kasual mengubah file simpanan di editor teks standar, masking XOR dan pengodean Base64 bukanlah algoritma kriptografi sejati. Pemindai memori dan alat rekayasa balik seperti RenderDoc atau x64dbg dapat memeriksa rutinitas pembuatan kunci secara langsung dalam rakitan game terkompilasi. Untuk judul multi-pemain kompetitif, validasi server otoritatif atau tanda tangan HMAC kriptografi sangat penting.',
109
+ },
110
+ ],
111
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
112
+ faq: [
113
+ {
114
+ question: 'Apakah file simpanan game saya diunggah ke server jarak jauh?',
115
+ answer: 'Tidak. Semua proses dekode, penyuntingan pohon JSON, dan enkripsi ulang terjadi 100% di dalam mesin JavaScript browser web Anda.',
116
+ },
117
+ {
118
+ question: 'Bagaimana cara kerja obfuskasi kunci XOR di mesin game seperti Unity atau Godot?',
119
+ answer: 'Obfuskasi XOR mengiterasi byte UTF-8 dari string JSON yang diserialkan, menerapkan operasi XOR bitwise terhadap karakter kunci rahasia.',
120
+ },
121
+ ],
122
+ howTo: [
123
+ {
124
+ name: 'Muat atau Tempel File Simpanan',
125
+ text: 'Unggah file simpanan terenkripsi Anda atau tarik ke area pengunggahan.',
126
+ },
127
+ {
128
+ name: 'Pilih Metode Dekode dan Kunci',
129
+ text: 'Pilih Base64 atau XOR Masking lalu masukkan kunci rahasia game.',
130
+ },
131
+ {
132
+ name: 'Edit Status JSON',
133
+ text: 'Gunakan editor langsung untuk menyesuaikan level, emas, inventaris, atau bendera game.',
134
+ },
135
+ {
136
+ name: 'Enkripsi dan Ekspor',
137
+ text: 'Unduh file simpanan terenkripsi baru yang siap untuk pengujian game.',
138
+ },
139
+ ],
140
+ schemas: [
141
+ {
142
+ '@context': 'https://schema.org',
143
+ '@type': 'SoftwareApplication',
144
+ name: 'Editor File Simpan Game',
145
+ applicationCategory: 'DeveloperApplication',
146
+ operatingSystem: 'Any',
147
+ offers: {
148
+ '@type': 'Offer',
149
+ price: '0',
150
+ priceCurrency: 'USD',
151
+ },
152
+ },
153
+ {
154
+ '@context': 'https://schema.org',
155
+ '@type': 'FAQPage',
156
+ mainEntity: [
157
+ {
158
+ '@type': 'Question',
159
+ name: 'Apakah file simpanan game saya diunggah ke server jarak jauh?',
160
+ acceptedAnswer: {
161
+ '@type': 'Answer',
162
+ text: 'Tidak. Semua proses dekode dan penyuntingan terjadi 100% di dalam browser Anda.',
163
+ },
164
+ },
165
+ ],
166
+ },
167
+ {
168
+ '@context': 'https://schema.org',
169
+ '@type': 'HowTo',
170
+ name: 'Cara Mengedit File Simpan Game Terenkripsi',
171
+ step: [
172
+ {
173
+ '@type': 'HowToStep',
174
+ name: 'Muat atau Tempel File Simpanan',
175
+ text: 'Unggah file simpanan terenkripsi Anda.',
176
+ },
177
+ ],
178
+ },
179
+ ],
180
+ bibliographyTitle: 'Referensi dan Bacaan Lebih Lanjut',
181
+ bibliography: bibliographyEntries,
182
+ };