CHaserのまともなサーバを作ろうと思ったら、微妙なものができた。
- Server
- CHaserクライアントからの接続を受け付ける
- コマンドをManagerへ横流し
- Manager
- Serverからのコマンドを処理して、クライアント用の結果(1000210222 とか)を返す
- Browserからの指示も受ける
- 中核
- Browser
- 普通のブラウザ
- Managerへ指示
- ManagerのManager?
- スコアもこっちで表示
- node と npm を入れる
- npm で socket.io をインストール
- このrepositoryをcone
- node manager/manager.js
- まともそうなブラウザから http://(hogehoge):3000/ へアクセス
- python server/server.py
- ブラウザを見ると、「testserverが繋いできた」的なことが書かれているので、「ServerID:testserver」として入力
- マップをコピペして送信
- CHaserのクライアントから (hogehoge):40000 とか :50000 へ接続
- ブラウザの「開始」
- 「Score」で眺める
- ログがいっぱい出る
- M(大文字) を押下すると、元の画面に戻る
- 試合終了後、「←」を押下すると、1ターン前に戻れる
- もちろん「→」も使える
- ブラウザのコンソールにいろいろ書かれる
あまりやっていません。 Pythonのバージョンは、2.7系でした。
- ブラウザが使えるのでそっち側は環境を選ばない
- ブラウザはどれだけ繋いでも、常に同じ情報を確認できる
- サーバプログラムもいくらでも繋げられる
- 同時に複数試合ができる可能性
- Python / JavaScript / (CSS) / (HTML) なので、改変しやすい
- 履歴機能が使えるので、解説しやすい
- まともに動くか分からない
- 環境構築が面倒臭すぎる
- セキュリティ上、「少なくともServerとManagerは同一ホスト、またはFWでガッチリ保護された場所」においておかないとマズそう。
- 再現機能
- Serverが吐いたログからManager側で再現…が理想?
- でも、Serverでログを読んで、再現したほうが実装的には簡単な気がする
- クライアント接続の改善
- どっちも繋いで来ないと、名前が取れない問題
- multiprocessingを使うとクライアント側が堕ちてしまった
- Map入力の改善
- D&D対応どうすっかなー俺もなー…。
- マップ観測を途中から開始した場合、履歴機能がおかしい?
- ブロック積まれた場合もおかしい