7.0 KiB
Quick Test Guide - Overte Entity Rendering
Quick Start Test (Simulation Mode)
This tests the rendering pipeline without needing an Overte server:
# 1. Build everything
cd /home/mayatheshy/stardust/Starworld
./scripts/build_and_test.sh
# 2. Generate primitive models (if not already done)
blender --background --python tools/blender_export_simple.py
# 3. Start StardustXR server (in separate terminal)
stardust-xr-server
# 4. Run in simulation mode
export STARWORLD_SIMULATE=1
export STARWORLD_BRIDGE_PATH=./bridge/target/release
./build/starworld
What You Should See:
- Console output showing 3 entities created
- In XR: Red cube, green sphere, and blue Suzanne monkey head
- Models positioned at different heights in front of you
Test with Local Overte Domain
# 1. Start local Overte domain server
# (See Overte documentation for domain server setup)
# 2. Connect Starworld client
./build/starworld --overte=127.0.0.1:40104
What You Should See:
- Domain handshake messages
- Entity query sent
- Entities appearing as they're received
- Models loading from primitives or downloaded URLs
Test with HTTP Model URLs
To test HTTP model downloading:
-
Add entities with model URLs in Overte:
- Use Overte's Create app to add Model entities
- Set modelURL to an HTTP/HTTPS GLTF/GLB file
- Example:
https://example.com/models/chair.glb
-
Run Starworld:
./build/starworld --overte=127.0.0.1:40104 -
Check console for download progress:
[downloader] Downloading model: https://example.com/chair.glb [downloader] Downloaded successfully: /home/user/.cache/starworld/models/abc123.glb [bridge/reify] Loading 3D model for node 1 from URL: https://example.com/chair.glb -
Verify cached files:
ls -lh ~/.cache/starworld/models/
Debug Checklist
If nothing appears in XR:
-
Check StardustXR server is running:
ps aux | grep stardust -
Check bridge loaded successfully:
# In Starworld output, look for: [StardustBridge] Loading Rust bridge from: ... [StardustBridge] Rust bridge loaded and started successfully -
Check primitives exist:
ls ~/.cache/starworld/primitives/ # Should show: cube.glb, sphere.glb, model.glb -
Enable verbose logging:
export RUST_LOG=debug ./build/starworld
If models don't download:
-
Check internet connectivity:
curl -I https://example.com/model.glb -
Check cache directory permissions:
ls -ld ~/.cache/starworld/models/ -
Look for download errors in console:
[downloader] Failed to download https://...: ...
If Overte connection fails:
-
Verify domain server is running:
ps aux | grep domain-server -
Check UDP port is correct:
# Overte domain server typically uses 40104 for UDP sudo ss -ulnp | grep 40104 -
Check for connection messages:
[OverteClient] Attempting to connect to domain: 127.0.0.1:40104 [OverteClient] Domain handshake sent [OverteClient] Received DomainList packet
Expected Console Output (Simulation Mode)
[StardustBridge] Loading Rust bridge from: ./bridge/target/release/libstardust_bridge.so
[StardustBridge] Rust bridge loaded successfully
[StardustBridge] Rust bridge started: sdxr_start() returned 0
[StardustBridge] Rust bridge loaded and started successfully
[bridge] Connecting to Stardust server...
[OverteClient] Simulation mode enabled - creating test entities
[bridge] create node id=1 name=CubeA (state nodes=1)
[bridge] set entity type for node id=1: 1
[bridge] set color for node id=1: [1.0, 0.0, 0.0, 1.0]
[bridge] set dimensions for node id=1: [0.2, 0.2, 0.2]
[bridge] create node id=2 name=SphereB (state nodes=2)
[bridge] set entity type for node id=2: 2
[bridge] set color for node id=2: [0.0, 1.0, 0.0, 1.0]
[bridge] set dimensions for node id=2: [0.15, 0.15, 0.15]
[bridge] create node id=3 name=ModelC (state nodes=3)
[bridge] set entity type for node id=3: 3
[bridge] set color for node id=3: [0.0, 0.0, 1.0, 1.0]
[bridge] set dimensions for node id=3: [0.25, 0.25, 0.25]
[bridge/reify] Reifying 3 nodes
[bridge/reify] Loading cube for node 1 primitive from /home/user/.cache/starworld/primitives/cube.glb
[bridge/reify] Node 1 has color tint: RGBA(1.00, 0.00, 0.00, 1.00) - NOT YET APPLIED
[bridge/reify] Loading sphere for node 2 primitive from /home/user/.cache/starworld/primitives/sphere.glb
[bridge/reify] Node 2 has color tint: RGBA(0.00, 1.00, 0.00, 1.00) - NOT YET APPLIED
[bridge/reify] Loading 3D model for node 3 primitive from /home/user/.cache/starworld/primitives/model.glb
[bridge/reify] Node 3 has color tint: RGBA(0.00, 0.00, 1.00, 1.00) - NOT YET APPLIED
Performance Testing
Test with Many Entities
Create a domain with 100+ entities and monitor:
# Run with timing
time ./build/starworld --overte=127.0.0.1:40104
# Monitor memory usage
watch -n 1 'ps aux | grep starworld'
# Check frame rate (in Stardust server logs)
journalctl --user -u stardust -f
Test Download Performance
Test with large models (10MB+):
# Clear cache first
rm -rf ~/.cache/starworld/models/*
# Connect and time first load
time ./build/starworld --overte=127.0.0.1:40104
# Second run should be instant (cached)
time ./build/starworld --overte=127.0.0.1:40104
Common Test Scenarios
1. Mixed Entity Types
- Create Box, Sphere, and Model entities in Overte
- Verify each renders with correct primitive
- Check dimensions are applied correctly
2. HTTP Model Downloads
- Add Model entity with HTTP URL
- Watch console for download progress
- Verify model appears after download
- Reconnect - should load from cache instantly
3. Entity Updates
- Move/rotate entities in Overte
- Verify updates appear in StardustXR
- Check transform synchronization
4. Entity Deletion
- Delete entities in Overte
- Verify they disappear from StardustXR
- Check console for removal messages
Success Criteria
✅ Simulation mode shows 3 colored primitives
✅ Overte connection establishes successfully
✅ Entities from Overte appear in StardustXR
✅ HTTP models download and render
✅ Downloaded models are cached
✅ Entity transforms match Overte positions
✅ Dimensions scale models correctly
✅ Entity deletions are reflected
Troubleshooting Quick Reference
| Problem | Solution |
|---|---|
| Nothing appears | Check StardustXR server running, check primitives exist |
| Bridge fails to load | Rebuild bridge: cd bridge && cargo build --release |
| Downloads fail | Check internet, check URL accessibility, check cache permissions |
| Connection refused | Verify domain server running, check port number (40104) |
| Models too small/large | Check entity dimensions in Overte, verify scale application |
| Old models shown | Clear cache: rm -rf ~/.cache/starworld/models/* |
Last Updated: November 9, 2025
Tested Version: Starworld dev branch
Platform: Linux (Arch-based)