# Hyperfy Discord - 2025-03-08

## Overall Discussion Highlights

### Development & Technical Features
- **Undo Feature**: Ashxn implemented an undo feature for the editor, tracking add/move/remove actions with up to 50 entries in the undo list.
- **Player Movement Mechanics**: New player.push() functionality was introduced for implementing launchers, pushback, and charge/blink abilities.
- **Elemental Framework**: A comprehensive framework (previously called "Lootify") is being developed for creating interoperable game systems including inventory management, combat, items, and shops.
- **UI Development**: Discussions about action bars, health displays, and inventory systems using the new UI nodes system that enables more flexible interfaces with each node being a single draw call.
- **Raycast Implementation**: Technical discussions about raycasts for weapons, player direction vectors, and 3D icon integration.
- **WebXR Functionality**: Brief mention that WebXR features exist in the main branch but may not be working on the play.hyperfy.xyz deployment.

### Game Development
- **Combat Systems**: Several members shared progress on game mechanics including combat systems with blocking, damage animations, and spell effects.
- **The Energy Chronicles**: Detailed lore was shared for a post-apocalyptic arena combat game set in 2077 after "The Great Convergence" where digital and physical realities merged.
- **Player Trading**: Discussions about implementing trading systems between players, potentially involving Hyper token transfers.

### Tools & Resources
- **3D Generation**: Users discussed experiences with Meshy, noting issues with texture quality particularly on reverse sides of models, and differences in performance between character models and other objects.
- **LLM Integration**: Brief discussion about integrating an LLM into the app window similar to GitHub Copilot, which someone had apparently already attempted early in the platform's development.

## Key Questions & Answers

### Technical Implementation
- **Q**: How does the new undo feature work? (drdoge.eth)  
  **A**: It tracks add/move/remove actions with up to 50 entries in the undo list (Ashxn)

- **Q**: Can I use UIImage on the onscreen UI? (Omka)  
  **A**: Yes, it should be 100% the same as regular UI (Ashxn)

- **Q**: How are player directions derived from a character's orientation? (Saori)  
  **A**: Using normalized Vector3 and quaternions to transform a forward vector (Ashxn)

- **Q**: Is there a way to generate dimensions of a GLB programmatically? (peezy)  
  **A**: Load the GLTF into ThreeJS and get the bounding box, similar to how avatar height is determined (Ashxn)

- **Q**: How can state be persisted for an App to the database? (Cybernetic-O-Cult)  
  **A**: Use world.get(key) and world.set(key, value) on the server side (Saori)

- **Q**: How does the player push functionality work? (HowiEDuhzit)  
  **A**: It's implemented in a PVP core with a pointer handler that calls player.push() (Ashxn)

- **Q**: Do we need to use the built-in health system? (HowiEDuhzit)  
  **A**: No, you can implement your own health system and never call player.damage (Ashxn)

- **Q**: Is applyEffect(null) still the way to clear effects? (Shiffty)  
  **A**: No, use player.cancelEffect() which is safe and only cancels effects your app added (ash)

### Hardware & Tools
- **Q**: What's the best laptop to play hyperfy? Is the new MacBook Air a decent choice? (zobo)  
  **A**: Yeah the new air would work well (Ashxn)

- **Q**: Does anyone recommend a cool free svg logo maker? (bear)  
  **A**: recraft.ai (Omka)

- **Q**: Where's the latest XR branch available? (MetaMike)  
  **A**: There's WebXR stuff in main branch (peezy)

## Community Help & Collaboration

1. **Raycast Troubleshooting**:  
   Ashxn provided direct assistance to HowiEDuhzit with raycasts not registering despite raybeam showing.

2. **Character Direction Vectors**:  
   Ashxn helped Saori derive direction vectors from a character's chest bone by providing code snippets using quaternions to transform a forward vector.

3. **State Persistence**:  
   Saori explained to Cybernetic-O-Cult how to persist state in the database using world.get() and world.set() methods on the server.

4. **3D Icons Implementation**:  
   Ashxn advised HowiEDuhzit on 3D icons implementation, suggesting using active=false custom property in Blender to optimize rendering.

5. **Radial UI Implementation**:  
   Omka shared working code with peezy for radial UI implementation.

6. **Effect Clearing**:  
   Ash helped Shiffty fix a blocking bug by recommending player.cancelEffect() instead of applyEffect(null).

## Action Items

### Technical
- Implement undo functionality for deleted terrain (Ashxn)
- Create radial gun inventory UI (Omka)
- Develop "Elemental" framework for inventory, combat, items and shops (Ashxn)
- Add player.direction property to core API (Saori)
- Fix animation feet positioning in combat animations (Saori)
- Fix blocking bug by replacing applyEffect(null) with player.cancelEffect() (ash)
- Investigate why WebXR functionality isn't working on play.hyperfy.xyz deployment (MetaMike)
- Explore integration of LLM into the app window with documentation context (devilsadvocate.sol)

### Feature
- Add ability to export world as JSON+HYP+GLB (Knar)
- Implement trading system between players (Saori)
- Add support for ThreeJS geometry primitives for free assets (Saori)
- Implement lower body blending for emotes like in v1 (peezy)
- Implement gamepad on-screen UI (0mka)
- Context menu for flipping pawns (smickelbeard)
- Evaluate integration of technology shared in Johan's link (johan)

### Documentation
- Document the Elemental framework APIs (Ashxn)
- Finalize in-world docs for merging (Omka)
- Update documentation to clarify the proper method for clearing effects (ash)