Skip to content

Commit ad0a35e

Browse files
committed
Merge remote-tracking branch 'origin/dev'
2 parents 70b9d5b + 23dc5d7 commit ad0a35e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+9234
-705
lines changed

.prettierignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
*.md
2-
Vector3Enhanced.js
2+
Vector3Enhanced.js
3+
GLTFLoader.js

CHANGELOG.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1313

1414
### Fixed
1515

16+
## [v0.10.0]
17+
18+
### Added
19+
- core: new streamlined user interface
20+
- core: grayscale overlay when disconnected
21+
- core: new world menu for admins to change world environment, default avatar, spawns etc
22+
- core: new gizmo for fine-grained builder controls
23+
- apps: controller support for tag, contacts and layers
24+
- apps: support for interleaved buffer geometry
25+
- apps: geometry handles
26+
- apps: Math globals
27+
- apps: player.local boolean
28+
- apps: ui margin and padding per side
29+
- apps: apps can now redirect to a url or open in a new tab
30+
- apps: ability to load models from a url on the fly
31+
- apps: node.get(id) to find matches inside any node hierarchy
32+
- core: new mod/plugin hooks (experimental)
33+
- core: added ping time to /stats
34+
35+
### Changed
36+
- apps: uiimage node stability and docs
37+
- apps: ui absolue positioning and flex additions
38+
39+
### Fixed
40+
- apps: ui gap size not correct
41+
- core: vr button not working
42+
- core: octree issues with tiny objects, improves memory usage
43+
- core: fix audio unmount issues
44+
- core: equipping one vrm while one is already uploading (race condition)
45+
1646
## [v0.9.0]
1747

1848
### Added
@@ -289,7 +319,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
289319
- Basic project structure
290320
- Core functionality from original project
291321

292-
[Unreleased]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.9.0...HEAD
322+
[Unreleased]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.10.0...HEAD
323+
[0.10.0]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.9.0...v0.10.0
293324
[0.9.0]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.8.1...v0.9.0
294325
[0.8.1]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.8.0...v0.8.1
295326
[0.8.0]: https://github.com/hyperfy-xyz/hyperfy/compare/v0.7.1...v0.8.0

README.md

Lines changed: 90 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,118 @@
11
# Hyperfy ⚡️
22

3-
## Overview
4-
53
<div align="center">
64
<img src="overview.png" alt="Hyperfy Ecosystem" width="100%" />
5+
<p>
6+
<strong>Build, deploy, and experience interactive 3D virtual worlds</strong>
7+
</p>
78
</div>
89

9-
## 🧬 Features
10+
## What is Hyperfy?
1011

11-
- Standalone persistent world
12-
- Host them on your own domain
13-
- Connect via Hyperfy for portable avatars
14-
- Realtime content creation in-world
15-
- Realtime coding in-world (for devs)
16-
- Fully interactive and interoperable app format
17-
- Highly extensible
12+
Hyperfy is an open-source framework for building interactive 3D virtual worlds. It combines a powerful physics engine, networked real-time collaboration, and a component-based application system to create immersive experiences that can be self-hosted or connected to the wider Hyperfy ecosystem.
1813

19-
## 🦹‍♀️ Use Cases
14+
## 🧬 Key Features
2015

21-
- Live events
22-
- Storefronts
23-
- Podcasts
24-
- Gaming
25-
- Social
16+
- **Standalone persistent worlds** - Host on your own domain
17+
- **Realtime content creation** - Build directly in-world
18+
- **Interactive app system** - Create dynamic applications with JavaScript
19+
- **Portable avatars** - Connect via Hyperfy for consistent identity
20+
- **Physics-based interactions** - Built on PhysX for realistic simulation
21+
- **WebXR support** - Experience worlds in VR
22+
- **Extensible architecture** - Highly customizable for various use cases
2623

2724
## 🚀 Quick Start
2825

2926
### Prerequisites
3027

31-
- Node 22.11.0+ (eg via nvm)
28+
- Node.js 22.11.0+ (via [nvm](https://github.com/nvm-sh/nvm) or direct install)
3229

33-
### Install
30+
### Installation
3431

3532
```bash
33+
# Clone the repository
3634
git clone https://github.com/hyperfy-xyz/hyperfy.git my-world
3735
cd my-world
36+
37+
# Copy example environment settings
3838
cp .env.example .env
39+
40+
# Install dependencies
3941
npm install
42+
43+
# Start the development server
4044
npm run dev
4145
```
4246

43-
## 🌱 Alpha
47+
### Docker Deployment
48+
49+
For containerized deployment, check [DOCKER.md](DOCKER.md) for detailed instructions.
50+
51+
## 🧩 Use Cases
52+
53+
- **Virtual Events & Conferences** - Host live gatherings with spatial audio
54+
- **Interactive Showrooms** - Create product displays and demos
55+
- **Social Spaces** - Build community hubs for collaboration
56+
- **Gaming Environments** - Design immersive game worlds
57+
- **Educational Experiences** - Develop interactive learning spaces
58+
- **Creative Showcases** - Display 3D art and interactive installations
59+
60+
## 📚 Documentation & Resources
61+
62+
- **[Community Documentation](https://hyperfy.how)** - Comprehensive guides and reference
63+
- **[Website](https://hyperfy.io/)** - Official Hyperfy website
64+
- **[Sandbox](https://play.hyperfy.xyz/)** - Try Hyperfy in your browser
65+
- **[Twitter/X](https://x.com/hyperfy_io)** - Latest updates and announcements
66+
67+
## 📏 Project Structure
68+
69+
```
70+
docs/ - Documentation and references
71+
src/
72+
client/ - Client-side code and components
73+
core/ - Core systems (physics, networking, entities)
74+
server/ - Server implementation
75+
CHANGELOG.md - Version history and changes
76+
```
77+
78+
## 🛠️ Development
79+
80+
### Key Commands
81+
82+
```bash
83+
# Development mode
84+
npm run dev
85+
86+
# Production build
87+
npm run build
88+
npm start
89+
90+
# Clean orphaned assets (experimental)
91+
npm run world:clean
92+
93+
# Viewer only (development)
94+
npm run viewer:dev
95+
96+
# Client only (development)
97+
npm run client:dev
98+
99+
# Linting
100+
npm run lint
101+
npm run lint:fix
102+
```
103+
104+
## 🖊️ Contributing
105+
106+
Contributions are welcome! Please check out our [contributing guidelines](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md) before getting started.
107+
108+
1. Fork the repository
109+
2. Create your feature branch: `git checkout -b feature/amazing-feature`
110+
3. Commit your changes: `git commit -m 'Add amazing feature'`
111+
4. Push to the branch: `git push origin feature/amazing-feature`
112+
5. Open a pull request
113+
114+
## 🌱 Project Status
44115

45116
This project is still in alpha as we transition all of our [reference platform](https://github.com/hyperfy-xyz/hyperfy-ref) code into fully self hostable worlds.
46117
Most features are already here in this repo but still need to be connected up to work with self hosting in mind.
47118
Note that APIs are highly likely to change during this time.
48-

docs/ref/Player.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ The players unique ID. This is always the same for the same player, even when th
1212

1313
The players name.
1414

15+
### `.local`: Boolean
16+
17+
Whether the player is local to this client.
18+
19+
### `.admin`: Boolean
20+
21+
Whether the player is an admin in this world.
22+
1523
### `.position`: Vector3
1624

1725
The players position in the world.

docs/ref/Props.md

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -89,37 +89,33 @@ A range slider input
8989
}
9090
```
9191

92-
### Switch
92+
### Toggle
9393

94-
A switch input
94+
A boolean toggle field
9595

9696
```jsx
9797
{
98-
type: 'switch',
98+
type: 'toggle',
9999
key: String, // the key on `props` to set this value
100100
label: String, // the label for the text input
101-
options: [
102-
{
103-
label: String, // the label to show on this switch item
104-
value: String, // the value to set on the props when selected
105-
}
106-
],
101+
trueLabel: String, // optional, defaults to "Yes"
102+
falseLabel: String, // optional, defaults to "No"
107103
initial: String, // the initial value to set if not configured
108104
}
109105
```
110106

111-
### Dropdown
107+
### Switch
112108

113-
A dropdown menu
109+
A switch field with many options
114110

115111
```jsx
116112
{
117-
type: 'dropdown',
113+
type: 'switch',
118114
key: String, // the key on `props` to set this value
119115
label: String, // the label for the text input
120116
options: [
121117
{
122-
label: String, // the label to show on this item
118+
label: String, // the label to show on this switch item
123119
value: String, // the value to set on the props when selected
124120
}
125121
],
@@ -159,29 +155,15 @@ const audio = app.create('audio', {
159155
audio.play()
160156
```
161157
162-
### Section
163-
164-
A simple section header to help group fields together
165-
166-
```jsx
167-
{
168-
type: 'section',
169-
key: String, // a unique `key` to represent this section
170-
label: String, // the label for the section header
171-
}
172-
```
173-
174-
### Buttons
158+
### Button
175159
176-
Displays one or more buttons that when clicked, execute something in the running app.
160+
Displays a button that when clicked, executes something in the running app.
177161
178162
```jsx
179163
{
180-
type: 'buttons',
164+
type: 'button',
181165
key: String, // a unique `key` for this button
182166
label: String, // the label for the button
183-
buttons: [
184-
...{ label: String, onClick: Function },
185-
]
167+
onClick: Function,
186168
}
187169
```

docs/ref/UI.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Whether the canvas is doublesided. Defaults to `false`.
5757

5858
### `.billboard`: String
5959

60-
Makes the UI face the camera. Can be `null`, `full` or `y-axis`. Default to `null`.
60+
Makes the UI face the camera. Can be `none`, `full` or `y`. Default to `none`.
6161

6262
### `.pivot`: String
6363

0 commit comments

Comments
 (0)