Skip to content

implementation of client side protocols for accessing the open metaverse!

License

Notifications You must be signed in to change notification settings

benthic-mmo/metaverse_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

229 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Metaverse Client

last-commit open-pr open-issues

Screencast.From.2025-05-03.10-24-32.mp4

Rust libraries for creating open metaverse clients

This package is meant to be used as a platform for creating fast, multithreaded open metaverse clients.

Goals

Documented

This project aims to be fully documented and developer friendly. High level protocol docs can be found at benthic-mmo.github.io, and lower level packet parsing and implementation docs can be found on docs.rs. If you find that docs are missing or confusing feel free to open an issue here, or on the docs repo.

Modular

Each part of this project is meant to be useful on its own to other projects. Wherever possible, separate layers of the project are broken out into publicly facing interafaces, using accessible, language agnostic protocols like JSON or UDP.

Community

People write code for other people. The community surrounding this project aims to be deliberate, welcoming and curious. Getting started should be simple, and implementing changes should be hassle-free.

Standardized

Wherever possible, this project prioritizes well-documented and standardized tools over handwritten ones. Ideally this can serve as an interface between the more confusing secondlife/opensim protocols, and newer, cleaner ones.

Testable

This project should prioritize writing machine-testable code to ensure stability long-term.

Crates

Core

crates.io-core docs.rs-core

This crate is the core of the project. This is what handles packet IO, and server/ui communication using actix. UDP packets are used to communicate between the core and the UI. This allows frontends to be completely decoupled from the core, and can be written in any language using any framework. The server accepts messages in the form of packets as defined by the spec, and returns UI events serialized into bytes.

Messages

crates.io-messages docs.rs-messages

This is the protocol spec. This contains all of the information about messages that can be sent to and from the server, both in UDP and HTTP. The goal is to keep this general enough to be able to implement this for both client and server projects. More information on the spec can be found here.

Environment

crates.io-environment docs.rs-environment

Provides a straightforward way of handling incoming terrain information being sent from an open metaverse server.

Inventory

crates.io-inventory docs.rs-inventory Provides handling for the on-disk inventory database. Stored as SQL, this allows for lookup of all received objects, and handles storage and retrieval of the user's inventory.

Agent

crates.io-agent docs.rs-agent Contains information on how to build skinned agents. This includes information like the agent struct, and functions for building agent skeletons.

Ui

crates.io-agent docs.rs-agent Both a debug UI and a bevy plugin. This allows for quick testing, and other bevy projects to implement the full viewer protocol using only a few lines of code.

Getting Started

The benthic project stretches across several repos, containing several different crates. There are four primary crates that contain the project's core code.

In order to test the project from the master branch, these dependencies must all be downloaded on your disk, and organized like this. On the master branch, these crates use relative paths for versioning, allowing changes in one crate to be built from the core.

benthic_project
  ├── metaverse_client/
  ├── metaverse_gltf/
  ├── benthic_viewer/
  └── serde-llsd/

OpenSimulator
  └── bin/

In order to test locally, an instance of OpenSimulator must also be running either on-disk or remotely.

Prerequisite Packages:

  • rust
  • cargo
  • openssl-devel
  • alsa-lib-devel
  • rust-libudev-devel
  • rust-libdbus-devel

Building

cargo run Will run the debug UI. cargo test Will run the tests.

About

implementation of client side protocols for accessing the open metaverse!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages