2026年1月7日
Antigravityを使って何の知識もない初心者が作ったゲームサイトの開発過程#2
ここでかなり大変なことが起きました
大変といっても知識がある人からしたら何の障害にもならないと思います。早速何が起こったかといいますと、Vercelではこれ以上開発できないという事態になりました。新しく導入したゲームに使っている技術がVercelでは使えなかったんです。そうして新しく提案されたCloudflareへ移行することになりました。
この移行が本当に大変で、環境変数やらドメインの設定やら色々訳がわかりませんでした。ですが地道にAIに聞いて進めていくと何とかCloudflareでデプロイすることができました。でもその後もEdge Runtimeがなんたらかんたらでエラーが出まくって修正するのが大変でした。
そうしてそこからどんどんゲームを増やしていきました。この当時トランプの大富豪を作るのにかなり苦労していましたね。だから開発中にして後回しにしてました。次にボードゲームを作るだけでは飽きてきてしまい、自分独自のカードゲームを作りました。それが「Divine Duel」です。これはかなり自分自身気に入っていて、これからもどんどんカードの種類や効果など増やしていこうと思っています。
このゲームを作ったことによってデータを保存する必要が出てきました。そこでGoogleアカウントにログインできるようにして、それでデータを保持できるようにしました。このアップデートでデータは管理できるようになるのですが、もともとは自分でプレイヤー名を入れてやる形式だったため名前が二重になって面倒なことになったりと、このあたりでもかなり苦戦しました。
このあたりからゲームを増やすのではなく一度サイトとしてちゃんと作ろうと思い、デザインにこだわり始めました。ゲームのアイコンを小さくして一覧を見やすくしたり、様々な使いやすいサイトにするための工夫をしました。むやみにゲームを増やさないと言いつつ四つくらい増えてますw
ここでいきなり心が折れました…
なんで順調そうなのにいきなり?と思うでしょう。でもいきなりじゃないんです。実は最初からこの時まで致命的な欠陥がこのサイトにはありました。
今までは一人でウィンドウを二つ出してデバッグしていました。ランダムマッチをするとAsobi Loungeにおいて自分自身とマッチングしてしまったり、ルームがたくさん複製されたり、ルームから抜けているのに作られたルームがそのまま残ってしまったり——Asobi Loungeで一番大事なオンライン対戦がまともにできませんでした。それを直すためにFirebaseの設定を何回も何回も変えてまたデバッグしての繰り返しでしたが、どうしてもよくならなくて一度心が折れてしまいました。
心の休憩にゲーム作り
僕はオンラインのマッチング部分を作りたいのではなく、ゲームが作りたいんです。そう思い、一度完全に別のゲームを作り始めました。それが「Trash Factory」というゲームです。ゴミを拾って資源にリサイクルしながら施設を拡張する放置系シミュレーションで、隠し要素もあって自分でプレイしても結構面白いです。
Colyseusとの出会い
心の休養を経て、他のゲームサイト運営者がどんなマッチング方式を採用しているか調べました。そこでゲーム用のサーバーフレームワーク「Colyseus」の存在を知り、導入することに決めました。
主な特徴:
- ルーム(Room)ベースの設計でプレイヤーを管理
- クライアント間でゲーム状態を効率的に同期
- Node.jsの非同期I/Oを活用した高パフォーマンス
- 開発中にサーバー状態を確認できる管理パネル付き
見つけたときは「こんなに完璧に合うものがあるんかい!」と思いましたね。ですがここからが地獄でした。なぜなら全ゲームのシステムを作り直さなければいけないからです。いくらAIに任せているとはいえ、時間はかかります。そして作り直せばバグも出てきます。この時は二日かけてアニメを見ながら徹夜して全システムを入れ替えました……一番きつかったかもしれないですね。でも頑張った甲斐もあり、劇的にマッチングが快適になりました。
続きは#3で!
← ブログ一覧へ戻る