Git Product home page Git Product logo

app's Introduction

chat on Discord follow on Twitter

Webaverse

An open source web3 metaverse game engine that anyone can host. Easy to use, runs in the browser and utilizes open tools and standards like three.js and Node.

Everything you need to get started with building in the Webaverse is contained in this repository.

Key Features

  • ๐ŸŽฎ A full-featured game engine running in your browser
  • โ™พ๏ธ Infinite procedurally generated world
  • ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ Multiplayer with voice and chat
  • ๐Ÿค– AI-powered non-player characters
  • ๐Ÿ‘“ Supports desktop and VR (mobile coming soon)
  • ๐Ÿ˜Š Expressive, vocal and emotive avatars
  • ๐Ÿ”ฎ Runtime support for user uploads and custom apps
  • ๐Ÿ–ฅ๏ธ Completely self-hostable

Documentation

Developer documentation is here
User documentation is here

Minimum Requirements

  • Node.js 18 or greater (nvm is recommended)
  • 10 GB Disk Space
  • 8 GB RAM
  • 4 Core CPU / vCPUs

Installation

Important note before you clone this repo: This repo uses Git submodules. You need to install with the --recurse-submodules flag or installation will not work. Copy the code below to clone the repository if you aren't sure.

git clone --recurse-submodules https://github.com/webaverse/app.git
cd app/ # Go into the repository
git pull --recurse-submodules # Pull recursively
npm install # Install dependencies
Note for Windows Users

We recommend that you use Windows Subsystem for Linux to run Webaverse. This video shows you how you can set up WSL. Once you've installed it, run wsl in your terminal to enter Ubuntu, and then run Webaverse from there.

Quickstart

Starting the application is as easy as:

npm run start

Once the server has started up, you can visit https://local.webaverse.com

Let's build it together!

We would love for you to come build with us. First, please review the documentation in it's entirety before contributing. Also join our Discord and introduce yourself.

New Issues and Features

Please search Github issues before reporting a new issue or starting a new feature. If you are starting a new feature or bug fix, please write up or reference an issue and indicate that you are working on it.

Pull Requests

Please make sure your PRs change as little existing code as is necessary to prevent upstream merge conflicts. When posting a pull request, please document what the PR does and how it can be reviewed and QA'd. PRs will be reviewed and accepted if they conform to our linting and code conventions, don't cause any bugs and don't decrease performance of the app.

app's People

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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

app's Issues

Byte potentials in parcels

We currently store float potentials for parcel voxels. The resolution could probably just be char, therefore using a quarter the memory at no real cost.

Bugfix lighting stereoscopy

Right now lighting transitions at infinity due to the lighting calculation not taking into account the per-eye camera position.

Create/destroy server UI

We currently have a "connect" button.

However, what makes more sense is if this were a create/"get server" button, which would pull one from the buffer and go there.

This should probably be coupled with a "destroy server" button, or inactivity timeouts so servers don't dangle.

Portals support

Add support for in-world portals to distant chunks, with a live view through to the other side.

Physics gun

Enable the physics gun tool for setting the physics material of things made in the composer.

WASM fixing

Many of the tools need to be fixed up for the new WASM message passing style. This is mostly mechanical work.

Label tool selector tools

Currently they are just boxes, which makes it impossible to tell which tool is where until you select it and it appears in your hands. We just need to add the labels.

Parcel stuttering

On Valve Index/144Hz we currently stutter at parcel boundaries. We should make sure this is smooth.

VR walking

  • Fix teleport
  • Fix culling
  • Fix walking legs
  • Fix stutter on parcel boundary

Crosshair stereoscopy

The rifle crosshair is really far out, and not writing depth. It makes it hard to focus where you are aiming.

One solution might be to move the crosshair up to the raycast point.

Bugfix menu scroll

The up/down buttons for inventory scroll do not currently scroll one page at a time.

Assets picker UI

On uploading an asset to the world, the picker should pop up in-world UI.

  • Asset details
  • Download asset
  • Add to inventory
  • Claim (mint) asset
  • Remove asset

Inventory UI

We need to pull inventory for the user and show their owned media in the wrist UI.

bug - earcut function signature mismatch

 at http://localhost:50661/bin/geometry.wasm:wasm-function[1644]:0xd570b
    at http://localhost:50661/bin/geometry.wasm:wasm-function[1642]:0xd5487
    at http://localhost:50661/bin/geometry.wasm:wasm-function[4710]:0x24a212
    at ea (http://localhost:50661/bin/geometry.wasm:wasm-function[2512]:0x12cd6b)
    at Object.Module._earcut (http://localhost:50661/bin/geometry.js:1:117746)
    at Object.w.earcut (http://localhost:50661/edit.js:2720:41)
    at ThingSource.updateGeometryData (http://localhost:50661/edit.js:3540:113)
    at MeshDrawer.end (http://localhost:50661/edit.js:3591:19)
    at _updateTools (http://localhost:50661/edit.js:6037:22)
    at animate (http://localhost:50661/edit.js:6152:5)```

just randomly

Sync persistent world state implementation in AWS and Frontend.

The world parcels store their data in UInt8 Arrays in the WASM.

We need to make the world data persistent on the dialog / ec2 side.

This requires pushing and pulling binary data through websockets.

This needs to be uniquely keyed data per parcel.

Needs to be fast, needs to lock, needs to not mess up.

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.