# Hyperfy Discord - 2025-01-25

## Overall Discussion Highlights

### Development Progress
- **Hyperfy V2 Development**: The team continues to make progress on V2, which will make world-building more accessible to everyone. Physics and collision systems received significant attention with fixes for trimesh colliders and teleportation functionality.
- **UI Components**: New components were implemented including UIDropdown and UIImage, along with fixes for file input fields. A breaking change in file field handling was identified and fixed, where "kind" attributes needed to be specified for different file types.
- **Networked Applications**: Several developers worked on networked applications, particularly a soccer game with client-authoritative ball physics. The community explored how apps communicate through events, with implementation of global events and single-player events through world.emit() and world.sendTo().

### Infrastructure & Hosting
- **Decentralized Hosting Services**: HPrivakos launched a hosting service initially called hyperfy.host (later rebranded to hyperworld.host after IP concerns) offering Hyperfy world hosting for $5/month with features like hourly backups and automatic world creation.
- **Status Endpoint**: HPrivakos submitted a PR for a /status endpoint to provide world metadata and user counts, which will be useful for creating a directory of worlds with user counts.
- **Portability Standards**: Discussions emphasized the importance of portability standards to ensure admins can easily migrate worlds between hosting providers and users can export their data.

### Technical Features
- **Grid Snapping**: Ashxn confirmed plans to add grid snap features that would allow apps to configure their own snap sizes, with community requests for toggle options similar to design software like Rhino and Figma.
- **Collider System**: Extensive discussion about proper collider setup requiring an empty with "node = rigidbody" property and child meshes with "node = collider" properties. The engine's glbToNodes.js automatically fixes colliders by switching to bufferGeo.
- **Model Conversion**: Brief technical discussion about converting safetensor model files to GGUF format using llama.cpp's hf_to_gguf.py script for use with applications like Koboldcpp and SillyTavern.

### Community Projects
- **Hyperball Game**: Detailed planning for a soccer-like game with considerations for stadium design, ball physics, team mechanics, and matchmaking.
- **HyperCircuits**: Educational puzzle game concept for learning electronics mentioned by bitpixi.
- **Documentation Efforts**: Several developers contributing to improving the onboarding experience through code examples, annotations, and structured documentation across different platforms.

### Token & Business Discussion
- **HYPER Token Concerns**: Community members expressed frustration about downward price pressure while core team members reassured that development continues regardless of market conditions.
- **Monetization Strategies**: Discussion of potential monetization including world tokenization and speculation mechanisms similar to other successful projects. Saori mentioned people are already paying for hosting services.

## Key Questions & Answers

### Development
- **Q**: How do I implement teleportation in my world?  
  **A**: Teleport functionality has been added to the dev branch, see git commit comment (Ashxn)

- **Q**: What settings should I use for easy trimesh collision?  
  **A**: Select your mesh and click "create rigidbody", then set collision to "geometry" (Ashxn)

- **Q**: How do I implement a sky/HDR in my world?  
  **A**: Attach a script to a model with sky and HDR nodes, then add the texture files to the configuration (Ashxn)

- **Q**: How do I handle chat commands in my app?  
  **A**: Listen for world.on('chat') events and parse the message body to extract commands and arguments (peezy)

- **Q**: How do apps communicate with each other?  
  **A**: Currently through events with app.send() and app.on(), with world.emit() for global events coming soon (peezy)

### Infrastructure
- **Q**: Is there a size limit for .glb files when uploading to Hyperfy?  
  **A**: Yes, the default size limit on local install is around 12-16MB (merk and MetaMike)

- **Q**: What is the recommended hosting platform for installing your own instance of Hyperfy v2?  
  **A**: You can use any VPS provider such as Digital Ocean or Hetzner, or use services like hyperworld.host (HPrivakos)

- **Q**: Would it be possible to use V2 on our own hosting?  
  **A**: Yes, documentation is available at: https://hackmd.io/HJf4TqMVSB6aLYM1AO-sqg#Deploying-Your-Hyperfy-World (maximus)

### Design & Models
- **Q**: How can animated UVOffset be done for banners in V1?  
  **A**: Add a suffix to the material name, for example: sample_uvscroll_0.1.0.0 (𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎)

- **Q**: How do you set up colliders properly?  
  **A**: Create an empty with custom property node=rigidbody, add mesh as child with node=collider and type=static properties (hiroP)

- **Q**: How to remove clothes from a VRM model when they appear painted on the skin?  
  **A**: You have to repaint the clothes out as they are painted directly on the skin texture (𝕽𝖔𝖚𝖘𝖙𝖆𝖓)

### Business & Token
- **Q**: Why did Hyperfy token dump so much?  
  **A**: According to jar0d, it's "just a quick lesson in how paper handed and short sighted most of solana is" (jar0d)

- **Q**: How will Hyperfy monetize?  
  **A**: Saori mentioned people are already paying for hosting services they didn't even build, suggesting revenue streams exist (Saori)

## Community Help & Collaboration

### Technical Assistance
- **Ashxn** helped **devilsadvocate.sol** implement sky and HDR in a world by providing a complete script for creating sky and HDR nodes with configuration options.

- **peezy** assisted **MetaMike** with implementing chat commands by sharing code examples for handling chat commands with world.on('chat') and parsing message body.

- **Saori** helped **devilsadvocate.sol** understand app/node hierarchy by explaining the world > app > nodes > subnodes structure and how to traverse nodes.

- **hiroP** guided **DevStarlight | Numinia** through proper collider setup with detailed step-by-step instructions for parent-child hierarchy and custom properties.

### Infrastructure Support
- **HPrivakos** helped **DevStarlight** with routing ~60 Hyperfy worlds during a voice chat session.

- **HPrivakos** assisted **Taqman2** with resolving a 404 error when trying to access a newly created world.

- **maximus** helped **MokonaW** with setting up Hyperfy on personal hosting by providing documentation links for VPS deployment.

### Model & Design Help
- **𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎** helped **TheMattEmpire** implement UV scrolling animation for banners in V1 by providing specific naming convention for materials.

- **𝕽𝖔𝖚𝖘𝖙𝖆𝖓** and **ckbubbles** assisted **bitpixi** with VRM model editing, explaining that clothes painted directly on skin texture require manual repainting.

- **MetaMike** helped **maximus** discover methods for converting safetensor files to GGUF format, leading to the discovery of llama.cpp's conversion functionality.

## Action Items

### Technical
- Fix trimesh colliders to work properly with triggers (Ashxn)
- Implement global events for app-to-app communication (peezy)
- Add UIImage component for loading images from URLs (MetaMike)
- Fix scaling issues with action positions when model is scaled (Ashxn)
- Add read-only flag for scripts to allow non-admins to view code (Ashxn)
- Implement UV scrolling for animations (Ashxn)
- Add audio implementation to apps (MetaMike)
- Add validator for configuration fields to handle errors gracefully (Ashxn)
- Fix collider generation for meshes with multiple materials (Ashxn)
- Implement easier collision detection without requiring Blender (Saori)
- Fix dexscreener API integration issues with Hyperfy token (MetaMike)
- Set up crypto payment rails for Hyperfy hosting services (maximus)
- Implement matchmaking mechanic for Hyperball with lobby and team selection (𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎)
- Create scoring system for Hyperball (𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎)
- Make ball glow the color of current winning/scoring team (TheMattEmpire)
- Raise circle platforms slightly to create better ball collision (𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎)
- Generate version information during build with info.json containing commit hash (ash)
- Implement a status page with connected users count (HPrivakos)
- Implement built-in auth module for v2 (Lastraum)

### Documentation
- Create structured documentation for different user types (developers, designers, "normies") (Ashxn)
- Document app/node hierarchy and relationships (devilsadvocate.sol)
- Create a "Getting Started with Hyperfy V2" guide (devilsadvocate.sol)
- Document chat command handling (MetaMike)
- Create a beginner's guide documenting the journey of experimenting with Hyperfy (Tejas)
- Add current available options for hosting to onboarding guides (Jona)
- Create official documentation for Hyperfy (Saori)
- Document proper collider setup with parent-child hierarchy and custom properties (hiroP)
- Create or share a list of hosted worlds (general hyper)

### Features
- Add double jump functionality (Ashxn)
- Create a world with annotated example scripts for learning (Saori)
- Implement a reconnect button that doesn't require full page refresh (Ashxn)
- Add ability to backup scripts and models in world (᲼)
- Create HyperCircuits educational puzzle game for learning electronics (bitpixi)
- Add world-to-world connections like zeppelins or tunnels (jar0d)
- Add grid snap functionality with configurable snap sizes (Ashxn)
- Add toggle options for different types of snapping (on/off, different modes) (bitpixi)
- Implement alignment tools similar to Figma (devilsadvocate.sol)
- Add array tool for duplicating objects (devilsadvocate.sol)
- Add wall tool similar to The Sims (devilsadvocate.sol)
- Add player physical interaction capabilities (~/HowiEDuhzit)
- Integrate Discord functionality within Hyperfy (HPrivakos)
- Create a token launcher or speculation mechanism within Hyperfy similar to pump.fun (zhades)
- Develop world tokenization capabilities to enable speculation on worlds (PurpleSack)
- Implement trading experience points system for in-world trading (Uuuuuuuuu)
- Add attachables for players to visually distinguish teams in Hyperball (𝚟𝚘𝚡𝚟𝚒𝚎𝚗𝚗𝚎)
- Create different "maps" with various obstacle layouts for Hyperball (Ashxn)
- Implement team-based zones (red vs blue) instead of circles (Ashxn)
- Create community challenge for people to make different arenas (TheMattEmpire)
- Develop portability standards for world migration (maximus)
- Create cross-platform user identification and management (maximus)
- Implement user data export functionality (maximus)
- Develop security/auth frameworks (maximus)
- Create standardized governance endpoints (maximus)
- Implement user roles system (maximus)
- Payment system expansion to include credit cards, Google Pay and Apple Pay (HPrivakos)