hytopia 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -11
- package/bin/scripts.js +11 -23
- package/boilerplate/assets/certs/README.md +11 -6
- package/boilerplate/assets/certs/localhost.crt +20 -0
- package/boilerplate/assets/certs/localhost.key +27 -0
- package/docs/server.hytopia.md +11 -0
- package/docs/server.hytopia.port.md +13 -0
- package/docs/server.md +11 -0
- package/docs/server.port.md +13 -0
- package/package.json +2 -5
- package/server.api.json +46 -0
- package/server.d.ts +4 -0
- package/server.js +57 -57
package/README.md
CHANGED
@@ -29,29 +29,24 @@ With these resources, you can quickly build and share immersive, voxel-style mul
|
|
29
29
|
|
30
30
|
## Quickstart
|
31
31
|
|
32
|
-
1. Install a compatible JavaScript runtime. We recommend [Bun
|
32
|
+
1. Install a compatible JavaScript runtime. We recommend you use [Bun](https://bun.sh/), but [Node.js](https://nodejs.org/) and [Deno](https://deno.com/) can work with additional configuration. All examples will be given using Bun.
|
33
33
|
|
34
|
-
2.
|
34
|
+
2. Create a new project directory somewhere on your machine and navigate into it.
|
35
35
|
```bash
|
36
|
-
|
36
|
+
mkdir my-project-directory && cd my-project-directory
|
37
37
|
```
|
38
38
|
|
39
|
-
3.
|
40
|
-
```bash
|
41
|
-
bun add hytopia
|
42
|
-
```
|
43
|
-
|
44
|
-
4. Initialize boilerplate. Copies assets and an index.ts game script into your project.
|
39
|
+
3. Initialize a hytopia project. Sets up package.json and all dependencies, copies assets and an index.ts game script into your project.
|
45
40
|
```bash
|
46
41
|
bunx hytopia init
|
47
42
|
```
|
48
43
|
|
49
|
-
|
44
|
+
3. Start the server, use --watch for hot reloads as you make changes.
|
50
45
|
```bash
|
51
46
|
bun --watch index.ts
|
52
47
|
```
|
53
48
|
|
54
|
-
|
49
|
+
4. Visit https://play.hytopia.com - when prompted, enter `localhost:8080` - this is the hostname of the local server you started in the previous step.
|
55
50
|
|
56
51
|
Once you're up and running, here's some other resources to go further:
|
57
52
|
- [Game Examples](./examples)
|
package/bin/scripts.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
|
3
|
+
const { execSync } = require('child_process');
|
3
4
|
const fs = require('fs');
|
4
5
|
const path = require('path');
|
5
|
-
const mkcert = require('mkcert');
|
6
6
|
|
7
7
|
(async () => {
|
8
8
|
const command = process.argv[2];
|
@@ -10,35 +10,23 @@ const mkcert = require('mkcert');
|
|
10
10
|
/**
|
11
11
|
* Init command
|
12
12
|
*
|
13
|
-
* Initializes a new HYTOPIA project.
|
13
|
+
* Initializes a new HYTOPIA project. Accepting an optional
|
14
|
+
* project name as an argument.
|
15
|
+
*
|
16
|
+
* @example
|
17
|
+
* `bunx hytopia init my-project-name`
|
14
18
|
*/
|
15
19
|
if (command === 'init') {
|
16
20
|
const srcDir = path.join(__dirname, '..', 'boilerplate');
|
17
21
|
const destDir = process.cwd();
|
18
|
-
|
22
|
+
|
23
|
+
// Initialize project
|
24
|
+
execSync('bun init --yes');
|
25
|
+
execSync('bun add hytopia');
|
26
|
+
|
19
27
|
// Copy boilerplate
|
20
28
|
console.log(`🖨️ Copying boilerplate to ${destDir}`);
|
21
29
|
fs.cpSync(srcDir, destDir, { recursive: true });
|
22
|
-
|
23
|
-
// Generate SSL cert and allow mkcert to auto handle CA/Cert setup
|
24
|
-
console.log(`🔒 Generating SSL cert for local development`);
|
25
|
-
const validity = 3650; // 10 years
|
26
|
-
const ca = await mkcert.createCA({
|
27
|
-
organization: 'HYTOPIA',
|
28
|
-
countryCode: 'US',
|
29
|
-
state: 'Washington',
|
30
|
-
locality: 'Seattle',
|
31
|
-
validity,
|
32
|
-
});
|
33
|
-
|
34
|
-
const cert = await mkcert.createCert({
|
35
|
-
ca: { key: ca.key, cert: ca.cert },
|
36
|
-
domains: ['localhost', '127.0.0.1'],
|
37
|
-
validity,
|
38
|
-
});
|
39
|
-
|
40
|
-
fs.writeFileSync(path.join(destDir, 'assets', 'certs', 'localhost.crt'), cert.cert);
|
41
|
-
fs.writeFileSync(path.join(destDir, 'assets', 'certs', 'localhost.key'), cert.key);
|
42
30
|
|
43
31
|
// Done, lfg!
|
44
32
|
console.log('🚀 Hytopia project initialized successfully!');
|
@@ -1,6 +1,11 @@
|
|
1
|
-
For local development
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
For local development self-signed certs are stored here.
|
2
|
+
The server when GameServer.instance.webServer.enableLocalSSL();
|
3
|
+
is used, will look for assets/certs/localhost.key and
|
4
|
+
assets/certs/localhost.cert and use those for SSL.
|
5
|
+
|
6
|
+
We use these self-signed certs to allow https://localhost
|
7
|
+
& wss://localhost support. Without this, play.hytopia.com
|
8
|
+
requires a bunch of funky browser flag workarounds in
|
9
|
+
order to connect to your local server. This is only used
|
10
|
+
for local development and will be ignored when your game
|
11
|
+
is deployed to HYTOPIA servers.
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDRjCCAi6gAwIBAgIFOTEzNTIwDQYJKoZIhvcNAQELBQAwWDEQMA4GA1UEAxMH
|
3
|
+
SFlUT1BJQTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV
|
4
|
+
BAcTB1NlYXR0bGUxEDAOBgNVBAoTB0hZVE9QSUEwHhcNMjQxMTEzMjIyMjEwWhcN
|
5
|
+
MzQxMTExMjIyMjEwWjAUMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEiMA0GCSqGSIb3
|
6
|
+
DQEBAQUAA4IBDwAwggEKAoIBAQCo2i9L13+4KxvR9dxBeE3Xrj5WtoGFBwbUZkeV
|
7
|
+
3B8n+ehJ2LWD13sGvCuHvSDovbSOxLxqbESQzWBRVrmfJMR1qe+o7kd/SMaLHosC
|
8
|
+
2BWASn1oV9rGLktvd2Xs6xRf75cejzrr/OrNoTpICp3j1Z0Kd+73TuYyVFPfCbqH
|
9
|
+
N6mwS+yCmG2/w3sXwbOGymNuYpaPoD8XVcIhO7GPZsCVqqSKP2xsGF+oP5+Isma+
|
10
|
+
y3usNUnFnVW5ckk6SWWdxP9kuOW2xXoFFwj43STaE4OvXbTPCG7jowUpDH1aMvFA
|
11
|
+
ceXUfuaE7H8QfZqoUNu8jCb8LiqTL+uL5kHbl2kQ7sQCN9gjAgMBAAGjWzBZMAwG
|
12
|
+
A1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMB
|
13
|
+
BggrBgEFBQcDAjAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwDQYJKoZIhvcN
|
14
|
+
AQELBQADggEBAHSINJsVuu11kmzx7/2yEiDSIQVzdzk/+hnx0iQt6rDy9ZNVdI8w
|
15
|
+
JOUYaPjxDFfZ5gaPqrlb0n248lBMdGrp6xmhbgXL8eWkXRDcR6kuYBQrQmFitg7G
|
16
|
+
KFFWnzCuQMLn5Mn6VA+sBf9n2LVaOQCci9jU0awRpaQTUNf894USjILo+PvbcUGU
|
17
|
+
XlMtqc1abkN4NehDdaXsxMwyPgUCPkN5X80s8hxx5NgzwtwDtoTYj/PBRBXBddA+
|
18
|
+
oN1rwkugWiTpIPU0wKb0ufLsq96I24UDQWd2jJGbD2W23Z0lwVz/Bq6uc4aOJn68
|
19
|
+
JbejJgFyF3/m6oFDxgqMnuV5q5olVZHAWL8=
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAqNovS9d/uCsb0fXcQXhN164+VraBhQcG1GZHldwfJ/noSdi1
|
3
|
+
g9d7Brwrh70g6L20jsS8amxEkM1gUVa5nyTEdanvqO5Hf0jGix6LAtgVgEp9aFfa
|
4
|
+
xi5Lb3dl7OsUX++XHo866/zqzaE6SAqd49WdCnfu907mMlRT3wm6hzepsEvsgpht
|
5
|
+
v8N7F8GzhspjbmKWj6A/F1XCITuxj2bAlaqkij9sbBhfqD+fiLJmvst7rDVJxZ1V
|
6
|
+
uXJJOkllncT/ZLjltsV6BRcI+N0k2hODr120zwhu46MFKQx9WjLxQHHl1H7mhOx/
|
7
|
+
EH2aqFDbvIwm/C4qky/ri+ZB25dpEO7EAjfYIwIDAQABAoIBAA6dvGRbRiICEUlu
|
8
|
+
d99u84YM/jZxW+rQ/eVa6S1uvX+vYU0rJiNAftTJaxc35uZerYeCPjEUKCdEr+a6
|
9
|
+
lBzTiPIKgMVlwuiguxcF0NCxNcNCL3Ld0AFBtqPyeO82NjBLxBAQI/CTlxuvriTY
|
10
|
+
TmyPbCWg1h2wRbrrk8sFw5C638Rz2evbBfsUcTICr6QQa51YXgxawtew3Xy3aR3G
|
11
|
+
PPuS7zlvjJYDApQs3+nakEj3DnM2nz5oJNS2YEsMKQRhmNrhen6Ose5G0jf6F6up
|
12
|
+
8HVpN3XW01D7qVT1Og6Y5dE2EM/l3isKZWXif6CcFKoOy87z8HRMIoZJS62WtKtu
|
13
|
+
liBmYxkCgYEA4VDPtFAGnChCTGLVwo7MKmH6/KU5Qj2fuufGNw8jcW3H0Ea52OFC
|
14
|
+
qOGA9pRJVXCap7Wa7XCJXENLYWpSfB7H7GnhFLwHw7jAVB52DLDCdUnRv5fP3o8K
|
15
|
+
xEseMJQaJm95eFVfTETcnjDixWtIzNbXULQbGjF3AY74aFjc1fhc/yUCgYEAv9jj
|
16
|
+
Zrc+UzR0oi00Ip8O5C5Uvu2W35M+j2XoV/xPkX+Hcr12U40Gnc/rnzVp2lGTwNZS
|
17
|
+
ImQcjLEd31qLOy90F9lcaKvOfgcx0JvGEp5SdzQQaS3RJqn0xWLh1O4NMsiVbLNi
|
18
|
+
Zi5qFv7pW/DO174xSa7cMVE8qp8YHAOZdpcqm6cCgYB9FL2ZnetteTQE78E3NsrE
|
19
|
+
pIwPATIeQdOQkOaK3k6Qw57vUrQNYE//LODJAl0Ln21buQd+1MCMhZctRzbvTK8z
|
20
|
+
4TtgpVmyH7g1eouSU/Y/4nEcaYyuQr55ZjImSbGSsMPAN7SlxHytHPpnGj3Z6VKy
|
21
|
+
rKl3CwrDxLjGRL6j0jLeOQKBgBiu3xMoIGy0Iw16o2qQ7GmPTHgEOZUqbLImem5X
|
22
|
+
mCUwM00f80lsq51CUx540NW2CTyWVpr2JnYzk5RZIfDLejRXUvxknny4kEA2ypU6
|
23
|
+
qYGMwU/HBVHkLAn5XvT2a9xM0mzZ558d+ahbw8qAgRxg7BZ+2PW/bf7F2WRBUk1f
|
24
|
+
xauhAoGBALEspoxQozwohGQnP7EMF0/0JoKNpdNv0b0qCVvNiMo0+N297lI2mFQp
|
25
|
+
6xYlW/1l9afLokklF/J2IsyBrTCZoY7SaEk/lMMrQSyra+y0z71ogZ8A4ny9fxsj
|
26
|
+
0dDYJZGllL+3E/MQfd7k+KnOM/+A+cPoAnci76+L3vdkUb2P8SJk
|
27
|
+
-----END RSA PRIVATE KEY-----
|
package/docs/server.hytopia.md
CHANGED
@@ -733,6 +733,17 @@ Description
|
|
733
733
|
The default rigid body options when EntityOptions.rigidBodyOptions is not provided.
|
734
734
|
|
735
735
|
|
736
|
+
</td></tr>
|
737
|
+
<tr><td>
|
738
|
+
|
739
|
+
[PORT](./server.hytopia.port.md)
|
740
|
+
|
741
|
+
|
742
|
+
</td><td>
|
743
|
+
|
744
|
+
The port the server will listen on. You can override this in your .env by setting PORT.
|
745
|
+
|
746
|
+
|
736
747
|
</td></tr>
|
737
748
|
<tr><td>
|
738
749
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
|
+
|
3
|
+
[Home](./index.md) > [server](./server.md) > [HYTOPIA](./server.hytopia.md) > [PORT](./server.hytopia.port.md)
|
4
|
+
|
5
|
+
## HYTOPIA.PORT variable
|
6
|
+
|
7
|
+
The port the server will listen on. You can override this in your .env by setting PORT.
|
8
|
+
|
9
|
+
**Signature:**
|
10
|
+
|
11
|
+
```typescript
|
12
|
+
PORT: string | number
|
13
|
+
```
|
package/docs/server.md
CHANGED
@@ -742,6 +742,17 @@ Description
|
|
742
742
|
The default rigid body options when EntityOptions.rigidBodyOptions is not provided.
|
743
743
|
|
744
744
|
|
745
|
+
</td></tr>
|
746
|
+
<tr><td>
|
747
|
+
|
748
|
+
[PORT](./server.port.md)
|
749
|
+
|
750
|
+
|
751
|
+
</td><td>
|
752
|
+
|
753
|
+
The port the server will listen on. You can override this in your .env by setting PORT.
|
754
|
+
|
755
|
+
|
745
756
|
</td></tr>
|
746
757
|
<tr><td>
|
747
758
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
2
|
+
|
3
|
+
[Home](./index.md) > [server](./server.md) > [PORT](./server.port.md)
|
4
|
+
|
5
|
+
## PORT variable
|
6
|
+
|
7
|
+
The port the server will listen on. You can override this in your .env by setting PORT.
|
8
|
+
|
9
|
+
**Signature:**
|
10
|
+
|
11
|
+
```typescript
|
12
|
+
PORT: string | number
|
13
|
+
```
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "hytopia",
|
3
|
-
"version": "0.1.
|
3
|
+
"version": "0.1.15",
|
4
4
|
"description": "The HYTOPIA SDK makes it easy for developers to create multiplayer games on the HYTOPIA platform using JavaScript or TypeScript.",
|
5
5
|
"main": "server.js",
|
6
6
|
"bin": {
|
@@ -46,8 +46,5 @@
|
|
46
46
|
"bugs": {
|
47
47
|
"url": "https://github.com/hytopiagg/sdk/issues"
|
48
48
|
},
|
49
|
-
"homepage": "https://github.com/hytopiagg/sdk#readme"
|
50
|
-
"dependencies": {
|
51
|
-
"mkcert": "^3.2.0"
|
52
|
-
}
|
49
|
+
"homepage": "https://github.com/hytopiagg/sdk#readme"
|
53
50
|
}
|
package/server.api.json
CHANGED
@@ -23998,6 +23998,29 @@
|
|
23998
23998
|
"endIndex": 2
|
23999
23999
|
}
|
24000
24000
|
},
|
24001
|
+
{
|
24002
|
+
"kind": "Variable",
|
24003
|
+
"canonicalReference": "server!HYTOPIA.PORT:var",
|
24004
|
+
"docComment": "/**\n * The port the server will listen on. You can override this in your .env by setting PORT.\n */\n",
|
24005
|
+
"excerptTokens": [
|
24006
|
+
{
|
24007
|
+
"kind": "Content",
|
24008
|
+
"text": "PORT: "
|
24009
|
+
},
|
24010
|
+
{
|
24011
|
+
"kind": "Content",
|
24012
|
+
"text": "string | number"
|
24013
|
+
}
|
24014
|
+
],
|
24015
|
+
"fileUrlPath": "src/networking/WebServer.ts",
|
24016
|
+
"isReadonly": true,
|
24017
|
+
"releaseTag": "Public",
|
24018
|
+
"name": "PORT",
|
24019
|
+
"variableTypeTokenRange": {
|
24020
|
+
"startIndex": 1,
|
24021
|
+
"endIndex": 2
|
24022
|
+
}
|
24023
|
+
},
|
24001
24024
|
{
|
24002
24025
|
"kind": "TypeAlias",
|
24003
24026
|
"canonicalReference": "server!HYTOPIA.RawCollisionGroups:type",
|
@@ -30799,6 +30822,29 @@
|
|
30799
30822
|
"endIndex": 2
|
30800
30823
|
}
|
30801
30824
|
},
|
30825
|
+
{
|
30826
|
+
"kind": "Variable",
|
30827
|
+
"canonicalReference": "server!PORT:var",
|
30828
|
+
"docComment": "/**\n * The port the server will listen on. You can override this in your .env by setting PORT.\n */\n",
|
30829
|
+
"excerptTokens": [
|
30830
|
+
{
|
30831
|
+
"kind": "Content",
|
30832
|
+
"text": "PORT: "
|
30833
|
+
},
|
30834
|
+
{
|
30835
|
+
"kind": "Content",
|
30836
|
+
"text": "string | number"
|
30837
|
+
}
|
30838
|
+
],
|
30839
|
+
"fileUrlPath": "src/networking/WebServer.ts",
|
30840
|
+
"isReadonly": true,
|
30841
|
+
"releaseTag": "Public",
|
30842
|
+
"name": "PORT",
|
30843
|
+
"variableTypeTokenRange": {
|
30844
|
+
"startIndex": 1,
|
30845
|
+
"endIndex": 2
|
30846
|
+
}
|
30847
|
+
},
|
30802
30848
|
{
|
30803
30849
|
"kind": "TypeAlias",
|
30804
30850
|
"canonicalReference": "server!RawCollisionGroups:type",
|
package/server.d.ts
CHANGED
@@ -1618,6 +1618,7 @@ declare namespace HYTOPIA {
|
|
1618
1618
|
RigidBodyOptions,
|
1619
1619
|
Simulation,
|
1620
1620
|
WebServer,
|
1621
|
+
PORT,
|
1621
1622
|
World,
|
1622
1623
|
WorldMap,
|
1623
1624
|
WorldOptions,
|
@@ -1800,6 +1801,9 @@ export declare type PlayerOrientationState = {
|
|
1800
1801
|
yaw: number;
|
1801
1802
|
};
|
1802
1803
|
|
1804
|
+
/** The port the server will listen on. You can override this in your .env by setting PORT. */
|
1805
|
+
export declare const PORT: string | number;
|
1806
|
+
|
1803
1807
|
/** A raw set of collision groups represented as a 32-bit number. @public */
|
1804
1808
|
export declare type RawCollisionGroups = RAPIER.InteractionGroups;
|
1805
1809
|
|