Skip to content

Latest commit

ย 

History

1,110 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Decentraland Godot Explorer

codecov CI Android

Decentraland Godot Explorer is a cross-platform metaverse client built with Godot 4.6.2 and Rust, supporting desktop, mobile, and VR platforms.

โœจ Features

  • Cross-Platform: Native support for Linux, Windows, macOS, Android, iOS, and VR
  • High Performance: Rust core with Godot rendering engine
  • Decentraland SDK7: Full compatibility with Decentraland scenes
  • Voice Chat: Integrated spatial audio via LiveKit WebRTC
  • Web3 Integration: Ethereum wallet support for NFTs and transactions
  • Developer Friendly: Hot reload, comprehensive testing, and debugging tools

๐Ÿš€ Quick Start

  1. Prerequisites:

    • Rust 1.90
    • Git
    • Platform-specific dependencies (see below)
  2. Clone and setup:

    git clone https://github.com/decentraland/godot-explorer
    cd godot-explorer
    # Windows users: use a short path like C:/gexplorer
    
    # Check system health
    cargo run -- doctor
    
    # Install Godot and build tools
    cargo run -- install --targets <your-platform>
  3. Run the project:

    # Run the client (builds automatically)
    cargo run -- run
    
    # Or run the editor
    cargo run -- run -e

๐Ÿ“ฆ Platform-Specific Dependencies

Linux (Ubuntu/Debian)

sudo apt-get update && sudo apt-get install -y \
  libasound2-dev libudev-dev \
  clang curl pkg-config \
  libssl-dev libx11-dev libgl1-mesa-dev libxext-dev

macOS

brew install pkg-config

Android Development

  • Android SDK with NDK 28.1.13356709
  • Set ANDROID_SDK or ANDROID_HOME environment variable
  • Run: rustup target add aarch64-linux-android

๐Ÿ“‹ Quick Reference

Command Description
cargo run -- doctor Check system health and dependencies
cargo run -- install Install Godot and protoc
cargo run -- install --targets ios Install iOS templates (auto-strips debug symbols)
cargo run -- install --targets ios --no-strip Install iOS templates with debug symbols
cargo run -- build Build for host platform
cargo run -- run Build and run the client
cargo run -- run -e Build and run the editor
cargo run -- export --target android Export Android APK
cargo run -- strip-ios-templates Strip debug symbols from iOS templates
cargo run -- clean-cache Clear downloaded template cache

๐Ÿ› ๏ธ Development Workflow

Building and Running

# Build for host platform
cargo run -- build

# Run the client (builds automatically)
cargo run -- run

# Run the editor
cargo run -- run -e

# Run with specific features
cargo run -- run --no-default-features --features use_livekit,use_deno

Android Development

# Install Android dependencies
cargo run -- install --targets android

# Build for Android
cargo run -- build --target android

# Export APK (automatically uses .bin/release.keystore)
cargo run -- export --target android --format apk --release

# Export AAB for Play Store
cargo run -- export --target android --format aab --release

iOS Development (macOS only)

# Install iOS dependencies (strips debug symbols by default, saves ~1.9GB)
cargo run -- install --targets ios
rustup target add aarch64-apple-ios

# Build for iOS
cargo run -- build --target ios

# Export iOS app
cargo run -- export --target ios

iOS Template Debug Symbols

By default, iOS templates are stripped of debug symbols during installation to save disk space (~2.1GB โ†’ ~234MB). This is fine for most local development.

# Default install (strips debug symbols, smaller size)
cargo run -- install --targets ios

# Install WITH debug symbols (needed for Sentry crash symbolication)
cargo run -- install --targets ios --no-strip

# Strip already-installed templates manually
cargo run -- strip-ios-templates

Note: Downloaded templates are cached. If you've already installed stripped templates and need debug symbols, clear the cache first:

cargo run -- clean-cache
cargo run -- install --targets ios --no-strip

Android APK Hosting & Mobile Distribution

Every Android CI build uploads the signed APK to the R2 mobile-artifacts bucket and links it from the PR build-report comment (served at https://mobile-artifacts.dclregenesislabs.xyz/).

The build label (or the legacy alias build-ios) triggers mobile_distribute.yml: iOS โ†’ TestFlight, plus a Slack "๐Ÿค– Android Build Ready" notification once the commit's APK is in R2. It does not rebuild Android or push to a store.

# On a PR: add the build label (iOS TestFlight + Android Slack notification)
gh pr edit --add-label "build"

# Manual trigger on main/release (GitHub Actions UI or gh CLI)
gh workflow run "๐Ÿ“ฑ Mobile Build & Distribute (iOS TestFlight + Android APK)" --ref main

The label is automatically removed after the build is triggered on PRs.

๐Ÿงช Testing

# Run integration tests
cargo run -- run --itest

# Run scene tests
cargo run -- run --stest

# Generate test coverage
rustup component add llvm-tools-preview
cargo install grcov
cargo run -- coverage --dev

# Update Docker test snapshots from CI artifacts (requires gh CLI)
cargo run -- update-docker-snapshots

# Update coverage test snapshots from CI artifacts
cargo run -- update-coverage-snapshots

# Optionally specify a branch or run ID
cargo run -- update-docker-snapshots --branch main
cargo run -- update-docker-snapshots --run-id 21769476899

๐ŸŽฎ Supported Platforms

  • Desktop: Linux, Windows, macOS
  • Mobile: Android (API 29+), iOS
  • VR: Quest (Meta), OpenXR compatible devices

๐Ÿ“ Project Structure

godot-explorer/
โ”œโ”€โ”€ godot/              # Godot project files
โ”‚   โ”œโ”€โ”€ src/            # GDScript source code
โ”‚   โ””โ”€โ”€ project.godot   # Project configuration
โ”œโ”€โ”€ lib/                # Rust library
โ”‚   โ”œโ”€โ”€ src/            # Rust source code
โ”‚   โ””โ”€โ”€ Cargo.toml      # Rust dependencies
โ”œโ”€โ”€ src/                # Build system (xtask)
โ””โ”€โ”€ exports/            # Build outputs

๐Ÿณ Docker Support

For CI/CD or consistent build environments:

# Linux/Android builds
docker run -v $(pwd):/app/ -it kuruk/dcl-godot-android-builder-rust

# Inside container
cargo run -- install --targets android linux
cargo run -- build --target android
cargo run -- export --target android --format apk --release

๐Ÿ”ง Troubleshooting

  1. Check system health:

    cargo run -- doctor
  2. Windows long path issues: Clone to a short path like C:/gexplorer

  3. Missing dependencies: The doctor command will show what's missing and how to install it

  4. Android build failures: Ensure NDK 28.1.13356709 is installed and ANDROID_SDK is set

๐Ÿค Contributing

See CONTRIBUTING.md for guidelines on:

  • Code style and formatting
  • Pull request process
  • Testing requirements
  • Documentation standards

๐Ÿ“š Documentation

๐Ÿ”— Links


Powered by the Decentraland DAO

Decentraland DAO logo

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

18 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages