Directorで作ったミニゲームをGodotで再構築する(その4-1)
ドット絵ツールいじりも一段落したので、久しぶりにDirectorのゲームをGodotで再構築しようかなと思った。
久しぶりなので簡単そうなリバーシ。
パーツのサルベージ
いつものようにパーツをサルベージする。今回も一応LingoをClaudeに読ませたけど、仕組みは全部捨てる。だって、昔の自分が考えたアルゴリズムなんて大したことないので。
あと、元のDirector版はMacromediaの用意したサーバーを介して対戦するゲームだったんだけど、チャットもできるようになっていた。今回は不要なので完全に捨てる。
駒と盤面だけDirectorのパーツを再利用して、あとは全部作り直す。

パーツをGodotに配置していく
パーツを少し調整してGodot上に配置していく。
石が置かれるマスを64個をコードで生成して配置させ、石も配置させたのがこれ。

置けるマスをクリックでちゃんと石が置けるようになった。石がひっくり返るアニメーションも実装。しかも、置ける場所にホバーしたら半透明で石が表示されるようにした。

タイトルを配置して手番を表示させる
タイトルを配置して、手番も表示させたんだけど、よくよく見るとDirector版と微妙に違うことが分かった。
なのでClaudeに修正指示を出してたんだけど最初全然原因が分からず。最終的にピクセルサイズを考えずに雑に計算してマスを配置していたせいで、画像が縮小されてた模様。仕組みを大幅に修正させる。
この表示不良が全然改善されなかったんだけど何とか原因を解明した。
不要な配置確認用の関数が悪さをしていたようだ。そんなの分かる訳ない!
やっぱ自分でコード書かないとこうなるね。

正しいゲーム名が判明
あとで音も入れようと思いDirectorから書き出した音声データを確認したら正しいゲーム名が判明。「顔めくり」だった。変な名前だけど折角なので採用しよう。
その後タイトルを差し替えたりしてたら表示が汚い。いろいろデータいじってもきれいにならない。Photoshop上ではキレイなのに。
Claudeに訊いたりして調べたら、さっき表示がおかしかった時に次の設定をいじってたことを指摘された。
「プロジェクト設定」→「レンダリング」→「テクスチャ」の「キャンバスのテクスチャ」→「デフォルトのテクスチャフィルタ」を「Linear」から「Nearest」に変更したのが原因だった。「Linear」に戻したら直った。Godotって難しいな……。

note上だとほとんど分かんないけど、Godotで直接見たらかなり差があるのよ。
少しずつ過去の仕様を思い出す
日曜の朝目覚めて続きをやってたら過去の仕様を思い出した。
現状「置けるマスにホバーしたら半透明な石が表示される」ようになっているんだけど、かつての仕様は「全ての置けるマスには半透明の石が表示される」だった。
Director仕様に変更しつつ、さらに置けるマスの上に表示されている石はかなり薄めで、ホバーしたら50%くらいのアルファで表示するように仕様を変更。

この辺りまで出来てくると音が無いと寂しいのでBGMやSEを入れることにした。音に関しては説明しづらいので入れたってことだけ書いておく。
Director版も恐らくそうだったと思うが、最初の実装では複数の石がひっくり返るのは全部いっぺんにだった。しかし途中で1枚ずつひっくり返るように修正。その方が見てて気持ちいい。
いろんな判定を追加していく
ここからはゲームとして必要な判定を実装していく。
・手詰まり判定
・両者ともに手詰まりだった場合の判定
・ゲーム終了判定
ここまではすんなり実装できた。手番の表示を消すタイミングがおかしかったりしたところがあったのでClaudeに直してもらった。
見た目も少し手を入れつつリザルト画面が出るようになった!

ゲーム終了時に石の数も表示するようにしたわ。

一旦中断
ここからがClaudeにお願いしていてもすごく面倒なところ。
CONNECT FOURの時と同じ機能を実装しなくてはならない。
・CPU戦にするか対戦にするかを選ばせる
・CPU戦なら4つの難易度を選ばせる
・先攻か後攻かを選ばせる
・対戦ならホストかゲストかを選ばせる
・ホストなら6桁のルームコードを選ばせる
・ゲストなら6桁のルームコードを入力させる
これを全部用意しないとゲームにならないのだ。
しかし日曜の18時近くなってお腹も空いてきたし、もう今日は続きをやりたくなくなったので一旦やめる。
明日の夜から少しずつ続きをやることにする。
せっかくなので今まで作った元がDirectorゲームのGodot版を紹介しておく。
・たこ焼き名人_改:スコアランキング対応(記事1、記事2、記事3)
・Connect Four:対戦ゲーム(記事)→これだけ元がDirectorではない!
・俺消し:パズルゲーム(記事)
・お部屋パズル:スライドパズル(記事)
つづく
