# Hyperfy Discord - 2025-01-26

## Overall Discussion Highlights

### Development Progress
- **Hyperfy V2 Development**: Significant progress on physics implementation, with Ashxn fixing collision mesh issues that previously prevented certain models from generating colliders properly. The engine demonstrated impressive performance, handling approximately 50 full buildings with collision detection without performance overhead.
- **UV Scrolling Implementation**: New texture animation effects were added, enabling dynamic visuals. Several developers demonstrated applications like animated cubes and contact-triggered effects.
- **UI Improvements**: New pointer events (onPointerEnter, onPointerLeave, onPointerDown) were added, along with event bubbling and propagation control. MetaMike demonstrated camera manipulation capabilities.
- **Client-Server Communication**: Extensive discussions on structuring apps that need to communicate between client and server components, with consensus forming around using event-based messaging rather than direct state access.
- **Domain Change**: Hyperfy.host is transitioning to HyperWorld.host with automatic redirects being implemented.

### Infrastructure & Hosting
- **HyperWorld.Host Service**: A hosting service for Hyperfy worlds using Docker containers was discussed. Currently, worlds are fully persistent rather than spinning down when inactive.
- **API Standardization**: Efforts to establish standardized API endpoints for world metadata and user counts, with HPrivakos submitting a PR for a /status endpoint.
- **Security Protocols**: Discussion of vulnerability management approaches, with agreement that a good reporting protocol and notification path are essential.

### Community Projects
- **Hyperball Game**: Development of a multiplayer game with discussions about team formation and player joining processes. Ashxn proposed a lobby system where players can select teams by standing in colored zones.
- **Discord Bot**: HPrivakos offered to code a Discord bot for "starring" helpful messages in dev channels within 15 minutes.
- **Documentation Efforts**: devilsadvocate.sol is restructuring the docs and creating getting-started guides, with discussions about creating a dedicated documentation world.

### Token & Business Model
- **HYPER Token Discussion**: Community members expressed concerns about price decline, with team members providing reassurance and emphasizing focus on building the platform rather than short-term price action.
- **Monetization Plans**: HPrivakos confirmed plans to take small fees on paid apps, sharing revenue between the platform and the Hyperfy DAO. The team positioned Hyperfy as a "WordPress of the metaverse" or "Roblox on steroids."
- **Marketplace Development**: Plans for a marketplace for scripts/code, modular code implementation, and an app marketplace on hyperworld.host were discussed.

## Key Questions & Answers

### Development
- **Q**: How are chat commands handled in Hyperfy?  
  **A**: Commands with '/' are handled by core, but you can listen for them in apps using world.on("chat") and parsing the message body.

- **Q**: How do we output to chat?  
  **A**: Use world.chat() with message object parameters including id, from, fromId, body, and createdAt.

- **Q**: How do I implement a custom chat command?  
  **A**: Listen for chat events with world.on('chat'), parse the command properly, and handle your command.

- **Q**: How do apps communicate between client and server?  
  **A**: Use app.send() and app.on() to communicate between client and server components of the same app.

- **Q**: How do I scale a model?  
  **A**: Use app.scale.set(x,y,z) but you must first set app.position.set(x,y,z).

- **Q**: How do I create a primitive shape programmatically?  
  **A**: Use app.create('mesh'), set mesh.type = 'box', set size with setSize(), then add to app.

- **Q**: How do I handle nested UI elements with pointer events?  
  **A**: Events bubble up by default, use e.stopPropagation() to prevent parent handlers from firing.

### Infrastructure & Hosting
- **Q**: Are worlds completely persistent or do they spin down when there's no players connected?  
  **A**: They are persistent for the moment.

- **Q**: How do I create a world on HyperWorld.Host?  
  **A**: Use the create page, but you may need to refresh if you encounter errors.

- **Q**: Do I need to match my world name with the building key?  
  **A**: No, the building key is the admin password to get building permission once in-world.

### Business & Token
- **Q**: Is Hyperfy token a rug pull?  
  **A**: No, the team is still building and the future is bright.

- **Q**: How will Hyperfy monetize?  
  **A**: Through hosting services, marketplace fees on paid apps shared between the platform and DAO.

- **Q**: In a hyperfy world what would be the easiest way to integrate the ability for visitors to buy some merch?  
  **A**: In v1 you can use a WebView to show your store website in-world or attach click listeners to digital versions that open a buy page in a new tab.

### Technical
- **Q**: Does anyone have a recommendation for converting safetensor files to gguf files for use with Koboldcpp and SillyTavern?  
  **A**: Try unsloth, there's something in the colabs that convert to gguf. Further investigation revealed llama.cpp's hf_to_gguf.py script can handle safetensor files.

- **Q**: What happens when duplicating objects with position set in scripts?  
  **A**: They all stack at the same position because they share the same script. The solution is to "unlink" objects before duplication.

## Community Help & Collaboration

### Development Assistance
- **peezy** helped **MetaMike** implement custom chat commands by sharing code for handling chat messages and parsing commands, which MetaMike later summarized into a comprehensive solution.
- **devilsadvocate.sol** discovered and shared with the community that app.position.set() must be called before app.scale.set() for scaling to work.
- **Ashxn** provided undocumented code to create box primitives with app.create('mesh') and setting type to 'box'.
- **Ashxn** explained event propagation to **Lastraum** and provided code example using e.stopPropagation().
- **peezy** shared a recursive function to traverse up the node hierarchy to get the root parent node of an app.

### Technical Troubleshooting
- **Saori** helped **Tejas** identify a browser compatibility issue with Arc browser when troubleshooting model import issues.
- **HPrivakos** provided **Tejas** with a test model that worked, confirming browser compatibility issue.
- **Wilson** provided **Zen** with a test GLB file to check functionality when they couldn't import GLB files.
- **HypPrivakos** suggested using "/admin <buildingCode>" command when **Zen** needed admin access.
- **ash** explained to **general hyper** that unlinking creates a new script associated only with that specific app when dealing with duplicated objects with position scripts stacking.

### Knowledge Sharing
- **MetaMike** guided **maximus** to unsloth's colab notebooks for converting safetensor files to gguf format, which led maximus to discover llama.cpp's conversion functionality.
- **maximus** shared findings about model conversion by posting a Medium tutorial link explaining how to use llama.cpp's hf_to_gguf.py script.
- **Ashxn** explained to **poortubby** WebView options in v1 for integrating merchandise purchasing in Hyperfy worlds.
- **Saori** recommended to **devilsadvocate.sol** using shaders instead of animations with armatures for implementing grass in environments.
- **ckbubbles** provided detailed framework for developing marketing campaigns with pre-launch, launch, and sustain phases.

## Action Items

### Technical
- Implement global events for cross-app communication using world.emit() and world.sendTo() (mentioned by peezy)
- Fix model scaling issue to ensure app.scale.set() works without requiring app.position.set() first (mentioned by Ashxn)
- Add player anchor points to enable players to sit in vehicles like the jet (mentioned by Ashxn)
- Add double jump capability to core functionality (mentioned by Ashxn)
- Implement read-only scripts to allow non-admin users to view but not edit scripts (mentioned by devilsadvocate.sol)
- Fix UV scrolling for animations to enable texture scrolling for creating animations (mentioned by Ashxn)
- Create a Discord bot for starring helpful messages to capture reactions and post to a "starred" channel (mentioned by MetaMike)
- Implement separate URLs for different purposes: play.hyperfy.xyz as a curated playground and build.hyperfy.xyz for free building (mentioned by Ashxn)
- Use llama.cpp's hf_to_gguf.py script to convert safetensor files to GGUF format (mentioned by maximus)
- Implement modular code for Hyperfy to allow easy import/attachment of code to objects (mentioned by Morph)
- Create an app marketplace on hyperworld.host (mentioned by HPrivakos)
- Develop open repository of scripts for community use (mentioned by HPrivakos)
- Implement lobby system with team selection zones for Hyperball (mentioned by Ashxn)
- Explore shader-based grass implementation instead of animation-based approach (mentioned by Saori)
- Research how to duplicate objects using world.add(node) in scripts (mentioned by devilsadvocate.sol)
- Implement /status endpoint for world metadata and user counts (mentioned by HPrivakos)
- Add package version or commit hash to status endpoint (mentioned by ash)
- Implement automated tests (mentioned by maximus)
- Develop security/auth frameworks to protect world data (mentioned by maximus)
- Create governance endpoints for consistent APIs across hosting providers (mentioned by maximus)
- Implement user roles system for world editing (mentioned by maximus)
- Establish security vulnerability management protocol (mentioned by maximus)
- Fix or clarify behavior of duplicated objects with position scripts (mentioned by general hyper)
- Add option to opt out of instancing without requiring new imports (mentioned by Saori)

### Documentation
- Create a documentation world to build an in-world experience for learning Hyperfy development (mentioned by multiple users)
- Restructure documentation to reorganize docs into a more logical hierarchy with better examples (mentioned by devilsadvocate.sol)
- Add troubleshooting guide to create FAQ for common issues like model importing problems (mentioned by devilsadvocate.sol)
- Include sample model to add a reference model that's guaranteed to work for testing (mentioned by devilsadvocate.sol)
- Create documentation for sharing apps and knowledge, possibly in a world with invite-only access (mentioned by Saori)
- Develop brand documentation to define what Hyperfy stands for, main messaging, target audiences, and marketing goals (mentioned by ckbubbles)
- Create a section on the website for brand assets to store and access marketing materials and social media content (mentioned by devilsadvocate.sol)
- Review Medium tutorial on converting Hugging Face safetensor models to GGUF format for Ollama (mentioned by maximus)
- Create a guide for applying collision to objects in Blender (mentioned by Tejas)
- Document how to experiment with Hyperfy as a complete beginner (mentioned by Tejas)
- Create wording for terms of service/licensing/privacy policy (mentioned by maximus)
- Document security and vulnerability patch management process (mentioned by HPrivakos)
- Document the engine's capabilities for handling multiple complex objects with collision (mentioned by Ashxn)
- Complete the scripting documentation on GitHub (mentioned by general hyper)
- Document the need to unlink objects before duplication when using position scripts (mentioned by general hyper)

### Feature
- Add world.getPlayer() for client to allow getting local player object on client side (mentioned by peezy)
- Create app explorer to build an in-world tool to browse and inspect apps (mentioned by Saori)
- Add environment node to create node type for controlling world environment settings (mentioned by MetaMike)
- Implement world-to-world connections to allow travel between worlds via vehicles or portals (mentioned by jar0d)
- Implement merchandise purchasing capabilities in v2 for native integration for buying digital or physical merchandise (mentioned by poortubby)
- Implement a code marketplace where developers can sell addons or code for $HYPER (mentioned by Morph)
- Create a system for tokenizing entire worlds for speculation (mentioned by zhades and PurpleSack)
- Implement trading experience points for in-world trading (mentioned by Uuuuuuuuu)
- Improve the process for applying collision to objects (currently requires Blender) (mentioned by Saori)
- Develop a system similar to PumpFun within Hyperfy (mentioned by zhades)
- Consider friend grouping functionality for team formation in Hyperball (mentioned by TheMattEmpire)
- Implement reset and export functionality for worlds (mentioned by HPrivakos)
- Add ability to switch worlds folder (mentioned by HPrivakos)
- Create dev container with player cap for testing before pushing to main world (mentioned by general hyper)
- Implement settings menu and apps for V2 worlds (mentioned by Zen)
- Implement ability to swap between world builds without losing data (mentioned by general hyper)