[PIECE BY PIECE] 記憶のカケラ:失われたピースを集める神経衰弱ゲーム

カードゲーム「記憶のカケラ」のご紹介

このページでは、私が開発した**カードゲーム「記憶のカケラ」**について紹介します。このゲームは、失われた記憶を取り戻すために、ピースを集める神経衰弱ゲームです。ゲームの特徴や遊び方、開発の裏話、さらには現在の進行状況など、開発者目線での情報を盛り込んでいますので、ぜひチェックしてみてください。

ゲームの特徴

シンプルで直感的な神経衰弱

わかりやすいルールで、どなたでもすぐに楽しめます。
カードを揃えるとクリアで10面クリアでエンディング。
3周クリアでGAME END、エンディングは3つ用意しています。

画像・動画データを差替(アセット管理)

ゲームに必要なアセット(画像、動画)は手動で管理できます。
[オプション] -> [アセット]
ゲーム起動時に必要なアセットをすぐに読み込みます。

[PIECE BY PIECE] 記憶のカケラ:アセット管理画面(メイン)

[PIECE BY PIECE] 記憶のカケラ:アセット管理画面(メイン) アニメーション

左上のハンバーガーアイコンタップでナヴィゲーションメニューオープン

[PIECE BY PIECE] 記憶のカケラ:アセット管理画面(ナビゲーションメニュー)

[PIECE BY PIECE] 記憶のカケラ:アセット管理画面(ナビゲーションメニュー) アニメーション

P2P通信対応(チャット、データ交換)

リアルタイムでゲーム参加者とチャット、及び、アセットデータの交換をP2P通信を実装。
通信機能の実装に、simplepeer(GitHhub)を使用しています。

[PIECE BY PIECE] 記憶のカケラ:P2P画面

チャット送受信と、アセットデータをユーザから受信するデモ

[PIECE BY PIECE] 記憶のカケラ:P2P画面

P2P用 シグナリングサーバ(Node.js + koyeb)

ゲームのP2P通信をサポートするために、シグナリングサーバを構築しています。
シグナリングサーバは、プレイヤー同士が直接通信するための接続情報をやり取りする役割を担います。これにより、リアルタイムでスムーズな対戦が可能になります。

使用している技術:

  • Node.js
    サーバサイドのロジックを担当し、プレイヤー間のデータのやり取りを処理します。

  • koyeb
    サーバのデプロイを行い、リモートでシームレスな運用を実現します。これにより、インフラ管理を簡素化し、安定したサービスを提供します。

シグナリングサーバは、ゲーム内でのリアルタイムチャットやデータ送信に重要な役割を果たしています。

プレイ方法

ゲームの操作はシンプルで、カードを並べていくです。 詳細なルールについては、ゲーム内のヘルプをご覧ください。

ゲームをプレイする

現在の進行状況と未実装機能

「記憶のカケラ」は現在開発途中の段階で、
まだ実装が完了していない機能や追加予定の内容があります。

これからのアップデートで新しい要素が追加される予定です。

未実装機能:

  • アバターアセット:ゲーム中に登場するアバター。
  • アセット管理メニュー:アセット管理メニューの一部機能。

現在の主な進行状況:

  • 基本的なプレイ機能の実装は完了しています。
  • P2P通信によるリアルタイム対戦機能が一部実装済みですが、安定性向上が必要です。
  • ゲーム内のアセット管理やデータ保存機能は正常に動作しています。

このセクションを追加することで、現在の状態をしっかりと伝えることができますし、プレイヤーからのフィードバックも期待しやすくなります。

開発の裏話

技術的な挑戦

ZIP圧縮・解凍、ゲームデータ管理にIndexedDBの使用、ユーザー同士でチャットやデータ交換する為のP2P通信の実装など、技術面で新しい事に挑戦しています。

AI技術の活用

ブログ記事で、生成AIのローカル環境作成方法を多数紹介していますが、それを活用してゲームデータを作成しています。

公開の決意

途中、体調を崩し開発が止まりそうになったので、未完成ですが公開する事にしました。
メインのゲーム処理は完成してますが、アセット管理やオプション機能に未実装部分があります。

プログラミングの再学習の為のプロジェクトでしたが、公開することで他の人にも楽しんでもらいたいと思いました。

開発言語・ライブラリ・ツール

HTML / CSS(style sheet)

ゲームのレイアウトやデザイン

開発中に作成した学習記事

JavaScript

ゲーム内のロジックやインタラクションの実装

開発中に作成した学習記事

使用ライブラリ・フレームワーク

■ indexedDB

■ P2P(WebRTC,simple-peer)

P2P通信を実現するために使用

■ FramePack-eichi

ローカルAIアニメーションの生成に使用

■ Stable Diffusion(ローカル画像生成AI)

ローカルAIカード、ピーズ画像の生成に使用

使用ツール

■ Node.js

サーバサイドのロジックを実装。

■ koyeb

サーバのデプロイとリモート運用を支援。

今後の予定

  • より多くのステージや新しいカードを追加予定。
  • 他のゲームモードやオンラインランキング機能を実装予定。