オセロゲーム制作記録 序章:1日目~5日目

1日目:企画

オンラインのオセロゲームを作ってみる。

理由

  • Pun2のCCU100クーポンが余っている。そして期限がそろそろ切れる。
  • 前々からオンラインは作りたかった。
  • オンラインを作るのは初めてなので実装が簡単そうなものから始めたい。

どんなものにするか

  • オンラインでプレイヤーと対戦できるオセロゲーム。
  • ターン制ではなくリアルタイム。
  • Android用。

オンラインゲームを作るための練習用という感じではある。

オセロゲームをGooglePlayで見てみるとまじで100個くらいありそう。オンラインで出来るオセロアプリも既に存在しているしクオリティが高いアプリもある。

でも他のオセロアプリと全く同じアプリを公開しても面白くない。

差別化を図るために相手と交互に石を置きあうオセロではなく、リアルタイムにコマを置けるちょっぴり変わったオセロゲームにしたい。

二日目:プロトタイプ作成1

[add]新規追加

  • とりあえず石を置けるようにした。
  • 石を置いたら周りにマスが作成されるようにした。

マスが作成される時に関係することとして、

  • オンラインであること
  • ターン制でなくリアルタイムに石を置けること
  • 通信の為に遅延が生じることもあること

以上のことを踏まえてスクリプトを記述する予定。

石を置いてから操作できるようになるまでに時間的に余裕を持たせたい。絶え間なく石を置けなくても不自然にならないように、プレイヤーをイラつかせないように、マスが生成されるアニメーションを用意して、その間は入力を受け付けないようなゲームシステムにしたい。

3日目:プロトタイプ作成2

[add]新規追加

  • 石を挟んだら色が変わるようにした。

スクリプトが散らかっているがとりあえず形にすることを最優先にしたい。

思ったよりもスムーズな進捗。

オンライン化もこの調子で楽にできれば最高。

4日目:プロトタイプ作成3

[add]新規追加

  • オンラインで石を同期できるようにした。

Photonを導入していく。

一番難しいだろうところに来た。ただ、リアルタイムのオセロゲームではあるが、Updateを使わない半ターン制ともいえるゲームシステムなのでFPSなんかのオンラインゲームほど考えることは少ないと思う。

何より通信の最適化について考えることが少なくて済むはず。

共通化されるべきものリスト

  • マス
  • 置いた石と色
  • 全てのマスを保持しているホルダークラスのList
  • プレイヤーがタッチしたという動作

マッチメイキングのシステムはとりあえずランダムマッチで。

最低限形になることを目指して制作していく。

正直、石を同期するだけでも一苦労だと思っていたが、思いのほかスムーズにいった。

流石Photon。

PunRPCというルーム上のプレイヤーに同じメソッドを呼ばせる機能があるが、それを使うだけで石を置く動作は出来た。よく考えてみれば、石を置いた座標だけ分かれば何とかオセロが出来ることに気が付いた。

動画を載せておく。

左はAndroidのキャプチャー。右はUnityEditorのキャプチャー。

面白くない動画だけど、Androidとネットワークの同期が簡単にできたことに感動している。

個人で、そこそこの勉強量でここまで出来て感無量だ。

ここから面白いように動きを付けていきたい。それに伴って続々と不具合が出てくるだろうなと恐々としている。

5日目:プロトタイプ作成4

[update]機能修正

  • 石の置ける場所を制御できるようにした。
  • 生成されるマスもひっくり返せる石がある場所だけが生成される。

オセロのルール通りに制約を付けていく。

コ ー ド が 散 ら か っ て き た 。