Skip to content

webaverse-studios/webaverse

Repository files navigation

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

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-studios/webaverse.git && cd webaverse
npm install # Install dependencies

Running

Starting the application is as easy as:

npm run dev

Once the server has started up, you can press the "A" key to visit https://local.webaverse.com.

Installation and Running on Windows

WSL

You may need to use Windows Subsystem for Linux to install and run Webaverse. This video shows you how you can set up WSL and Ubuntu.

Requirements:

  • WSL2. If you have WSL1 installed you need to upgrade to WSL2.
  • Ubuntu 20+. Install Ubuntu 20+.

Once you have WSL and Ubuntu set up, run wsl in a Windows command window to get a WSL Ubuntu command prompt. Run exit at the WSL command prompt to return to the Windows command prompt.

Node

At a WSL command prompt, use nvm to install Node 19.0.0.

Dependencies

Run the following command at the WSL command prompt to install dependencies:

npm run install-libs
The following libraries get installed with this command (you can also install manually):
  • libatk1.0-0
  • libatk-bridge2.0-0
  • libxcomposite-dev
  • libxdamage1
  • libxrandr2
  • libgbm-dev
  • libxkbcommon-x11-0
  • libpangocairo-1.0-0
  • libasound2
  • libwayland-client0

Port Mapping

To route all of the needed ports for 127.0.0.1 -> WSL to work locally, run the following command in a Powershell window:

powershell.exe .\scripts\wsl-port-forwarding.ps1

Installation

You can host the source files on either your Windows file system or on the Ubuntu file system in WSL's virtual drive.

Windows File System: Run the Git commands to clone and pull source files from a Windows command prompt. You may find this best if you're using programs such as SourceTree as a Git GUI. You can also edit source using your usual IDE.

Ubuntu File System: Run the Git commands to clone and pull source files from a WSL command prompt. In this case consider using the Visual Studio Code WSL extension as your dev environment - for features such as hot reload.

Running

Start the application by running the NPM command at a WSL command prompt.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

empec-webastudios
empec-webastudios

🚇
Avaer Kazmer
Avaer Kazmer

💻
Vis
Vis

💻
codingbycl
codingbycl

💻
jin
jin

🖋 💻 📖 🤔
M̵̞̗̝̼̅̏̎͝Ȯ̴̝̻̊̃̋̀Õ̷̼͋N̸̩̿͜ ̶̜̠̹̼̩͒
M̵̞̗̝̼̅̏̎͝Ȯ̴̝̻̊̃̋̀Õ̷̼͋N̸̩̿͜ ̶̜̠̹̼̩͒

💻
Shubham Jain
Shubham Jain

💻
TheoTheDev
TheoTheDev

💻
tcm390
tcm390

💻
GuiltyRegicide
GuiltyRegicide

🎨
Muhammad Abeer
Muhammad Abeer

💻
arya
arya

💻
Loryhoof
Loryhoof

💻
plankatron
plankatron

🎨
torchesburn
torchesburn

💻
a Goblin King
a Goblin King

💻
Jack Z.
Jack Z.

💻
Ali Saad
Ali Saad

💻
Adam Clarke
Adam Clarke

💻
2AM
2AM

🔊
Matthew Willox
Matthew Willox

💻
memelotsqui
memelotsqui

💻
cjft
cjft

💻
UltraBot
UltraBot

💻
intelliverse777
intelliverse777

💻
Ron
Ron

💻
ꈤꍟꎭꍟꌗꀤꌗ
ꈤꍟꎭꍟꌗꀤꌗ

💻
Patrick Bozic
Patrick Bozic

💻
Grant Roberts
Grant Roberts

🎨
alextitonis
alextitonis

💻
ahadshams
ahadshams

💼
Emotionull
Emotionull

📖 🤔 🖋
Andrea Ruzzenenti
Andrea Ruzzenenti

💻
soulofmischief
soulofmischief

💻
belopot
belopot

💻
David Rowe
David Rowe

💻
potoelite
potoelite

💻
NotFuji
NotFuji

🎨
zenkale
zenkale

⚠️
Dmytro Fomenko
Dmytro Fomenko

🎨
kiibarina
kiibarina

🎨
Jonas Kraasch
Jonas Kraasch

💻
Jimmy
Jimmy

💻
kishdr
kishdr

🎨

This project follows the all-contributors specification. Contributions of any kind welcome!

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.