Unityで作ったゲームを
DLカードで配布してみた話
2019/06/25
Roppongi.unity
とりすーぷ
自己紹介
• とりすーぷ
• バーチャルキャスト社開発
• C#、Unity、.NET Core
• 最近はMagicOnionを使おうとがんばってる
• Dockerとかk8sとかGCPとかそのへんを抑えようとしてる
• 昔(今も)ゲームとか作ってる
今回の内容
• 「ダウンロードカード形式」で頒布する同人ゲームを作った話
• ダウンロード販売、ではない
• シリアルコードが印刷されたDLカードを頒布して、
あとからそれで認証してもらうスタイル
該当ゲーム
• ハクレイフリーマーケット
• 2017年10月発売
• https://www.mikoma.net/
• オンラインで最大6人まで
同時対戦可能
なぜDLカード?
• 同人ゲームは即売会で頒布することが大前提
• ダウンロード販売のみ、では即売会に出せない
• CD頒布は流石にもう時代遅れ
• CDドライブが無いPCも多い
• あと作成コストも高い
もくじ
• シリアルコードの認証の仕組み
• ダウンロードカードの作り方
シリアルコードの認証機構
詳しくはこの資料みて
• UnityとNCMBでユーザ管理を実装してみた話
• https://www.slideshare.net/torisoup/unityncmb-148151719
• まったく同じ話してる
DLカードの方式は2つある
• 「ダウンロード」そのものを縛る方式
• シリアルコードを持っている人のみDL可能
• 違法アップロードに対応できない
• ゲーム内での「機能解放」に使う方式
• ゲーム自体は誰でもDLできる
• ゲーム内の機能解放にコードが必要
• いろいろ面倒くさいので普通はやらない方式
DLカードの方式は2つある
• 「ダウンロード」そのものを縛る方式
• シリアルコードを持っている人のみDL可能
• 違法アップロードに対応できない
• ゲーム内での「機能解放」に使う方式 ←これにしちゃった
• ゲーム自体は誰でもDLできる
• ゲーム内の機能解放にコードが必要
• いろいろ面倒くさいので普通はやらない方式
機能解放方式、に必要なもの
• ユーザの識別機構(ログイン)
• ユーザの購入履歴の確認機構
• サーバアプリケーションが必要になる
サーバサイドの仕組み
• 2つのサーバアプリを併用して稼働
• ニフクラ
• ログイン機構
• 購入履歴の確認
• 自作のサーバアプリ
• シリアルコードの認証機構
• Ruby on Rails で作って、 ConoHa VPS 上で稼働中
全体構成
クライアント
シリアルコードチェックサーバ ニフクラ(ユーザ管理)
ログイン & アンロック状態確認シリアルコード認証
(初回のみ)
アンロック状態の更新
(シリアルコード認証成功時)
詳しくはこの資料みて(2度目)
• UnityとNCMBでユーザ管理を実装してみた話
• https://www.slideshare.net/torisoup/unityncmb-148151719
感想
• 機能解放型は手間がすごいからオススメしない
• クライアントの実装も複雑になる
• サーバアプリの管理も必要になる
• もしまた作るなら.NET Core + ASP.NETで作りたい
• クライアントもサーバもC#で統一した方が楽
• MagicOnionはちょっとオーバースペックかも
ダウンロードカードの作り方
ダウンロードカード、どうやって作る?
• 1枚ごとに異なったシリアルコードを印刷する必要がある
• どうやってデザインするのが楽なのか?
たぶん正しいやり方
• Adobe InDesignでやる
• データ結合機能で、csvからデータを流し込んで自動組版ができる
たぶん正しいやり方
• Adobe InDesignでやる
• データ結合機能で、csvからデータを流し込んで自動組版ができる
• Adobe製品高い
• なので他の方法でなんとかしたい
そこで我々が持つ武器
そこで我々が持つ武器
Unityで作ったDLカードで
ゲームを配布してみた話
Unityは、つよい
• なんでもできる
• uGUIでテクスチャ配置してデザイン
• スクリプト
UnityでDLカードの自動生成
• csvからシリアルコードを読み込み
• 1フレームごとに、
背景とシリアルコードを更新
• スクショを撮って1枚ずつ保存
1枚毎に異なった画像がたくさん生成される
あとは何らかの方法でこれを印刷すればOK
• 印刷のやり方によって手間が変わる
ハクレイフリーマーケットのDLカードの歴史
• 第1世代
• 第1.5世代
• 第2世代
• 第3世代(最終形態)
第1世代 DLカード
• A4用紙に何枚も並べて配置して印刷、手で裁断する
• 手間がかかるし、クオリティも低い
• カードスリーブとかにいれて誤魔化すしかない
第1.5世代DLカード
• 「名刺用プリント用紙」に印刷する作戦
• 裁断の手間が省ける
• テンプレートに合わせて
ぴったりデザインしないといけない
(それこそInDesign使えという話になる)
Unityでゴリ押しはしてみた
• Unityでプリント用紙のテンプレートに合わせて配置
• 同じ方法で大量に画像データをつくる
第1.5世代DLカード 結果
• プリンタに出力するときの数mmの誤差との戦い
• Unity上でテンプレート通りに配置しても、印刷するとズレる
• 逆に作成コストが上がってしまい、本末転倒
第2世代
• 名刺印刷業者に表面だけ頼む、という作戦
• 裏面は必要に応じて自分で印刷
• 大量にストックしておける
表 裏
使った印刷所
• ライオン名刺さん
• https://www.lion-meishi.com/
裏面は当然Unityでつくる
• 第一世代と同じ方法
• 毎フレーム、
シリアルコードを変更して
スクショを撮って保存
第2世代 結果
• かなり良い
• 裁断の手間が無い
• 安い(100枚刷っても800円くらい)
表 裏
第3世代
• 印刷業者を使うなら、もう全部任せればいいのでは?
使った印刷所
• ライオン名刺さん
• https://www.lion-meishi.com/
印刷オプション
• 2つ折り名刺 カラーx白黒
• 内側にシリアルコードを印刷することで、覗き見防止
• 用紙は「パーフェクトW」
• 厚めの用紙なので透かして中身を除くのを防止
• ナンバリング加工オプション
• CSVで指定した文字列を順番に印刷
第3世代 結果
• たぶんこれが一番いいと思います
• クオリティ◎
• お値段◎(単価数十円)
• ただし、入稿にIllustratorが必要
• Unityでゴリ押しできない
• Adobeが高いから使いたくないって話してたんじゃなかったの…
結論
• 餅は餅屋
• 手印刷するよりも、印刷業者に任せた方がクオリティが高い
• Unityでゴリ押しするより、Illustrator / InDesign使ったほうが早い
• 身も蓋もねぇ
•「自作するのが楽しいんだよ!」
• あるもので工夫するのが楽しい
• 同人活動はこの精神を忘れずにやっていきたい

Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity