:ghost:

なんとなくゲームが作りたくなった

ので、オンラインもくもく会をやった。(突発的)

f:id:nnnnn15z:20201228044450p:plain
discordで画面を配信しながらもくもくする様子

  • 参加者
    • 自分と非エンジニアの友人
  • 友人はUnity初学者向けの本を読み進めながらサンプルゲームを作り、自分はオンラインゲームのようなナニカを作った

場当たり開発

  • ゲームコンセプトとかは特に決めずに当日に決めた
    • 場当たりで仕様決めながら進めたせいでぐちゃぐちゃになってしまったけど普段と違って新鮮で面白かった
    • 関係各所とすり合わせを行い、技術仕様を書き、仕様レビューを貰い・・・。みたいなのも面白いけど疲れる🤐

作る

  • フワっとオンラインゲームつくりテェナ〜って思って作り始めた
  • とりあえずキャラの移動を同期させなきゃだよねっていうことでやってみたけど慣れない環境でだったせいでま〜大変だった
  • なんとなくposition, rotate, animation stateを同期させとけば最低限それっぽいの作れるだろうというところで同期周りは大丈夫だったんだけど、そこまでの道のりが大変だった
    • 最適化にはほど遠いけど
    • オンラインゲームの通信最適化ってどうなってるんだろうと興味が湧いて色々調べられたのは良かった
      • 実際やってみないと調べてもフーンで終わっちゃうよね

f:id:nnnnn15z:20201228045211p:plain

同期周り

  • socket.ioで実現させた。
    • socket.ioを触ってみたかったのでコレを採用したけど、よそはUnityでオンラインゲーム作る時何を使っているのか気になる
  • Unityのsocket.ioクライアントを色々試したが、動かないもの(動かすことができなかったもの)も多く、Unity, C#にも不慣れだったためまずはこのライブラリ選定で手こずる。
  • 最終的には以下のリポジトリを利用させて頂いた。

github.com

  • こちらは socket.io 2.x で動作、 3.xでは動かなかった *1

ハマった

  • ようやく必要ツール群、ライブラリ郡をインストールできたと思ったら、コード補完が効かない
  • 以下で対処

qiita.com

qiita.com

  • socket.io でメッセージを送るためにとりあえずJSONでいっかーと思い適当にやっていたらJSONシリアライズの罠にハマる

f:id:nnnnn15z:20201228051732p:plain
引用: https://kazupon.org/unity-jsonutility/#JSON-3

  • ↑なにそれ?!
  • その他、Instantiate をメインスレッドじゃないところで呼び出してしまっていることに気づかずに2時間沼る等...

そして時間に

f:id:nnnnn15z:20201228052936g:plain
移動だけオンライン

  • うーん1日では移動だけしか作れなかった。
  • この先モンハンみたいにMobを同期させたり、TPS化したり・・・とか色々作れそう
  • 事前に知識入れとけばなーと一瞬思ったけど今日のハマったことは事前に調べてても回避できなそう
    • ということで今回記事化した

f:id:nnnnn15z:20201228045649p:plain
増殖バグ

  • 最後に友人と遊んでたら、増殖バグが起きて謎のツボに入って大爆笑してた
  • 年末年始もまた暇になりそうだし単純に勉強になるからまたやろーぜーと言いながら解散した

*1:2020/12/28現在