ライブコーディングで作ってる最中にゲームできたら面白い
音楽のライブコーディングの場合、参加者は音楽を聞きながらコーディングを眺めることができる ゲームの場合、遊ぶ時間がなければ、作っているのをただ眺めることになる
ここで、作っている最中のゲームを遊べたらもっと面白くなるのでは?
おもろiNoma.icon
問題は、それをどう実現するか?
面白そうだけど、やり方は思いつかない
Unityでなければ可能なのか?
自分の考えられる範囲で考えてみるt6o_o6t.icon
構成
ホットリロード用サーバー
ゲームエンジン(JavaScript)
人物
実装者
参加者
想定するゲーム
横スクロール2Dアクション。
1. 実装者は、ホットリロード用サーバーを立てる
2. 参加者は、ホットリロード用サーバーにアクセスする
3. 参加者の端末で、ゲームが実行される
4. 実装者がコードに変更を加える
5. ホットリロード用サーバーは、変更の差分を配信する
6. 参加者の端末は、差分を受信して実行中のゲームに変更を加える
キャラクターの位置などはできる限り維持。
これ難しいので、変更あるたびにリセット、やり直しでもいいと思いますt6o_o6t.icon
Minecraft的な?
たぶん、共同編集できるゲームエンジンがあればいいんだね
お~t6o_o6t.icon
でも重いよね~きっと
新歓での発表を思い返すと、スマホで実行できるのがよいですねt6o_o6t.icon
理想的には共同編集があれば十分だけど、パフォーマンスを考えると別の方法を採る必要がある、ということか
サーバーから端末へゲームの変更差分などを配信する形で実装することになりそうです
リアルタイムリモートデバッグ、似てる
再生が難しいのかな
Sceneはどうやって再生される?
一度Unityから離れる?
ファイルに更新があったときに、WebSocketから端末側にそれが通知されるシステムを考える
Unityの場合、ビルドしないと簡単に遊べない
なので、更新の通知(と再読み込み)だけをまず考えた方が良い
プラットフォームはあとから決めればよい
CIST5で通信してるときのプライベートIPって自動割り当てだよね
固定できないか?
CIST5で通信したら帯域圧迫しそう
取り急ぎ、次の構成にして検証しよう
Visual Studio Code
拡張機能
ファイルの保存時に、WebSocketサーバーのsend()に保存されたファイル内容を渡す
= ファイルをクライアントに送信する
クライアント
WebSocketに接続するJavaScript
タスクリスト
✅拡張機能のリポジトリを作成する
✅拡張機能を作成する
$ npm install -g yo generator-code
$ yo code
New extention(Typescript)みたいなのを選択
拡張機能を実装する
Express.jsをインストール
起動時のハンドラを設定する
WebSocketサーバーを設定する
起動時にWebSocketサーバーが立つように実装する
ファイル保存時のハンドラを実装する
クライアントのリポジトリを作成する
クライアントのJavaScriptを書く
PixiJSのファイルは静的にダウンロードしてもらって、コードの方はWebSocketを介してダウンロードしてもらう、可能か?
Viteとかが持っているホットリロード機構に乗っかった方が良いと思う。