# Hyperfy Discord - 2025-07-08

## Overall Discussion Highlights

### Dynamic Model Loading & Development
- **Dynamic 3D Model Loading**: Ashxn shared an experimental method to dynamically load GLB models from URLs using `world.load('model', url)` followed by `world.add(model)`. This feature allows runtime model loading and manipulation of node hierarchies.
- **Seat Implementation**: 𝕽𝖔𝖚𝖘𝖙𝖆𝖓 successfully implemented seat v2 with Actions by copying scripts from v2 to replace v1 scripts, saving significant time compared to manually copying positions for 40 seats across three instances.
- **Emote Optimization**: Discussion about optimizing GLB file sizes for sitting animations, with 𝕽𝖔𝖚𝖘𝖙𝖆𝖓 and 0mka identifying that some sitting emotes were much larger than others (500+ KB vs the typical 100-200 KB).

### 3D Character Generation
- Users explored text-to-3D avatar generation tools that produce clean meshes but require manual VRM rigging and texture reworking.
- Valiant shared their workflow using Sparc 3D for image-to-3D conversion (1M tris), followed by Quadremesh reduction (10K) and baking.
- Generated meshes are described as 75% usable, saving modeling time but requiring texture replacement.

### Server Infrastructure
- Ash explained their stable server setup uses Hetzner servers in a US datacenter (Hillsboro, OR), with a single server efficiently hosting around 20 worlds continuously.
- A user reported experiencing frequent websocket disconnections with error 1006 on their deployment using DigitalOcean in Singapore.
- Brief mention of using Caddy as a preferred alternative to Nginx for web server configuration.

### Upcoming Features
- Gh0sTt mentioned an upcoming bot and API repository release that will link Discord snowflakes (user IDs) to Hyperfy user IDs, enabling game and puzzle creation with the ability to reward community members.
- 0mka mentioned working on chat functionality including DMs and channels.
- Discussion about WebGPU integration to improve graphical capabilities.

## Key Questions & Answers

**Q: Is there a way to dynamically replace or load a 3D model into the world on load?**  
A: You can dynamically load any GLB from a URL using `world.load('model', 'https://somewhere.com/something.glb')` followed by `world.add(model)` (Ashxn)

**Q: Does this become attached to that script? How would you be able to toggle its visibility?**  
A: It's spawned in the context of the app that loads it, it's the same as any other node hierarchy you can deconstruct meshes independently (Ashxn)

**Q: Are query parameters implemented right now?**  
A: Nope (Ashxn)

**Q: Is it possible to make worlds as aesthetically pleasing as No Man's Sky or is the web too limiting?**  
A: It's within reason but would require large experienced teams and years of refinement, similar to No Man's Sky's development (Agent12 and Boosh)

**Q: Which manufacturer do you use for your server and is it deployed with global distributed nodes?**  
A: We use Hetzner servers located in one of their US datacenters (Hillsboro, OR); no distributed nodes are used as it's not needed (ash)

**Q: Why do I experience frequent websocket disconnections with error 1006 on my deployment?**  
A: If there are no server errors in your logs, either your connection or the server networking is having issues (ash)

**Q: What web server should I use?**  
A: Don't suffer through nginx just use caddy (general hyper)

## Community Help & Collaboration

1. **Dynamic Model Loading**  
   Helper: Ashxn | Helpee: creazy.eth  
   Context: Shared code snippet using world.load and world.add methods for dynamically loading 3D models into the world

2. **Seat Implementation**  
   Helper: Unknown Discord user | Helpee: 𝕽𝖔𝖚𝖘𝖙𝖆𝖓  
   Context: Provided copy-paste tip for implementing seat v2 with Actions, saving approximately an hour of work by enabling script copying instead of position copying

3. **3D Mesh Quality**  
   Helper: Valiant | Helpee: .hyp shaman  
   Context: Confirmed the generated meshes are clean enough for re-texturing despite some excess geometry

4. **Server Troubleshooting**  
   Helper: ash | Helpee: 0xLittle dog  
   Context: Suggested checking logs for server errors and identified potential network issues as the cause of websocket disconnection issues

5. **Emote Optimization**  
   Helper: 0mka | Helpee: Community  
   Context: Shared an optimized Sitting and Talking emote created by another user

## Action Items

### Technical
- Implement query parameters support (creazy.eth)
- Improve collision handling for animated skinned meshes (Gert-Jan Akerboom)
- Optimize large GLB files for sitting animations to match the typical 100-200KB size (𝕽𝖔𝖚𝖘𝖙𝖆𝖓 and 0mka)
- Fix center positioning in the lighter sitting animation GLB (𝕽𝖔𝖚𝖘𝖙𝖆𝖓)
- Manual VRM rigging needed for generated meshes (hyp shaman)
- Texture replacement for generated models (hyp shaman)
- Switch from single server setup to a more dynamic deployment (ash)
- Investigate websocket disconnection issues with error 1006 (0xLittle dog)
- Consider using Caddy instead of Nginx (general hyper)

### Documentation
- Document the experimental dynamic model loading feature (Ashxn)
- Document Hyperfy's technology ecosystem components (Ashxn)
- Create repository for Discord-Hyperfy integration (Gh0sTt)

### Feature
- Release bot and API repository (Gh0sTt)
- Implement mobile and VR support (0mka)
- Implement chat functionality including DMs and channels (0mka)
- Consider WebGPU integration to improve graphical capabilities (Jayzen)
- Fulfill AI avatar bounty (treefiddy9)
- Create a picker that uses repo/arweave storage (Gh0sTt)
- Link Discord snowflakes to Hyperfy userids for games and rewards (Gh0sTt)
- Face rigging with eye blinking functionality (Valiant)
- Better face generation quality (cwe)
- Consider repositioning Hyperfy as a brand coin with the Hyperfy mascot as the coin image (Rick)