Skip to content

decentraland/godot-explorer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1,002 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

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

License

Code of conduct

Contributing

Stars

18 stars

Watchers

4 watching

Forks

Packages

 
 
 

Contributors