PC/スマホの一人回し用アプリの作り方(1日目)




 この記事は、Board Game Design Advent Calendar 2025 の17日目の記事です。
 全4回を予定……していましたが、たぶん7回か8回ぐらいになる気がします。書きながら構成が変わっていく点をあらかじめご了承ください。都度読んでくださる方には読みにくくなってしまい、申し訳ありません。このページの更新履歴に追加・変更点を都度載せていきます。

目次

 1日目 準備
 2日目 APモジュール(その1)
 3日目 APモジュール(その2)
 4日目 AP実装
 5日目 PRモジュール
 6日目 PR実装(その1)
 7日目 PR実装(その2)
 8日目 スマホ対応

 本日は1日目「準備」と題して、記事全体の方向性を説明します。

更新履歴

12/27 2日目を執筆、1日目冒頭に「目次」「更新履歴」を追加し、Pythonバージョン(3.10.1)を明記
12/17 1日目を執筆



主題と前提

 自作ゲームのアプリをPCとスマホで一人回しできるようにプログラミングしよう、という記事です。
 というか当初想定では今ごろ全量を書き上げて、来た見た勝ったの三段活用ばりに勢いよくソースコードごと公開するつもりでした。「お前のつもりは聞いてねえよ」ですよね。わかってる。さっきやっとAP層のコーディングが8割ほど終わった。仕方ないので「門外不出の秘技・分割公開」を解禁します。

 「いま自分がこの手法でテストしている」というよりは、「今後自分がこの手法でテストしていきたいからその叩き台を作る」のほうが実情に近いです。一人回しを現在は全部手作業でカード用紙切ったりコマ動かしたりしてますが、面倒なだけでなく、一人称のプレイヤー視点を持ちにくいのが難点です。ランダムな動きをするNPCでもいいから実装しておくと、セットアップや途中の処理を自動でやってくれるのでテストプレイらしい視点を得られることに期待しています。
 もちろんプログラミング実績がないわけではなく、自分用にトランプゲーム用のライブラリを作ってクニツィアの「オレゴン」やパーレットの名作トリテ「ミニミゼール」をiPhoneアプリ化して実機で遊んだりはしてます。「オレゴン」については先週記事を書いたのでそちらもどうぞ(iPhoneアプリでプレイしているツイート)。その手法を自作ボードゲームにも展開できるようにしたい、という執筆動機があります。

 使用言語はPythonです。実装が簡単だからです。筆者のバージョンはPython 3.10.1です。
 スマホ用のフレームワークはKivyというのを使います。クロスプラットフォームだそうです。筆者はiPhoneを使っているのでその手順を書きますが、Androidでも同様の手順はあるようなので、Androidユーザの方にも無駄にはならないと思います。iPhoneの実機確認にはどうしてもMacが必要になるので、中古のMacを3万円ぐらいで買うといいかなと思います。
 あと筆者は文系出身で、プログラミングは一瞬だけ仕事にしてましたが大して上手くありません。もし変なコードがあったら適当に直してください。

サンプルゲーム『プチプチ』

 アプリ化するにあたって、当然ですがサンプルとなるボードゲームが必要です。
 3~4年前に作って途中までテストして開発凍結させた『プチプチ(putiputi)』という自作を使います。マオリ語で「花」を意味する言葉で、南洋の島々をめぐる妖精になって花を摘んでカゴに飾る、というテーマのワーカープレイスメントです。ボードゲーム初級者向けをコンセプトに作りました。人数は2~3人ですが、今回は時間の都合で2人用モードのみを実装します。2人を3人にしたい場合はNPCの手番を1つ増やせばいいだけなので、手間ですが難しくはないはずです。
 ゲームの概要としては、アクションマスが「島」「花屋」「魔女の小屋」の3種類、計6マスあります。最大8ラウンドをプレイし、毎ラウンド交代でアクションマスにワーカーを置き、そのアクションを即実行します。ラウンドの最初に花チップが増えていく「島」のアクションでチップや先手番の権利を取り、「花屋」のアクションで花チップを自分のカゴに配置し、ゲーム終了時にその配置が「女王の望みカード」(『キングダムビルダー』の得点カードと同じです)という所定の得点条件を満たすほど点数がもらえます。「魔女の小屋」は『カタン』のチャンスカードにあたる魔法カードが引けるマスで、集めると点数になったり、自分の番に有利な効果を使えたりします。
 ワーカーには大小2種類があり、大ワーカーは小ワーカーがいるマスも踏めます。『ワイナリーの四季』と同じです。

 ゲームのルール(説明書)は概ね完成しており、カード類もデータは揃っています。テストも複数回プレイしました。
 じゃあなぜ凍結させたかというと、まあまあ面白いけどまあまあしか面白くなく、3回ほどでプレイ寿命が尽きる気配を感じたからです。そして花チップ48枚を筆頭としてコンポーネントが多めで、制作当時からしても原価がかさむ試算になったこと。同人の少部数生産だと売価が3,000~4,000円台になるのは不可避で、その値段をつけるなら少なくとも10回はリプレイに耐えなくてはならない。私個人は普段もどんなゲームでもそう思って作っていますが、高価格帯のゲームを作るなら尚更です。
 上で「初級者向けをコンセプトに」と書きましたが、要素を減らすと面白さやプレイングの幅はどうしても減ります。要素を減らしてゲーム性を落とさずノンゲーマーにもアプローチできるランドルフやクニツィアやクラマーが非凡なだけです。あれはおかしい。凡人の俺にはそんなん無理。自分の実力では少ない要素でリプレイ欲を担保する設計は難しいと判断し、無期限凍結にしました。そういう作品が手元に10個ぐらいあって、今回こうして1作をお焚き上げできるのは喜ばしいことです。
 決してつまんなくはないです。普通に遊べるし回ります。ルール(個人ボードのイメージ含む)とテストカードのPDFを置いておきますので、興味ある方は試してみてください。開発バージョンは0.4です。

 説明書 PutiPuti_Rules_ver4.pdf
 テストカード PutiPuti_TestCards_ver4.pdf


 このくらいが下準備です。次回(2日目)からは、ゲームロジックのコードを実際に組んでいきます。



<2025/12/17>


←No.54 『ブレイジング・エース!』からの縦軸と横軸 No.56 PC/スマホの一人回し用アプリの作り方(2日目)→
コラム一覧へ トップページへ