@underpostnet/cyberia 3.2.80
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/.dockerignore +14 -0
- package/.env.example +144 -0
- package/.github/workflows/cyberia-client.cd.yml +40 -0
- package/.github/workflows/cyberia-server.cd.yml +40 -0
- package/.github/workflows/docker-image.cyberia-client.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +70 -0
- package/.github/workflows/docker-image.cyberia-server.ci.yml +71 -0
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +71 -0
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +53 -0
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +53 -0
- package/.github/workflows/engine-cyberia.cd.yml +157 -0
- package/.github/workflows/engine-cyberia.ci.yml +125 -0
- package/.github/workflows/ghpkg.ci.yml +160 -0
- package/.github/workflows/gitlab.ci.yml +20 -0
- package/.github/workflows/hardhat.ci.yml +82 -0
- package/.github/workflows/npmpkg.ci.yml +126 -0
- package/.github/workflows/publish.ci.yml +87 -0
- package/.github/workflows/publish.cyberia.ci.yml +79 -0
- package/.github/workflows/pwa-microservices-template-page.cd.yml +65 -0
- package/.github/workflows/pwa-microservices-template-test.ci.yml +33 -0
- package/.github/workflows/release.cd.yml +46 -0
- package/.nycrc +9 -0
- package/.prettierignore +12 -0
- package/.prettierrc +9 -0
- package/.vscode/extensions.json +10 -0
- package/.vscode/settings.json +26 -0
- package/CHANGELOG.md +2516 -0
- package/CLI-HELP.md +1099 -0
- package/Dockerfile +161 -0
- package/Dockerfile.dev +161 -0
- package/Dockerfile.test +165 -0
- package/LICENSE +21 -0
- package/README.md +259 -0
- package/baremetal/commission-workflows.json +211 -0
- package/baremetal/packer-workflows.json +24 -0
- package/bin/build.js +261 -0
- package/bin/build.template.js +33 -0
- package/bin/cyberia.js +5627 -0
- package/bin/deploy.js +1547 -0
- package/bin/index.js +5627 -0
- package/bump.config.js +27 -0
- package/compose.env +144 -0
- package/conf.js +952 -0
- package/deployment.yaml +418 -0
- package/docker-compose.yml +434 -0
- package/examples/static-page/README.md +150 -0
- package/examples/static-page/ssr-components/CustomPage.js +554 -0
- package/examples/static-page/static-config-example.json +57 -0
- package/hardhat/.env.example +31 -0
- package/hardhat/contracts/ObjectLayerToken.sol +391 -0
- package/hardhat/deployments/.gitkeep +0 -0
- package/hardhat/deployments/hardhat-ObjectLayerToken.json +11 -0
- package/hardhat/hardhat.config.js +136 -0
- package/hardhat/ignition/modules/.gitkeep +0 -0
- package/hardhat/ignition/modules/ObjectLayerToken.js +21 -0
- package/hardhat/networks/besu-object-layer.network.json +138 -0
- package/hardhat/package-lock.json +2871 -0
- package/hardhat/package.json +43 -0
- package/hardhat/scripts/deployObjectLayerToken.js +98 -0
- package/hardhat/test/ObjectLayerToken.js +696 -0
- package/hardhat/types/ethers-contracts/ObjectLayerToken.ts +690 -0
- package/hardhat/types/ethers-contracts/common.ts +92 -0
- package/hardhat/types/ethers-contracts/factories/ObjectLayerToken__factory.ts +1055 -0
- package/hardhat/types/ethers-contracts/factories/index.ts +4 -0
- package/hardhat/types/ethers-contracts/hardhat.d.ts +47 -0
- package/hardhat/types/ethers-contracts/index.ts +6 -0
- package/ipfs/configure-ipfs.sh +13 -0
- package/jsconfig.json +9 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +48 -0
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +48 -0
- package/manifests/deployment/adminer/deployment.yaml +32 -0
- package/manifests/deployment/adminer/kustomization.yaml +7 -0
- package/manifests/deployment/adminer/service.yaml +13 -0
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +418 -0
- package/manifests/deployment/dd-cyberia-development/grpc-service.yaml +17 -0
- package/manifests/deployment/dd-cyberia-development/proxy.yaml +189 -0
- package/manifests/deployment/dd-cyberia-development/pv-pvc.yaml +164 -0
- package/manifests/deployment/dd-default-development/deployment.yaml +163 -0
- package/manifests/deployment/dd-default-development/proxy.yaml +46 -0
- package/manifests/deployment/fastapi/backend-deployment.yml +120 -0
- package/manifests/deployment/fastapi/backend-service.yml +19 -0
- package/manifests/deployment/fastapi/frontend-deployment.yml +54 -0
- package/manifests/deployment/fastapi/frontend-service.yml +15 -0
- package/manifests/deployment/fastapi/initial_data.sh +8 -0
- package/manifests/deployment/kafka/deployment.yaml +67 -0
- package/manifests/deployment/mongo-express/deployment.yaml +62 -0
- package/manifests/deployment/phpmyadmin/deployment.yaml +54 -0
- package/manifests/deployment/playwright/deployment.yaml +52 -0
- package/manifests/deployment/spark/spark-pi-py.yaml +20 -0
- package/manifests/deployment/tensorflow/tf-gpu-test.yaml +63 -0
- package/manifests/envoy-service-nodeport.yaml +22 -0
- package/manifests/grafana/deployment.yaml +64 -0
- package/manifests/grafana/kustomization.yaml +7 -0
- package/manifests/grafana/pvc.yaml +12 -0
- package/manifests/grafana/service.yaml +14 -0
- package/manifests/grafana/storage-class.yaml +9 -0
- package/manifests/ipfs/configmap.yaml +64 -0
- package/manifests/ipfs/headless-service.yaml +35 -0
- package/manifests/ipfs/kustomization.yaml +8 -0
- package/manifests/ipfs/statefulset.yaml +149 -0
- package/manifests/ipfs/storage-class.yaml +9 -0
- package/manifests/kind-config-dev.yaml +20 -0
- package/manifests/kind-config.yaml +12 -0
- package/manifests/kubeadm-calico-config.yaml +14 -0
- package/manifests/letsencrypt-prod.yaml +14 -0
- package/manifests/lxd/lxd-admin-profile.yaml +26 -0
- package/manifests/lxd/lxd-preseed.yaml +30 -0
- package/manifests/mariadb/kustomization.yaml +9 -0
- package/manifests/mariadb/pv.yaml +12 -0
- package/manifests/mariadb/pvc.yaml +10 -0
- package/manifests/mariadb/service.yaml +10 -0
- package/manifests/mariadb/statefulset.yaml +56 -0
- package/manifests/mariadb/storage-class.yaml +10 -0
- package/manifests/mongodb/headless-service.yaml +10 -0
- package/manifests/mongodb/kustomization.yaml +11 -0
- package/manifests/mongodb/pv-pvc.yaml +59 -0
- package/manifests/mongodb/statefulset.yaml +113 -0
- package/manifests/mongodb/storage-class.yaml +9 -0
- package/manifests/mongodb-4.4/headless-service.yaml +10 -0
- package/manifests/mongodb-4.4/kustomization.yaml +9 -0
- package/manifests/mongodb-4.4/mongodb-nodeport.yaml +17 -0
- package/manifests/mongodb-4.4/pv-pvc.yaml +19 -0
- package/manifests/mongodb-4.4/service-deployment.yaml +61 -0
- package/manifests/mongodb-4.4/statefulset.yaml +79 -0
- package/manifests/mongodb-4.4/storage-class.yaml +9 -0
- package/manifests/mysql/kustomization.yaml +7 -0
- package/manifests/mysql/pv-pvc.yaml +27 -0
- package/manifests/mysql/statefulset.yaml +55 -0
- package/manifests/postgresql/configmap.yaml +9 -0
- package/manifests/postgresql/kustomization.yaml +10 -0
- package/manifests/postgresql/pv.yaml +15 -0
- package/manifests/postgresql/pvc.yaml +13 -0
- package/manifests/postgresql/service.yaml +10 -0
- package/manifests/postgresql/statefulset.yaml +37 -0
- package/manifests/prometheus/deployment.yaml +82 -0
- package/manifests/pv-pvc-dd.yaml +34 -0
- package/manifests/valkey/kustomization.yaml +7 -0
- package/manifests/valkey/service.yaml +10 -0
- package/manifests/valkey/statefulset.yaml +37 -0
- package/manifests/valkey/valkey-nodeport.yaml +17 -0
- package/mongodb/entrypoint.sh +76 -0
- package/nginx.conf +128 -0
- package/nodemon.json +6 -0
- package/package.json +101 -0
- package/packer/images/Rocky9Amd64/Makefile +62 -0
- package/packer/images/Rocky9Amd64/QUICKSTART.md +113 -0
- package/packer/images/Rocky9Amd64/README.md +122 -0
- package/packer/images/Rocky9Amd64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Amd64/rocky9.pkr.hcl +164 -0
- package/packer/images/Rocky9Arm64/Makefile +69 -0
- package/packer/images/Rocky9Arm64/README.md +122 -0
- package/packer/images/Rocky9Arm64/http/rocky9.ks.pkrtpl.hcl +114 -0
- package/packer/images/Rocky9Arm64/rocky9.pkr.hcl +171 -0
- package/packer/scripts/fuse-nbd +64 -0
- package/packer/scripts/fuse-tar-root +63 -0
- package/proxy.yaml +189 -0
- package/pv-pvc.yaml +164 -0
- package/scripts/device-scan.sh +65 -0
- package/scripts/disk-clean.sh +182 -0
- package/scripts/disk-devices.sh +13 -0
- package/scripts/gen-fqdns.sh +14 -0
- package/scripts/gpu-diag.sh +19 -0
- package/scripts/ip-info.sh +118 -0
- package/scripts/ipxe-setup.sh +200 -0
- package/scripts/k3s-node-setup.sh +124 -0
- package/scripts/kubeadm-node-setup.sh +317 -0
- package/scripts/link-local-underpost-cli.sh +6 -0
- package/scripts/lxd-vm-setup.sh +208 -0
- package/scripts/maas-nat-firewalld.sh +145 -0
- package/scripts/maas-setup.sh +135 -0
- package/scripts/maas-upload-boot-resource.sh +183 -0
- package/scripts/nat-iptables.sh +111 -0
- package/scripts/nvim.sh +91 -0
- package/scripts/packer-init-vars-file.sh +40 -0
- package/scripts/packer-setup.sh +289 -0
- package/scripts/ports-ls.sh +33 -0
- package/scripts/quick-tftp.sh +19 -0
- package/scripts/rhel-grpc-setup.sh +56 -0
- package/scripts/rocky-kickstart.sh +986 -0
- package/scripts/rocky-pwa.sh +200 -0
- package/scripts/rocky-setup.sh +106 -0
- package/scripts/rpmfusion-ffmpeg-setup.sh +32 -0
- package/scripts/ssl.sh +170 -0
- package/scripts/test-monitor.sh +248 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +30 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.model.js +155 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +39 -0
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +382 -0
- package/src/api/core/core.controller.js +8 -0
- package/src/api/core/core.model.js +11 -0
- package/src/api/core/core.router.js +23 -0
- package/src/api/core/core.service.js +30 -0
- package/src/api/crypto/crypto.controller.js +10 -0
- package/src/api/crypto/crypto.model.js +23 -0
- package/src/api/crypto/crypto.router.js +23 -0
- package/src/api/crypto/crypto.service.js +64 -0
- package/src/api/cyberia-action/cyberia-action.controller.js +8 -0
- package/src/api/cyberia-action/cyberia-action.model.js +79 -0
- package/src/api/cyberia-action/cyberia-action.router.js +21 -0
- package/src/api/cyberia-action/cyberia-action.service.js +58 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +27 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.model.js +100 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +70 -0
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +152 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +8 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.model.js +36 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +20 -0
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +57 -0
- package/src/api/cyberia-entity/cyberia-entity.controller.js +6 -0
- package/src/api/cyberia-entity/cyberia-entity.model.js +25 -0
- package/src/api/cyberia-entity/cyberia-entity.router.js +17 -0
- package/src/api/cyberia-entity/cyberia-entity.service.js +42 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +6 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.model.js +67 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +17 -0
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +46 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +337 -0
- package/src/api/cyberia-instance/cyberia-instance-boot.service.js +57 -0
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +583 -0
- package/src/api/cyberia-instance/cyberia-instance.controller.js +42 -0
- package/src/api/cyberia-instance/cyberia-instance.model.js +117 -0
- package/src/api/cyberia-instance/cyberia-instance.router.js +75 -0
- package/src/api/cyberia-instance/cyberia-instance.service.js +190 -0
- package/src/api/cyberia-instance/cyberia-portal-connector.js +260 -0
- package/src/api/cyberia-instance/cyberia-world-generator.js +618 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +6 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +200 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +17 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +46 -0
- package/src/api/cyberia-map/cyberia-map.controller.js +6 -0
- package/src/api/cyberia-map/cyberia-map.model.js +33 -0
- package/src/api/cyberia-map/cyberia-map.router.js +19 -0
- package/src/api/cyberia-map/cyberia-map.service.js +76 -0
- package/src/api/cyberia-quest/cyberia-quest.controller.js +9 -0
- package/src/api/cyberia-quest/cyberia-quest.model.js +67 -0
- package/src/api/cyberia-quest/cyberia-quest.router.js +26 -0
- package/src/api/cyberia-quest/cyberia-quest.service.js +97 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +6 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.model.js +49 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +21 -0
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +42 -0
- package/src/api/cyberia-saga/cyberia-saga.controller.js +6 -0
- package/src/api/cyberia-saga/cyberia-saga.model.js +59 -0
- package/src/api/cyberia-saga/cyberia-saga.router.js +17 -0
- package/src/api/cyberia-saga/cyberia-saga.service.js +42 -0
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +1076 -0
- package/src/api/cyberia-skill/cyberia-skill.controller.js +6 -0
- package/src/api/cyberia-skill/cyberia-skill.model.js +50 -0
- package/src/api/cyberia-skill/cyberia-skill.router.js +17 -0
- package/src/api/cyberia-skill/cyberia-skill.service.js +42 -0
- package/src/api/default/default.controller.js +6 -0
- package/src/api/default/default.model.js +20 -0
- package/src/api/default/default.router.js +21 -0
- package/src/api/default/default.service.js +42 -0
- package/src/api/document/document.controller.js +9 -0
- package/src/api/document/document.model.js +95 -0
- package/src/api/document/document.router.js +32 -0
- package/src/api/document/document.service.js +633 -0
- package/src/api/file/file.controller.js +15 -0
- package/src/api/file/file.model.js +127 -0
- package/src/api/file/file.ref.json +39 -0
- package/src/api/file/file.router.js +36 -0
- package/src/api/file/file.service.js +499 -0
- package/src/api/instance/instance.controller.js +8 -0
- package/src/api/instance/instance.model.js +34 -0
- package/src/api/instance/instance.router.js +27 -0
- package/src/api/instance/instance.service.js +75 -0
- package/src/api/ipfs/ipfs.controller.js +8 -0
- package/src/api/ipfs/ipfs.model.js +77 -0
- package/src/api/ipfs/ipfs.router.js +26 -0
- package/src/api/ipfs/ipfs.service.js +145 -0
- package/src/api/object-layer/object-layer.controller.js +18 -0
- package/src/api/object-layer/object-layer.model.js +200 -0
- package/src/api/object-layer/object-layer.router.js +729 -0
- package/src/api/object-layer/object-layer.service.js +894 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +6 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.model.js +93 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +17 -0
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +46 -0
- package/src/api/test/test.controller.js +14 -0
- package/src/api/test/test.model.js +14 -0
- package/src/api/test/test.router.js +23 -0
- package/src/api/test/test.service.js +35 -0
- package/src/api/types.js +24 -0
- package/src/api/user/guest.service.js +100 -0
- package/src/api/user/postman_collection.json +216 -0
- package/src/api/user/user.build.js +16 -0
- package/src/api/user/user.controller.js +35 -0
- package/src/api/user/user.model.js +142 -0
- package/src/api/user/user.router.js +367 -0
- package/src/api/user/user.service.js +582 -0
- package/src/api.js +23 -0
- package/src/cli/baremetal.js +3947 -0
- package/src/cli/cloud-init.js +673 -0
- package/src/cli/cluster.js +1395 -0
- package/src/cli/db.js +1533 -0
- package/src/cli/deploy.js +1542 -0
- package/src/cli/docker-compose.js +802 -0
- package/src/cli/env.js +177 -0
- package/src/cli/fs.js +380 -0
- package/src/cli/image.js +389 -0
- package/src/cli/index.js +1059 -0
- package/src/cli/ipfs.js +182 -0
- package/src/cli/kickstart.js +271 -0
- package/src/cli/kubectl.js +214 -0
- package/src/cli/lxd.js +1232 -0
- package/src/cli/monitor.js +659 -0
- package/src/cli/release.js +595 -0
- package/src/cli/repository.js +1969 -0
- package/src/cli/run.js +3326 -0
- package/src/cli/secrets.js +151 -0
- package/src/cli/ssh.js +975 -0
- package/src/cli/static.js +653 -0
- package/src/cli/system.js +332 -0
- package/src/cli/test.js +176 -0
- package/src/client/Cryptokoyn.index.js +30 -0
- package/src/client/CyberiaPortal.index.js +31 -0
- package/src/client/Default.index.js +77 -0
- package/src/client/Itemledger.index.js +35 -0
- package/src/client/Underpost.index.js +31 -0
- package/src/client/components/core/404.js +20 -0
- package/src/client/components/core/500.js +20 -0
- package/src/client/components/core/Account.js +630 -0
- package/src/client/components/core/AgGrid.js +238 -0
- package/src/client/components/core/Alert.js +76 -0
- package/src/client/components/core/AppStore.js +69 -0
- package/src/client/components/core/Auth.js +353 -0
- package/src/client/components/core/Badge.js +26 -0
- package/src/client/components/core/Blockchain.js +41 -0
- package/src/client/components/core/Blog.js +9 -0
- package/src/client/components/core/BtnIcon.js +109 -0
- package/src/client/components/core/CalendarCore.js +437 -0
- package/src/client/components/core/Chat.js +62 -0
- package/src/client/components/core/ClientEvents.js +163 -0
- package/src/client/components/core/ColorPaletteElement.js +309 -0
- package/src/client/components/core/CommonJs.js +1014 -0
- package/src/client/components/core/Content.js +349 -0
- package/src/client/components/core/Css.js +1134 -0
- package/src/client/components/core/CssCore.js +881 -0
- package/src/client/components/core/D3Chart.js +44 -0
- package/src/client/components/core/Docs.js +478 -0
- package/src/client/components/core/DropDown.js +321 -0
- package/src/client/components/core/EventBus.js +96 -0
- package/src/client/components/core/EventsUI.js +130 -0
- package/src/client/components/core/FileExplorer.js +1406 -0
- package/src/client/components/core/FullScreen.js +201 -0
- package/src/client/components/core/Input.js +537 -0
- package/src/client/components/core/Keyboard.js +80 -0
- package/src/client/components/core/KeyboardAvoidance.js +145 -0
- package/src/client/components/core/LoadingAnimation.js +152 -0
- package/src/client/components/core/LogIn.js +212 -0
- package/src/client/components/core/LogOut.js +72 -0
- package/src/client/components/core/Logger.js +22 -0
- package/src/client/components/core/Modal.js +2956 -0
- package/src/client/components/core/NotificationManager.js +80 -0
- package/src/client/components/core/Pagination.js +252 -0
- package/src/client/components/core/Panel.js +1308 -0
- package/src/client/components/core/PanelForm.js +915 -0
- package/src/client/components/core/Polyhedron.js +947 -0
- package/src/client/components/core/PublicProfile.js +895 -0
- package/src/client/components/core/Recover.js +211 -0
- package/src/client/components/core/Responsive.js +146 -0
- package/src/client/components/core/RichText.js +33 -0
- package/src/client/components/core/Router.js +523 -0
- package/src/client/components/core/Scroll.js +76 -0
- package/src/client/components/core/SearchBox.js +1007 -0
- package/src/client/components/core/SignUp.js +153 -0
- package/src/client/components/core/SocketIo.js +163 -0
- package/src/client/components/core/SocketIoHandler.js +75 -0
- package/src/client/components/core/Stream.js +161 -0
- package/src/client/components/core/ToggleSwitch.js +89 -0
- package/src/client/components/core/ToolTip.js +78 -0
- package/src/client/components/core/Translate.js +694 -0
- package/src/client/components/core/Validator.js +140 -0
- package/src/client/components/core/VanillaJs.js +485 -0
- package/src/client/components/core/Wallet.js +95 -0
- package/src/client/components/core/WebComponent.js +44 -0
- package/src/client/components/core/Webhook.js +58 -0
- package/src/client/components/core/Worker.js +313 -0
- package/src/client/components/core/windowGetDimensions.js +269 -0
- package/src/client/components/cryptokoyn/AppShellCryptokoyn.js +352 -0
- package/src/client/components/cryptokoyn/AppStoreCryptokoyn.js +5 -0
- package/src/client/components/cryptokoyn/CssCryptokoyn.js +212 -0
- package/src/client/components/cryptokoyn/LogInCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/LogOutCryptokoyn.js +12 -0
- package/src/client/components/cryptokoyn/RouterCryptokoyn.js +37 -0
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +16 -0
- package/src/client/components/cryptokoyn/SignUpCryptokoyn.js +11 -0
- package/src/client/components/cryptokoyn/SocketIoCryptokoyn.js +6 -0
- package/src/client/components/cyberia/ActionEngineCyberia.js +1867 -0
- package/src/client/components/cyberia/EntityEngineCyberia.js +585 -0
- package/src/client/components/cyberia/InstanceEngineCyberia.js +1088 -0
- package/src/client/components/cyberia/InstanceSelectionView.js +900 -0
- package/src/client/components/cyberia/MapEngineCyberia.js +1976 -0
- package/src/client/components/cyberia/ObjectLayerEngine.js +1540 -0
- package/src/client/components/cyberia/ObjectLayerEngineModal.js +2420 -0
- package/src/client/components/cyberia/ObjectLayerEngineViewer.js +1522 -0
- package/src/client/components/cyberia/SharedDefaultsCyberia.js +528 -0
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +772 -0
- package/src/client/components/cyberia-portal/AppStoreCyberiaPortal.js +5 -0
- package/src/client/components/cyberia-portal/CssCyberiaPortal.js +254 -0
- package/src/client/components/cyberia-portal/LogInCyberiaPortal.js +21 -0
- package/src/client/components/cyberia-portal/LogOutCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/MainBodyCyberiaPortal.js +518 -0
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +72 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +16 -0
- package/src/client/components/cyberia-portal/SignUpCyberiaPortal.js +13 -0
- package/src/client/components/cyberia-portal/SocketIoCyberiaPortal.js +6 -0
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +48 -0
- package/src/client/components/default/AppShellDefault.js +765 -0
- package/src/client/components/default/AppStoreDefault.js +5 -0
- package/src/client/components/default/CommonDefault.js +29 -0
- package/src/client/components/default/CssDefault.js +27 -0
- package/src/client/components/default/LogInDefault.js +16 -0
- package/src/client/components/default/LogOutDefault.js +12 -0
- package/src/client/components/default/RouterDefault.js +47 -0
- package/src/client/components/default/SettingsDefault.js +16 -0
- package/src/client/components/default/SignUpDefault.js +11 -0
- package/src/client/components/default/SocketIoDefault.js +6 -0
- package/src/client/components/default/TranslateDefault.js +7 -0
- package/src/client/components/itemledger/AppShellItemledger.js +353 -0
- package/src/client/components/itemledger/AppStoreItemledger.js +5 -0
- package/src/client/components/itemledger/CssItemledger.js +212 -0
- package/src/client/components/itemledger/LogInItemledger.js +17 -0
- package/src/client/components/itemledger/LogOutItemledger.js +12 -0
- package/src/client/components/itemledger/RouterItemledger.js +38 -0
- package/src/client/components/itemledger/SettingsItemledger.js +16 -0
- package/src/client/components/itemledger/SignUpItemledger.js +11 -0
- package/src/client/components/itemledger/SocketIoItemledger.js +6 -0
- package/src/client/components/itemledger/TranslateItemledger.js +7 -0
- package/src/client/components/underpost/AppShellUnderpost.js +691 -0
- package/src/client/components/underpost/AppStoreUnderpost.js +5 -0
- package/src/client/components/underpost/CssUnderpost.js +281 -0
- package/src/client/components/underpost/CyberpunkBloggerUnderpost.js +879 -0
- package/src/client/components/underpost/DocumentSearchProvider.js +448 -0
- package/src/client/components/underpost/LabGalleryUnderpost.js +79 -0
- package/src/client/components/underpost/LogInUnderpost.js +25 -0
- package/src/client/components/underpost/LogOutUnderpost.js +17 -0
- package/src/client/components/underpost/RouterUnderpost.js +45 -0
- package/src/client/components/underpost/SettingsUnderpost.js +16 -0
- package/src/client/components/underpost/SignUpUnderpost.js +11 -0
- package/src/client/components/underpost/SocketIoUnderpost.js +6 -0
- package/src/client/components/underpost/TranslateUnderpost.js +10 -0
- package/src/client/public/cryptokoyn/assets/banner/koyn-social.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/base-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/logo/cryptokoyn.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-192x192.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-256x256.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-36x36.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-48x48.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/android-chrome-96x96.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/apple-touch-icon.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-16x16.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/favicon-32x32.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-144x144.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-150x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x150.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-310x310.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/mstile-70x70.png +0 -0
- package/src/client/public/cryptokoyn/assets/splash/safari-pinned-tab.svg +42 -0
- package/src/client/public/cryptokoyn/browserconfig.xml +12 -0
- package/src/client/public/cryptokoyn/favicon.ico +0 -0
- package/src/client/public/cryptokoyn/microdata.json +85 -0
- package/src/client/public/cryptokoyn/site.webmanifest +57 -0
- package/src/client/public/cryptokoyn/sitemap +148 -0
- package/src/client/public/cyberia-docs/ACTION-SYSTEM.md +307 -0
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +309 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +204 -0
- package/src/client/public/cyberia-docs/CYBERIA-CLIENT.md +341 -0
- package/src/client/public/cyberia-docs/CYBERIA-LORE.md +84 -0
- package/src/client/public/cyberia-docs/CYBERIA-SAGA.md +394 -0
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +294 -0
- package/src/client/public/cyberia-docs/CYBERIA.md +259 -0
- package/src/client/public/cyberia-docs/ENTITY-PROFILE.md +242 -0
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +300 -0
- package/src/client/public/cyberia-docs/OFF-CHAIN-ECONOMY.md +309 -0
- package/src/client/public/cyberia-docs/QUEST-SYSTEM.md +228 -0
- package/src/client/public/cyberia-docs/ROADMAP.md +240 -0
- package/src/client/public/cyberia-docs/UNDERPOST-PLATFORM.md +106 -0
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +740 -0
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/dark.svg +557 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/default/assets/logo/base-icon.png +0 -0
- package/src/client/public/default/assets/logo/underpost.gif +0 -0
- package/src/client/public/default/assets/mailer/api-user-check.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-default-avatar.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-invalid-token.png +0 -0
- package/src/client/public/default/assets/mailer/api-user-recover.png +0 -0
- package/src/client/public/default/browserconfig.xml +12 -0
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +69 -0
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/safari-pinned-tab.svg +24 -0
- package/src/client/public/default/site.webmanifest +69 -0
- package/src/client/public/default/sitemap +148 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +9 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +148 -0
- package/src/client/public/itemledger/android-chrome-144x144.png +0 -0
- package/src/client/public/itemledger/android-chrome-192x192.png +0 -0
- package/src/client/public/itemledger/android-chrome-256x256.png +0 -0
- package/src/client/public/itemledger/android-chrome-36x36.png +0 -0
- package/src/client/public/itemledger/android-chrome-384x384.png +0 -0
- package/src/client/public/itemledger/android-chrome-48x48.png +0 -0
- package/src/client/public/itemledger/android-chrome-512x512.png +0 -0
- package/src/client/public/itemledger/android-chrome-72x72.png +0 -0
- package/src/client/public/itemledger/android-chrome-96x96.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/itemledger/apple-touch-icon.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/itemledger/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/itemledger/assets/logo/base-icon.png +0 -0
- package/src/client/public/itemledger/browserconfig.xml +12 -0
- package/src/client/public/itemledger/favicon-16x16.png +0 -0
- package/src/client/public/itemledger/favicon-32x32.png +0 -0
- package/src/client/public/itemledger/favicon-48x48.png +0 -0
- package/src/client/public/itemledger/favicon.ico +0 -0
- package/src/client/public/itemledger/manifest.webmanifest +69 -0
- package/src/client/public/itemledger/microdata.json +71 -0
- package/src/client/public/itemledger/mstile-144x144.png +0 -0
- package/src/client/public/itemledger/mstile-150x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x150.png +0 -0
- package/src/client/public/itemledger/mstile-310x310.png +0 -0
- package/src/client/public/itemledger/mstile-70x70.png +0 -0
- package/src/client/public/itemledger/sitemap +148 -0
- package/src/client/public/itemledger/yandex-browser-50x50.png +0 -0
- package/src/client/public/itemledger/yandex-browser-manifest.json +9 -0
- package/src/client/public/test/favicon.ico +0 -0
- package/src/client/public/test/sitemap +148 -0
- package/src/client/services/atlas-sprite-sheet/atlas-sprite-sheet.service.js +137 -0
- package/src/client/services/core/core.service.js +309 -0
- package/src/client/services/crypto/crypto.service.js +68 -0
- package/src/client/services/cyberia-action/cyberia-action.service.js +99 -0
- package/src/client/services/cyberia-client-hints/cyberia-client-hints.service.js +99 -0
- package/src/client/services/cyberia-dialogue/cyberia-dialogue.service.js +99 -0
- package/src/client/services/cyberia-entity/cyberia-entity.management.js +57 -0
- package/src/client/services/cyberia-entity/cyberia-entity.service.js +99 -0
- package/src/client/services/cyberia-entity-type-default/cyberia-entity-type-default.service.js +99 -0
- package/src/client/services/cyberia-instance/cyberia-instance.management.js +194 -0
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +137 -0
- package/src/client/services/cyberia-instance-conf/cyberia-instance-conf.service.js +99 -0
- package/src/client/services/cyberia-map/cyberia-map.management.js +193 -0
- package/src/client/services/cyberia-map/cyberia-map.service.js +120 -0
- package/src/client/services/cyberia-quest/cyberia-quest.service.js +99 -0
- package/src/client/services/cyberia-quest-progress/cyberia-quest-progress.service.js +99 -0
- package/src/client/services/cyberia-saga/cyberia-saga.service.js +99 -0
- package/src/client/services/cyberia-skill/cyberia-skill.service.js +99 -0
- package/src/client/services/default/default.management.js +1015 -0
- package/src/client/services/default/default.service.js +99 -0
- package/src/client/services/document/document.service.js +134 -0
- package/src/client/services/file/file.service.js +94 -0
- package/src/client/services/instance/instance.management.js +78 -0
- package/src/client/services/instance/instance.service.js +107 -0
- package/src/client/services/ipfs/ipfs.service.js +118 -0
- package/src/client/services/object-layer/object-layer.management.js +414 -0
- package/src/client/services/object-layer/object-layer.service.js +208 -0
- package/src/client/services/object-layer-render-frames/object-layer-render-frames.service.js +99 -0
- package/src/client/services/test/test.service.js +68 -0
- package/src/client/services/user/guest.service.js +86 -0
- package/src/client/services/user/user.management.js +51 -0
- package/src/client/services/user/user.service.js +106 -0
- package/src/client/ssr/RootDocument.js +237 -0
- package/src/client/ssr/body/404.js +77 -0
- package/src/client/ssr/body/500.js +76 -0
- package/src/client/ssr/body/CacheControl.js +117 -0
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/DefaultSplashScreen.js +97 -0
- package/src/client/ssr/body/SwaggerDarkMode.js +285 -0
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +90 -0
- package/src/client/ssr/head/CryptokoynScripts.js +4 -0
- package/src/client/ssr/head/Css.js +241 -0
- package/src/client/ssr/head/CyberiaPortalScripts.js +6 -0
- package/src/client/ssr/head/DefaultScripts.js +6 -0
- package/src/client/ssr/head/ItemledgerScripts.js +4 -0
- package/src/client/ssr/head/Microdata.js +11 -0
- package/src/client/ssr/head/Production.js +1 -0
- package/src/client/ssr/head/Pwa.js +146 -0
- package/src/client/ssr/head/PwaItemledger.js +197 -0
- package/src/client/ssr/head/Seo.js +15 -0
- package/src/client/ssr/head/UnderpostScripts.js +6 -0
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +20 -0
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +16 -0
- package/src/client/ssr/views/Cyberia404.js +328 -0
- package/src/client/ssr/views/CyberiaServerMetrics.js +1070 -0
- package/src/client/ssr/views/Maintenance.js +64 -0
- package/src/client/ssr/views/NoNetworkConnection.js +68 -0
- package/src/client/ssr/views/Test.js +199 -0
- package/src/client/sw/core.sw.js +274 -0
- package/src/client-builder/client-build-docs.js +493 -0
- package/src/client-builder/client-build-live.js +100 -0
- package/src/client-builder/client-build.js +1092 -0
- package/src/client-builder/client-dev-server.js +88 -0
- package/src/client-builder/client-formatted.js +170 -0
- package/src/client-builder/client-icons.js +108 -0
- package/src/client-builder/ssr.js +124 -0
- package/src/client.build.js +17 -0
- package/src/client.dev.js +21 -0
- package/src/db/DataBaseProvider.js +213 -0
- package/src/db/mariadb/MariaDB.js +72 -0
- package/src/db/mongo/MongoBootstrap.js +657 -0
- package/src/db/mongo/MongooseDB.js +199 -0
- package/src/grpc/cyberia/grpc-server.js +162 -0
- package/src/index.js +357 -0
- package/src/mailer/EmailRender.js +116 -0
- package/src/mailer/MailerProvider.js +213 -0
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +413 -0
- package/src/projects/cyberia/besu-genesis-generator.js +1630 -0
- package/src/projects/cyberia/catalog-cyberia.js +90 -0
- package/src/projects/cyberia/gemini-client.js +175 -0
- package/src/projects/cyberia/generate-saga.js +2137 -0
- package/src/projects/cyberia/hot-reload-trigger.js +163 -0
- package/src/projects/cyberia/instance-data.js +719 -0
- package/src/projects/cyberia/ipfs-client.js +599 -0
- package/src/projects/cyberia/map-preview-generator.js +304 -0
- package/src/projects/cyberia/object-layer.js +978 -0
- package/src/projects/cyberia/semantic-layer-generator-floor.js +319 -0
- package/src/projects/cyberia/semantic-layer-generator-resource.js +259 -0
- package/src/projects/cyberia/semantic-layer-generator-skin.js +1164 -0
- package/src/projects/cyberia/semantic-layer-generator.js +753 -0
- package/src/projects/cyberia/shape-generator.js +1060 -0
- package/src/projects/underpost/catalog-underpost.js +60 -0
- package/src/proxy.js +19 -0
- package/src/runtime/cyberia-client/Dockerfile +49 -0
- package/src/runtime/cyberia-client/Dockerfile.dev +75 -0
- package/src/runtime/cyberia-server/Dockerfile +43 -0
- package/src/runtime/cyberia-server/Dockerfile.dev +56 -0
- package/src/runtime/engine-cyberia/Dockerfile +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.dev +161 -0
- package/src/runtime/engine-cyberia/Dockerfile.test +165 -0
- package/src/runtime/engine-cyberia/compose.env +144 -0
- package/src/runtime/engine-cyberia/docker-compose.yml +434 -0
- package/src/runtime/engine-cyberia/ipfs/configure-ipfs.sh +13 -0
- package/src/runtime/engine-cyberia/mongodb/entrypoint.sh +76 -0
- package/src/runtime/engine-cyberia/nginx.conf +128 -0
- package/src/runtime/express/Dockerfile +45 -0
- package/src/runtime/express/Express.js +285 -0
- package/src/runtime/lampp/Dockerfile +62 -0
- package/src/runtime/lampp/Lampp.js +359 -0
- package/src/runtime/nginx/Nginx.js +250 -0
- package/src/runtime/wp/Dockerfile +62 -0
- package/src/runtime/wp/Wp.js +642 -0
- package/src/server/auth.js +713 -0
- package/src/server/backup.js +102 -0
- package/src/server/catalog.js +72 -0
- package/src/server/conf.js +2316 -0
- package/src/server/cron.js +476 -0
- package/src/server/crypto.js +210 -0
- package/src/server/data-query.js +461 -0
- package/src/server/dns.js +553 -0
- package/src/server/downloader.js +73 -0
- package/src/server/logger.js +229 -0
- package/src/server/middlewares.js +152 -0
- package/src/server/peer.js +75 -0
- package/src/server/process.js +299 -0
- package/src/server/proxy.js +139 -0
- package/src/server/runtime-status.js +252 -0
- package/src/server/runtime.js +183 -0
- package/src/server/start.js +272 -0
- package/src/server/tls.js +254 -0
- package/src/server/valkey.js +201 -0
- package/src/server.js +25 -0
- package/src/ws/IoInterface.js +129 -0
- package/src/ws/IoServer.js +68 -0
- package/src/ws/core/channels/core.ws.chat.js +68 -0
- package/src/ws/core/channels/core.ws.mailer.js +116 -0
- package/src/ws/core/channels/core.ws.stream.js +90 -0
- package/src/ws/core/core.ws.connection.js +41 -0
- package/src/ws/core/core.ws.emit.js +37 -0
- package/src/ws/core/core.ws.server.js +44 -0
- package/src/ws/default/channels/default.ws.main.js +57 -0
- package/src/ws/default/default.ws.connection.js +35 -0
- package/src/ws/default/default.ws.emit.js +14 -0
- package/src/ws/default/default.ws.server.js +39 -0
- package/test/api.test.js +53 -0
- package/test/crypto.test.js +117 -0
- package/test/cyberia-instance-conf-defaults.test.js +140 -0
- package/test/deploy-monitor.test.js +267 -0
- package/test/shape-generator.test.js +463 -0
- package/tsconfig.docs.json +15 -0
- package/typedoc.dd-cyberia.json +31 -0
- package/typedoc.json +31 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# Cyberia CLI
|
|
2
|
+
|
|
3
|
+
`cyberia` (`bin/cyberia.js`) is the Cyberia-specific extension layer on top of the `underpost` CLI. Use
|
|
4
|
+
it for MMO content and extension workflows; use `underpost` for the shared platform, deployment, and
|
|
5
|
+
infrastructure surface. Unrecognized commands pass through to `underpost`.
|
|
6
|
+
|
|
7
|
+
This page is intentionally command-first: keep it aligned with the shipped CLI surface and avoid
|
|
8
|
+
repeating architecture prose unless it changes command behavior.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
node bin/cyberia.js <command> [subcommand] [options]
|
|
12
|
+
# or, installed globally:
|
|
13
|
+
cyberia <command> [subcommand] [options]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
| Command | Purpose |
|
|
17
|
+
| -------------- | --------------------------------------------------------------------- |
|
|
18
|
+
| `ol` | object-layer content import, procedural generation, atlas/sprite work |
|
|
19
|
+
| `instance` | export / import / drop a Cyberia instance and its related documents |
|
|
20
|
+
| `client-hints` | per-instance presentation hints (palette, camera, status icons) |
|
|
21
|
+
| `chain` | Hyperledger Besu network + ERC-1155 `ObjectLayerToken` lifecycle |
|
|
22
|
+
| `run-workflow` | named operational scripts (seed defaults, build manifests/dashboard) |
|
|
23
|
+
|
|
24
|
+
Most data commands resolve the target DB from `DEFAULT_DEPLOY_ID` / `DEFAULT_DEPLOY_HOST` /
|
|
25
|
+
`DEFAULT_DEPLOY_PATH` in the `--env-path` file (default `./.env`). `--dev` forces the deploy's
|
|
26
|
+
`.env.development` (localhost IPFS, etc.); `--mongo-host` overrides the Mongo host.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## `cyberia ol` — object layer
|
|
31
|
+
|
|
32
|
+
Import PNG assets, generate procedural layers, build atlas sprite sheets, push to IPFS + MongoDB.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
cyberia ol [item-id] [options]
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
| Option | Description |
|
|
39
|
+
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
|
|
40
|
+
| `--import` | Import specific item-id(s), comma-separated, from the asset directory |
|
|
41
|
+
| `--import-types [types]` | Batch import by type (e.g. `skin,floors`) or `all` |
|
|
42
|
+
| `--generate` | Generate procedural layers from a semantic item-id (e.g. `floor-desert`) |
|
|
43
|
+
| `--count <n>` / `--density <0..1>` | Shape count multiplier (default `3`) / density (default `0.5`) |
|
|
44
|
+
| `--seed <seed>` | Deterministic seed for `--generate` (e.g. `fx-42`) |
|
|
45
|
+
| `--frame-index <n>` / `--frame-count <n>` | Start frame (default `0`) / frame count (default `1`) |
|
|
46
|
+
| `--to-atlas-sprite-sheet [dim]` | Build a consolidated atlas PNG for the item |
|
|
47
|
+
| `--show-frame [dir_frame]` | View one frame (e.g. `08_0`; default `08_0`) |
|
|
48
|
+
| `--show-atlas-sprite-sheet` | Display the atlas PNG for the item |
|
|
49
|
+
| `--drop` | Drop existing data before importing (or standalone) |
|
|
50
|
+
| `--client-public` / `--git-clean` | With `--drop`: also remove static asset folders / run clean |
|
|
51
|
+
| `--env-path <path>` · `--mongo-host <host>` · `--dev` · `--storage-file-path <path>` | env / DB / dev / filter overrides |
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Import specific items
|
|
55
|
+
cyberia ol hatchet,sword --import --env-path ./engine-private/conf/dd-cyberia/.env.development
|
|
56
|
+
|
|
57
|
+
# Batch import by type, or everything
|
|
58
|
+
cyberia ol --import-types skin,floors
|
|
59
|
+
cyberia ol --import-types all
|
|
60
|
+
|
|
61
|
+
# Procedural generation
|
|
62
|
+
cyberia ol floor-desert --generate --seed fx-42
|
|
63
|
+
cyberia ol floor-grass --generate --frame-count 4 --count 5 --density 0.7
|
|
64
|
+
|
|
65
|
+
# Atlas / inspect
|
|
66
|
+
cyberia ol hatchet --to-atlas-sprite-sheet
|
|
67
|
+
cyberia ol hatchet --show-frame 08_0
|
|
68
|
+
|
|
69
|
+
# Drop + re-import a single item, including static folders
|
|
70
|
+
cyberia ol hatchet --drop --client-public --import
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## `cyberia instance` — instance data
|
|
76
|
+
|
|
77
|
+
Export / import / drop a game instance and its related maps, entities, actions, quests, and object
|
|
78
|
+
layers in MongoDB.
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
cyberia instance [instance-code] [options]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
| Option | Description |
|
|
85
|
+
| ----------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
86
|
+
| `--export [path]` | Export instance and related documents to a backup directory |
|
|
87
|
+
| `--import [path]` | Import from a backup directory (upsert, preserves UUIDs) |
|
|
88
|
+
| `--conf` | With `--export`/`--import`: only `cyberia-instance.json` + `-conf.json` |
|
|
89
|
+
| `--drop` | Drop all documents associated with the instance code |
|
|
90
|
+
| `--env-path <path>` · `--mongo-host <host>` · `--dev` | env / DB / dev overrides |
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
cyberia instance FOREST --export ./backups/FOREST
|
|
94
|
+
cyberia instance FOREST --import ./backups/FOREST
|
|
95
|
+
cyberia instance FOREST --drop
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## `cyberia client-hints` — presentation hints
|
|
101
|
+
|
|
102
|
+
Manage the per-instance `CyberiaClientHints` document (palette, camera, status icons, interpolation).
|
|
103
|
+
These are presentation overrides only — never an instance or server identifier.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
cyberia client-hints [instance-code] [options]
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
| Option | Description |
|
|
110
|
+
| ----------------------------------------------------- | ----------------------------------------------- |
|
|
111
|
+
| `--seed-defaults` | Upsert canonical presentation-hint defaults |
|
|
112
|
+
| `--export [path]` | Export the hints document to JSON |
|
|
113
|
+
| `--import [path]` | Upsert hints from a JSON file |
|
|
114
|
+
| `--drop` | Remove the hints document for the instance code |
|
|
115
|
+
| `--env-path <path>` · `--mongo-host <host>` · `--dev` | env / DB / dev overrides |
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
cyberia client-hints cyberia-main --seed-defaults
|
|
119
|
+
cyberia client-hints cyberia-main --export ./client-hints-cyberia-main.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## `cyberia chain` — Besu + ObjectLayerToken
|
|
125
|
+
|
|
126
|
+
Hyperledger Besu IBFT2 network and ERC-1155 `ObjectLayerToken` (CKY) lifecycle.
|
|
127
|
+
|
|
128
|
+
### Network
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
cyberia chain deploy [options] # deploy IBFT2 network to Kubernetes
|
|
132
|
+
cyberia chain generate-manifests [opts] # generate manifests without deploying (same options)
|
|
133
|
+
cyberia chain remove [--namespace besu] [--clean-keys] [--clean-manifests]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Key `deploy` options: `--validators <n>` (4) · `--chain-id <id>` (777771) · `--block-period <s>` (5) ·
|
|
137
|
+
`--epoch-length <n>` (30000) · `--besu-image <img>` · `--node-port-rpc <port>` (30545) ·
|
|
138
|
+
`--node-port-ws <port>` (30546) · `--namespace <ns>` (besu) · `--pull-image` · `--skip-generate` ·
|
|
139
|
+
`--skip-wait`.
|
|
140
|
+
|
|
141
|
+
### Contract
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
cyberia chain compile
|
|
145
|
+
cyberia chain test
|
|
146
|
+
cyberia chain deploy-contract --network besu-k8s # deploys ObjectLayerToken, mints initial CKY
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Keys
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
cyberia chain key-gen # new secp256k1 deployer key
|
|
153
|
+
cyberia chain set-coinbase --private-key 0xYOUR_KEY
|
|
154
|
+
cyberia chain set-coinbase --from-file ./engine-private/eth-networks/besu/<address>.key.json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Tokens
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
cyberia chain register <item-id> --from-db --supply 1 # 1 = NFT, >1 = semi-fungible
|
|
161
|
+
cyberia chain batch-register --from-db --items '[{"itemId":"wood","supply":500000}]'
|
|
162
|
+
cyberia chain mint --token-id 0 --to 0xABCD... --amount 1000000000000000000000
|
|
163
|
+
cyberia chain transfer --from 0x... --to 0x... --token-id 0 --amount 1000
|
|
164
|
+
cyberia chain burn --token-id 0 --address 0x... --amount 500
|
|
165
|
+
cyberia chain balance --address 0xABCD... --token-id 0
|
|
166
|
+
cyberia chain status [--network besu-k8s] # chain id, block, supply, pause state
|
|
167
|
+
cyberia chain pause [--network besu-k8s] # owner-only transfer freeze / resume
|
|
168
|
+
cyberia chain unpause [--network besu-k8s]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
`--from-db` resolves the canonical IPFS CID from MongoDB (recommended over manual `--metadata-cid`).
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## `cyberia run-workflow` — operational scripts
|
|
176
|
+
|
|
177
|
+
Named scripts from the `scripts/` directory for seeding and build maintenance.
|
|
178
|
+
|
|
179
|
+
| Subcommand | Description |
|
|
180
|
+
| ---------------------------- | ----------------------------------------------------------------------------------- |
|
|
181
|
+
| `import-default-items` | Import default object layers, skills, dialogues, actions/quests, client-hints to Mongo |
|
|
182
|
+
| `seed-skills` | Upsert `DefaultSkillConfig` into the `cyberia-skill` collection (full records) |
|
|
183
|
+
| `seed-dialogues` | Upsert `DefaultCyberiaDialogues` into the `cyberia-dialogue` collection |
|
|
184
|
+
| `generate-semantic-examples` | Generate one procedural example per registered semantic prefix |
|
|
185
|
+
| `build-manifest` | Build K8s Deployment + Service manifests for mmo-client / mmo-server |
|
|
186
|
+
| `build-server-dashboard` | Build the static cyberia-server metrics/status dashboard (`--dev`, `--output-path`) |
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
cyberia run-workflow import-default-items --env-path ./engine-private/conf/dd-cyberia/.env.development
|
|
190
|
+
cyberia run-workflow seed-skills
|
|
191
|
+
cyberia run-workflow generate-semantic-examples
|
|
192
|
+
cyberia run-workflow build-manifest
|
|
193
|
+
cyberia run-workflow build-server-dashboard
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Operational rules
|
|
199
|
+
|
|
200
|
+
- Preserve public CLI entrypoints and command names unless a change is intentionally breaking.
|
|
201
|
+
- Reuse existing helpers for config loading, env resolution, path normalization, and deploy selection.
|
|
202
|
+
- Prefer one source of truth for generated manifests, deploy IDs, runtime choice, and asset metadata.
|
|
203
|
+
- Treat generated artifacts (atlases, manifests, dashboard HTML) as outputs only; never hand-edit them.
|
|
204
|
+
- `engine-private/` is a private external dependency; never assume its contents exist locally.
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://www.cyberiaonline.com/assets/splash/apple-touch-icon-precomposed.png" alt="CYBERIA online"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<div align="center">
|
|
6
|
+
|
|
7
|
+
<h1>cyberia client</h1>
|
|
8
|
+
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
**Path:** `cyberia-client/` · **Language:** C11/GNU11 → WebAssembly (Emscripten) · **Role:** presentation runtime for Cyberia
|
|
12
|
+
|
|
13
|
+
`cyberia-client` is the rendering and interactive runtime for the Cyberia MMO extension on Underpost Platform. It captures input, predicts the local player, reconciles against authoritative snapshots, interpolates remote entities, and renders the world. It owns the render policy locally.
|
|
14
|
+
|
|
15
|
+
It is **not** a world-simulation authority. The authoritative simulation runs on `cyberia-server`. Persistent content and asset metadata come from `engine-cyberia` via REST.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Operating model
|
|
20
|
+
|
|
21
|
+
Three independent processes, non-overlapping roles. The ecosystem is playable only when all three are running and healthy at the same time.
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
engine-cyberia cyberia-server cyberia-client
|
|
25
|
+
content authority simulation authority presentation runtime
|
|
26
|
+
^ REST | WebSocket binary
|
|
27
|
+
| atlases, asset | snapshots (server -> client)
|
|
28
|
+
| metadata, optional | input cmds (client -> server)
|
|
29
|
+
| client hints v
|
|
30
|
+
`---------------- Browser tab: prediction, reconciliation, interpolation, render
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- Each service owns its own monitor and reconnector.
|
|
34
|
+
- The client reconnects to `cyberia-server` over WebSocket and fetches content from `engine-cyberia` over REST.
|
|
35
|
+
- If any of the three services is unhealthy, the game moves to standby until all three recover.
|
|
36
|
+
|
|
37
|
+
The client speaks two transports:
|
|
38
|
+
|
|
39
|
+
- **WebSocket binary** to `cyberia-server` for snapshots and input commands
|
|
40
|
+
- **REST** to `engine-cyberia` for atlas frames, asset blobs, and optional client-hints overrides
|
|
41
|
+
|
|
42
|
+
Asset distribution flows through Underpost Platform's static and PWA pipeline.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Render loop
|
|
47
|
+
|
|
48
|
+
The render loop runs at vsync. Tick simulation is decoupled from render frames via a fixed-timestep accumulator. Step ordering inside one render frame:
|
|
49
|
+
|
|
50
|
+
1. **Optional client hints poll** — advance the asynchronous hints fetch state machine.
|
|
51
|
+
2. **Input capture** — drain raw OS events.
|
|
52
|
+
3. **Input dispatch** — UI hit-test → build typed input command (`kind`, `clientTick`, `sequence`, payload) → apply to prediction → send on the wire.
|
|
53
|
+
4. **Reconciliation** — apply latest snapshot's `lastAcked`: drop acknowledged input commands from the replay buffer; rewind predicted self to authoritative position; replay unacked input commands.
|
|
54
|
+
5. **Fixed-timestep prediction** — while accumulator ≥ `tickDuration`, advance prediction one tick.
|
|
55
|
+
6. **Interpolation** — compute remote-entity view positions at `renderTick = serverTickEstimate − INTERP_TICKS`.
|
|
56
|
+
7. **Render** — read view models; never mutate world state.
|
|
57
|
+
|
|
58
|
+
Render frame rate is independent of simulation tick rate. The fixed-timestep accumulator ensures the predicted simulation advances at the authoritative `tickRate` regardless of FPS.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Module map
|
|
63
|
+
|
|
64
|
+
Directional dependency: from outermost (UI / render) inward toward `domain/`. Nothing in `domain/` imports outward.
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
src/
|
|
68
|
+
domain/
|
|
69
|
+
tick.h tick rate constants, monotonic types
|
|
70
|
+
presentation_runtime.{c,h} sole owner of presentation: async fetch of
|
|
71
|
+
/api/cyberia-client-hints/:CYBERIA_CLIENT_HINTS_CODE,
|
|
72
|
+
palette/status-icon/camera accessors, tiny
|
|
73
|
+
inline bootstrap fallback
|
|
74
|
+
input/
|
|
75
|
+
input_command.{c,h} typed InputCommand factory; sequence allocation
|
|
76
|
+
prediction/
|
|
77
|
+
prediction.{c,h} predicted self position; replay buffer; reconcile
|
|
78
|
+
interpolation/
|
|
79
|
+
interpolation.{c,h} remote entity view positions at renderTick
|
|
80
|
+
network/
|
|
81
|
+
session.{c,h} last server tick, last acked sequence, tick estimate
|
|
82
|
+
client.{c,h} WebSocket lifecycle + binary I/O
|
|
83
|
+
socket.{c,h} Emscripten WebSocket bridge
|
|
84
|
+
ui/ modals, HUD, inventory bar, FCT, nameplates
|
|
85
|
+
game_state.{c,h} world state mirror (gameplay subset only)
|
|
86
|
+
binary_aoi_decoder.{c,h} server snapshot parser
|
|
87
|
+
game_render.{c,h}, render.{c,h} render pipeline
|
|
88
|
+
main.c entry point + render loop
|
|
89
|
+
js/services.{js,c,h} REST fetch bridge (atlas, ui-icons, client-hints)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
| Owner | Owns | Reads | Writes |
|
|
93
|
+
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
94
|
+
| `domain/presentation_runtime` | the entire presentation surface (palette, entity colour keys, status icons, camera, cell, interpolation). Inline bootstrap fallback while the fetch is in flight. | JSON response from `/api/cyberia-client-hints` | own table + one-shot hydration of `g_game_state.cell_size`, `.interpolation_ms`, `.camera.zoom` |
|
|
95
|
+
| `input/input_command` | typed InputCommand factory | session for tick + sequence | — |
|
|
96
|
+
| `prediction/` | predicted self position, input replay buffer | snapshot self + session ack | predicted self |
|
|
97
|
+
| `interpolation/` | remote entity `interp_pos` | snapshot history | remote `interp_pos` only |
|
|
98
|
+
| `network/session` | last server tick, last acked sequence | snapshot header | session singletons |
|
|
99
|
+
| `binary_aoi_decoder` | wire parser | binary frames | `game_state` + session + prediction (via callback) |
|
|
100
|
+
| `game_state` | gameplay world mirror | — | — |
|
|
101
|
+
| `render/`, `ui/` | rendering | view models | screen |
|
|
102
|
+
|
|
103
|
+
`game_state` holds only the gameplay subset of world state (entities, positions, life, AOI, equipment, frozen flag, coins). It does not carry palette state, status-icon visuals, or any other presentation field.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Presentation ownership
|
|
108
|
+
|
|
109
|
+
The client owns its render policy. The authoritative server holds no presentation state.
|
|
110
|
+
|
|
111
|
+
Three layers, strictly inward-dependent:
|
|
112
|
+
|
|
113
|
+
1. **`domain/presentation_runtime.{c,h}`** — sole owner of every presentation value. Fires a single asynchronous GET against `/api/cyberia-client-hints/:CYBERIA_CLIENT_HINTS_CODE` at startup, polled once per render frame. When the response settles, parses palette, entity colour keys, status-icon visuals, and camera/cell tunings into a process-local table and writes a one-shot hydration into `g_game_state` (cell_size, interpolation_ms, camera.zoom). The C client carries NO compile-time palette or status table — only a tiny inline neutral-grey bootstrap so the splash screen has something to draw while the fetch is in flight. The canonical schema for the response lives at engine-cyberia's `src/client/components/cyberia/SharedDefaultsCyberia.js`.
|
|
114
|
+
2. **Renderers** — call `presentation_runtime_palette("KEY")`, `presentation_runtime_status_icon(u8)`, `presentation_runtime_status_border(u8)`, `presentation_runtime_entity_fallback_color(entity_type)` at each use site.
|
|
115
|
+
|
|
116
|
+
What lives in this layer:
|
|
117
|
+
|
|
118
|
+
- Named palette (colors).
|
|
119
|
+
- Per-entity-type fallback color keys.
|
|
120
|
+
- Status-icon visual table (icon stem + border color per numeric ID).
|
|
121
|
+
- Camera smoothing / zoom defaults.
|
|
122
|
+
- Interpolation window.
|
|
123
|
+
- Dev-overlay flag.
|
|
124
|
+
- Viewport screen factors.
|
|
125
|
+
|
|
126
|
+
What does **not** travel on the WebSocket init or AOI streams:
|
|
127
|
+
|
|
128
|
+
- Palette.
|
|
129
|
+
- Camera knobs.
|
|
130
|
+
- Dev-overlay flag.
|
|
131
|
+
- Interpolation window.
|
|
132
|
+
- Status-icon visuals.
|
|
133
|
+
- Per-entity-type color keys.
|
|
134
|
+
|
|
135
|
+
The numeric status-icon u8 still rides on the AOI wire — that is the protocol-level half. The icon stem and border color are presentation and are resolved entirely on the client.
|
|
136
|
+
|
|
137
|
+
### Optional client hints
|
|
138
|
+
|
|
139
|
+
`GET /api/cyberia-client-hints/:instanceCode` (engine-cyberia REST, **not** cyberia-server) returns a JSON document mirroring the structure of the compile-time defaults. The client is required to function with no successful call to this endpoint:
|
|
140
|
+
|
|
141
|
+
- 200 with `{ palette, entityColorKeys, statusIcons, cameraSmoothing, cameraZoom, defaultWidthScreenFactor, defaultHeightScreenFactor, interpolationMs, devUi }` — overrides applied on top of defaults.
|
|
142
|
+
- 404 if the instance has no overrides — defaults are used.
|
|
143
|
+
- Network error — defaults are used.
|
|
144
|
+
|
|
145
|
+
No authentication; presentation hints are not secret. The Go authoritative server never calls this endpoint.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Tick-aware components
|
|
150
|
+
|
|
151
|
+
### Session
|
|
152
|
+
|
|
153
|
+
`network/session.{c,h}` tracks per-connection tick state:
|
|
154
|
+
|
|
155
|
+
- `last_server_tick` — highest snapshot tick observed.
|
|
156
|
+
- `last_acked_input_sequence` — highest sequence the server has applied for this client; echoed in every snapshot header.
|
|
157
|
+
- `next_input_sequence` — monotonic counter for outgoing input commands.
|
|
158
|
+
- `server_tick_estimate` — extrapolation of last server tick by elapsed wall time, used to stamp outgoing input commands and to compute `renderTick`.
|
|
159
|
+
|
|
160
|
+
### Prediction
|
|
161
|
+
|
|
162
|
+
`prediction/prediction.{c,h}` owns the predicted self position. It is the only writer of the predicted state. Internally it tracks **two** positions: the discrete per-tick `predicted_pos` (where the simulation says the player is) and the continuous render-frame `display_pos` (what the renderer reads). The renderer never sees the discrete value.
|
|
163
|
+
|
|
164
|
+
- `prediction_apply(cmd)` — optimistic local apply of an input command + push onto replay buffer.
|
|
165
|
+
- `prediction_step(dt)` — fixed-timestep advance, called by the accumulator. Mutates `predicted_pos` only.
|
|
166
|
+
- `prediction_reconcile()` — on snapshot arrival: drop acknowledged inputs, rewind self to authoritative position, replay unacked inputs. Mutates `predicted_pos` only.
|
|
167
|
+
- `prediction_display_step(frame_dt)` — per-render-frame exponential lerp of `display_pos` toward `predicted_pos`. This is the layer that absorbs reconcile snaps and sim-tick stepping so the visible main player moves continuously.
|
|
168
|
+
- `prediction_self_position()` — render-time accessor; returns the smoothed `display_pos`.
|
|
169
|
+
|
|
170
|
+
### Interpolation
|
|
171
|
+
|
|
172
|
+
`interpolation/interpolation.{c,h}` owns remote-entity render-time positions. It is the only writer of remote `interp_pos`. It never touches the local player (prediction owns that). Sampling happens at `renderTick = serverTickEstimate − INTERP_TICKS`.
|
|
173
|
+
|
|
174
|
+
### Input command pipeline
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
mouse / touch / keyboard
|
|
178
|
+
│
|
|
179
|
+
▼
|
|
180
|
+
input/input_capture
|
|
181
|
+
│
|
|
182
|
+
▼
|
|
183
|
+
UI hit-test cascade ──► modal/inventory/HUD consumed?
|
|
184
|
+
│ no
|
|
185
|
+
▼
|
|
186
|
+
input_command_build_* stamps client_tick + sequence
|
|
187
|
+
│
|
|
188
|
+
▼
|
|
189
|
+
prediction_apply optimistic local apply
|
|
190
|
+
│
|
|
191
|
+
▼
|
|
192
|
+
uplink send WebSocket binary frame
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
`InputCommand.Sequence` is allocated by `session_next_input_sequence`. Monotonic, never reused. The server echoes the highest applied sequence in every snapshot header; the prediction module drops acked commands from its replay buffer on reconciliation.
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Binary AOI snapshot format
|
|
200
|
+
|
|
201
|
+
The client decodes server-pushed AOI frames. Header (little-endian, 11 bytes for `0x01`/`0x03`):
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
[0] u8 msgType 0x01 aoi_update | 0x03 full_aoi
|
|
205
|
+
[1..4] u32 tick simulation tick at which the snapshot was produced
|
|
206
|
+
[5..8] u32 lastAcked highest InputCommand.Sequence applied for this client
|
|
207
|
+
[9..10] u16 entityCount entity blocks that follow
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
After parsing the header, the decoder invokes `session_on_snapshot(tick, lastAcked)` and then `prediction_reconcile()` so the predicted self stays consistent with the just-arrived authoritative state.
|
|
211
|
+
|
|
212
|
+
Other message types — init data (0x02), FCT (0x04), ItemFCT (0x05) — carry their own headers and are not part of the per-tick replication stream.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## REST fetches (engine-cyberia)
|
|
217
|
+
|
|
218
|
+
The client speaks REST directly to engine-cyberia for content. None of these calls go through cyberia-server.
|
|
219
|
+
|
|
220
|
+
| Endpoint | Purpose |
|
|
221
|
+
| -------------------------------------------------------------- | ------------------------------------------ |
|
|
222
|
+
| `GET /api/atlas-sprite-sheet/metadata/:itemKey` | Frame layout JSON for a sprite atlas |
|
|
223
|
+
| `GET /api/atlas-sprite-sheet/blob/:itemKey` | Atlas PNG |
|
|
224
|
+
| `GET /api/object-layer/:itemId` | ObjectLayer JSON metadata |
|
|
225
|
+
| `GET /api/cyberia-dialogue/code/default-:itemId` | Dialogue lines for an NPC |
|
|
226
|
+
| `GET /assets/ui-icons/:iconId.png` | Status-bar icons |
|
|
227
|
+
| `GET /api/cyberia-client-hints/:instanceCode` | Optional presentation overrides |
|
|
228
|
+
| `GET /api/cyberia-instance/instance-map/:instanceCode/static` | Instance Map graph (nodes, edges, POIs) |
|
|
229
|
+
| `GET /api/cyberia-instance/instance-map/:instanceCode/dynamic` | Instance Map provider activity (~1/s poll) |
|
|
230
|
+
|
|
231
|
+
All requests are CORS-simple GETs (no preflight) and cacheable. None require credentials.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Instance Map
|
|
236
|
+
|
|
237
|
+
The Instance Map is a strategic overlay, not a minimap. It visualises the instance as a packed, gapless grid of map cards with animated portal edges, for navigation and planning. It never reproduces the gameplay viewport.
|
|
238
|
+
|
|
239
|
+
One integrated widget with two modes, split across two modules:
|
|
240
|
+
|
|
241
|
+
- **Toolbar** (`ui/toolbar`) — the top HUD strip: the compact map readout left-aligned, and the right-hand toggle row `[quest][map][fullscreen]`. The quest button shows/hides the Quest Journal (hidden by default); the **Map** toggle (ui-icon `map`) morphs the container to the full screen with an eased transition and retracts it the same way on close, swapping to a close icon while expanded.
|
|
242
|
+
- **Container** (`ui/modal_map`) — compact mode is the always-on readout (map code, position, fps) hosted inside the toolbar; expanded mode is the full-screen morph target.
|
|
243
|
+
- **Content** (`ui/modal_instance_map`) — renders the Instance Map inside the container: a non-blocking translucent full-screen panel (the world keeps rendering behind it).
|
|
244
|
+
|
|
245
|
+
Strict independence from the gameplay renderer:
|
|
246
|
+
|
|
247
|
+
| Concern | Owner |
|
|
248
|
+
| ---------- | -------------------------------------------------------------------------------------- |
|
|
249
|
+
| Graph data | `ui/instance_map_data` — engine-cyberia REST only, never the AOI stream |
|
|
250
|
+
| Camera | own pan/zoom with smooth exponential interpolation (drag pan, wheel zoom, pinch zoom) |
|
|
251
|
+
| Layout | deterministic row-major map-card grid with quarter-turn rotation, computed client-side |
|
|
252
|
+
| Selection | tap a node → contextual panel (name, quest/action provider counts, portal links) |
|
|
253
|
+
|
|
254
|
+
Data lifecycle:
|
|
255
|
+
|
|
256
|
+
1. Opening the overlay fetches the **static** payload once: graph nodes, portal edges, and authored `presencePois` carrying map-cell presence status, `sumStatsLimit`-capped baseline ObjectLayer stat sums, and static action/quest capability membership. The instance code arrives in the simulation server's `metadata` message.
|
|
257
|
+
2. While open, the client polls the **dynamic** endpoint (~1/s, `?playerId=`) only for per-player capability activity: `acceptable` / `active` quests and active actions.
|
|
258
|
+
3. Closing the overlay stops polling immediately; late responses are discarded.
|
|
259
|
+
|
|
260
|
+
Live player position never travels through this API — engine-cyberia holds no simulation state. The overlay marks the player's node (and cell fraction within it) from the client's own predicted position, refreshed every frame.
|
|
261
|
+
|
|
262
|
+
At normal zoom, POIs render only their authored presence-status icon. At inspection zoom, static action and quest capability icons appear with the authored baseline stat sum; dynamic activity only changes capability emphasis. The local player's live presence and authoritative stats sum remain client-side. Decorative map content without a presence status is not rendered as a POI.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Build and run
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
cd cyberia-client
|
|
270
|
+
|
|
271
|
+
# Development build (defaults: BUILD_MODE=DEBUG, localhost URLs)
|
|
272
|
+
make -f Web.mk clean && make -f Web.mk all
|
|
273
|
+
|
|
274
|
+
# Release build — pass the production URLs explicitly (see note below)
|
|
275
|
+
make -f Web.mk clean && make -f Web.mk all BUILD_MODE=RELEASE \
|
|
276
|
+
WS_URL=wss://server.cyberiaonline.com/ws \
|
|
277
|
+
API_BASE=https://www.cyberiaonline.com
|
|
278
|
+
|
|
279
|
+
# Build + serve locally on dev port :8082 (DEBUG, localhost)
|
|
280
|
+
./dev-server.sh # or: ./dev-server.sh <port>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
`WS_URL` and `API_BASE` are passed straight through to the compiler — see
|
|
284
|
+
[Compile-time configuration](#compile-time-configuration). When omitted they
|
|
285
|
+
default to `localhost`, so **production build pipelines must pass real URLs**.
|
|
286
|
+
|
|
287
|
+
The build is part of the Underpost Platform static + PWA pipeline; production deploys go through `underpost client` and `underpost deploy`.
|
|
288
|
+
|
|
289
|
+
### Output
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
bin/
|
|
293
|
+
index.html — Emscripten HTML container (from shell.html template)
|
|
294
|
+
index.wasm — Compiled WebAssembly module
|
|
295
|
+
index.js — Emscripten JS glue
|
|
296
|
+
index.data — Preloaded data bundle
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Compile-time configuration
|
|
302
|
+
|
|
303
|
+
### Server URLs (build arguments)
|
|
304
|
+
|
|
305
|
+
`WS_URL` and `API_BASE` are `make` arguments baked into the WASM as
|
|
306
|
+
`-DWS_URL_OVERRIDE` / `-DAPI_BASE_URL_OVERRIDE`. There is **no** RELEASE/DEBUG URL
|
|
307
|
+
switch — both default to `localhost` regardless of `BUILD_MODE`:
|
|
308
|
+
|
|
309
|
+
| make argument | Default | Baked macro |
|
|
310
|
+
| ------------- | ------------------------ | ----------------------- |
|
|
311
|
+
| `WS_URL` | `ws://localhost:8081/ws` | `WS_URL_OVERRIDE` |
|
|
312
|
+
| `API_BASE` | `http://localhost:4005` | `API_BASE_URL_OVERRIDE` |
|
|
313
|
+
|
|
314
|
+
> **Production pipelines must pass the URLs.** `BUILD_MODE=RELEASE` alone still
|
|
315
|
+
> yields `localhost`. Any release build — the Docker image build, CI, manual
|
|
316
|
+
> release — must pass `WS_URL=wss://… API_BASE=https://…` as make arguments
|
|
317
|
+
> (or Docker build-args wired through to `make`), or the client ships pointing
|
|
318
|
+
> at localhost. If unset, `src/config.h` falls back to bare `"ws://"` /
|
|
319
|
+
> `"https://"` stubs.
|
|
320
|
+
|
|
321
|
+
### Constants (`src/config.h`)
|
|
322
|
+
|
|
323
|
+
| Constant | Default | Description |
|
|
324
|
+
| --------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
325
|
+
| `CYBERIA_CLIENT_HINTS_CODE` | `cyberia-main` | Lookup key for the optional client-hints fetch (presentation override key — never an instance/server identifier) |
|
|
326
|
+
| `MAX_TEXTURE_CACHE_SIZE` | `512` | Atlas texture LRU cap |
|
|
327
|
+
| `MAX_LAYER_CACHE_SIZE` | `256` | ObjectLayer metadata LRU cap |
|
|
328
|
+
| `MAX_ATLAS_CACHE_SIZE` | `256` | Atlas metadata LRU cap |
|
|
329
|
+
| `DEFAULT_FRAME_DURATION_MS` | `100` | Default animation frame duration |
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Persistent storage
|
|
334
|
+
|
|
335
|
+
`serial.c` uses Emscripten's IDBFS (IndexedDB File System) at `/persistent/` for:
|
|
336
|
+
|
|
337
|
+
- Player authentication token (EIP-712 signature).
|
|
338
|
+
- Local game settings (audio volume, key bindings).
|
|
339
|
+
- Cached ObjectLayer metadata (session warm-up cache).
|
|
340
|
+
|
|
341
|
+
No game state is persisted client-side; the authoritative server is the source of truth.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# **Cyberia Lore — The Frontier of Hyperspace**
|
|
2
|
+
|
|
3
|
+
### **Setting: Year 2520+**
|
|
4
|
+
|
|
5
|
+
Earth is a ruined monument to humanity’s first age. Civilization now stretches across shattered continents, orbital fortresses, lunar citadels, asteroid enclaves, and distant colonies. From the ashes of collapse rose **Cyberia**: a living frontier where the physical world and **Hyperspace** — persistent, evolving Instances — have fused into one unstable reality.
|
|
6
|
+
|
|
7
|
+
The boundary between flesh and code is porous. Relics, memories, wars, and identities bleed between layers, birthing opportunity, conflict, and legend.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
### **The Historical Fracture**
|
|
12
|
+
|
|
13
|
+
The **Pacific Cataclysm** (2045) broke the old world through nuclear fire, ecological collapse, engineered plagues, and runaway experiments. As Earth turned hostile, humanity fled into space and deeper into digital realms. What began as simulations evolved into enduring **Instances**: living archives, simulated empires, memory-cities, and battlegrounds where time and identity bend.
|
|
14
|
+
|
|
15
|
+
Two new peoples emerged alongside baseline humans:
|
|
16
|
+
|
|
17
|
+
- **Mutagens**: Radiation- and bio-altered survivors, resilient yet often outcast.
|
|
18
|
+
- **Synthetics**: Artificial minds who claimed autonomy and personhood.
|
|
19
|
+
|
|
20
|
+
Together they navigate Cyberia’s layered existence.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
### **The Dual Nature of Cyberia**
|
|
25
|
+
|
|
26
|
+
Cyberia exists on two overlapping, interdependent layers:
|
|
27
|
+
|
|
28
|
+
- **Physical Layer**: Brutal, resource-scarce reality of fleets, colonies, infrastructure, and raw power. Slow, unforgiving, ruled by logistics and force.
|
|
29
|
+
- **Hyperspace Layer**: A vast web of persistent Instances — fluid realms of data, memory, and simulated worlds where geography, time, and self are malleable.
|
|
30
|
+
|
|
31
|
+
Neural links, relics, breaches, and megastructures constantly bridge the layers. Actions in one reshape the other. Even destruction follows this duality.
|
|
32
|
+
|
|
33
|
+
When an entity suffers catastrophic damage, its manifestation does not truly cease to exist. Instead, it undergoes **Fragmentation**: the coherent structure that defines its presence within the current layer collapses into unstable fragments.
|
|
34
|
+
|
|
35
|
+
During the **Fragmented State**, the entity remains present only as a cluster of residual fragments suspended at the point of collapse. These fragments represent an incomplete manifestation — neither corpse nor spirit — allowing limited awareness and interface access while the structure attempts to reintegrate or reconstruct across layers.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
### **The Three Great Confederations**
|
|
40
|
+
|
|
41
|
+
#### **Zenith Empire (Red)**
|
|
42
|
+
|
|
43
|
+
Militaristic and hierarchical. Masters of the **physical layer** — fleets, fortresses, and territorial control.
|
|
44
|
+
**Core belief**: Order must be imposed through strength.
|
|
45
|
+
**Strengths**: Discipline, industrial might, projection of force.
|
|
46
|
+
**Weaknesses**: Rigidity, prejudice against Mutagens, ecological disregard, and dependency on Nova.
|
|
47
|
+
**Internal divide**: Iron Legion (expansion) vs. Aether Council (technocratic control).
|
|
48
|
+
**Relations**: Sees Atlas as chaotic; relies on Nova while resenting it.
|
|
49
|
+
|
|
50
|
+
#### **Atlas Confederation (Yellow)**
|
|
51
|
+
|
|
52
|
+
Decentralized network of frontier settlements, Mutagen clans, Synthetics, scavengers, hackers, and nomads. Thrives in the unstable **spaces between** layers.
|
|
53
|
+
**Core strengths**: Adaptation, improvisation, asymmetric warfare, infiltration.
|
|
54
|
+
**Weakness**: Fragmentation and internal division.
|
|
55
|
+
**Internal divide**: Harmony Enclaves (coexistence) vs. Void Nomads (radical autonomy).
|
|
56
|
+
**Relations**: Sabotages Nova, resists Zenith’s rigidity, and dominates black markets and grey zones.
|
|
57
|
+
|
|
58
|
+
#### **Nova Republic (Blue)**
|
|
59
|
+
|
|
60
|
+
Technocratic, intelligence-driven civilization that dominates **Hyperspace**. Obsessed with optimization, prediction, cognitive architecture, and transcendence.
|
|
61
|
+
**Core strength**: Information control, surveillance, predictive systems, and deep integration into digital realms.
|
|
62
|
+
**Weakness**: Over-integration with Instances has caused gradual erosion of unified identity among its citizens, leading to internal factionalism and decision paralysis.
|
|
63
|
+
**Internal split**: Singularity Directive (machine supremacy) vs. Transcendent Conclave (hybrid flesh-machine future).
|
|
64
|
+
**Relations**: Provides critical systems to Zenith; faces constant subversion from Atlas hackers. Sees itself as the guiding intelligence of civilization.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### **The Balance of Power**
|
|
69
|
+
|
|
70
|
+
The three factions maintain a tense, interdependent equilibrium. Zenith holds physical dominance. Nova commands information and digital architecture. Atlas exploits the gaps, thriving on chaos and mobility. They war, trade, ally, and betray — yet none can achieve total control. The frontier is too layered, unpredictable, and alive.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
### **Your Role as Player**
|
|
75
|
+
|
|
76
|
+
You are no chosen one — merely a survivor who has endured long enough to matter.
|
|
77
|
+
|
|
78
|
+
You might be a soldier, relic hunter, Instance diver, smuggler, hacker, mercenary, diplomat, or rogue Synthetic/Mutagen. You may serve one faction, several, or none at all.
|
|
79
|
+
|
|
80
|
+
Your power lies in what you **carry, recover, build, protect, steal, or remember**. In Cyberia, the real war is fought over meaning, memory, and access across layers of reality.
|
|
81
|
+
|
|
82
|
+
Even in the **Fragmented State** — that liminal moment between destruction and reintegration — the prepared mind can still observe, plan, and communicate. Every fragmentation is another lesson in the fragile nature of existence.
|
|
83
|
+
|
|
84
|
+
**Welcome to Cyberia** — the Hyper-Reality Frontier. A broken future where physical and digital realities collide, ancient scars birth new empires, and your story remains unwritten.
|