# Hyperfy Discord - 2025-03-31

## Overall Discussion Highlights

### Platform Development
- **Gizmo Tool Release**: A new object manipulation tool was released in the dev environment for testing, featuring rotation snap and world/local space toggling. Initial feedback was positive, with users praising keyboard shortcuts and drag-and-drop functionality.
- **Skinned Mesh Support**: Ash added support for non-humanoid animations, enabling pets, mounts, and bosses with proper animation capabilities.
- **Builder Drone**: A first-person flying mode for building was shared and discussed, with devbyte creating improvements including keybind configuration without needing to be near the drone.
- **App Communication**: Developers discussed methods for apps to communicate with each other through events, with ash providing code examples for emitting and subscribing to events with JSON data.

### Technical Implementations
- **Node Hierarchy**: Discussions about world space vs. app space for positioning objects, with Shiffty explaining that world space makes it easier to communicate position between different apps.
- **Deployment Issues**: Several users worked through deployment problems on Digital Ocean, particularly related to environment configuration and IP addressing.
- **Z-Fighting**: General hyper reported z-fighting issues when duplicating objects, with ash suggesting adding small gaps or removing faces where labels are placed.

### Conceptual Discussions
- **Plot/Parcel System**: Extensive discussion about implementing a coordinate-based building permissions system similar to Decentraland, with various approaches considered including toggling builder roles when users enter their plots.
- **Wallet Integration**: Users discussed the possibility of using crypto wallets as login credentials and storing NFTs in user wallets.
- **Lightmaps**: Vox shared a project with lightmaps implemented, seeking feedback on its suitability for shooter arenas.

## Key Questions & Answers

### Development & Technical
- **Q**: How do apps communicate with each other?  
  **A**: Apps can emit and subscribe to events with JSON data (ash)

- **Q**: What's the benefit of putting nodes in world space vs app space?  
  **A**: Positioning in world space makes it easier to communicate position between different apps (Shiffty)

- **Q**: How can we create invisible walls or collision boundaries?  
  **A**: You can flip normals on a mesh in Blender to create internal collisions (ash)

- **Q**: Does clone() duplicate child nodes too?  
  **A**: Use clone(true) to get all the children too (Shiffty)

- **Q**: Why doesn't my Digital Ocean deployment load properly?  
  **A**: The .env file needs to have the IP address instead of localhost since those variables are sent to the browser (ash)

### User Interface & Features
- **Q**: How do I go first person?  
  **A**: "Drop this in your world and you can build in first person flying mode." (ash)

- **Q**: Is animation blending supported for skinned meshes?  
  **A**: Yes, skinned mesh animations have a fade number for crossfading between animations (ash)

- **Q**: Will scale be added to the gizmo eventually?  
  **A**: Yes, but it's a bigger project (ash)

### Community & Events
- **Q**: Is the Tutorial session still happening?  
  **A**: "Scheduled for today couple weeks ago, and canceled day of. Will try for next week. Sorry I wasn't around." (0mka)

- **Q**: Anyone know who built this world?  
  **A**: "I think <@912902046347300884> build it." (vox)

## Community Help & Collaboration

### Technical Problem Solving
- **Deployment Troubleshooting**: Ash helped mio resolve a Digital Ocean deployment issue by identifying that the .env file needed an IP address instead of localhost.
- **Animation Implementation**: Ash provided Valiant with code examples for configuring and applying emotes for a sit emote on a raptor mount.
- **Node Cloning**: Shiffty helped peezy understand how to clone nodes with children by explaining the clone(true) parameter.

### Feature Sharing & Feedback
- **Builder Drone**: Ash shared a drone feature that enables first-person flying mode while building, helping CheddarQueso who needed a first-person view for building.
- **Gizmo Testing**: Multiple users tested the new Gizmo tool and provided feedback, with CheddarQueso offering detailed comments comparing it favorably to other platforms.
- **Resource Fixes**: Ash fixed syncing issues with a shared resource and distributed the updated version to the community.

### Knowledge Sharing
- **Event Communication**: Ash provided smickelbeard with code examples for emitting and listening to custom events between apps.
- **Collision Creation**: Ash suggested to MiaHigashikata how to create invisible walls by flipping normals in Blender to create internal collisions.
- **AI Tools**: Valiant shared information about poly.cam AI texture generator as an alternative tool for creating texture maps.

## Action Items

### Technical
- Implement scaling feature for Gizmo tool (CheddarQueso)
- Add node.onMount and node.onUnmount callbacks for LOD level notifications (ash)
- Fix syncing issues with drone building feature (ash)
- Implement local/global axis toggle for gizmos (TheMattEmpire)
- Create invisible wall/collision boundary object (ash)
- Improve cache busting to prevent client issues (ash)
- Add tabs to code editor for multiple apps (ash)
- Optimize large models for world compatibility (CheddarQueso)
- Add collider setup for VIPE houses (CheddarQueso)
- Create coordinate-based building permissions system for plots (general hyper)
- Explore exposing a builder role toggle in the API (general hyper)
- Investigate performance impact of zone-based permission checking (maximus)
- Implement a small gap between duplicated objects to prevent z-fighting (ash)
- Consider removing faces where labels are placed to address z-fighting (ash)
- Investigate vectorized fonts for smaller text rendering (general hyper)
- Implement controller support for additional apps beyond tag, contacts and layers (ash)

### Feature
- Create first-person drone for building without player obstruction (ash)
- Add focus/teleport feature to navigate to selected objects (TheMattEmpire)
- Implement grab lock after Y-axis movement to maintain height (0mka)
- Wallet integration for login (MUDBONE)
- NFT storage in wallet (MUDBONE)
- Add web hookshot functionality for Spider-Man style movement (Agent12)
- Implement a parcel/plot system similar to DCL (jar0d)
- Create a custom building system with approved assets (general hyper)

### Documentation
- Create guide for optimizing 3D models (.hyp shaman)
- Reschedule tutorial session for next week (0mka)
- Improve organization system for showcased items (ash)