2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Next.js】相手の駒が見えないチェスゲーム「Blind Chess」を個人開発した(ベータ版)

2
Posted at

はじめに

「相手の駒が見えない状態でチェスをしたらどうなるんだろう?」

そんな思いつきから、Blind Chess(ブラインドチェス)というゲームを個人開発しました。

通常のチェスとは異なり、相手の駒配置が視覚的に確認できないため、
記憶・推理・直感を頼りにプレイする変わり種なゲームを目指しました。

現在はベータ版として公開しており、最低限遊べる状態まで実装できたため、開発内容や構成についてまとめます。

>>ベータ版Blind chessはこちら<<

※「Blindfold chess(目隠しチェス)」という伝統的な形式が存在しますが、本作はすこし異なり、
UI上の制約として相手の駒が見えないといルールで開発しています。

ルール

①2手目までは全ての駒が見えます。通常のチェスゲームと同じようにオープニングします。
②3手目から、相手の駒が隠されます。ゴースト(丸い点のこと)は相手の駒が位置していることを指します。
③駒の食い合いが発生した場合、右上に駒と点数が表示されます。

IMG_6133.jpeg

スマホだと画面下部、PCからだと右部にBotがいます:)
IMG_6134.jpeg

技術スタック

今回の構成は以下の通りです。

フロントエンド

  • Next.js(React / TypeScript)

ルール管理

  • chess.js

思考エンジン

  • Stockfish(Python → WASM)

デプロイ

  • Vercel

開発支援

  • Codex(設計・リファクタリング・実装補助)

新しく得た知見

当初は以下のような構成でした。

  • Next.js(フロント)
  • Python API(FastAPI)
  • サーバーでBot思考

この構成だと、以下の課題がありました。

  • 同時接続が増えるとサーバー負荷が高い
  • デプロイ先を分ける必要がある(バックエンドのデプロイをどうしよう…)

特に「Botの思考処理」はCPU負荷が高いと学びました。
初めての個人開発+Vercelでのデプロイということもあり、なるべくシンプルに公開したいと思いました。

WASMにすることでフロント完結構成に変更

そこで、思考エンジンをPython → WASMに変換し、ブラウザ上で動かす構成に変更しました。

Next.js + chess.js + Stockfish(WASM)

これにより

  • サーバー不要(バックエンド削除)
  • 同時アクセスの影響を受けにくい
  • Vercel単体でデプロイ可能

というメリットが得られました。

Stockfishは強すぎる問題と難易度調整の難しさ

今回、思考エンジンにはStockfishを使用していますが、これが想像以上に強くて初めは全く勝てませんでした。
一応レートを低い設定にできるのですが、やっぱり強いし Botがこちらの手を「見えてない」体にすることが難しくて、人間らしいミスを打ちにくい課題があります。

単純に強さを下げると意味の分からないミスをするし、逆に少し強めると一気に歯が立たなくなります。

このあたりは今後の課題として、より自然なプレイ体験に近づけたいです。。

まとめ

今回、Blind Chessを個人開発する中で、

  • ゲームロジックの設計
  • WASMの活用
  • デプロイ構成の最適化

など、多くの学びがありました。

まだまだ改善したい点はたくさんありますが、ひとまず「遊べる状態で公開できた」ことが大きな一歩だと思っています!

最後まで読んでいただきありがとうございました 🙏

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?