ゲームサーバーについて調べたWSNet2, Nakama, MagicOnion + LogicLooper

モチベーション

ソシャゲみたいなゲームを作りたいとき、インゲームのロジックをサーバー側に持たせられるとチート対策とかが楽になる(はず)。なのでゲームロジックをサーバー側に書ける(サーバー側でゲームループが存在する)フレームワークを個人的に調べました。これはその備忘録的なやつです。 ググった結果、3種類のフレームワークが出てきたのでそれぞれを簡単に比較します。なお、私はソーシャルゲームの実装をしたことはないし、実際に動かしたりはせずドキュメントを軽く読んだりした程度なので、参考程度でお願いします。間違っていたらごめんなさい。マサカリは優しく投げてください。

比較

それぞれのフレームワーク名と、ゲームロジックを記述できる言語は以下の通りです。

ゲームサーバーにゲームロジックを書く都合上、速度が早い方がいいのとソシャゲはメンテによるダウンタイムが許容されがちなので、スクリプト言語ではなくコンパイラ言語で比較することにしました(とはいえJavaScriptも最近は十分早いし、この基準は微妙かも)。

そのため、サーバーサイドの言語はC# または Go で書くことになります。ただGoは Let’s Encryptでもあったようにメモリ操作によるバグを作ってしまう可能性があるので、Nakamaは一旦選択肢からはずして調べることにします。私がGoを書きなれていないだけなので、この問題は人によっては無視できますし、このタイミングでGoで書きたいからNakamaを選ぶ、というのもありだと思います。

WSNet2 と MagicOnion + LogicLooper の比較
  • WSNet2
    • Dashboard が付いており、サーバーや部屋の状態が見える。プレイヤーのキックなどもできる。
    • WebSocket ベース。
    • API サーバー的な使用はできなさそう。
  • MagicOnion + LogicLooper
    • Unity との連携があって楽。
    • API サーバーとしても使える。
    • Http2
    • Unity と連携がすごい代わりに環境構築が大変。Git の管理も考えないといけない。
    • Dashboard 機能はない。自分で作る必要がある。
      • Blazor とか MessagePipe を使ったりすれば良さそうだけど、やり方がいまいち分からない。

比較するとWSNet2の利点はDashBoard機能、MagicOnion + LogicLooperの利点はUnityとの連携機能とAPIサーバーとしても使える、というところでしょうか。

性能的な話ではWSNet2はプレスリリースで.xlarge (vCPU 4、メモリ 8GiB) のサーバで 1 台あたり約 6,000 人の同時接続が可能と謳っているので十分そうです。MagicOnion の方には具体的なものは見つけられませんでしたが、UniRxやUniTaskを作っているCySharpさんなので信頼して大丈夫だと思います。

個人的にはリアルタイムサーバーの管理画面はそれほど重要ではないと考えています。特定のバトルの再現などをするにはどちらにせよ自分で作る必要があると思いますし、MagicOnion を選択して問題ないと思います。
私はとりあえずMagicOnion+LogicLooperを使ってみようと思います。

以下余談



ソシャゲのAPIサーバーとしてはGS2というサービスもあります。APIサーバーにはゲームロジックは書かないのでGS2で十分カバーできるかつ1から機能を作らなくて済むので十分選択肢にはいる、というか個人開発なら積極的に活用すべきだと思います。

あと素人考えでは、WebSocketが使える普通のWebサーバーに1秒で60回処理するループを入れればゲームサーバーになりそう。ただ、車輪の再発明であることは間違いないですし、パフォーマンスなどを考慮すると、賢い選択肢ではないですね。

あとゲームサーバーで調べるとAgonesというのがめっちゃ出てきます。ただ、Agonesはゲームサーバーのインフラ管理をするやつです。ゲームサーバーをkubernetesで管理するときに使うもので、ゲームサーバーそのものではないです。最初この辺がわかってなくて時間を浪費しました。

逆に言えば上記の3つのフレームワークと組み合わせることができるはずです。




書き終わった後に気づいたんですが、もしかしてLogicLooperを使うならサーバー側はなんでも良いんですかね?

neue cc - AlterNats - ハイパフォーマンスな.NET PubSubクライアントと、その実装に見る.NET 6時代のSocketプログラミング最適化のTips、或いはMagicOnionを絡めたメタバース構築のアーキテクチャについて

この記事の中でLogicLooperをMagicOnionから剥がして使うとか書いてますし。 何ならLogicLooperとMagicOnionの間にNATSを噛ませているのでMagicOnion側、つまりUnityと通信するサーバー側は文字通り何でも良い(C#のサーバーである必要さえない)ように思えます。しいて言えばWebSocketかなにかでUnityとリアルタイム通信が可能なことぐらい?秒間何回もAPI叩くわけにもいかないですし。

ControlNetを導入するためにしたことメモ

これまでstable difuision web uiをdocker上で動かしていたのだけれど、ControlNet を使うために重い腰を上げてネイティブにインストールした話。

環境はwindows。 まず、Pythonを公式のインストーラーからインストールした。Pythonのバージョンは3.10.6。最初は最新版を入れてたけど、後述するpytorchが対応していなかったのでこのバージョンにした。 pyenv-winを使ったけど、うまくいかなかったので、普通にインストールした。

そのあと、web-uiをgitからcloneしてきた(gitはインストーラーでインストール済み)。 webui-user.batのset PYTHON=となっているところを set PYTHON="C:\Users\\AppData\Local\Programs\Python\Python310\python.exe" とした。今思うともうインストールしてあるPythonは一つだけなのでもう指定しなくてもいいような気もする。

このままwebui-user.batをダブルクリックして起動したらPytorchがどうのこうのみたいな、エラーが出てきたのでPytorchをインストールする。 インストールコマンドは公式サイトPyTorchで環境にあったやつを作れる。

起動確認できたらControlNetのExtensionを有効にする。 以下のURLでインストールできる。

https://github.com/Mikubill/sd-webui-controlnet

インストールしたらRefreshをお忘れなく。

そのあとffmpegをインストールする。 環境パスも通しておく。

これで動くはず。

Google Photoの乗り換え先を考える

Google photo の容量無制限が終わってしまうので代わりのものを探しましょうという話です。

まず、Google photoの変更についておさらい。 これまでは「高画質」(高画質なまま圧縮する)を選択することでGoogleDriveの容量にカウントされずに保存することができました。 が、2021年6月1日からはカウントするよ、となりました。ざっくり言えばこれまでは無制限に保存できてたのが15GB分(GoogleDriveの無料容量は15GBなので)までしか保存できなくなる、ということです。 なので6月以降の保存先をどうするか考える必要があるわけです。

念の為言っておくと2021年6月以前の分は引き続きカウントされないので急に使えなくなるわけではないです。6月までに絶対に乗り換えなきゃ、ということにはならないので15GB分を使い切るまで様子を見るのもありです。 あと、Pixel3とかのGoogleスマホからのアップロードはこれからもカウントされないらしいです。羨ましい。

保存先1:Google Driveの容量を増やす。

Google Photoと心中をする人向け。 なんだかんだいろいろ機能がある(写真に写った顔をもとに人物ごとに分けてくれたり)わけで、そのまま使いたい人もいると思います。 なので、15GBを使い切ったら追加の容量を買うわけです。

値段は毎月

100GB 250円

200GB 380円

2TB 1300円

となっています。

年払いにすると10ヶ月分の値段になります。

保存先2:Amazon Photoに移行する

まぁ他のクラウドストレージ(iCloudとかね)でもいいんですが、Amazon Prime会員だと写真に限って言えば無制限で使えるのでかなりいい選択肢かな、と思います。会費自体はかかるので無料ではないですが、すでに会員の人にとっては実質無料。

Amazon Photoもいつか変更されて制限がつくかもしれないですが、そんなこというと何も使えなくなってしまうので、気にしないことにしましょう。

保存先3:NASを構築する

大まかに言えば自分でプライベートのクラウドストレージを用意するような感じです。 NASとはNetwork Attached Storageの略称でネットワーク経由で自宅に設置したHDDに写真を保存します。

最近はいろいろな製品が出ており、PCに強くなくても簡単に使える製品も多く出ています。

初期費用はHDD込で4万~ぐらいかかりますが、HDDは値段が安いので4TBぐらいの環境が用意できます。 ちなみに2TBとかで用意することで費用を抑えることもできますが、あんまりHDDのコスパが良くないので4TBか6TBで用意するのがおすすめです。8TBは今仮想通貨のマイニングの影響で高くなってるのであまりおすすめできないです……。

NASの具体的な製品は多くあるのですが、詳しくない人は有名なやつ、ぐぐったら使い方が出てくるような製品をおすすめします。 あとNASによっては推奨のHDD一覧を公開していたりするのでそういった製品を選んで推奨のHDDと組み合わせるのが初心者にはいいと思います。

保存先4:pCloudを使う

これが私の本命です。

まず、pCloudってなんぞや、って話なんですがクラウドストレージです。

pCloud - The Most Secure Cloud Storage

ただ、これが他のクラウドストレージと違う点は買い切り制というところです。正確には99年かアカウント保持者の生涯の短い方、とのことですが、まぁ大体の人は小学生とかでなければ先に寿命が来ることでしょう、悲しいですが。

GoogleDriveにしろiCloudにしろOneDriveにしろ今流行のサブスクリプション、要は月額で費用がかかるのですが、pCloudは一度払ってしまえば終わりです。 言ってしまえばGoogleDriveは一生お金を払い続ける必要がありますが、pCloudは最初に払って終わりです。 初期費用こそ多少かかりますが、長い目で見るとpCloudのほうがお得になります。

費用としては

500GBで480ドル

2TBで980ドル

となっていますが、だいたいセールで65%OFFされているので

500GBで175ドル

2TBで350ドル

になります。

ブラックフライデーとかサイバーマンデーとかで75%OFFされてたりするのでそれを待つのもいいかもしれないです。 ちなみに500GBから2TBにアップデートすることはできますが、割引とかはないようなので注意してください。

他のクラウドストレージと2TBで比べると GoogleDriveの場合、年払いしたとして3年で3万9000円になるのでこの時点でpCloudのほうがお得になります。 一方で、人物ごとに分類してくれたり、場所ごとに分けてくれたりはしないので、そういう機能がほしい人はGoogleDriveに課金しましょう。

ただ単に写真を置いておくだけで十分な人は一考の価値があると思います。 当たり前ですが、スマホアプリも用意されていて写真を自動でアップロードする機能もあり また、10GBの無料プランもあるのでいきなり課金する前に試してみるのが良いでしょう。

というわけでGoogle Photoからの乗り換え先の紹介でした。

私は本命と言った通りpCloudを使っているんですが、最近NASGoogle Photoみたいな人物ごとの分類ができる機能がある製品があると聞いて興味をそそられています。もしかしたらそっちを使ったりするかもしれません。

引退しゆくVTuberたち

最近VTuberの引退をよく目にする。

去年のブームから一年経って、現実を見つめる必要が出てきて、だから引退あるいは卒業していくのだろうと思う。

これは私のわがままな話なのだけれど、私の単なる願望のような話なのは分かっているのだけれど、引退宣言はしないでおいて欲しい。 そういう話。

続きを読む

バーチャルマーケット2感想会

バーチャルマーケット2お疲れ様でした的なお話。

バーチャルマーケット2には皆さん参加しましたか?
私は参加しました(出店者側で)。
ブース作った過程についてはまた別で時間をとって書きたいですが、今回は感想というなの単なる雑記です。

参加した人はアンケートも答えようね。



さて、感想を書きつつスクショでも貼ろうかと思ったのだけれど、QRコードしかスクショしてなかったので残念ながら会場のスクショはありません。いずれパブリック化されると思うのでのんびりまとうね(パブリック化されたらスクショを追加したい……)。


バーチャルマーケット2(以下Vケット2)に行くとVMエントランスに最初は行くわけですが、ここからすでにエモい。


エモい。

エントランス自体もエモい。エントランスの上部に七色の各ワールドへ移動するところがあるんですけど、こういう色使い好き。

というか各ワールドのクオリティが当たり前のように高くて意味がわかりません。公式がクオリティ高いってずるでは????



これ、各ブースの感想を言うとキリがないのでワールドごとのふんわりとしたやつになるな……。
とりあえず、感想を一言にするならばVケット2のコンセプト(?)は「​未来にログインしよう」なわけですが、まさに「ここにある未来」という感じ。
バーチャルミュージアムはまさに未来を感じるワールドで大変お好みです。もちろん他のワールドもすごいのですが。例えば絢爛博覧会は他のワールドと比べても特にブースの雰囲気が統一されていて良かったです。

あと追加メニューがあったり、各ワールドからワールドへの移動とか謎技術が要所要所にあるのが意味わからないですね(褒め言葉)。まじで追加メニューはどうなってるんや……。

ちなみに400近いブースがあるので当たり前だけど一日で回りきろうとすると流し見が大半になってしまうのでパブリック化したあとに回る人は2日ぐらいかけるつもりで回ろうね。

流石に400近くのブースがあるとお好みのアバターとかが複数出てきて、買わなきゃ……買わなきゃ……となりますね……。あと、ちゃんとしたモデルは5000円ぐらい取って……。

ざっくりとした感想としてはシェーダーでブースを広く見せるやつをやりたくなったので次回Vケットに向けてシェーダーに強くなりたいなぁという感じでした。

あとみんな3Dモデルの出来が良すぎないでですかね……。


私もVケット3に向けて準備を始めなきゃ……。