nova64 0.2.5 → 0.2.6

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 (140) hide show
  1. package/README.md +25 -8
  2. package/bin/nova64.js +165 -0
  3. package/dist/assets/console-CY_kygm3.js +14 -0
  4. package/dist/assets/console-CY_kygm3.js.map +1 -0
  5. package/dist/assets/main-l0sNRNKZ.js.map +1 -0
  6. package/dist/assets/sky/studio/nx.png +0 -0
  7. package/dist/assets/sky/studio/ny.png +0 -0
  8. package/dist/assets/sky/studio/nz.png +0 -0
  9. package/dist/assets/sky/studio/px.png +0 -0
  10. package/dist/assets/sky/studio/py.png +0 -0
  11. package/dist/assets/sky/studio/pz.png +0 -0
  12. package/dist/assets/vanilla-Dcuy32gi.js +2 -0
  13. package/dist/assets/vanilla-Dcuy32gi.js.map +1 -0
  14. package/dist/console.html +899 -0
  15. package/dist/docs/BENCHMARK.md +77 -0
  16. package/dist/docs/CHEATSHEET.md +255 -0
  17. package/dist/docs/EFFECTS_API_GUIDE.md +577 -0
  18. package/dist/docs/EFFECTS_QUICK_REFERENCE.md +331 -0
  19. package/dist/docs/FONT_CHARACTER_REFERENCE.md +219 -0
  20. package/dist/docs/FREE_GLB_ASSETS.md +330 -0
  21. package/dist/docs/FULLSCREEN_BUTTON_FEATURE.md +296 -0
  22. package/dist/docs/GAMEPAD_SUPPORT.md +348 -0
  23. package/dist/docs/GAME_IMPROVEMENTS.md +278 -0
  24. package/dist/docs/GAME_QUALITY_STATUS.md +300 -0
  25. package/dist/docs/MIGRATION_GUIDE.md +553 -0
  26. package/dist/docs/NOVA64_3D_API.md +356 -0
  27. package/dist/docs/NOVA64_API_REFERENCE.md +1406 -0
  28. package/dist/docs/NOVA64_UI_API.md +503 -0
  29. package/dist/docs/UI_SYSTEM_SUMMARY.md +445 -0
  30. package/dist/docs/VOXEL_ENGINE_GUIDE.md +662 -0
  31. package/dist/docs/VOXEL_QUICK_REFERENCE.md +386 -0
  32. package/dist/docs/api-3d.html +750 -0
  33. package/dist/docs/api-effects.html +385 -0
  34. package/dist/docs/api-improvements.md +121 -0
  35. package/dist/docs/api-skybox.html +407 -0
  36. package/dist/docs/api-sprites.html +321 -0
  37. package/dist/docs/api-voxel.html +337 -0
  38. package/dist/docs/api.html +543 -0
  39. package/dist/docs/assets.html +306 -0
  40. package/dist/docs/audio.html +340 -0
  41. package/dist/docs/blogs.html +286 -0
  42. package/dist/docs/collision.html +316 -0
  43. package/dist/docs/console.html +247 -0
  44. package/dist/docs/editor.html +297 -0
  45. package/dist/docs/font.html +247 -0
  46. package/dist/docs/framebuffer.html +247 -0
  47. package/dist/docs/fullscreen-button.html +297 -0
  48. package/dist/docs/gpu-systems.html +247 -0
  49. package/dist/docs/index.html +580 -0
  50. package/dist/docs/input.html +491 -0
  51. package/dist/docs/physics.html +311 -0
  52. package/dist/docs/screens.html +311 -0
  53. package/dist/docs/storage.html +311 -0
  54. package/dist/docs/textinput.html +332 -0
  55. package/dist/docs/ui.html +488 -0
  56. package/dist/examples/3d-advanced/code.js +695 -0
  57. package/dist/examples/adventure-comic-3d/code.js +342 -0
  58. package/dist/examples/audio-lab/code.js +150 -0
  59. package/dist/examples/boids-flocking/code.js +270 -0
  60. package/dist/examples/crystal-cathedral-3d/code.js +706 -0
  61. package/dist/examples/cyberpunk-city-3d/code.js +1383 -0
  62. package/dist/examples/demoscene/README.md +192 -0
  63. package/dist/examples/demoscene/code.js +1081 -0
  64. package/dist/examples/demoscene/meta.json +21 -0
  65. package/dist/examples/dungeon-crawler-3d/code.js +1117 -0
  66. package/dist/examples/f-zero-nova-3d/code.js +865 -0
  67. package/dist/examples/f-zero-nova-3d/code_old.js +1555 -0
  68. package/dist/examples/fps-demo-3d/code.js +744 -0
  69. package/dist/examples/game-of-life-3d/code.js +338 -0
  70. package/dist/examples/generative-art/code.js +632 -0
  71. package/dist/examples/hello-3d/code.js +325 -0
  72. package/dist/examples/hello-skybox/code.js +183 -0
  73. package/dist/examples/hello-world/code.js +19 -0
  74. package/dist/examples/input-showcase/code.js +109 -0
  75. package/dist/examples/instancing-demo/code.js +315 -0
  76. package/dist/examples/minecraft-demo/code.js +387 -0
  77. package/dist/examples/model-viewer-3d/code.js +114 -0
  78. package/dist/examples/mystical-realm-3d/code.js +1203 -0
  79. package/dist/examples/nature-explorer-3d/code.js +1318 -0
  80. package/dist/examples/particles-demo/code.js +522 -0
  81. package/dist/examples/pbr-showcase/code.js +140 -0
  82. package/dist/examples/physics-demo-3d/code.js +948 -0
  83. package/dist/examples/screen-demo/code.js +267 -0
  84. package/dist/examples/shooter-demo-3d/code.js +1286 -0
  85. package/dist/examples/space-combat-3d/IMPLEMENTATION_SUMMARY.md +109 -0
  86. package/dist/examples/space-combat-3d/README.md +135 -0
  87. package/dist/examples/space-combat-3d/code.js +1332 -0
  88. package/dist/examples/space-harrier-3d/code.js +923 -0
  89. package/dist/examples/star-fox-nova-3d/code.js +1116 -0
  90. package/dist/examples/star-fox-nova-3d/code_backup.js +410 -0
  91. package/dist/examples/star-fox-nova-3d/code_broken.js +1821 -0
  92. package/dist/examples/storage-quest/code.js +209 -0
  93. package/dist/examples/strider-demo-3d/IMPROVEMENT_OPTIONS.md +285 -0
  94. package/dist/examples/strider-demo-3d/cache-test.html +132 -0
  95. package/dist/examples/strider-demo-3d/code-fixed.js +582 -0
  96. package/dist/examples/strider-demo-3d/code-old.js +1537 -0
  97. package/dist/examples/strider-demo-3d/code.js +1462 -0
  98. package/dist/examples/strider-demo-3d/code.js.bak2 +1169 -0
  99. package/dist/examples/strider-demo-3d/fix-game.sh +53 -0
  100. package/dist/examples/super-plumber-64/README.md +128 -0
  101. package/dist/examples/super-plumber-64/code.js +1185 -0
  102. package/dist/examples/super-plumber-64/index.html +88 -0
  103. package/dist/examples/test-2d-overlay/code.js +32 -0
  104. package/dist/examples/test-font/code.js +51 -0
  105. package/dist/examples/test-minimal/code.js +21 -0
  106. package/dist/examples/ui-demo/code.js +306 -0
  107. package/dist/examples/wing-commander-space/README.md +180 -0
  108. package/dist/examples/wing-commander-space/code.js +1285 -0
  109. package/dist/examples/wizardry-3d/CHANGELOG.md +366 -0
  110. package/dist/examples/wizardry-3d/code.js +3928 -0
  111. package/dist/index.html +666 -0
  112. package/dist/os9-shell/assets/index-DIHfrTaW.css +1 -0
  113. package/dist/os9-shell/assets/index-KchE_ngx.js +483 -0
  114. package/dist/os9-shell/assets/index-KchE_ngx.js.map +1 -0
  115. package/dist/os9-shell/index.html +23 -0
  116. package/dist/os9-shell/nova-icon.svg +12 -0
  117. package/index.html +6 -1
  118. package/package.json +37 -32
  119. package/public/assets/sky/studio/nx.png +0 -0
  120. package/public/assets/sky/studio/ny.png +0 -0
  121. package/public/assets/sky/studio/nz.png +0 -0
  122. package/public/assets/sky/studio/px.png +0 -0
  123. package/public/assets/sky/studio/py.png +0 -0
  124. package/public/assets/sky/studio/pz.png +0 -0
  125. package/public/os9-shell/assets/index-KchE_ngx.js +483 -0
  126. package/public/os9-shell/assets/index-KchE_ngx.js.map +1 -0
  127. package/public/os9-shell/index.html +10 -1
  128. package/runtime/api-2d.js +301 -21
  129. package/runtime/api-3d/pbr.js +45 -1
  130. package/runtime/api-3d.js +1 -0
  131. package/runtime/api-effects.js +90 -3
  132. package/runtime/api-gameutils.js +476 -0
  133. package/runtime/api-generative.js +610 -0
  134. package/runtime/api-skybox.js +54 -0
  135. package/runtime/api-voxel.js +139 -28
  136. package/runtime/gpu-threejs.js +13 -9
  137. package/runtime/ui.js +2 -2
  138. package/src/main.js +20 -0
  139. package/public/os9-shell/assets/index-B1Uvacma.js +0 -32825
  140. package/public/os9-shell/assets/index-B1Uvacma.js.map +0 -1
@@ -0,0 +1,321 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Sprite System - Nova64 Documentation</title>
7
+ <style>
8
+ :root {
9
+ --bg-primary: #0f1115;
10
+ --bg-secondary: #151822;
11
+ --bg-tertiary: #1a1d2e;
12
+ --text-primary: #dcdfe4;
13
+ --text-secondary: #99a1b3;
14
+ --accent-cyan: #00ffff;
15
+ --accent-magenta: #ff0080;
16
+ --accent-yellow: #ffff00;
17
+ --border: #2a324a;
18
+ --code-bg: #1a1d2e;
19
+ }
20
+
21
+ * {
22
+ margin: 0;
23
+ padding: 0;
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ body {
28
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
29
+ background: linear-gradient(135deg, var(--bg-primary) 0%, #1a1625 50%, var(--bg-primary) 100%);
30
+ background-attachment: fixed;
31
+ color: var(--text-primary);
32
+ line-height: 1.6;
33
+ }
34
+
35
+ .container {
36
+ max-width: 1200px;
37
+ margin: 0 auto;
38
+ padding: 20px;
39
+ }
40
+
41
+ header {
42
+ background: var(--bg-secondary);
43
+ border: 2px solid var(--accent-cyan);
44
+ border-radius: 12px;
45
+ padding: 30px;
46
+ margin-bottom: 30px;
47
+ box-shadow: 0 0 30px rgba(0, 255, 255, 0.3);
48
+ }
49
+
50
+ h1 {
51
+ color: var(--accent-cyan);
52
+ font-size: 2.5em;
53
+ text-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
54
+ margin-bottom: 10px;
55
+ }
56
+
57
+ .back-link {
58
+ display: inline-block;
59
+ color: var(--accent-cyan);
60
+ text-decoration: none;
61
+ margin-bottom: 15px;
62
+ transition: color 0.3s ease;
63
+ }
64
+
65
+ .back-link:hover {
66
+ color: #33ffff;
67
+ text-decoration: underline;
68
+ }
69
+
70
+ .subtitle {
71
+ color: var(--text-secondary);
72
+ font-size: 1.1em;
73
+ }
74
+
75
+ section {
76
+ background: var(--bg-secondary);
77
+ border-left: 4px solid var(--accent-cyan);
78
+ padding: 25px;
79
+ margin-bottom: 30px;
80
+ border-radius: 8px;
81
+ }
82
+
83
+ h2 {
84
+ color: var(--accent-magenta);
85
+ font-size: 2em;
86
+ margin-bottom: 15px;
87
+ text-shadow: 0 0 10px rgba(255, 0, 128, 0.5);
88
+ }
89
+
90
+ h3 {
91
+ color: var(--accent-cyan);
92
+ font-size: 1.4em;
93
+ margin: 25px 0 15px 0;
94
+ }
95
+
96
+ .function {
97
+ background: var(--bg-tertiary);
98
+ border: 1px solid var(--border);
99
+ border-radius: 8px;
100
+ padding: 20px;
101
+ margin-bottom: 25px;
102
+ }
103
+
104
+ .function-sig {
105
+ font-family: 'Courier New', Courier, monospace;
106
+ font-size: 1.2em;
107
+ color: var(--accent-yellow);
108
+ margin-bottom: 15px;
109
+ padding: 10px;
110
+ background: var(--code-bg);
111
+ border-radius: 4px;
112
+ border-left: 3px solid var(--accent-yellow);
113
+ }
114
+
115
+ .param-list, .return-info {
116
+ margin: 15px 0;
117
+ }
118
+
119
+ .param {
120
+ padding: 8px 0;
121
+ border-bottom: 1px solid var(--border);
122
+ }
123
+
124
+ .param:last-child {
125
+ border-bottom: none;
126
+ }
127
+
128
+ .param-name {
129
+ color: var(--accent-cyan);
130
+ font-weight: bold;
131
+ font-family: 'Courier New', Courier, monospace;
132
+ }
133
+
134
+ .param-type {
135
+ color: var(--accent-magenta);
136
+ font-style: italic;
137
+ font-size: 0.9em;
138
+ }
139
+
140
+ .example {
141
+ background: var(--code-bg);
142
+ border: 1px solid var(--border);
143
+ border-radius: 8px;
144
+ padding: 20px;
145
+ margin: 15px 0;
146
+ overflow-x: auto;
147
+ }
148
+
149
+ .example-title {
150
+ color: var(--accent-yellow);
151
+ font-weight: bold;
152
+ margin-bottom: 10px;
153
+ }
154
+
155
+ pre {
156
+ margin: 0;
157
+ font-family: 'Courier New', Courier, monospace;
158
+ line-height: 1.5;
159
+ }
160
+
161
+ code {
162
+ color: var(--text-primary);
163
+ }
164
+
165
+ .note {
166
+ background: var(--bg-tertiary);
167
+ border-left: 4px solid var(--accent-yellow);
168
+ padding: 15px;
169
+ margin: 15px 0;
170
+ border-radius: 4px;
171
+ }
172
+
173
+ .note-title {
174
+ color: var(--accent-yellow);
175
+ font-weight: bold;
176
+ margin-bottom: 10px;
177
+ }
178
+
179
+ table {
180
+ width: 100%;
181
+ border-collapse: collapse;
182
+ margin: 15px 0;
183
+ }
184
+
185
+ th, td {
186
+ padding: 12px;
187
+ text-align: left;
188
+ border: 1px solid var(--border);
189
+ }
190
+
191
+ th {
192
+ background: var(--bg-tertiary);
193
+ color: var(--accent-cyan);
194
+ font-weight: bold;
195
+ }
196
+
197
+ tr:nth-child(even) {
198
+ background: var(--bg-tertiary);
199
+ }
200
+
201
+ footer {
202
+ text-align: center;
203
+ padding: 30px 20px;
204
+ color: var(--text-secondary);
205
+ border-top: 1px solid var(--border);
206
+ margin-top: 40px;
207
+ }
208
+
209
+ ul {
210
+ margin-left: 20px;
211
+ margin-top: 10px;
212
+ }
213
+
214
+ li {
215
+ margin: 5px 0;
216
+ }
217
+ </style>
218
+ </head>
219
+ <body>
220
+ <div class="container">
221
+ <a href="index.html" class="back-link">← Back to Documentation Index</a>
222
+
223
+ <header>
224
+ <h1>👾 Sprite System</h1>
225
+ <p class="subtitle">Retro-style 8×8 sprite rendering with animations and transformations</p>
226
+ </header>
227
+
228
+
229
+ <section>
230
+ <h2>📋 Overview</h2>
231
+ <p>The Sprite System provides classic 2D sprite rendering perfect for retro games. Sprites are 8×8 pixel tiles that can be animated, flipped, and layered.</p>
232
+
233
+ <div class="note">
234
+ <div class="note-title">💡 Key Features</div>
235
+ <ul><li><strong>8×8 Tile System</strong> - Classic retro sprite size</li><li><strong>Sprite Sheets</strong> - Multiple sprites in one image</li><li><strong>Animations</strong> - Frame-based sprite animation</li><li><strong>Transformations</strong> - Flip horizontal/vertical</li><li><strong>Layering</strong> - Z-index support for sprite ordering</li></ul>
236
+ </div>
237
+
238
+
239
+ </section>
240
+
241
+ <section>
242
+ <h2>🎨 Sprite Functions</h2>
243
+
244
+
245
+
246
+ <div class="function">
247
+ <div class="function-sig">spr(spriteIndex, x, y, flipX, flipY)</div>
248
+ <p>Draws a sprite from the sprite sheet.</p>
249
+
250
+ <div class="param-list">
251
+
252
+ <div class="param">
253
+ <span class="param-name">spriteIndex</span>
254
+ <span class="param-type">number</span> - Sprite number in sheet (0-255)
255
+ </div>
256
+
257
+ <div class="param">
258
+ <span class="param-name">x, y</span>
259
+ <span class="param-type">number</span> - Screen coordinates
260
+ </div>
261
+
262
+ <div class="param">
263
+ <span class="param-name">flipX</span>
264
+ <span class="param-type">boolean</span> - Flip horizontally (default: false)
265
+ </div>
266
+
267
+ <div class="param">
268
+ <span class="param-name">flipY</span>
269
+ <span class="param-type">boolean</span> - Flip vertically (default: false)
270
+ </div>
271
+
272
+ </div>
273
+
274
+
275
+ <div class="return-info">
276
+ <strong>Returns:</strong> <span class="param-type">void</span> - No return value
277
+ </div>
278
+
279
+
280
+ <div class="example">
281
+ <div class="example-title">Example:</div>
282
+ <pre><code>spr(5, playerX, playerY, facingLeft); // Draw player sprite</code></pre>
283
+ </div>
284
+
285
+ </div>
286
+
287
+ <div class="function">
288
+ <div class="function-sig">loadSpriteSheet(imageUrl)</div>
289
+ <p>Loads a sprite sheet image.</p>
290
+
291
+ <div class="param-list">
292
+
293
+ <div class="param">
294
+ <span class="param-name">imageUrl</span>
295
+ <span class="param-type">string</span> - Path to sprite sheet PNG
296
+ </div>
297
+
298
+ </div>
299
+
300
+
301
+ <div class="return-info">
302
+ <strong>Returns:</strong> <span class="param-type">Promise</span> - Promise that resolves when loaded
303
+ </div>
304
+
305
+
306
+ <div class="example">
307
+ <div class="example-title">Example:</div>
308
+ <pre><code>await loadSpriteSheet("/sprites/characters.png");</code></pre>
309
+ </div>
310
+
311
+ </div>
312
+
313
+ </section>
314
+
315
+
316
+ <footer>
317
+ <p>Nova64 Fantasy Console © 2025 | <a href="index.html" style="color: var(--accent-cyan);">Back to Documentation</a></p>
318
+ </footer>
319
+ </div>
320
+ </body>
321
+ </html>
@@ -0,0 +1,337 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Voxel Engine - Nova64 Documentation</title>
7
+ <style>
8
+ :root {
9
+ --bg-primary: #0f1115;
10
+ --bg-secondary: #151822;
11
+ --bg-tertiary: #1a1d2e;
12
+ --text-primary: #dcdfe4;
13
+ --text-secondary: #99a1b3;
14
+ --accent-cyan: #00ffff;
15
+ --accent-magenta: #ff0080;
16
+ --accent-yellow: #ffff00;
17
+ --border: #2a324a;
18
+ --code-bg: #1a1d2e;
19
+ }
20
+
21
+ * {
22
+ margin: 0;
23
+ padding: 0;
24
+ box-sizing: border-box;
25
+ }
26
+
27
+ body {
28
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
29
+ background: linear-gradient(135deg, var(--bg-primary) 0%, #1a1625 50%, var(--bg-primary) 100%);
30
+ background-attachment: fixed;
31
+ color: var(--text-primary);
32
+ line-height: 1.6;
33
+ }
34
+
35
+ .container {
36
+ max-width: 1200px;
37
+ margin: 0 auto;
38
+ padding: 20px;
39
+ }
40
+
41
+ header {
42
+ background: var(--bg-secondary);
43
+ border: 2px solid var(--accent-cyan);
44
+ border-radius: 12px;
45
+ padding: 30px;
46
+ margin-bottom: 30px;
47
+ box-shadow: 0 0 30px rgba(0, 255, 255, 0.3);
48
+ }
49
+
50
+ h1 {
51
+ color: var(--accent-cyan);
52
+ font-size: 2.5em;
53
+ text-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
54
+ margin-bottom: 10px;
55
+ }
56
+
57
+ .back-link {
58
+ display: inline-block;
59
+ color: var(--accent-cyan);
60
+ text-decoration: none;
61
+ margin-bottom: 15px;
62
+ transition: color 0.3s ease;
63
+ }
64
+
65
+ .back-link:hover {
66
+ color: #33ffff;
67
+ text-decoration: underline;
68
+ }
69
+
70
+ .subtitle {
71
+ color: var(--text-secondary);
72
+ font-size: 1.1em;
73
+ }
74
+
75
+ section {
76
+ background: var(--bg-secondary);
77
+ border-left: 4px solid var(--accent-cyan);
78
+ padding: 25px;
79
+ margin-bottom: 30px;
80
+ border-radius: 8px;
81
+ }
82
+
83
+ h2 {
84
+ color: var(--accent-magenta);
85
+ font-size: 2em;
86
+ margin-bottom: 15px;
87
+ text-shadow: 0 0 10px rgba(255, 0, 128, 0.5);
88
+ }
89
+
90
+ h3 {
91
+ color: var(--accent-cyan);
92
+ font-size: 1.4em;
93
+ margin: 25px 0 15px 0;
94
+ }
95
+
96
+ .function {
97
+ background: var(--bg-tertiary);
98
+ border: 1px solid var(--border);
99
+ border-radius: 8px;
100
+ padding: 20px;
101
+ margin-bottom: 25px;
102
+ }
103
+
104
+ .function-sig {
105
+ font-family: 'Courier New', Courier, monospace;
106
+ font-size: 1.2em;
107
+ color: var(--accent-yellow);
108
+ margin-bottom: 15px;
109
+ padding: 10px;
110
+ background: var(--code-bg);
111
+ border-radius: 4px;
112
+ border-left: 3px solid var(--accent-yellow);
113
+ }
114
+
115
+ .param-list, .return-info {
116
+ margin: 15px 0;
117
+ }
118
+
119
+ .param {
120
+ padding: 8px 0;
121
+ border-bottom: 1px solid var(--border);
122
+ }
123
+
124
+ .param:last-child {
125
+ border-bottom: none;
126
+ }
127
+
128
+ .param-name {
129
+ color: var(--accent-cyan);
130
+ font-weight: bold;
131
+ font-family: 'Courier New', Courier, monospace;
132
+ }
133
+
134
+ .param-type {
135
+ color: var(--accent-magenta);
136
+ font-style: italic;
137
+ font-size: 0.9em;
138
+ }
139
+
140
+ .example {
141
+ background: var(--code-bg);
142
+ border: 1px solid var(--border);
143
+ border-radius: 8px;
144
+ padding: 20px;
145
+ margin: 15px 0;
146
+ overflow-x: auto;
147
+ }
148
+
149
+ .example-title {
150
+ color: var(--accent-yellow);
151
+ font-weight: bold;
152
+ margin-bottom: 10px;
153
+ }
154
+
155
+ pre {
156
+ margin: 0;
157
+ font-family: 'Courier New', Courier, monospace;
158
+ line-height: 1.5;
159
+ }
160
+
161
+ code {
162
+ color: var(--text-primary);
163
+ }
164
+
165
+ .note {
166
+ background: var(--bg-tertiary);
167
+ border-left: 4px solid var(--accent-yellow);
168
+ padding: 15px;
169
+ margin: 15px 0;
170
+ border-radius: 4px;
171
+ }
172
+
173
+ .note-title {
174
+ color: var(--accent-yellow);
175
+ font-weight: bold;
176
+ margin-bottom: 10px;
177
+ }
178
+
179
+ table {
180
+ width: 100%;
181
+ border-collapse: collapse;
182
+ margin: 15px 0;
183
+ }
184
+
185
+ th, td {
186
+ padding: 12px;
187
+ text-align: left;
188
+ border: 1px solid var(--border);
189
+ }
190
+
191
+ th {
192
+ background: var(--bg-tertiary);
193
+ color: var(--accent-cyan);
194
+ font-weight: bold;
195
+ }
196
+
197
+ tr:nth-child(even) {
198
+ background: var(--bg-tertiary);
199
+ }
200
+
201
+ footer {
202
+ text-align: center;
203
+ padding: 30px 20px;
204
+ color: var(--text-secondary);
205
+ border-top: 1px solid var(--border);
206
+ margin-top: 40px;
207
+ }
208
+
209
+ ul {
210
+ margin-left: 20px;
211
+ margin-top: 10px;
212
+ }
213
+
214
+ li {
215
+ margin: 5px 0;
216
+ }
217
+ </style>
218
+ </head>
219
+ <body>
220
+ <div class="container">
221
+ <a href="index.html" class="back-link">← Back to Documentation Index</a>
222
+
223
+ <header>
224
+ <h1>🧱 Voxel Engine</h1>
225
+ <p class="subtitle">Minecraft-style voxel world with chunk management and block manipulation</p>
226
+ </header>
227
+
228
+
229
+ <section>
230
+ <h2>📋 Overview</h2>
231
+ <p>The Voxel Engine provides a complete Minecraft-style block world system with efficient chunk-based rendering, block types, and world generation.</p>
232
+
233
+ <div class="note">
234
+ <div class="note-title">💡 Key Features</div>
235
+ <ul><li><strong>Chunk System</strong> - Efficient 16×16×16 chunk loading</li><li><strong>Block Types</strong> - Multiple block materials (grass, stone, wood, etc.)</li><li><strong>Meshing</strong> - Optimized face culling and greedy meshing</li><li><strong>World Gen</strong> - Procedural terrain generation</li><li><strong>Dig/Place</strong> - Interactive block manipulation</li></ul>
236
+ </div>
237
+
238
+
239
+ </section>
240
+
241
+ <section>
242
+ <h2>🧱 Voxel Functions</h2>
243
+
244
+
245
+
246
+ <div class="function">
247
+ <div class="function-sig">createVoxelWorld(size)</div>
248
+ <p>Creates a new voxel world.</p>
249
+
250
+ <div class="param-list">
251
+
252
+ <div class="param">
253
+ <span class="param-name">size</span>
254
+ <span class="param-type">number</span> - World size in chunks (e.g., 8 = 8×8×8 chunks)
255
+ </div>
256
+
257
+ </div>
258
+
259
+
260
+ <div class="return-info">
261
+ <strong>Returns:</strong> <span class="param-type">object</span> - Voxel world object
262
+ </div>
263
+
264
+
265
+ <div class="example">
266
+ <div class="example-title">Example:</div>
267
+ <pre><code>const world = createVoxelWorld(8);</code></pre>
268
+ </div>
269
+
270
+ </div>
271
+
272
+ <div class="function">
273
+ <div class="function-sig">setBlock(x, y, z, blockType)</div>
274
+ <p>Places or removes a block.</p>
275
+
276
+ <div class="param-list">
277
+
278
+ <div class="param">
279
+ <span class="param-name">x, y, z</span>
280
+ <span class="param-type">number</span> - Block coordinates
281
+ </div>
282
+
283
+ <div class="param">
284
+ <span class="param-name">blockType</span>
285
+ <span class="param-type">number</span> - Block ID (0=air, 1=grass, 2=stone, etc.)
286
+ </div>
287
+
288
+ </div>
289
+
290
+
291
+ <div class="return-info">
292
+ <strong>Returns:</strong> <span class="param-type">void</span> - No return value
293
+ </div>
294
+
295
+
296
+ <div class="example">
297
+ <div class="example-title">Example:</div>
298
+ <pre><code>setBlock(10, 5, 10, 1); // Place grass block</code></pre>
299
+ </div>
300
+
301
+ </div>
302
+
303
+ <div class="function">
304
+ <div class="function-sig">getBlock(x, y, z)</div>
305
+ <p>Gets the block type at coordinates.</p>
306
+
307
+ <div class="param-list">
308
+
309
+ <div class="param">
310
+ <span class="param-name">x, y, z</span>
311
+ <span class="param-type">number</span> - Block coordinates
312
+ </div>
313
+
314
+ </div>
315
+
316
+
317
+ <div class="return-info">
318
+ <strong>Returns:</strong> <span class="param-type">number</span> - Block type ID
319
+ </div>
320
+
321
+
322
+ <div class="example">
323
+ <div class="example-title">Example:</div>
324
+ <pre><code>if (getBlock(x, y, z) === 0) { /* air */ }</code></pre>
325
+ </div>
326
+
327
+ </div>
328
+
329
+ </section>
330
+
331
+
332
+ <footer>
333
+ <p>Nova64 Fantasy Console © 2025 | <a href="index.html" style="color: var(--accent-cyan);">Back to Documentation</a></p>
334
+ </footer>
335
+ </div>
336
+ </body>
337
+ </html>