Skip to content

decentraland/godot-explorer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Decentraland Godot Explorer

codecov CI Android

Decentraland Godot Explorer is a cross-platform metaverse client built with Godot 4.5.1 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

Triggering iOS CI Builds

iOS builds are skipped by default to save CI resources. To trigger an iOS build:

# On a PR: add the build-ios-internal label
gh pr edit --add-label "build-ios-internal"

# Manual trigger: use the GitHub Actions UI or gh CLI
gh workflow run "๐Ÿ iOS" --ref main

The label is automatically removed after the build completes 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

๐ŸŽฎ 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

Watchers

Forks

Packages

No packages published

Contributors 9