オセロ制作記録 第9章:36日目から

36日目:アップデート3

[update]機能修正

  • 石をどこでも置けるようにした
  • ひっくり返せる石が無くても石を置ける
  • 石がゼロになってもゲームオーバーにならないようにした

しばらく数学とか勉強してて手を付けてなかったけど再開する。

アプリを大きく修正することにする。何度かプレイしてみたがどうにもゲームとして面白くない。石を好きなだけ好きな場所におけるようにして、挟んだらひっくり返るところだけそのままにしてみる。コードが散らかっているので修正に時間かかりそうだ。

リファクタリングってほどでもないけど、処理を関数にまとめた。実装に手間取るかと思ったけど、あっさりいけた。思ったよりも上手く書けてるかも。インスペクタからルールを設定できるようにもした。ビルドに時間かかってツライ。強いPCが欲しい。

37日目:アップデート4

[update]機能修正

  • 同期するときの処理を改善する

開始時間の同期処理をPhotonのカスタムプロパティから設定するようにした。以前は何故か上手くいかなかったけど、今回はちゃんと動いた。trygetvalueとかを使ってちゃんと値を取得しているかとか、確認しながら値を参照する必要があった。

38日目:アップデート5

ゲーム内容を大きく変更したいけど、どうするべきか。ルール自体を石の多い方が勝ちとかではなくて、もっと手の込んだものにしてみようか。ひっくりかえすごとにダメージを与えたりするとか。ぷよぷよのように消した数で相手にペナルティを与えられるとか。ゲームが進むにつれて何か変化が無いと面白くない。今のままだと開始20秒くらいで飽きてくる。

石をひっくり返すごとに相手にダメージを与えるようなシステムにしてみる。バランスがおかしくなりそうだけど、とりあえず実装してみてどうなるか確かめてみる。

39日目:アップデート6

実装を進める。でもイマイチ面白くなりそうになくて気が乗らない。なんとか面白くしたい。とりあえずダメージを与えてスライダーUIに反映させるとこまでは出来たけど。ここからどうしたら良いものか。なんか別のゲーム作りたい病にかかってきた。ともかくUnityを触って続けるしかない。リファクタリングもしながら更新を続ける。デザインパターンの本も読んだので考え方を試したい。

40日目:アップデート7

色々試したいが、どれもイマイチ。進まない。

41日目:アップデート8

進捗が特にでない。つらい。

42日目:アップデート9

大きく改良すればもっと別なものに出来るけれど、全て作り直す羽目になってしまうのは避けたい。正直考えるのが嫌になってきた。でもなんとか面白くしたい。

プレイヤーの動作としては、「石を置く」しかない。ボードゲームとして頭を使うようなゲームにするためには、どこに石を置くかについて思考する要素を付け足したい。対戦なんだから、何か駆け引きになるような要素が欲しい。オセロという性質上ひっくり返すとプレイヤーにとってプラスになるようにしたい。

考えていることを整理してみる。

  • 石を置くと小得点
  • 石をひっくり返すと高得点
  • ひっくり返す数が多いほど有利になる
  • 勝敗は石の数だけに限定せずに普通のオセロにはないルールにする
  • 1から作り直すような大幅な更新はしない
  • もうすでに作ってしまったオセロ準拠のシステムはそのまま使う
  • ルールは複雑になりすぎないようにする
  • 複雑だったとしてもゲームからのフィードバックで直感的に理解できれば良し

まとめると、オセロっぽさは残して、個人で出来る量で改善したい。

43日目:アップデート10

数学やらkotlinやらを触っているのでアプリに割く時間を減らしている。少しづつスクリプトを修正している。石をひっくり返したりする処理がややこしいことになっている。もっとスマートに書きたかった。ちょっと時間がかかりそうだ。

石を連続でひっくり返すほど、時間を置かずに石をひっくり返すほど有利になるようなシステムにしてみようか。もう色々試してみるしかない。楽しいかどうかを頭の中で結論出せたら、時間をかけずに検証出来て良いんだけど、僕には厳しい。

44日目:アップデート11

kotlinやら触ってたらアプリに割く時間が減ってしまった。30分くらいしか触ってない。コードを数行修正しただけのあまりに小さい進捗。眠い。

45日目:アップデート12

kotlinやら触ってたら日が空いた。Photonの同期する処理にまた手を入れる。新しくダメージ的なものを入れたい。面白くしたいけど正直難しい。

46日目:アップデート13

なんか気が向かなかったので2週間くらい進捗なかった。でも復活。なんとか面白くしたい。石を置いたら相手にダメージのようなものを与える感じにしようとしているが、スクリプトが完成しない。

47日目:アップデート14

引き続きスクリプトの修正。Photonに関係する処理がコールバックやらでごちゃごちゃして何が起きているのか把握できない。不具合の修正というかちゃんと動くするようにするだけで時間をとられている。

48日目:アップデート15

ネットワーク同期の修正。ビルドして実機と確認しないといけないからテストの繰り返しに時間がかかる。進まない。

49日目:アップデート16

今日もPhotonの同期についてのスクリプトを修正していた。どうしても不具合が抜けないけど、そろそろ解決しそうな雰囲気。

50日目:アップデート17

[update]機能修正

  • ゲーム開始時刻の同期処理を書き直した。

51日目:アップデート18

引き続きダメージ処理の実装。なっかなかスムーズにいかない。

52日目:アップデート19

ダメージ処理の実装は完成してきた。どんな風に増えてバランスをどうするか、そもそも面白くなるのかとか。実際にプレイしてみてどうなるかを見ていく。

53日目:アップデート20

ダメージに関わる変数をPhotonviewを使って常に監視するようにした。カスタムプロパティにセットしたりするからややこしくなっていることに気づいた。リアルタイムに変わる変数なんだから最初からphotonviewのIpunObservableを使うべきだったかも。また実装のやり直しだけど、コードは管理しやすくなる予感はしてる。

54日目:アップデート21

[update]機能修正

  • 変数の管理をphotonserializeを使うようにした

最初からphotonserializeのStreamを使ってればよかった。ルームプロパティを使うような処理じゃなかった。ダメージ処理みたいなものにしたけどまだいまいち面白くない。なんとかしたいけど、なんとかなるかな。