2026-08-01 16:06:14 +09:00
|
|
|
# LinkField v48.0
|
|
|
|
|
|
|
|
|
|
LinkFieldは、サーバー上の**単一共有ワールド専用**です。ローカル盤面、同期コード、複数ワールド切替はありません。
|
|
|
|
|
|
|
|
|
|
## 起動
|
|
|
|
|
|
|
|
|
|
ZIPを展開したプロジェクト直下で実行します。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
`npm start` は次を自動実行し、完了後すぐにコマンド入力へ戻ります。
|
|
|
|
|
|
|
|
|
|
1. 旧フォルダから残っているLinkFieldサーバーを停止
|
|
|
|
|
2. `$HOME/public_html/link-field` へ公開ファイルを配置
|
|
|
|
|
3. 古いポート情報を削除
|
|
|
|
|
4. 単一共有サーバーをバックグラウンド起動
|
|
|
|
|
5. 実際の使用ポートを `.linkfield-port` へ保存
|
|
|
|
|
|
|
|
|
|
8080番が使用中の場合は空きポートへ自動的に切り替わります。公開側のPHPブリッジは `.linkfield-port` を参照するため、固定ポートは不要です。
|
|
|
|
|
|
|
|
|
|
正常時の表示例:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
LinkField started in the background. The command prompt is available again.
|
|
|
|
|
PID: 12345
|
|
|
|
|
Local port: 3000
|
|
|
|
|
Public directory: /home/333/public_html/link-field
|
|
|
|
|
Log: /home/333/.local/share/LinkField/service/server.log
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 公開ディレクトリが異なる場合
|
|
|
|
|
|
|
|
|
|
Apacheが別のディレクトリを公開している場合だけ指定します。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
LINK_FIELD_PUBLIC_DIR=/実際の公開ディレクトリ npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
例:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
LINK_FIELD_PUBLIC_DIR="$HOME/www/link-field" npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 接続確認
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
curl 'https://host.nishi.boats/~333/link-field/api-bridge.php?path=/api/cloud/status'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
正常時は、`available`、`sharedWorld`、`singleWorld` がすべて `true` のJSONが返ります。
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
{"available":true,"sharedWorld":true,"singleWorld":true,"realtime":true}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
404の場合は、Apacheの公開先と自動配置先が一致していません。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm run status
|
|
|
|
|
ls -l "$HOME/public_html/link-field/api-bridge.php"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 管理コマンド
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm run status # 状態確認
|
|
|
|
|
npm run restart # 再起動
|
|
|
|
|
npm stop # 停止
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
ログ確認:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
tail -f "$HOME/.local/share/LinkField/service/server.log"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
前面起動で直接ログを見る場合:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm run start:foreground
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
前面起動中にそのターミナルへ入力できないのは正常です。終了は `Ctrl+C` です。
|
|
|
|
|
|
|
|
|
|
## データ保存先
|
|
|
|
|
|
|
|
|
|
共有ワールドは常に次の1か所へ保存されます。
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
/link-field/world
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
起動ユーザーがこのディレクトリへ書き込める必要があります。初回だけ権限を準備する場合は、サーバー管理権限で次を実行します。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
sudo mkdir -p /link-field/world
|
|
|
|
|
sudo chown -R "$(id -un):$(id -gn)" /link-field
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
展開フォルダやブラウザごとに別ワールドは作成されません。通常ウィンドウとシークレットウィンドウも同じサーバー正本を取得します。
|
|
|
|
|
|
|
|
|
|
## 盤面共有
|
|
|
|
|
|
|
|
|
|
未クリア盤面の線・特殊マス進行もサーバーへ保存されます。盤面を操作する際は専用の共有APIで占有権を即時取得し、利用できない場合だけリアルタイム経路へフォールバックします。占有応答前に指を離しても、ドラッグ軌跡は承認後に適用されます。接続状態は左下のFPS表示直上にある固定サイズの小型インジケーターで確認できます。
|
|
|
|
|
## 更新時の起動
|
|
|
|
|
|
|
|
|
|
`npm start` は、稼働中の旧LinkFieldサーバーを停止してから、展開した版で起動し直します。新しい画面と古いサーバーが混在することはありません。
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
npm start
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
起動エラー画面の「再試行」は共有サーバーへの再接続を行います。ブラウザ内バックアップの復元は実行しません。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## v48.0の共有確定ルール
|
|
|
|
|
|
|
|
|
|
- 盤面の「プレイ中」は、ゲートまたは線端のつまみを押して操作を開始した時だけ発生します。カーソルを重ねただけでは発生しません。
|
|
|
|
|
- 占有に関する画面下部の通知は表示しません。
|
|
|
|
|
- 盤面がサーバーでクリア確定すると「プレイ中」は即時解除されます。ページ離脱・接続切断時も解除されます。
|
|
|
|
|
- クリア表示とジェム加算は、共有サーバーが解答を検証して受理した後に確定します。送信できなかった場合、端末だけがクリア済みになることはありません。
|
|
|
|
|
- 新規盤面を生成できるのは、その盤面をクリアしたプレイヤーだけです。生成後はサーバーへ保存され、他プレイヤーと再アクセス後の両方へ同じ盤面が返ります。
|
|
|
|
|
- 初回ラインカラーは、プレミアム商品を除いた通常ラインカラーから選ばれます。
|