Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix node.js multiplayer tutorial #679

Merged
merged 6 commits into from
Dec 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
321 changes: 220 additions & 101 deletions docs/tutorials/real-time-multiplayer.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sidebar_position: 4

PlayCanvasは多様な形式をサポートしており、GLB、FBX、COLLADA、objなどが含まれます。最高の結果を得るためには、GLB形式を使用することをお勧めします。

これらのファイルの中から1つをアップロードすると、タイプが「モデル」の[ソースアセット][3]が作成され、モデルの階層を持つ「[テンプレート][7]」と「Render」アセットを含む複数の[ターゲットアセット][4]が生成されます。ゲーム内に「Template」のインスタンスを追加することができます。
Uploading one of these files will create a [Source Asset][3] of type 'Model' and will produce several [Target Assets][4] including a '[Template][7]' with the model hierarchy and 'Render' assets. You can add an instance of the 'Template' in your game.

詳しくは以下をご覧ください:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,16 @@ sidebar_position: 1

PlayCanvasのアートワークを制作する際には、希望するスケールに合わせて作業を行うことが重要です。そのためには、選択したモデリングアプリケーションでシーンの作業単位を確認する必要があります。作業単位は自由に選ぶことができますが、それに従うことが重要です。例えば、1メートルの寸法を持つ立方体を作成するためには、作業単位をメートルに設定し、1x1x1の立方体を作成することができます。また、作業単位をセンチメートルに設定し、100x100x100の立方体を作成することもできます。どちらのシーンもFBXにエクスポートし、PlayCanvasにインポートすると、1x1x1の立方体が表示されます。

### Blender

To ensure units are exported correctly from Blender, check that Scene Properties unit system is set to metric and that scale is set to 1.0:

![Blender units](/img/user-manual/assets/models/units/blender-units.png)

In addition, when exporting to FBX format, check that "Apply Scaling" is set to "FBX All":

![Blender FBX Export](/img/user-manual/assets/models/units/blender-fbx-export.png)

### Autodesk 3D Studio Max

3D Studio Maxで作業単位を確認または設定するには、Units Setupダイアログを開き、System Unit Setupボタンをクリックします。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,14 @@ sidebar_position: 7
以下は、タグを使用して一連のアセットをロードする方法を示したJavaScriptの例です。

```javascript
var assets = this.app.assets.findByTag("level-1");
var count = 0;
const assets = this.app.assets.findByTag("level-1");
let count = 0;

for (var i = 0; i < assets.length; i++) {
for (let i = 0; i < assets.length; i++) {
assets[i].once("load", function () {
count++;
if (count === assets.length) {
// 全てのアセットがロードされました。
// asset loading complete
}
});
this.app.assets.load(assets[i]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,20 @@ CSSアセットを編集するには、エディターで右クリックしてEd
読み込まれたCSSアセットリソースは、文字列として存在します。この文字列を使いたいように利用できます。ロードされたCSS文字列をドキュメントに追加する一般的な方法は以下の通りです。

```javascript
// IDでレジストリからアセットを取得
var asset = app.assets.get(32);
// get asset from registry by id
const asset = app.assets.get(32);

// 要素を作成
var style = document.createElement('style');
// create element
const style = document.createElement('style');
style.type = "text/css";
style.textContent = asset.resource || '';
document.head.appendChild(style);

// アセットのリソースがロード/変更されたときにスタイルを更新
// update the style when the asset's resource loads/changes
asset.on('load', function() {
style.innerHTML = asset.resource;
});

// アセットがロードされるようにする
// make sure assets loads
app.assets.load(asset);
```
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,20 @@ HTMLアセットを編集するには、エディタで右クリックしてEdit
読み込まれたHTMLアセットは単なる文字列です。その文字列を好きなように使用できます。ドキュメントにHTMLを追加する一般的な方法は以下のとおりです。

```javascript
// IDでレジストリからアセットを取得
var asset = app.assets.get(32);
// get asset from registry by id
const asset = app.assets.get(32);

// 要素を作成する
var div = document.createElement('div');
// create element
const div = document.createElement('div');
div.innerHTML = asset.resource || '';
document.body.appendChild(div);

// アセットリソースのロード/変更時に、要素のHTMLを更新する
// when asset resource loads/changes,
// update html of element
asset.on('load', function() {
div.innerHTML = asset.resource;
});

// アセットがロードされるようにする
// make sure assets loads
app.assets.load(asset);
```
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ ShaderアセットにはGLSLコードが含まれています。エディター
Shaderアセットを編集するには、エディターでShaderアセットを右クリックし、Editを選択します。Shaderアセットを使用してカスタムマテリアルを作成する方法の例を以下に示します。

```javascript
var vertexShader = this.app.assets.find('my_vertex_shader');
var fragmentShader = this.app.assets.find('my_fragment_shader');
var shaderDefinition = {
const vertexShader = this.app.assets.find('my_vertex_shader');
const fragmentShader = this.app.assets.find('my_fragment_shader');
const shaderDefinition = {
attributes: {
aPosition: pc.SEMANTIC_POSITION,
aUv0: pc.SEMANTIC_TEXCOORD0
Expand All @@ -18,7 +18,7 @@ var shaderDefinition = {
fshader: fragmentShader.resource
};

var shader = new pc.Shader(this.app.graphicsDevice, shaderDefinition);
var material = new pc.Material();
const shader = new pc.Shader(this.app.graphicsDevice, shaderDefinition);
const material = new pc.Material();
material.setShader(shader);
```
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,84 @@ title: お支払いについて
sidebar_position: 24
---

## プランの自動更新
Welcome to the Billing FAQ that lists the common questions relating to your PlayCanvas subscription.

以下はクレジットカードでお支払いいただく場合の説明となります。銀行振込でのお支払いをご希望する場合は、[[email protected]](mailto:[email protected])までご連絡ください。
PersonalプランまたはOrganizationプランを購入した場合には最初に購入した日が月次請求日となり、支払いが自動的に行われます。
### Does my subscription auto-renew?

## 請求書
Yes. Once you subscribe to the Personal or Organization plan, payment will automatically be taken on a monthly basis, on the day of the month when you first subscribed.

月額プランの請求書は、購入したアカウントのオーナー宛に月次請求日にメールで送信されます。請求書はウェブサイトからはダウンロードできません。請求書のメールが受信トレイに届かない場合は、迷惑メールフォルダを確認してください。請求書のメールが見当たらない場合には、[[email protected]](mailto:[email protected])までメールの再送信をご依頼ください。
### How do I cancel my subscription?

### Updating Invoice Details
You can cancel your plan subscription at any time.

1. Visit your [Account page](https://playcanvas.com/account).
2. Scroll down to the 'Current Plan' section.
3. If you have **Personal** showing here, hit 'Cancel' to cancel it.
4. Hit 'OK' in the **CANCEL PLAN** dialog.
5. Also in the 'Current Plan' section, you will see a list of your Organizations.
6. For each Organization listed, click its icon to visit its Account page.
7. Scroll down to the 'Current Plan' section.
8. If you have **Organization** showing here, hit 'Cancel' to cancel it.
9. Hit 'OK' in the **CANCEL PLAN** dialog.

Once your subscription is cancelled, you will not be billed again unless you resubscribe.

:::note

When you cancel your subscription, it will not revert to the free tier immediately. Instead, this will happen at your next billing date. If between the time you cancel and your next billing date you decide you would like to continue your subscription, just return to your Account page and hit 'Resume'.

:::

### What happens to my published apps when I cancel my subscription?

Your published apps will be completely unaffected if you cancel your subscription.

### What happens to my private projects when I cancel my subscription?

Your private projects will become locked (inaccessible) when you cancel your subscription. To unlock them, you have two options:

1. Resubscribe to a plan.
2. Make the projects public.

### How do I receive invoices?

Invoices for monthly subscriptions are emailed to the owner of the subscribed account on the monthly billing date. The subject line for these emails begins with "Your receipt from PlayCanvas Ltd".

:::tip

If invoices are not reaching your inbox, please check your spam folder.

:::

### Where can I find my billing history?

Your historical invoices are available to download on `playcanvas.com`. Visit your account page and scroll to the `Invoices` section. You should see something similar to this:

![Billing History](/img/user-manual/billing/invoices.png)

### How do I update my details on my invoices?

You may want to edit certain details that appear on your invoices such as:

* Billing Name
* Billing Address
* Tax ID

To do this, visit the account page for your subscribed account (remembering that Organizations have their own account page). Navigate to the Billing Info section and hit the Edit link. Fill out the payment details form and hit 'PAY NOW'. Note that editing the details of an existing subscription will not trigger a payment straight away. But on your next scheduled billing date, the invoice will show the updated details.
To do this, visit the account page for your subscribed account (remembering that Organizations have their own account page). Navigate to the Billing Info section and hit the Edit link. Fill out the payment details form and hit 'PAY NOW'.

:::note

While the button says 'PAY NOW', editing the details of an existing subscription will not trigger a payment straight away. You will be billed as normal on the next billing date and the invoice will show the updated details.

:::

## Organizationプランのお支払いについて
### How is billing for Organization accounts calculated?

Organizationアカウントの購入日が月次の請求日になります。つまり7月10日に購入するとその日に請求され、翌月以降の請求日は8月10日、9月10日となります。

Organizationプランでは、いつでもシートを追加または削除することができます。シートを追加または削除すると、プランの費用が増減することに注意してください。ただし、シート数の変更による費用の変化は変更後即時では反映されません。次回の請求日に反映されます。

### 例
####

以下では購入日と請求金額の例を挙げて説明します。

Expand All @@ -45,6 +97,6 @@ Organizationプランでは、いつでもシートを追加または削除す
* 9月10日:8610円- 8610円 x 21/31 = **2777円** です。この請求日の時点では1シートを保有しているため、翌月には8610円が請求されます。8月20日に1シートが削除されたため、シートは31日間のうち10日間しか使用されませんでした。ユーザーは前回の請求日にそのシートの分として8610円を支払い済みのため、未使用の21日間について返金されます。したがって、請求書から8610円 x 21/31が差し引かれます。
* 10月10日: **8610円** 。このプランは1シートを保有し、前月はプランの変更がありませんでした。

## プランのキャンセル
### How can I contact PlayCanvas about billing?

プランキャンセルはいつでも可能です。ただし、キャンセルはすぐに反映され、アカウントは即時で無料プランに切り替わります。次の請求日までプランの機能を使用する必要がある場合は、請求日の前日にリマインダーを設定してキャンセルすることをおすすめします。
If your question about billing is not answered on this page, please email [[email protected]](mailto:[email protected]).
Original file line number Diff line number Diff line change
Expand Up @@ -14,51 +14,51 @@ title: カスタムエンジンの使用

エディターからアプリを起動すると、launchページと呼ばれる新しいタブが開きます。このページのURLは以下の形式です。

```
```none
https://launch.playcanvas.com/<scene_id>
```

launchページのURLを編集して、次の文字列を末尾に追加します。

```
```none
https://launch.playcanvas.com/<scene_id>?use_local_engine=https://code.playcanvas.com/playcanvas-latest.js
```

このビルドでローンチする場合は、次を使用してください。

```
```none
https://launch.playcanvas.com/<scene_id>?use_local_engine=https://code.playcanvas.com/playcanvas-latest.min.js
```

デバッグモードを有効にして起動する場合は、次のようにしてください。

```
```none
https://launch.playcanvas.com/<scene_id>?debug=true&use_local_engine=https://code.playcanvas.com/playcanvas-latest.dbg.js
```

### 以前の安定エンジンで起動

PlayCanvasエンジンの前の安定したビルドはcode.playcanvas.comにアーカイブされています。過去のすべてのリリースは[GitHub][2]で見つけることができます。エンジンは次の規則に従って命名されています。

```
```none
playcanvas-<major>.<minor>.<patch>.js
```

例:

```
```none
playcanvas-0.225.0.js
```

この特定のエンジンビルドで起動するには、次のローンチURLを使用してください。

```
```none
https://launch.playcanvas.com/<scene_id>?use_local_engine=https://code.playcanvas.com/playcanvas-0.225.0.js
```

このビルドでローンチする場合は、次を使用してください。

```
```none
https://launch.playcanvas.com/<scene_id>?use_local_engine=https://code.playcanvas.com/playcanvas-0.225.0.min.js
```

Expand All @@ -70,19 +70,19 @@ PlayCanvasエンジンの前の安定したビルドはcode.playcanvas.comにア

### ローカルにビルドしたエンジンで起動

GitHubでエンジンリポジトリをフォークすると、そのエンジンを自分でビルドできます。ローンチページでカスタムビルドを起動するには、まずポート51000でlocalhostからサービングする必要があります。次のURLでエンジンのソースを確認してください。
If you fork the engine repo on GitHub, you can build the engine yourself (via `npm run build`). To have the launch page launch your custom build, you need to start a local web server by running `npm run serve`.

```
http://localhost:51000/path/to/engine/playcanvas-latest.js
Verify you can see your engine source at the URL:

```none
http://localhost:51000/playcanvas.js
```

さて、次のURLを編集して、このエンジンをローンチページで使用します。
To use this engine in the launch page, edit the URL to:

```none
https://launch.playcanvas.com/<scene_id>?use_local_engine=http://localhost:51000/playcanvas.js
```
http://launch.playcanvas.com/<scene_id>?use_local_engine=http://localhost:51000/path/to/engine/playcanvas-latest.js
```

ローカルにサービスされたエンジンを使用するために、起動ページをhttpに変更する必要があることに注意してください。

[1]: https://github.com/playcanvas/engine
[2]: https://github.com/playcanvas/engine/releases
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,11 @@ Movement.prototype.initialize = function() {
// update code called every frame
Movement.prototype.update = function(dt) {
// get which keys are pressed
var keyboard = this.app.keyboard;
var left = keyboard.isPressed(pc.KEY_LEFT);
var right = keyboard.isPressed(pc.KEY_RIGHT);
var up = keyboard.isPressed(pc.KEY_UP);
var down = keyboard.isPressed(pc.KEY_DOWN);
const keyboard = this.app.keyboard;
const left = keyboard.isPressed(pc.KEY_LEFT);
const right = keyboard.isPressed(pc.KEY_RIGHT);
const up = keyboard.isPressed(pc.KEY_UP);
const down = keyboard.isPressed(pc.KEY_DOWN);

// move this entity based on which keys are pressed
// dt is the time in seconds since the last frame and stands for 'delta time'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,29 @@ sidebar_position: 5

```javascript
// store matrices for individual instances into array
var matrices = new Float32Array(instanceCount * 16);
var matrix = new pc.Mat4();
var matrixIndex = 0;
for (var i = 0; i < instanceCount; i++) {
const matrices = new Float32Array(instanceCount * 16);
const matrix = new pc.Mat4();
let matrixIndex = 0;
for (let i = 0; i < instanceCount; i++) {
matrix.setTRS(pos, pc.Vec3.ZERO, pc.Vec3.ONE);

// copy matrix elements into array of floats
for (var m = 0; m < 16; m++)
for (let m = 0; m < 16; m++)
matrices[matrixIndex++] = matrix.data[m];
}
```

以下の例では、インスタンスごとの状態を保存するVertexBufferを作成し、それを行列で初期化します。この例では、`pc.VertexFormat.defaultInstancingFormat` を使用して、インスタンスごとのMat4行列を保存することができます。その後、インスタンス化したいメッシュジオメトリを含むMeshInstanceでインスタンス化を有効にします。


Create a VertexBuffer which stores per-instance state and initialize it with the matrices. In the following example, we use [`pc.VertexFormat.getDefaultInstancingFormat`](https://api.playcanvas.com/classes/Engine.VertexFormat.html#getDefaultInstancingFormat) which allows us to store a per-instance Mat4 matrix. Then we enable instancing on a MeshInstance, which contains the mesh geometry we want to instance.

```javascript
var instanceCount = 10;
var vertexBuffer = new pc.VertexBuffer(this.app.graphicsDevice, pc.VertexFormat.defaultInstancingFormat,
instanceCount, pc.BUFFER_STATIC, matrices);
const instanceCount = 10;
const vertexBuffer = new pc.VertexBuffer(
this.app.graphicsDevice,
pc.VertexFormat.getDefaultInstancingFormat(this.app.graphicsDevice),
instanceCount,
pc.BUFFER_STATIC,
matrices
);
meshInst.setInstancing(vertexBuffer);
```

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Below is an example of the Model Viewer Starter Kit with device pixel ratio enab
デバイスピクセル比は、プロパティ[`pc.GraphicsDevice#maxPixelRatio`][4]を使ってランタイムで変更することができます。

```javascript
var device = pc.Application.getApplication().graphicsDevice;
const device = pc.Application.getApplication().graphicsDevice;
if (highTierDevice) {
// Use the default device pixel ratio of the device
device.maxPixelRatio = window.devicePixelRatio;
Expand Down Expand Up @@ -49,7 +49,7 @@ ANGLE (NVIDIA GeForce GTX 1050 Direct3D11 vs_5_0 ps_5_0)

```javascript
function isLowQualityGPU() {
var renderer = pc.Application.getApplication().graphicsDevice.unmaskedRenderer;
const renderer = pc.Application.getApplication().graphicsDevice.unmaskedRenderer;

// Only check the GPU if we are on mobile
if (renderer && pc.platform.mobile) {
Expand Down
Loading
Loading