cyberia 2.98.0 → 2.99.1

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 (156) hide show
  1. package/.env.development +1 -0
  2. package/.env.production +1 -0
  3. package/.env.test +1 -0
  4. package/.github/workflows/engine-cyberia.cd.yml +30 -1
  5. package/.vscode/settings.json +7 -8
  6. package/README.md +140 -5
  7. package/bin/build.js +21 -5
  8. package/bin/cyberia.js +336 -85
  9. package/bin/deploy.js +11 -1
  10. package/bin/file.js +2 -1
  11. package/bin/index.js +336 -85
  12. package/bin/util.js +0 -17
  13. package/cli.md +113 -110
  14. package/conf.js +17 -397
  15. package/deployment.yaml +4 -4
  16. package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
  17. package/manifests/deployment/dd-test-development/deployment.yaml +4 -4
  18. package/package.json +9 -7
  19. package/scripts/rocky-setup.sh +12 -39
  20. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +104 -0
  21. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +140 -0
  22. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +37 -0
  23. package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +138 -0
  24. package/src/api/document/document.service.js +1 -1
  25. package/src/api/object-layer/README.md +140 -5
  26. package/src/api/object-layer/object-layer.model.js +18 -72
  27. package/src/api/object-layer/object-layer.service.js +200 -33
  28. package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +74 -0
  29. package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +104 -0
  30. package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +27 -0
  31. package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +42 -0
  32. package/src/api/user/user.router.js +7 -40
  33. package/src/cli/baremetal.js +67 -71
  34. package/src/cli/cloud-init.js +11 -12
  35. package/src/cli/cluster.js +27 -33
  36. package/src/cli/db.js +43 -50
  37. package/src/cli/deploy.js +163 -61
  38. package/src/cli/env.js +20 -5
  39. package/src/cli/fs.js +19 -21
  40. package/src/cli/index.js +38 -32
  41. package/src/cli/lxd.js +5 -5
  42. package/src/cli/monitor.js +83 -88
  43. package/src/cli/repository.js +16 -15
  44. package/src/cli/run.js +597 -385
  45. package/src/cli/secrets.js +3 -3
  46. package/src/cli/ssh.js +80 -32
  47. package/src/cli/static.js +1 -1
  48. package/src/cli/test.js +6 -7
  49. package/src/client/components/core/Content.js +54 -4
  50. package/src/client/components/core/FullScreen.js +202 -9
  51. package/src/client/components/core/Panel.js +91 -22
  52. package/src/client/components/core/PanelForm.js +5 -2
  53. package/src/client/components/core/Translate.js +8 -0
  54. package/src/client/components/core/VanillaJs.js +80 -29
  55. package/src/client/components/{core → cyberia}/ObjectLayerEngine.js +6 -5
  56. package/src/client/components/{core → cyberia}/ObjectLayerEngineModal.js +173 -125
  57. package/src/client/components/cyberia/ObjectLayerEngineViewer.js +1255 -0
  58. package/src/client/components/cyberia-portal/CommonCyberiaPortal.js +8 -1
  59. package/src/client/components/cyberia-portal/MenuCyberiaPortal.js +2 -2
  60. package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +143 -0
  61. package/src/client/services/default/default.management.js +324 -136
  62. package/src/client/services/object-layer/object-layer.management.js +24 -8
  63. package/src/client/services/{blockchain/blockchain.service.js → object-layer-render-frames/object-layer-render-frames.service.js} +38 -6
  64. package/src/index.js +97 -42
  65. package/src/runtime/express/Express.js +7 -6
  66. package/src/server/atlas-sprite-sheet-generator.js +411 -0
  67. package/src/server/auth.js +6 -1
  68. package/src/server/backup.js +11 -1
  69. package/src/server/conf.js +4 -4
  70. package/src/{cli → server}/cron.js +56 -29
  71. package/src/server/dns.js +39 -31
  72. package/src/server/object-layer.js +35 -39
  73. package/src/server/peer.js +2 -2
  74. package/src/server/process.js +2 -2
  75. package/src/server/proxy.js +8 -7
  76. package/src/server/runtime.js +4 -7
  77. package/src/server/start.js +28 -15
  78. package/src/ws/IoServer.js +2 -3
  79. package/scripts/ssh-cluster-info.sh +0 -15
  80. package/src/api/blockchain/blockchain.controller.js +0 -51
  81. package/src/api/blockchain/blockchain.model.js +0 -90
  82. package/src/api/blockchain/blockchain.router.js +0 -21
  83. package/src/api/blockchain/blockchain.service.js +0 -24
  84. package/src/api/ipfs/ipfs.controller.js +0 -51
  85. package/src/api/ipfs/ipfs.model.js +0 -17
  86. package/src/api/ipfs/ipfs.router.js +0 -20
  87. package/src/api/ipfs/ipfs.service.js +0 -25
  88. package/src/cli/script.js +0 -85
  89. package/src/client/Cyberia.index.js +0 -50
  90. package/src/client/CyberiaAdmin.index.js +0 -34
  91. package/src/client/components/core/ObjectLayerEngineViewer.js +0 -880
  92. package/src/client/components/cyberia/BagCyberia.js +0 -1253
  93. package/src/client/components/cyberia/BiomeCyberia.js +0 -130
  94. package/src/client/components/cyberia/CharacterCyberia.js +0 -321
  95. package/src/client/components/cyberia/CommonCyberia.js +0 -1834
  96. package/src/client/components/cyberia/CssCyberia.js +0 -822
  97. package/src/client/components/cyberia/ElementPreviewCyberia.js +0 -183
  98. package/src/client/components/cyberia/ElementsCyberia.js +0 -146
  99. package/src/client/components/cyberia/InteractionPanelCyberia.js +0 -1043
  100. package/src/client/components/cyberia/JoyStickCyberia.js +0 -53
  101. package/src/client/components/cyberia/LogInCyberia.js +0 -68
  102. package/src/client/components/cyberia/LogOutCyberia.js +0 -24
  103. package/src/client/components/cyberia/MainUserCyberia.js +0 -424
  104. package/src/client/components/cyberia/MapCyberia.js +0 -160
  105. package/src/client/components/cyberia/MatrixCyberia.js +0 -147
  106. package/src/client/components/cyberia/MenuCyberia.js +0 -544
  107. package/src/client/components/cyberia/PixiCyberia.js +0 -1639
  108. package/src/client/components/cyberia/PointAndClickMovementCyberia.js +0 -146
  109. package/src/client/components/cyberia/QuestCyberia.js +0 -1420
  110. package/src/client/components/cyberia/RoutesCyberia.js +0 -47
  111. package/src/client/components/cyberia/SettingsCyberia.js +0 -16
  112. package/src/client/components/cyberia/SignUpCyberia.js +0 -14
  113. package/src/client/components/cyberia/SkillCyberia.js +0 -124
  114. package/src/client/components/cyberia/SocketIoCyberia.js +0 -211
  115. package/src/client/components/cyberia/TileCyberia.js +0 -685
  116. package/src/client/components/cyberia/TranslateCyberia.js +0 -96
  117. package/src/client/components/cyberia/UniverseCyberia.js +0 -14
  118. package/src/client/components/cyberia/WebhookCyberia.js +0 -13
  119. package/src/client/components/cyberia/WikiCyberia.js +0 -144
  120. package/src/client/components/cyberia/WorldCyberia.js +0 -680
  121. package/src/client/components/cyberia-admin/BiomeCyberiaAdmin.js +0 -978
  122. package/src/client/components/cyberia-admin/CommonCyberiaAdmin.js +0 -29
  123. package/src/client/components/cyberia-admin/CssCyberiaAdmin.js +0 -15
  124. package/src/client/components/cyberia-admin/ElementsCyberiaAdmin.js +0 -38
  125. package/src/client/components/cyberia-admin/InstanceEngineCyberiaAdmin.js +0 -180
  126. package/src/client/components/cyberia-admin/LogInCyberiaAdmin.js +0 -34
  127. package/src/client/components/cyberia-admin/LogOutCyberiaAdmin.js +0 -24
  128. package/src/client/components/cyberia-admin/MenuCyberiaAdmin.js +0 -621
  129. package/src/client/components/cyberia-admin/RoutesCyberiaAdmin.js +0 -57
  130. package/src/client/components/cyberia-admin/ServerCyberiaAdmin.js +0 -129
  131. package/src/client/components/cyberia-admin/SettingsCyberiaAdmin.js +0 -16
  132. package/src/client/components/cyberia-admin/SignUpCyberiaAdmin.js +0 -11
  133. package/src/client/components/cyberia-admin/SocketIoCyberiaAdmin.js +0 -53
  134. package/src/client/components/cyberia-admin/TranslateCyberiaAdmin.js +0 -7
  135. package/src/client/components/cyberia-biome/CityCyberiaBiome.js +0 -209
  136. package/src/client/components/cyberia-biome/CityInteriorCyberiaBiome.js +0 -253
  137. package/src/client/components/cyberia-biome/ColorChaosCyberiaBiome.js +0 -26
  138. package/src/client/components/cyberia-biome/ForestCyberiaBiome.js +0 -191
  139. package/src/client/components/cyberia-biome/GridBaseCyberiaBiome.js +0 -364
  140. package/src/client/components/cyberia-biome/SeedCityCyberiaBiome.js +0 -347
  141. package/src/client/components/cyberia-biome/ShopCyberiaBiome.js +0 -12
  142. package/src/client/components/cyberia-biome/SpaceCyberiaBiome.js +0 -58
  143. package/src/client/services/ipfs/ipfs.service.js +0 -73
  144. package/src/client/ssr/body/CyberiaSplashScreenLore.js +0 -424
  145. package/src/client/ssr/head/CyberiaAdminScripts.js +0 -6
  146. package/src/client/ssr/head/CyberiaScripts.js +0 -6
  147. package/src/monitor.js +0 -34
  148. package/src/ws/cyberia/channels/cyberia.ws.bot.js +0 -56
  149. package/src/ws/cyberia/channels/cyberia.ws.skill.js +0 -51
  150. package/src/ws/cyberia/channels/cyberia.ws.user.js +0 -437
  151. package/src/ws/cyberia/cyberia.ws.connection.js +0 -36
  152. package/src/ws/cyberia/cyberia.ws.emit.js +0 -14
  153. package/src/ws/cyberia/cyberia.ws.server.js +0 -67
  154. package/src/ws/cyberia/management/cyberia.ws.bot.js +0 -669
  155. package/src/ws/cyberia/management/cyberia.ws.skill.js +0 -441
  156. package/src/ws/cyberia/management/cyberia.ws.user.js +0 -188
package/.env.development CHANGED
@@ -41,5 +41,6 @@ NFS_EXPORT_PATH=changethis
41
41
  NVIDIA_API_KEY=changethis
42
42
  DEFAULT_ADMIN_EMAIL=admin@default.net
43
43
  DEFAULT_ADMIN_PASSWORD=changethis
44
+ DEFAULT_SSH_PORT=22
44
45
  BASE_API=api
45
46
  DEV_PROXY_PORT_OFFSET=200
package/.env.production CHANGED
@@ -50,6 +50,7 @@ NPM_USER=changethis
50
50
  NPM_PASSWORD=changethis
51
51
  POSTMAN_EMAIL=admin@default.net
52
52
  POSTMAN_PASSWORD=changethis
53
+ DEFAULT_SSH_PORT=22
53
54
  BASE_API=api
54
55
  CERTBOT_LIVE_PATH=changethis
55
56
  CERTBOT_LIVE_PATH_WINDOWS=changethis
package/.env.test CHANGED
@@ -41,5 +41,6 @@ NFS_EXPORT_PATH=changethis
41
41
  NVIDIA_API_KEY=changethis
42
42
  DEFAULT_ADMIN_EMAIL=admin@default.net
43
43
  DEFAULT_ADMIN_PASSWORD=changethis
44
+ DEFAULT_SSH_PORT=22
44
45
  BASE_API=api
45
46
  DEV_PROXY_PORT_OFFSET=200
@@ -59,4 +59,33 @@ jobs:
59
59
  echo "Starting remote sync and deploy"
60
60
  cd /home/dd/engine
61
61
  sudo -n -- /bin/bash -lc "node bin run pull"
62
- sudo -n -- /bin/bash -lc "node bin run sync --cron-jobs none dd-cyberia,1,,localhost/rockylinux9-underpost:v2.8.846"
62
+ sudo -n -- /bin/bash -lc "node bin run sync --cron-jobs none --timeout-response 300000ms dd-cyberia,1,,localhost/rockylinux9-underpost:v2.98.3 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
63
+ init:
64
+ if: github.repository == 'underpostnet/engine' && startsWith(github.event.head_commit.message, 'cd(ssh-init-engine-cyberia)')
65
+ name: Remote SSH init deployment
66
+ runs-on: ubuntu-latest
67
+ steps:
68
+ - name: Run remote deploy via SSH
69
+ uses: appleboy/ssh-action@v1.2.2
70
+ with:
71
+ # Remote host (secret)
72
+ host: ${{ secrets.SSH_HOST }}
73
+ # Remote user (secret)
74
+ username: ${{ secrets.SSH_USERNAME }}
75
+ # Private key (secret) — the PEM contents (not a path)
76
+ key: ${{ secrets.SSH_PRIV_KEY }}
77
+ # Remote port (optional)
78
+ port: ${{ secrets.SSH_PORT }}
79
+ # Optional: increase timeout for long-running commands
80
+ command_timeout: 60m
81
+ # Optional: if your private key has a passphrase, add:
82
+ # passphrase: ${{ secrets.SSH_KEY_PASSPHRASE }}
83
+ # Commands to run on the remote VM
84
+ script: |
85
+ set -e
86
+ echo "Starting init deploy"
87
+ cd /home/dd/engine
88
+ sudo -n -- /bin/bash -lc "node bin run pull"
89
+ sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --sync --build-manifest --image 'localhost/rockylinux9-underpost:v2.98.3' --timeout-response 300000ms --versions green --replicas 1 --cmd 'npm install -g npm@11.2.0,npm install -g underpost,underpost secret underpost --create-from-file /etc/config/.env.production,underpost start --build --run dd-cyberia production'"
90
+ sudo -n -- /bin/bash -lc "node bin deploy dd-cyberia production --kubeadm --disable-update-proxy"
91
+ sudo -n -- /bin/bash -lc "node bin monitor dd-cyberia production --ready-deployment --promote --timeout-response 300000ms --versions green --replicas 1"
@@ -4,10 +4,10 @@
4
4
  "explorer.compactFolders": false,
5
5
  "javascript.preferences.importModuleSpecifierEnding": "js",
6
6
  "[javascript]": {
7
- "editor.defaultFormatter": "esbenp.prettier-vscode"
7
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
8
8
  },
9
9
  "[python]": {
10
- "editor.defaultFormatter": "ms-python.python"
10
+ "editor.defaultFormatter": "ms-python.python",
11
11
  },
12
12
  "cSpell.words": [
13
13
  "adminer",
@@ -40,7 +40,6 @@
40
40
  "htmls",
41
41
  "inet",
42
42
  "inlt",
43
- "ipfs",
44
43
  "Itemledger",
45
44
  "jsonld",
46
45
  "lampp",
@@ -72,16 +71,16 @@
72
71
  "webroot",
73
72
  "xampp",
74
73
  "xfwd",
75
- "youtu"
74
+ "youtu",
76
75
  ],
77
76
  "[php]": {
78
- "editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
77
+ "editor.defaultFormatter": "bmewburn.vscode-intelephense-client",
79
78
  },
80
79
  "[xml]": {
81
- "editor.defaultFormatter": "redhat.vscode-xml"
80
+ "editor.defaultFormatter": "redhat.vscode-xml",
82
81
  },
83
82
 
84
83
  "files.watcherExclude": {
85
- "**/target": true
86
- }
84
+ "**/target": true,
85
+ },
87
86
  }
package/README.md CHANGED
@@ -14,17 +14,21 @@
14
14
 
15
15
  This Command Line Interface (CLI) is a core tool for the **Cyberia Network Object Layer Engine**, specifically designed for processing, generating, and managing game assets, primarily **Object Layer** elements like skins, floors, and weapons.
16
16
 
17
- It handles image asset quantization, generates data matrices and color palettes, and persists the resulting structured data into the game's database.
17
+ It handles image asset quantization, generates data matrices and color palettes, creates separate render frame documents, and persists the resulting structured data into the game's database with top-level references to render frames and atlas sprite sheets.
18
18
 
19
19
  ## What this tool does
20
20
 
21
- The CLI scans the local asset folders (`./src/client/public/cyberia/assets/{type}/{id}/{direction}/{frame}`), quantizes images to a tile matrix and color palette, and persists the resulting object-layer documents to your configured MongoDB. It also supports reconstructing a visual PNG from the stored matrix for inspection.
21
+ The CLI scans the local asset folders (`./src/client/public/cyberia/assets/{type}/{id}/{direction}/{frame}`), quantizes images to a tile matrix and color palette, creates separate ObjectLayerRenderFrames documents, and persists the resulting object-layer documents with references to your configured MongoDB. It also supports reconstructing a visual PNG from the stored matrix for inspection.
22
22
 
23
23
  Key features:
24
24
 
25
25
  - Walks the asset directory structure and processes PNG/GIF files.
26
26
  - Produces `frame_matrix` and `map_color` arrays from images.
27
- - Saves processed objects to the `ObjectLayer` model in MongoDB.
27
+ - Saves processed objects to the `ObjectLayer` model with top-level references to `ObjectLayerRenderFrames`.
28
+ - Creates separate `ObjectLayerRenderFrames` documents for render data.
29
+ - Links ObjectLayers to AtlasSpriteSheet documents via top-level `atlasSpriteSheetId`.
30
+ - Generates unique UUID v4 seeds (via `crypto.randomUUID()`) for SHA256 hash uniqueness.
31
+ - Generates SHA256 hash using `fast-json-stable-stringify` for deterministic serialization.
28
32
  - Reconstructs PNG frames from stored tile data for debugging.
29
33
 
30
34
  ## Getting Started
@@ -66,8 +70,139 @@ cyberia ol --import all
66
70
 
67
71
  ## Visualize a processed frame
68
72
 
69
- Reconstructs and opens a PNG from the processed frame data. The input format is `objectLayerId_direction_frameIndex`.
73
+ Reconstructs and opens a PNG from the database-stored frame data. Requires item-id as the first positional argument, followed by direction and frame index in the format `[direction]_[frameIndex]`.
70
74
 
71
75
  ```bash
72
- cyberia ol --import skin --show-frame anon_08_0
76
+ # Show frame with default direction and frame (08_0)
77
+ cyberia ol anon --show-frame
78
+
79
+ # Show specific direction and frame
80
+ cyberia ol anon --show-frame 08_0
81
+
82
+ # Show different directions
83
+ cyberia ol anon --show-frame 02_0 # up_idle
84
+ cyberia ol anon --show-frame 04_1 # left_idle (second frame)
85
+ ```
86
+
87
+ **Valid direction codes:**
88
+ - `08`: down_idle, none_idle, default_idle
89
+ - `18`: down_walking
90
+ - `02`: up_idle
91
+ - `12`: up_walking
92
+ - `04`: left_idle, up_left_idle, down_left_idle
93
+ - `14`: left_walking, up_left_walking, down_left_walking
94
+ - `06`: right_idle, up_right_idle, down_right_idle
95
+ - `16`: right_walking, up_right_walking, down_right_walking
96
+
97
+ This command:
98
+ - Finds the ObjectLayer by item-id
99
+ - Loads the associated ObjectLayerRenderFrames document
100
+ - Reconstructs the PNG from the stored `frame_matrix` and `map_color`
101
+ - Saves it temporarily to disk as `{item-id}_{direction}_{frame}.png`
102
+ - Opens it with Firefox for visual inspection
103
+
104
+ ### Generate Atlas Sprite Sheet
105
+
106
+ Consolidates all frames (8 directions, multiple modes) from an object layer's render frames into a single optimized PNG atlas with metadata.
107
+
108
+ ```bash
109
+ # Generate atlas sprite sheet with auto-calculated dimensions (recommended)
110
+ cyberia ol anon --to-atlas-sprite-sheet
111
+
112
+ # Generate atlas with custom dimensions (manual override)
113
+ cyberia ol anon --to-atlas-sprite-sheet 4096
114
+
115
+
116
+ ```
117
+
118
+ This command:
119
+ - Finds the ObjectLayer by item-id or MongoDB `_id`
120
+ - Loads the associated ObjectLayerRenderFrames document
121
+ - **Auto-calculates optimal atlas dimensions** based on total frame count (8 directions × all animation modes)
122
+ - Generates a consolidated PNG with all animation frames properly arranged
123
+ - Stores the PNG in the File collection
124
+ - Creates/updates an AtlasSpriteSheet document with frame positions
125
+ - Updates the ObjectLayer with top-level `atlasSpriteSheetId` reference
126
+ - Uses power-of-2 dimensions for GPU efficiency
127
+
128
+ **Atlas Dimension Calculation:**
129
+ - **Auto (default)**: Dynamically calculates optimal size based on:
130
+ - Total number of frames across all directions and modes
131
+ - Individual frame dimensions
132
+ - Grid layout to minimize wasted space
133
+ - Power-of-2 optimization (1024, 2048, 4096, etc.)
134
+ - **Manual override**: Specify exact dimension (e.g., `--to-atlas-sprite-sheet 4096`)
135
+
136
+ **Common Atlas Sizes:**
137
+ - **1024x1024**: ~6-10 frames
138
+ - **2048x2048**: ~20-40 frames (typical for character sprites)
139
+ - **4096x4096**: ~80-160 frames (complex animations)
140
+ - **8192x8192**: Maximum, for extreme cases
141
+
142
+ The tool automatically warns if frames exceed the specified dimension and suggests a larger size.
143
+
144
+ ### View Atlas Sprite Sheet
145
+
146
+ Opens the consolidated atlas sprite sheet PNG for inspection.
147
+
148
+ ```bash
149
+ # Show atlas sprite sheet by item-id
150
+ cyberia ol anon --show-atlas-sprite-sheet
151
+
152
+ ```
153
+
154
+ This command:
155
+ - Finds the ObjectLayer by item-id
156
+ - Retrieves the associated AtlasSpriteSheet via top-level `atlasSpriteSheetId` or by matching `metadata.itemKey`
157
+ - Saves it temporarily to disk
158
+ - Opens it with Firefox for visual inspection
159
+ - Displays atlas dimensions in the console
160
+
161
+ ## Common Workflows
162
+
163
+ ### Complete Asset Processing Pipeline
164
+
165
+ Process assets from source files through to atlas generation:
166
+
167
+ ```bash
168
+ # 1. Import object layers from asset directories
169
+ cyberia ol --import skin
170
+
171
+ # 2. Verify a specific frame was imported correctly
172
+ cyberia ol anon --show-frame 08_0
173
+
174
+ # 3. Generate optimized atlas sprite sheet
175
+ cyberia ol anon --to-atlas-sprite-sheet
176
+
177
+ # 4. View the generated atlas
178
+ cyberia ol anon --show-atlas-sprite-sheet
179
+ ```
180
+
181
+ ### Debugging Asset Issues
182
+
183
+ ```bash
184
+ # Check if frame data is correct for all directions
185
+ cyberia ol anon --show-frame 08_0 # down_idle
186
+ cyberia ol anon --show-frame 02_0 # up_idle
187
+ cyberia ol anon --show-frame 04_0 # left_idle
188
+ cyberia ol anon --show-frame 06_0 # right_idle
189
+
190
+ # Verify walking animations
191
+ cyberia ol anon --show-frame 18_0 # down_walking
192
+ cyberia ol anon --show-frame 12_0 # up_walking
193
+ cyberia ol anon --show-frame 14_0 # left_walking
194
+ cyberia ol anon --show-frame 16_0 # right_walking
195
+ ```
196
+
197
+ ### Working with Multiple Items
198
+
199
+ ```bash
200
+ # Import multiple types at once
201
+ cyberia ol --import skin,floor,weapon
202
+
203
+ # Process individual items
204
+ cyberia ol sword --show-frame 08_0
205
+ cyberia ol sword --to-atlas-sprite-sheet
206
+ cyberia ol shield --show-frame 08_0
207
+ cyberia ol shield --to-atlas-sprite-sheet
73
208
  ```
package/bin/build.js CHANGED
@@ -159,6 +159,7 @@ const { DefaultConf } = await import(`../conf.${confName}.js`);
159
159
  recursive: true,
160
160
  });
161
161
 
162
+ const originPackageJson = JSON.parse(fs.readFileSync(`./package.json`, 'utf8'));
162
163
  const packageJson = JSON.parse(fs.readFileSync(`${basePath}/package.json`, 'utf8'));
163
164
  packageJson.name = repoName.replace('engine-', '');
164
165
 
@@ -171,16 +172,31 @@ const { DefaultConf } = await import(`../conf.${confName}.js`);
171
172
  );
172
173
  delete packageJson.bin.underpost;
173
174
  packageJson.bin.cyberia = 'bin/index.js';
174
- packageJson.keywords = ['cyberia', 'object-layer', 'game-engine', 'assets-management', 'web3'];
175
+ packageJson.keywords = [
176
+ 'cyberia',
177
+ 'object-layer',
178
+ 'game-engine',
179
+ 'assets-management',
180
+ 'web3',
181
+ 'atlas-sprite-sheet',
182
+ ];
175
183
  packageJson.description = 'Cyberia Engine - Object Layer and Assets Management Microservice';
184
+ const { CyberiaDependencies } = await import(`../src/client/components/cyberia-portal/CommonCyberiaPortal.js`);
185
+ packageJson.dependencies = {
186
+ ...packageJson.dependencies,
187
+ ...CyberiaDependencies,
188
+ };
176
189
  fs.writeFileSync(`${basePath}/bin/index.js`, fs.readFileSync(`./bin/cyberia.js`, 'utf8'), 'utf8');
177
190
  fs.copyFileSync(`./src/api/object-layer/README.md`, `${basePath}/README.md`);
178
191
  fs.copySync(`./hardhat`, `${basePath}/hardhat`);
179
192
  fs.copySync(`./hardhat/white-paper.md`, `${basePath}/white-paper.md`);
180
- fs.copySync(
181
- `./src/client/ssr/pages/CyberiaServerMetrics.js`,
182
- `${basePath}/src/client/ssr/pages/CyberiaServerMetrics.js`,
183
- );
193
+ for (const path of [
194
+ '/src/client/ssr/pages/CyberiaServerMetrics.js',
195
+ '/src/server/object-layer.js',
196
+ '/src/server/atlas-sprite-sheet-generator.js',
197
+ ])
198
+ fs.copySync(`.${path}`, `${basePath}${path}`);
199
+
184
200
  default:
185
201
  break;
186
202
  }