テストカードの作り方




 自分でボードゲーム・カードゲームを作るとなると、何はなくともテストキットを作るのは必須です。特にカードを作るのは大半の制作者にとっては避けて通れない道だと思うのですが、自分みたく絵がまるで描けない人にとって、カード用意するのすごい面倒なんですよね。もちろん最初は付箋にざっと手書きでもやれるんですけど、テキストやパラメータの多いカードを用意するとなると、手書きでは追いつきません。
 そういうわけで、今ちょうどテキストの多いゲームをテストしているところなので、自分のテストカードの作り方を置いておきます。何かの参考になりましたら。

 ソフトはOfficeのWordとExcelを使います。
  1.Wordで印刷用のテンプレートを用意して、
  2.カードをレイアウトし、
  3.Excelにデータを入力して、
  4.WordレイアウトにExcelデータを一括で流し込めるよう設定し、
  5.流し込んだWordデータを印刷する
 という手順です。

手順1.印刷用のテンプレートを用意する

 まず、Wordで印刷用のテンプレートを用意します。
 カードは名刺サイズを使用し、市販の名刺10面の用紙に印刷する想定です。印刷後にミシンカットで簡単に切り離せて切る手間が省けるからです。ブリッジサイズやポーカーサイズの用紙があればいいんですが、簡単に入手できるものではないので。私は普段はエーワンの51003を家電量販店で買ってきて使います(安い店だと3000円ちょっとで売ってます)。カードサイズは市販の用紙サイズに合わせて融通を利かせられるので、お好きなものを使ってください。
 私はできあがった名刺カードをテストに使うときは、さらに台紙(カードゲーム専門店に行けば、マジック:ザ・ギャザリングの安いカードが300枚200円ぐらいで大量に売ってます)と一緒にスリーブに入れて使います。こうすると裏面の印刷が必要なく、カードもめくりやすいです。

 以下に用紙作成の手順を載せますが、面倒でしたら下記リンクからファイルをダウンロードしてください。
 card_template.docm

 Wordを開き(私のバージョンは2019です。適宜置き換えてください)、「差し込み文書」タブの「作成」→「ラベル」を選択します。



 「封筒とラベル」ダイアログが表示されるので、右側の「ラベル」をクリックし、「ラベルの製造元」「製品番号」で該当するメーカー・用紙を選択します。それから、「サイズの詳細」をクリックします。




 このままテンプレートを作ってしまうとカードが横長になってゲーム用にレイアウトしづらくなるため、組になっている数字の縦横をすべて入れ替えます。用紙サイズは「カスタム」にします。で、「OK」。



 「封筒とラベル」ダイアログに戻ったら「新規文書」ボタンをクリックすると、カード10面のテンプレートができます。
 このファイルはテンプレートとして保存しておくと、別のゲームにも使い回せます。その際、手順4でマクロを使うため「マクロ有効文書(.docm)」として保存してください。以降開くとき「セキュリティの警告」がファイル上部に表示されますが、有効化しないとマクロが動作しないので有効化してください。


手順2.カードをレイアウトする

 次に、テンプレートの面にカードのレイアウトを作り、それを必要な面数分コピーします。今回はテストなので5面だけ用意します。だってテストデータ作るの面倒だし……。
 ここでは、すべてのカードを同じレイアウトにすると想定します。カードによって別のレイアウトが必要であれば、種類分だけレイアウトを作る必要があります。

 で、何でも良いのですが、例えばこんな感じでカードレイアウトをします。



 各パラメータの位置に「$01」「$02」と、記号+連番を振っておきます。後からこの連番を個別のカードデータに置き換えます。
 冒頭の記号も$に限らず何でも構いませんが、必ず実際のカードデータ中に存在しないものにしてください。あと連番は1桁目でも頭に0を埋めてください。そのほうが幸せになれます。

 ちなみにお金などのアイコンですが、最近はUnicodeの絵文字(Emoji)が非常に種類豊富で、これをコピーペーストするだけでテストには十分役立ってくれます。もちろん画像のフリー素材を使っても、自分で描いてもいいと思います。
 UnicodeのEmoji一覧はこちらなどが参考になります。例えばお金のアイコンがほしければ「money」でページ検索するとヒットしやすいです。
 Unicode その他の記号と絵文字 - CyberLibrarian

 で、一通りレイアウトができたらコピーして、必要な面数だけペーストします。クリックしてCtrl+Vを繰り返すだけだから、まあ楽ですよね。できたものは一旦保存しておくといいかと思います。


手順3.Excelにデータを入力する

 普通に表を作るだけでかまいません。カード枚数もデータの種類も好きに決められます。こんな感じです。



 1列目に通し番号「No」を振っていますが、これはカードには流し込みません。不要であれば取ってかまいません。


手順4.WordレイアウトにExcelデータを一括で流し込めるよう設定

 さっきのWordファイルを開いて、「Alt+F11」でVBAのスクリプトエディタを開きます。
 左上の「プロジェクト」ウィンドウから、「Project (ファイル名)」→「Microsoft Word Objects」→「ThisDocument」をダブルクリックします。左側に空のウィンドウが表示されるので、そこに以下のマクロ(card_generator_macro.txt)のコードを貼ってください。

card_generator_macro.txt
 ※ソースコードのページ内埋め込みがうまくいかないので、テキストファイルでダウンロードできるようにしました。ただのテキストなので悪さはしません。下は参照用の画像です。



【説明】
 行1「createTestCard」は好きな名前でかまいません。手順5で使います。
 行8「サンプルデータ.xlsx」は、手順3でデータを作ったExcelファイル名にします。ExcelファイルをWordファイルと同じフォルダに置くことを想定して「ThisDocument.Path」と記載していますが、別フォルダに配置する場合はパスを変えてください。
 行9「データ」は、そのExcelファイルのシート名にします。
 行10「currentRow = 4」の右辺は、シート上で最初のデータがある行数をセットします。
 行16の「2」は、データの有無を判定する基準の列です。「カードがある場合必ずデータが存在する」列であれば、どこでもかまいません。
 行17の「2 To 6」は、前がデータの開始列(B列)、後がデータの終了列(F列)です。
 行20が、手順2で定義した「記号+連番」を突き合わせる箇所です。"$"は他の記号でもかまいません。「currentCol - 1」は、Excel側の1行目に通し番号を振ってあるので、そこを読み飛ばすためのものです。通し番号が不要であれば-1を取ってください。直後の"00"で、突き合わせの数字が必ず2桁になるようにしています。
 ※なぜ必ず2桁にするかというと、このマクロは「$01」「$02」といった文字列を順に検索しては置き換えていってるんですが、「$1」と桁数を不揃いにすると、データが増えた場合に例えば「$11」「$12」なんかも頭がゼロだから検索にヒットしちゃうんですね。それで予想外の動きをするのが嫌なので桁数を揃えてます。

 上のコードを貼ったら、必要な箇所を修正します。
 次に、行4でExcelファイルをWordから触るために「Excel.Application」という機能を使っていますが、これを有効化する処理を行います。メニューの「ツール」→「参照設定」を開き、「Microsoft Excel 16.0 Object Library」をチェックして、優先度を一番上まで上げてください。このページが参考になります。
 これを行わないと「コンパイル エラー ユーザ定義型は定義されていません。」というメッセージが出て、Excelファイルを触れず、コードが実行できなくなります。



 この状態で保存したら、スクリプトエディタを閉じてかまいません。最初にマクロ有効文書(.docm)として保存してないとこの時点でエラーが出ますので、拡張子を.docmに変えて保存してください。
 最後に、このWordファイルを閉じてテンプレートとしてバックアップしておきましょう。後々の幸せのために。


手順5.流し込んだWordデータを印刷する

 バックアップを取ったら、そのバックアップからコピーしたWordファイルを開きます。「セキュリティの警告」は有効化しないとマクロが動作しないので、有効化してください。
 「Alt+F8」を押してマクロのダイアログを開き、先ほど作ったマクロ「createTestCard」を実行します。
 そうすると……。



 実際のデータがテンプレートに反映されます。
 ここでフォントやサイズ等がいまいちであれば修正して、先ほど取ったバックアップのテンプレートに反映させ、そのテンプレートをコピーして作り直すとよいでしょう。
 データができたら、対応する名刺用紙に印刷して切り取れば完成です。

というわけで

 ちょっと長いものの、難しい点はないと思います。最初にテンプレートさえ用意してしまえば、あとは自動で流し込めるので楽です。私、500円ゲームなんかはこれで作ったカードでそのまま頒布してしまいます。

 直接Wordに入力することもできますが、カードのレイアウトに並んでいると数値やテキスト調整がしづらいですよね。Excelの表に並んでいるほうが修正や全体の俯瞰がしやすくて便利だし、それに今作ってるやつカード80枚あったりするので、さすがにそのテキストをWordに手入力するのは嫌じゃないですか。
 本職の技術者の方が見たら拙いことこの上ないはずですが、こんな方法でもないよりはマシかと思います。本当はもう少し汎用性高まるようにcsvデータをプログラムで処理して、入稿データに使えるような600dpiの画像を直接生成していくような方法を確立したいのですが、それはまた別の機会にということで。



<2020/05/29>


←No.35 デザインの芸術:ゲームデザイナーへのインタビュー #12 - フリードマン・フリーゼ No.37 3時間でトリックテイキングを作ろう→
コラム一覧へ トップページへ