初代ゼルダの伝説ビンゴを支える技術

2023年12月16日

Zelda1

これは .ごっ!のアドベントカレンダー の16日目の記事です。

こんにちは、.ごっちです。

ゼルダの伝説のスピードランの配信の多大に影響を受けて、(ようやく)今年に入ってから攻略を始め、裏ゼルダを含めてクリアしました。Nintendo Switch Onlineにあるので、気軽に遊べてお勧めです。

ここで終わらせてもよかったのですが、ブレスオブザワイルドのビンゴのように初代ゼルダにもビンゴあるといいよな~と思ったので作ることにしました。最後のダンジョン以外は自由に歩ける・攻略できるので、ビンゴとの相性もよいと考えました。

ビンゴの実装をまるっとコピーしてもよかったのですが使われている技術がだいぶ古かった(jQuery v1系)ので、0から作ることにしました。

完成したもの

https://github.com/YutaGoto/zelda1-bingo https://zelda1-bingo.vercel.app/

og image

bingo page

技術スタック

ビンゴWebアプリということでページが多くなることはない(SSRなどの恩恵を受ける必要もない)と判断したのであえてNextjsを採用しなかったわけですが、今思うと別にあってもよかったかなと。時間があるときに別のフレームワークでもあるRemixjsへ置き換えようかと思っています。 海外のプレイヤーもできるように i18n対応をしています。

工夫している点・改善したほうがよい点

他のプレイヤーと並走できるように同じシード値を設定すると、同じビンゴシートが生成されるようにしています。配列をシャッフルする処理に苦戦しましたが、要件を十分に満たせるかと思っています。 ビンゴシートを共有しやすいようにシードやURLをコピーできるボタンを設置しています。 数をこなすタスクがあるので、数えもれがないようそれぞれカウンターを設置しています。ゲームをしながらのカウント操作が大変なので、マウス操作しなくてもいいような工夫があってもいいかと思っています。 今後実装したい内容も Kanbanで管理できているのも忘れなくてよいです。

https://github.com/users/YutaGoto/projects/4

kanban

改善点としてはディレクトリ構成・コンポーネント設計がきれいではないように見えるので、置き換えるときに再設計しようかと思っています。 日本語・英語ともにゲーム内文章やタスク説明のフィードバックを得られていないので、意図通りに伝わっているか不安があります。


やりたいことはだいたいやれているのでメンテしながら自分でも遊んでいく予定です。ゼルダの伝説を遊んだ方はビンゴも遊んでもらえると嬉しい限りです。

ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。