Giter Club home page Giter Club logo

vircadia-web's Introduction

Vircadia Web

Alt

⚠️ Early Developer Alpha ⚠️

The Vircadia web client is in Early Developer Alpha! There will be unimplemented features and bugs.

Please take a moment to check the list of issues and file an issue if one does not exist already. If you are able, please try to implement a feature or fix a bug yourself! The metaverse appreciates your assistance. 🙏

Vircadia Web (codename Aether) is an open source metaverse web client for accessing virtual worlds.

Compatibility

This interface is tested and validated for the following browser platforms:

  • Mobile, Tablet, Desktop
    • Chromium (Chrome, Brave, Edge etc.)
    • Webkit (Safari)
    • Gecko (Firefox)
  • Native
    • Windows 10+
    • MacOS Monterey
    • Linux (Ubuntu 20+)
  • XR on Android (COMING SOON!)
    • Quest 2/Quest Pro
    • Pico 4
    • Vive Focus 3

Project Setup

Prerequisites

Vircadia Web has been tested to work with:

  • Node versions 16 - 20
  • NPM versions 8.19 - 10.1

(Use of Node versions other than stated is untested and may not work correctly.)

Clone the Repo

First, clone the repository to your machine with Git. Then, open a terminal in that directory.

Vircadia Web relies on the Vircadia Assets submodule, so you must pull recursively.

git clone --recursive https://github.com/vircadia/vircadia-web.git

Install the dependencies

npm i

or

yarn

If you want to use a local copy of the Vircadia Web SDK, from a directory beside the web app's:

npm run install-local-web-sdk

Run, Compile, and Test

Customization Options

The web client's settings such as branding, default servers, and more, can be customized directly from environment variables which you must set at or prior to build/compile time.

See Configuring quasar.conf.js for a full set of customization options.

Start the app in development mode

Development mode benefits from features like hot-code reloading, error reporting, etc.

npm run dev

or

yarn run dev

Lint the files

npm run lint

And fix lint issues automatically with

npm run lint -- --fix

Run tests

npm run test

Build the app for production

npm run build

Desktop

The web client can also be compiled to a standalone desktop app. When doing so, the VRCA_DESKTOP_MODE environment variable must be set to either dev or build.

After installing the base Node dependencies with npm i, you will also need to install Tauri's Rust dependencies.

To run the desktop wrapper in development mode:

npm run dev-desktop

To build the desktop executable:

npm run build-desktop

To Update Contributors

npm run update-contributors

Local Assets

To enable faster loading, you may put local models into the public/local-assets folder, then reference them in your entity tree like so /local-assets/yourModel.glb. The asset should now be available to you in-world.

vircadia-web's People

Contributors

ctrlaltdavid avatar daleglass avatar digisomni avatar gigabyte5671 avatar julien-me avatar madders avatar misterblue avatar pankaj2k9 avatar younianhuang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vircadia-web's Issues

eslint rule space-before-function-paren should be disabled

PR #12 was recently merged into master. Master now fails building because of multiple eslint errors for space-before-function-paran (debug.js, entities.js, metaverse.js). Eslint defaults to wanting function defined like:
function error (type, string) {
Log.print(type, 'ERROR', string);
};
Note the space before the paran and after "function error".
This does not conform to either our CODING_CONVERTIONS document or any normal convention (which is why the new code added had this error).
I suggest .eslintrc.js have "space-before-function-paran" set to "off".

add movement keys

for an older audience profile perhaps the intuitive keys to move the avatar would be the 4 arrows on the keyboard.
I would like to make them work the same way as W-A-S-D.
so that the avatar is controlled with both options.

Handle edge-cases where an avatar uses an arbitrary model or doesn't have a hip bone.

Difficult to say. I did discover that you can currently load any mesh as an avatar even if there is no bone. There might be a time when this is desirable. For example loading in a "speaker" to stream music without having to add bones to this object. This might be a bit of an outlier though. Worth a bit of thought. On the other hand requiring a hip bone may also reduce abuse in the meantime. For example selecting an entire environment and using this as avatar on a whim. On the other hand you may also have an irregular avatar that wouldn't have a "hip" bone.

Originally posted by @Aitolda in #130 (comment)

Forced to Antares domain with new sign-in even when another URL is pasted into brower initially

This will happen with first-time vircadia-web use or a clear cache. For example. Pasting the link below for the first time.

https://app.vircadia.com/M7CVZFP0/#/nautatuma.vircadia.com:40102/0.00,0.00,0.00/0.00,0.00,0.00,0.00

This is a link to my domain and it's current content. If I were to share this with someone via messenger or discord. They would click on it, then get the Vircadia new user wizard, asking them to create a account or skip, but regardless when they either skip or finish logging in, they end up at the Antares domain, rather than the link above. This is not ideal.

if you run the url does not move in real time and the metaverse is disconnected and restarted

if you run the url does not move in real time and this after a few seconds makes the metaverse disconnects and restarts sending you to the starting point of the world.

this does not happen in other computers in my office, but in 2 computers yes, they are quite normal computers with little age (hp all in, 2 years old).

this also causes that other avatars do not see your avatar move smoothly, but until the url is not updated the avatar disappears and when you stop running the avatar has changed position, but you do not see the avatar move, but is teleported, auqneu on my computer the avatar if it moves smoothly, but those who see you do not.

but the most problematic thing is that if you click for a while the world restarts and sends you to the beginning of the world.

greetings

crypto.randomUUID is not a function

Hello All!

I've got the following error in the browser after successfull build:

Uncaught TypeError: crypto.randomUUID is not a function

and the webpage is blank.

node.js version: 16.18.1
npm version: 8.19.2
OS: ubuntu 22.04 LTS

hello i need help can you help me??

Hello
I read and followed the README.md.
Is this what you see vircadia on the web?
What is the next step?
Just looking at the README.md, I don't know...
I need help

I have a issue when I run.

Ubuntu 20.04
Node.js 16.14.0
NPM 6.14.4

`nodejs@nodejs12181onubuntu2004:~/vircadia-web$ npm run dev

[email protected] dev
npm-run-all -s "create-version" "build-quasar-dev"

[email protected] create-version
node build_scripts/createVersion.js

Found package version 2022.1.12
Found Git commit short hash 60e9f34
Found Git commit long hash 60e9f34

[email protected] build-quasar-dev
quasar dev

Dev mode.......... spa
Pkg quasar........ v2.3.3
Pkg @quasar/app... v3.2.3
Pkg webpack....... v5
Debugging......... enabled

Configured browser support (>= 89.37% of global marketshare):
· Chrome for Android >= 96
· Firefox for Android >= 94
· Android >= 96
· Chrome >= 87
· Edge >= 93
· Firefox >= 85
· iOS >= 11.3-11.4
· Opera >= 77
· Safari >= 12.1

App • Chaining "UI" Webpack config
App • WAIT • Compiling of "UI" in progress...

• Compiling:
└── UI ██████████ 46% building 2/3 entries 2200/2221 dependencies 504
/917 modules

/home/nodejs/vircadia-web/node_modules/fork-ts-checker-webpack-plugin/lib/rpc/rp c-ipc/RpcIpcMessagePort.js:19
closedError = new RpcIpcMessagePortClosedError_1.RpcIpcMessagePortClosed Error(code
^

[ RpcIpcMessagePortClosedError: Process 3413 exited [SIGKILL].

  • RpcIpcMessagePort.js:19
    [vircadia-web]/[fork-ts-checker-webpack-plugin]/lib/rpc/rpc-ipc/RpcIpcMessag ePort.js:19:23

  • Generator.next

  • RpcIpcMessagePort.js:8
    [vircadia-web]/[fork-ts-checker-webpack-plugin]/lib/rpc/rpc-ipc/RpcIpcMessag ePort.js:8:71

  • new Promise

  • RpcIpcMessagePort.js:4 __awaiter
    [vircadia-web]/[fork-ts-checker-webpack-plugin]/lib/rpc/rpc-ipc/RpcIpcMessag ePort.js:4:12

  • RpcIpcMessagePort.js:18 ChildProcess.handleExit
    [vircadia-web]/[fork-ts-checker-webpack-plugin]/lib/rpc/rpc-ipc/RpcIpcMessag ePort.js:18:42

  • node:events:520 ChildProcess.emit
    node:events:520:28

  • child_process:291 Process.ChildProcess._handle.onexit
    node:internal/child_process:291:12

] {
code: null,
signal: 'SIGKILL'
}
ERROR: "build-quasar-dev" exited with 1.
nodejs@nodejs12181onubuntu2004:~/vircadia-web$ node:internal/process/promises:26 5
triggerUncaughtException(err, true /* fromPromise */);
^

RpcIpcMessagePortClosedError: Cannot send the message - the message port has bee n closed for the process 3399.
at /home/nodejs/vircadia-web/node_modules/fork-ts-checker-webpack-plugin/lib /rpc/rpc-ipc/RpcIpcMessagePort.js:47:47
at processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: undefined,
signal: undefined
}
`

I try to use this version before, but have a same issue
NodeJS 14.19 (I can't install Version 14.15.4 on Ubuntu. The repo has updated and clear the old minor version of 14)

Unable to access domain

Dear God, hello!
I run the project on Windows using NPM run dev
The page opened in the browser is fine, the default model is fine,
But when I try to access someone else's domain,
The console says
The WebSocket connection to 'ws: / / 192.168.1.103/10 0, 0,0,0,0:40102' failed:
[networking] Opening domain server connection. Will not send domain server check-in.
I tried all the fields on the list, but the results were the same.
How can I solve this problem?
Looking forward to your reply.

Remove all BABYLON legacy usage.

In particular, replace the following with the necessary, explicit imports:

import * as BABYLON from "@babylonjs/core/Legacy/legacy";

This should reduced the build size., particularly if the most explicit path is used, e.g., instead of:

import { AnimationGroup } from "@babylonjs/core";

do the following:

import { AnimationGroup } from "@babylonjs/core/Animations/animationGroup";

The process of doing this should help clear up the TypeScript errors reported in Visual Studio editor - for vscene.ts, in particular.

"npm i" causes an error message

"npm i" causes an error message saying it failed to fetch vircadia-web-sdk-0.0.5.tgz.
Maybe this file doesn't exist. Maybe change the file name to "vircadia-web-sdk-2022.1.1.tgz"

npm WARN old lockfile Could not fetch metadata for @vircadia/web-sdk@file:/usr/local/src/vircadia-web-sdk-mb/vircadia-web-sdk-0.0.5.tgz [Error: ENOENT: no such file or directory, open '/usr/local/src/vircadia-web-sdk-mb/vircadia-web-sdk-0.0.5.tgz'] {
npm WARN old lockfile errno: -2,
npm WARN old lockfile code: 'ENOENT',
npm WARN old lockfile syscall: 'open',
npm WARN old lockfile path: '/usr/local/src/vircadia-web-sdk-mb/vircadia-web-sdk-0.0.5.tgz'
npm WARN old lockfile }

web page fails to load and position is wrong

Not sure if something connected with this issue #126
basically i try to create a web page and it does not appear i create a box, but it appears in the wrong place...

Is this a known issue? Is there any work around??

vircadia-webpage-issue
some log output that may be of use:

log.ts?5607:38 [ENTITIES] [DEBUG] Add entity e19727b2-fe3d-43f7-a957-48503aa5a716
            name:undefined
            type: Box
log.ts?5607:38 [ENTITIES] [DEBUG] Add entity 60012859-797b-4ebe-b4be-252343dbd7af
            name:far
            type: Light
log.ts?5607:38 [OTHER] [DEBUG] attach script LightEntityController to right 
log.ts?5607:38 [OTHER] [DEBUG] attach script ShapeEntityController to Box_e19727b2-fe3d-43f7-a957-48503aa5a716 
log.ts?5607:38 [OTHER] [DEBUG] attach script LightEntityController to far 
Vircadia.js?897c:2 [audioclient] Input device info: null
2log.ts?5607:38 [AUDIO] [DEBUG] AudioMgr.setUserAudioMuted: true
log.ts?5607:38 [AVATAR] [DEBUG] DomainAvatar: Avatar added: 7f61244c-57db-4523-bbbd-d07bb628295c
log.ts?5607:38 [AVATAR] [DEBUG] AvatarAdded. Session ID: 7f61244c-57db-4523-bbbd-d07bb628295c
Vircadia.js?897c:2 [avatars] Processing first identity packet for 7f61244c-57db-4523-bbbd-d07bb628295c - 4
Vircadia.js?897c:2 [avatars] Processing first identity packet for 3d3da832-dcba-4771-828a-3667cd4fd5bc - 2
Vircadia.js?897c:2 AudioClient: AudioStreamStats packet not processed.
#qr @ Vircadia.js?897c:2
log.ts?5607:38 [AVATAR] [DEBUG] handleAvatarSkeletonModelURLChanged. Session ID: 7f61244c-57db-4523-bbbd-d07bb628295c, https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mike/fbx/Mike.fst
logger.js?e555:72 BJS - [09:54:32]: Unable to find a plugin to load .fst files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/how_to/load_from_any_file_type
Logger._WarnEnabled @ logger.js?e555:72
log.ts?5607:38 [AVATAR] [ERROR] Unable to load from https://cdn-1.vircadia.com/us-e-1/Bazaar/Avatars/Mike/fbx/Mike.fst: importMesh of undefined from undefined version: undefined, exporter version: undefinedimportMesh has failed JSON parse
log.ts?5607:38 [OTHER] [DEBUG] attach script ScriptAvatarController to ScriptAvatar_7f61244c-57db-4523-bbbd-d07bb628295c 
2vircadia-audio-output.js:1 AudioOutputProcessor: Buffer overflowed.
Vircadia.js?897c:2 [avatars] Removed avatar with UUID 7f61244c-57db-4523-bbbd-d07bb628295c from AvatarHashMap 1
log.ts?5607:38 [AVATAR] [DEBUG] DomainAvatar: Avatar removed: 7f61244c-57db-4523-bbbd-d07bb628295c
log.ts?5607:38 [AVATAR] [DEBUG] handleAvatarRemoved. Session ID: 7f61244c-57db-4523-bbbd-d07bb628295c
vircadia-audio-output.js:1 AudioOutputProcessor: Buffer overflowed.
Vircadia.js?897c:2 [Violation] 'setTimeout' handler took 250ms
DevTools failed to load source map: Could not load content for chrome-extension://nllcnknpjnininklegdoijpljgdjkijc/bundles/content.js.map: System error: net::ERR_BLOCKED_BY_CLIENT
DevTools failed to load source map: Could not load content for chrome-extension://nllcnknpjnininklegdoijpljgdjkijc/bundles/writingMonitor.js.map: System error: net::ERR_BLOCKED_BY_CLIENT
DevTools failed to load source map: Could not load content for https://vmi1154154.contaboserver.net:8080/js/vircadia-audio-input.js.map: Fetch through target failed: Target not supported; Fallback: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
DevTools failed to load source

How to deal with this problem,Which great God can help solve it?

D:\Projects\opensource\vircadia-web-master>quasar dev
Dev mode.......... spa
Pkg quasar........ v2.1.5
Pkg @quasar/app... v3.1.4
Pkg webpack....... v5
Debugging......... enabled

Configured browser support (>= 88.66% of global marketshare):
· Chrome for Android >= 94
· Firefox for Android >= 92
· Android >= 94
· Chrome >= 85
· Edge >= 91
· Firefox >= 84
· iOS >= 11.3-11.4
· Opera >= 76
· Safari >= 12

App • Chaining "UI" Webpack config
App • WAIT • Compiling of "UI" in progress...

App • DONE • "UI" compiled with errors • 40387ms

App • ERROR • UI in ./src/store/index.ts

Module not found: Can't resolve imported dependency "@Base/../VERSION.json"
Did you forget to install it? You can run: npm install --save @Base/../VERSION.json

App • COMPILATION FAILED • Please check the log above for details.

Issues checking in progress...
ERROR in src/store/index.ts:16:25
TS2307: Cannot find module '@Base/../VERSION.json' or its corresponding type declarations.
14 |
15 | import packageInfo from "@Base/../package.json";

16 | import versionInfo from "@Base/../VERSION.json";
| ^^^^^^^^^^^^^^^^^^^^^^^
17 |
18 | import { VVector3, VVector4 } from "@Modules/render";
19 |

ERROR in src/store/index.ts:168:13
@typescript-eslint/no-unsafe-assignment: Unsafe assignment of an any value.
166 | APP_NAME: packageInfo.productName,
167 | APP_VERSION: packageInfo.version,

168 | APP_VERSION_TAG: versionInfo["version-tag"],
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
169 | SAFETY_BEFORE_SESSION_TIMEOUT: 21600 // If a token has 6 or less hours left on its life, refresh it.
170 | },
171 | debugging: {},

ERROR in src/store/index.ts:168:30
@typescript-eslint/no-unsafe-member-access: Unsafe member access ["version-tag"] on an any value.
166 | APP_NAME: packageInfo.productName,
167 | APP_VERSION: packageInfo.version,

168 | APP_VERSION_TAG: versionInfo["version-tag"],
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
169 | SAFETY_BEFORE_SESSION_TIMEOUT: 21600 // If a token has 6 or less hours left on its life, refresh it.
170 | },
171 | debugging: {},

reference to ./assets/* fails when starting v-web

GET https://files.misterblue.com/vircadia/assets/vircadia-icon.svg
GET https://files.misterblue.com/vircadia/assets/defaultProfile.svg

These requests fail with 404 errors. The "assets/" directory is present in the "dist/spa" directory so I believe there must be a missing route definition or somehow the local URL is specified wrong.

In this case, the app is run from "https://files.misterblue.com/vircadia/vircadia-web" and the SVG files are actually at "https://files.misterblue.com/vircadia/vircadia-web/assets/vircadia-icon.svg" so maybe the local URL is specified wrong

Add the ability to use LODs by distance (level of detail)

For example, I've created 4 LODS for an object (two objects technically), with LOD0 having the full amount of polygons (full detail), and LOD3 having the least. They way LOD typically works is at a certain threshold (specific distance) from the camera (not to be confused with the avatar) the system would automatically choose to render a lower LOD, and even further beyond a lower LOD until it reaches LOD3.

LOD

Notes on implementation can be found here

Why do we want this? Performance, performance, performance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.