アプリ紹介
← アプリ一覧へ
ブラウザ

Inkmaru

インクの濃さで陣地を奪い合う、1対1の対戦ゲーム

Inkmaru のスクリーンショット

名前は「インク」+「丸(まる)」から。インクで丸を描いて陣地を取り合うゲームなので。

どんなゲーム?

  • 四角い盤面に円を描いて、陣地の広さを競う1対1の対戦ゲーム。
  • お互いに3ターン、毎ターン1つずつ円を描きます。
  • 描いている最中は相手の円が見えません。ターンの終わりに両方の円が同時に現れます。
  • 3ターン終わった時点で陣地が広いほうの勝ちです。

大きさと濃さのかけひき

  • 1ターンに使えるインクの量は決まっています。大きな円を描けば薄く広がり、小さな円なら濃く狭くなります。
  • 円が重なったところは、濃いほうの陣地になります。
  • 広く薄く塗って面積を稼ぐか、狭く濃く塗って相手の上から奪うか——毎ターンその選択です。
  • 濃さが同じ場合はどちらの陣地にもならず、中立になります。

操作

  • 盤面をドラッグ(スマートフォンなら指でなぞる)して円を描きます。始めた点が中心、離した点までが半径です。
  • 描いている間、「いま確定したらどうなるか」が画面上部の帯グラフに出ます。大きさを変えながら見比べられます。
  • 「決定する」を押すと確定します。押すまでは何度でも描き直せます。

対戦のしかた

  • コンピュータ対戦は「やさしい」「ふつう」「つよい」の3段階から選べます。
  • オンライン対戦では、片方が部屋を作ると6文字の番号が出ます。その番号を相手に伝えて参加してもらいます。
  • オンライン対戦のターンには30秒の制限時間があります。時間内に描かないと自動で確定します。
  • 対戦中の通信は2人のあいだで直接やり取りされます。

技術情報

  • Go + Ebitengine で書き、WebAssembly にしてブラウザで動かしています(同じコードでデスクトップ版もビルド可能)。
  • ルール・コンピュータの思考・画面の判断は Ebitengine に依存しないパッケージに分け、画面の無い環境でテストしています。
  • オンライン対戦は WebRTC(pion/webrtc)による P2P 通信。対戦中のデータはサーバーを経由しません。
  • 接続の仲介(シグナリング)は AWS の API Gateway(WebSocket)+ Lambda(Go / arm64)+ DynamoDB。常時起動のサーバーは持ちません。
  • TURN サーバーは使っていないため、Symmetric NAT や一部の携帯回線ではオンライン対戦に接続できないことがあります。
  • サイトは S3 + CloudFront で配信し、構成は CloudFormation で管理。ライセンスは MIT。