Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Platform Support

AstraWeave targets multiple platforms with varying levels of support and feature availability.

Support Tiers

TierDefinitionGuarantees
Tier 1Fully supported, tested in CIFull feature support, regular testing, priority bug fixes
Tier 2Supported, community testedMost features work, issues addressed on best-effort basis
Tier 3ExperimentalMay work, no guarantees, community-maintained

Platform Matrix

Desktop Platforms

PlatformTierRenderingAI/LLMAudioNetworking
Windows 10/11 (x64)Tier 1Vulkan, DX12FullFullFull
Linux (x64)Tier 1VulkanFullFullFull
macOS (x64)Tier 2MetalFullFullFull
macOS (Apple Silicon)Tier 2MetalFullFullFull

Web Platforms

PlatformTierRenderingAI/LLMAudioNetworking
WebAssemblyTier 2WebGPU, WebGL2Remote onlyWeb AudioWebSocket

Console Platforms

PlatformTierNotes
PlayStation 5PlannedPost-1.0
Xbox Series X/SPlannedPost-1.0
Nintendo SwitchPlannedPost-1.0

Mobile Platforms

PlatformTierNotes
AndroidTier 3Experimental
iOSTier 3Experimental

System Requirements

Minimum Requirements

ComponentWindowsLinuxmacOS
OSWindows 10 (1909+)Ubuntu 20.04+ / Fedora 34+macOS 11+
CPUx64, 4 coresx64, 4 coresx64 / Apple M1+
RAM8 GB8 GB8 GB
GPUVulkan 1.2 / DX12Vulkan 1.2Metal 2
Storage2 GB2 GB2 GB
ComponentSpecification
CPU8+ cores, modern (2020+)
RAM16 GB+
GPURTX 2060 / RX 5700 / M1 Pro+
StorageSSD, 10 GB+

For AI/LLM Features

FeatureAdditional Requirements
Local LLM (Ollama)16 GB+ RAM, fast SSD
GPU-accelerated LLMNVIDIA GPU with 8 GB+ VRAM, CUDA
Large context windows32 GB+ RAM

Graphics API Support

Vulkan (Windows, Linux)

Primary rendering backend for Windows and Linux.

[dependencies]
astraweave-render = { version = "0.1", features = ["vulkan"] }

Requirements:

  • Vulkan 1.2+
  • Up-to-date GPU drivers

Tested GPUs:

  • NVIDIA: GTX 1000+, RTX series
  • AMD: RX 400+, RX 5000+, RX 6000+, RX 7000+
  • Intel: UHD 600+, Arc series

DirectX 12 (Windows)

Alternative backend for Windows.

[dependencies]
astraweave-render = { version = "0.1", features = ["dx12"] }

Requirements:

  • Windows 10 1909+
  • DirectX 12 capable GPU

Metal (macOS)

Primary backend for macOS.

[dependencies]
astraweave-render = { version = "0.1", features = ["metal"] }

Requirements:

  • macOS 11 (Big Sur)+
  • Metal 2 capable GPU

WebGPU (Web)

Modern web rendering API.

[dependencies]
astraweave-render = { version = "0.1", features = ["webgpu"] }

Requirements:

  • Chrome 113+ / Firefox 115+ / Safari 17+
  • WebGPU enabled

WebGL2 (Web Fallback)

Fallback for browsers without WebGPU.

[dependencies]
astraweave-render = { version = "0.1", features = ["webgl2"] }

Limitations:

  • Reduced shader capabilities
  • Lower texture limits
  • No compute shaders

Feature Availability by Platform

Core Features

FeatureWindowsLinuxmacOSWeb
ECSYesYesYesYes
PhysicsYesYesYesYes
AudioYesYesYesYes
InputYesYesYesPartial
NetworkingYesYesYesWebSocket

Rendering Features

FeatureWindowsLinuxmacOSWeb
PBR MaterialsYesYesYesYes
Shadow MappingYesYesYesLimited
Post-ProcessingYesYesYesLimited
Skeletal AnimationYesYesYesYes
Compute ShadersYesYesYesWebGPU only

AI Features

FeatureWindowsLinuxmacOSWeb
Behavior TreesYesYesYesYes
GOAPYesYesYesYes
Local LLM (Ollama)YesYesYesNo
Remote LLMYesYesYesYes
GPU LLM (CUDA)YesLimitedNoNo

Building for Platforms

Windows

# Native build
cargo build --release

# Cross-compile from Linux
cargo build --release --target x86_64-pc-windows-gnu

Linux

# Native build
cargo build --release

# With specific features
cargo build --release --features "vulkan,llm"

macOS

# Native build
cargo build --release

# Universal binary (x64 + ARM)
cargo build --release --target x86_64-apple-darwin
cargo build --release --target aarch64-apple-darwin
lipo -create -output libgame.dylib \
  target/x86_64-apple-darwin/release/libgame.dylib \
  target/aarch64-apple-darwin/release/libgame.dylib

WebAssembly

# Install wasm-pack
cargo install wasm-pack

# Build for web
wasm-pack build --target web --release

# Optimize WASM
wasm-opt -O3 -o game_opt.wasm game.wasm

Platform-Specific Configuration

Windows Configuration

# astraweave.toml
[platform.windows]
renderer = "dx12"  # or "vulkan"
vsync = true
fullscreen_mode = "borderless"

[platform.windows.audio]
backend = "wasapi"

Linux Configuration

[platform.linux]
renderer = "vulkan"
vsync = true
wayland = true  # Enable Wayland support

[platform.linux.audio]
backend = "pulseaudio"  # or "alsa", "pipewire"

macOS Configuration

[platform.macos]
renderer = "metal"
retina = true
native_fullscreen = true

[platform.macos.audio]
backend = "coreaudio"

Web Configuration

[platform.web]
renderer = "webgpu"  # or "webgl2"
canvas_id = "game-canvas"

[platform.web.audio]
backend = "webaudio"

Known Limitations

Windows

  • DX12 may require Windows Update for latest features
  • Some anti-virus software may flag debug builds

Linux

  • Wayland compositor compatibility varies
  • Audio backend may need manual selection

macOS

  • Notarization required for distribution
  • Some features limited without Rosetta on Apple Silicon

Web

  • No local file system access
  • LLM requires remote server
  • Thread support limited (SharedArrayBuffer)
  • Binary size considerations

Troubleshooting Platform Issues

Windows: DX12 Errors

Error: Failed to create DX12 device

Solution: Update GPU drivers and Windows.

Linux: Vulkan Not Found

Error: Failed to load Vulkan library

Solution:

# Ubuntu/Debian
sudo apt install vulkan-tools mesa-vulkan-drivers

# Fedora
sudo dnf install vulkan-loader vulkan-tools

macOS: Metal Errors

Error: Metal device not found

Solution: Ensure running on macOS 11+ with Metal-capable GPU.

Web: WebGPU Not Supported

Error: WebGPU not available

Solution: Enable WebGPU in browser settings or use WebGL2 fallback:

[platform.web]
renderer = "webgl2"

Platform Testing

CI/CD Matrix

# GitHub Actions example
strategy:
  matrix:
    os: [ubuntu-latest, windows-latest, macos-latest]
    include:
      - os: ubuntu-latest
        target: x86_64-unknown-linux-gnu
      - os: windows-latest
        target: x86_64-pc-windows-msvc
      - os: macos-latest
        target: x86_64-apple-darwin

Platform-Specific Tests

#![allow(unused)]
fn main() {
#[cfg(target_os = "windows")]
#[test]
fn test_windows_specific() {
    // Windows-only test
}

#[cfg(target_os = "linux")]
#[test]
fn test_linux_specific() {
    // Linux-only test
}

#[cfg(target_arch = "wasm32")]
#[test]
fn test_wasm_specific() {
    // WebAssembly-only test
}
}