エディトリアルデザイナーのアプリ制作日記

Unityで遊ぶ個人開発者のメモ書き

縦書きノベル制作日記 その13 Live2Dモデル 着々と進行中

 演出用として入れられたらいいよね、とやり始めたLive2Dモデルが、なんとか形になりそうになってきました。日々、動いているモノが徐々に出来上がっていく様子に、すごくワクワクしてます。

 ちなみに、この男キャラは、衣装が3つでモーションは15くらいの予定。1つのモデルに、無理やり全部の衣装を詰め込んだので、デフォーマーやらいろいろ大変なことになってるけど……動いているからヨシとします(いつも通りの適当)。最低でも、もう一人の女の子を動かさなきゃいけないけど、こちらは衣装が4(以上かも)で、モーションは20以上の予定……モデリングさえなんとかなればいけそうだけど、先は長いです; がんばらなきゃ、うん。

 

縦書きノベル制作日記 その12 ようやくエンドまでのシナリオチャートが完成

 ここ最近、テキストの追加のみで代わり映えのしない縦書きノベル本体の進捗。Live2Dに浮気したりして、さらに進捗が遅れてますが、ようやくエンドまでのチャートが完成しました。

 ちょこちょこテキストを書き足して、現在7割ほど終わったと思ってたけど、詳細を詰めていったら半分くらいやることが残ってる……かな。ま、まぁ、場面的には少ない予定だし、きっと大丈夫。夏のリリースに向けて、ひたすらテキストエディタに文字を打ち込むだけです。シナリオを書くのに飽きたら、Live2Dキャラクターの組み込みを検討しつつモデル&モーションの作成、ノベルシステムの改修などなど挟み込み、完成まで突き進みます。多分。

 ま、どこまでできるかわかりませんが、とりあえずがんばってみよう。うん。

Unity製 自作縦書きノベルアドベンチャーの公開部屋

2/19 ver ぼちぼちテキスト追加(今回で、全体の7割ほど収録)。

1/28 ver そこそこテキスト追加。

1/18 ver 背景処理変更&ちょっとだけテキスト追加。

WebGL対応であれば、スマホでも動かないことはないですが、一応、PCブラウザでプレイしてください。

※ページをリロードしたりして、ゲームを起動し直してしまうとセーブデータは消えてしまいます(WebGLでの仕様…なのかな)。

 ●ゲームタイトル

好きから始まる恋物語「夏恋(かれん)」(仮)

 ●ゲーム概要

 「好き」から始まる青春物語。幼なじみの仲良し高校生3人組(男2女1)が、高校1年の夏に芽生えた恋心。友人から恋人へと変わりゆくそれぞれの想い。3人が、ひと夏の間に悩み、ぶつかりあう甘酸っぱい青春物語を楽しめるノベルゲームです(予定)。 

 物語は、主人公の片桐裕樹の視点を中心に進んでいきます。ところどころ、別の登場人物の視点で話を進めることもあります。

 細かい分岐を除いたメインルートは2つで、3エンドで進む予定です。いまのところ、1プレイゆっくり読んで十数分くらいのテキストを遊べるようにしてあります。一部フラグの判定は仮設定になっています。

 まだプロトタイプで実装してないものもありますが、自分を追い込むためにも公開しました。夏までには完成させる予定です。なにぶんプロトタイプなので、動作が不安定なところがあるかもしれません。その点はご了承ください。

 

 ●ゲームの遊び方

 テキストを読み進めていき、最後に現れる選択肢を押すと、その選択に応じたシーン・話が展開していきます。画面を左右方向にフリップしてスクロールさせるか、下にあるコントロールボタンを押すとテキストがスクロールします。

 オプションで、コントロールボタンをOFFにすると画面から操作ボタンが消えますが、表示上消えているだけなので、ボタンのあった場所を押すと操作することができます。

※未実装:トップメニューの「オプション」ボタンは、現在デバッグのためにセーブデータをリセットするようになっています。ご注意ください。

※文中に現れる赤や緑四角は、デバッグ用の表示オブジェクトです。

●主要登場人物

片桐 裕樹(かたぎり ゆうき♂)  ゲームの主人公。地元ラブの元気印。帰宅部。みすずとは幼稚園からの腐れ縁。自動車整備工場を営む父を尊敬し、高校卒業後は、父親のあとを継ぐつもりでいる。

川瀬 輝(かわせ てる♂)  演劇部所属。勉学も運動もそつなくこなすが、熱くなることは珍しい。常に優しい笑顔であるが、どこか冷めた一面を覗かせている。将来は、芸能系の仕事に就きたいと思っている。

芙蓉 みすず(ふよう みすず♀)  陸上部に所属する明るく快活な運動少女。とにかく思ったことを実行せずにはいられない、真っすぐな性格。時に周囲の空気を読まないうっかり発言で、傷つくこともある。

 

●背景素材提供

きまぐれアフター(http://www5d.biglobe.ne.jp/~gakai/index.htm

あやえも研究所(http://ayaemo.skr.jp

http://www.flickr.com/photos/fleur-design/1394346975/ by The Pug Father (modified by あやえも研究所)

http://www.flickr.com/photos/isonic/5977654557/ by Giulio Magnifico (modified by あやえも研究所)

is licensed under a Creative Commons license:

http://creativecommons.org/licenses/by/2.0/deed.en

 

●使用BGM

休み時間(http://dova-s.jp/bgm/play4030.html

lovesickness(http://dova-s.jp/bgm/play4034.html

青空空港(http://dova-s.jp/bgm/play3972.html

Summer sky -夏空-(http://dova-s.jp/bgm/play3363.html

 

 

 

 

縦書きノベル制作日記 その11 オプションメニュー修正&コンティニュー実装ほか

 なんか、順調に進んでいるようなノベルゲーの続き。前回気づいた課題を解消していきます。まずは、オプションメニューの修正。

f:id:hamazakifactory:20160112193349j:plainf:id:hamazakifactory:20160112193438j:plain

 見ての通り、しおりセーブ機能に伴うボタンをぎゅぎゅっと詰め込みました。セーブ画面には、セーブ場所のタイトルとサムネイル(背景画像)をセットして、どの場所かをわかりやすくします。

f:id:hamazakifactory:20160112193919j:plain

 ゲームトップに置くメニューは、シンプルに3つだけにしておきます。トップメニューのオプション内容は、実装できる中身しだいなところがあるので、保留。いつものごとく後回しです。「続きから始める(コンティニュー)」メニューを押した後のしおり洗濯画面は、下の通り。

f:id:hamazakifactory:20160112193935p:plain

 前回悩んでいたコンティニュー方法ですが、結局、プレイ時の選択肢情報を記録して保存→コンティニュー時にその選択肢情報に基づいて、シナリオの頭からトレースしていくことにしました。ただ、馬鹿正直にトレースしていくので、シーンの少ない今でもサウンドなどのリソースをロードすると、多少もたつくようなそうでないような…致命的ではないので、とりあえずこのままでゴー。遊ぶに耐えなくなったらまた考えることにします。

 次は、BGMとSEの演出を盛り込むコマンドの実装です。やり方としては、特定のポイントに来た時に、BGMを切り替えたり、SEを鳴らすだけ。処理自体は、背景を切り替える処理とほぼ一緒なので、一気にコーディングしてしまいます。いろいろ不具合もあるのですが 、これでやりたいことがほぼ実装完了しました。

 システムが落ち着いたので、今後はシナリオ作成の続きを再開しなきゃ。また、うかうかしているといつまでも完成しないので、少し自分を追い込むためにもある程度まとまったらなんかしらの手段で公開(処刑?)したいところ。なんかいい手段あるかなー。探してみよっと。 

vs係長 AppStoreに降臨!

 おかしい…昨年の12/27に申請して、いろいろ不安なところがあった「Vs係長」のAppStoreへの申請が、本日1/7「The following app has been approved and the app status has changed to Ready for Sale:」のメールが届いてしまった。んー、リジェクトされたらブログのネタにしようとしていたけど…あっさり通ってしまった。こう順調にいってしまうと、逆に不安だけどね。ま、いいか。調子に乗って、パズルゲームの方も、少し調整してから申請してみるかな。 

>VS係長

 https://geo.itunes.apple.com/jp/app/vs-xi-zhang/id1070985225?mt=8

 

縦書きノベル制作日記 その10 コントロールボタン・バックログ・オプション実装

 大晦日から本日3日まで、特にやることもなかったので、しばらく先延ばしにしていたノベルゲームのコントロールボタンとバックログ機能・各種オプションの実装をしてしまいました。ゲームのプレイ感を決めるUIの設計は、慎重に考えていきたいなぁと思っていたのですが、いつも通りのノリと勢いも大事だよねということで、突き進むことに決定。

 まず、プレイ中のコントロールボタンは、シンプルに画面単位のテキストスキップとシーン先頭・シーン最後へのジャンプのみです。音声の読み上げもないので、これ以上複雑な機能は不要ということで、即決定。配置も画面下部にシンプルに並べる形で問題なしです。ただ、ボタンの大きさを、押しにくいくらいに小さすぎず、画面を圧迫しすぎないくらいの大きにするために、やや調整が必要でした。

 次にバックログ・オプションボタンの位置です。画面下が埋まっているので、必然的に上部に配置します。ただ、コントロールボタンと同じ大きさにすると、やや画面を圧迫するので、半分くらいの厚さで配置します。

f:id:hamazakifactory:20160104035447p:plain

 さらにテキストを読むことに集中出来るように、ボタンを表示しないフルスクリーンモードも実装したいところ。いろいろ考えた末、実際にボタンを消してしまうのではなく、ボタンイメージのアルファ値を0にして、見かけ上消すだけで対応してみました。プレイヤーは見えないボタンを操作することになりますが、プレイした感覚では押す位置もシビアでないので、すぐに慣れることができそう&オプションでいつでも選択可能にしておけば大丈夫でしょう。フルスクリーンモードのときは、画面上・下部をタッチすると、コントロールボタンが表示されるようにする方法も考えられます。しかし、目的のものを選択するために2タップの動作が必要になり、かえって操作性が悪くなるため上記の方法に落ち着きました。

f:id:hamazakifactory:20160104040824p:plain

 オプションは、コントロールボタンのON・OFF、フォントサイズ、行間、字間、音量関係、背景表示のON・OFFを並べてみました。フォントサイズなどは、フリーサイズを指定できるのですが、自由すぎても調整が難しいだけなので、フォントサイズは5段階、行間・字間は3段階の組み合わせで、プレイヤーが読みやすい形にしてもらえればいいかなということで決定。あとは、ゲームのメインシーンでは、文字の下に画像を敷いています。プレイヤーによっては読みにくいと思われることを考慮して、背景の表示をON・OFFできるようにもしておきます。

f:id:hamazakifactory:20160104035720p:plain

 残るは、バックログ機能。

f:id:hamazakifactory:20160104045653p:plain

 ゲームのメインテキストをシーンごとに管理しているため、同じようにプレイしてきたテキストをシーン単位で遡っていけるようにします。単純に、新たなシーンが始まった時にバックログ用のバッファにテキストを放り込み、選択肢が押されたら、選ばれた選択肢のテキストをプラスしていきます。あとは、シーンが進むたびに同じことを繰り返すだけ。バックログボタンが押されたら、それらのバッファを吐き出しつつ遡ればOK。

 なんとなく&勢いで追加したUIとオプションですが、これだけで、ぐっとゲームらしくなってきました。満足満足、と思っていたら1つ重要なことを忘れていました。ゲームのコンティニューです。ノベルゲームなどでは、しおり機能としておなじみのやつですね。しかし、ゲーム画面もオプション画面もぎゅうぎゅうで入れるスペースはなし…失敗したなぁ、どこに入れよう。

 また、どうやってコンティニューするかも具体的に考えてませんでした。基本的には、最後にプレイしたシーン番号とそれまでの変数一式を保存しておけば、コンティニュープレイが可能です。ただ、これらに加えてゲームをたどってきた情報を記録しておかないと、バックログに対応したテキストは作れません。あまり大きくないとはいえ、さすがにバックログテキストそのものを保存するのも気が引けます。最悪、再開時はバックログはなし、という仕様に逃げてもいいのですが、それはそれで不親切です。

 さて、どうしたものか…。しばし悩むとします><

Unity Adsではまったこと 5.2以降編

 Unity 5.2以降になって以来、導入もエディタ上ですべて完結するというお手軽さになったUnity Ads。記事タイトルもはまったことと書いてますが、ほぼそんなことはなく、素直に実装できました(2回目だしね)。

 ただ、「Unity Ads」でググってしまうと私の記事も含めて古い環境の話だったりが結構残っていたりします。基本的には、マニュアルを読めばすべてわかる簡単なのことなのですが、なにもわからない初心者(自分)が、Unity 5.3でAdsを導入した時に「これでいいのかな?」と疑問に思ったところがあったので、改めてまとめてみます(Unity 5.2で確認していませんが同じだと思います)。

Seivicesウインドウを出してProject IDを作成

 最初にやることは、Unityにログインした状態で、Unityエディタの右上にある雲(?)アイコンを押すか、Window>Service(⌘0)で、Seivicesウインドウを表示させます。そのあと「Creat」ボタンを押すだけです。組織が複数個登録されている場合は、画面に「Select organization」と出るので使用したい所属を選択して「Creat」を押します。「Creat」ボタン下にある「I already have a Unity Project ID」は、なんらかの理由でProject IDとのリンクが切れてしまった時に使用するみたいです。新しいアプリでAdsを使用したい時は、素直に「Creat」ボタンを押してIDを作成すればOKなはずです。

右上のAccountボタン、Cloudボタン : FreelyApps

f:id:hamazakifactory:20151228160731j:plain

表示された4つのサービスからAdsのスイッチをON

 IDが作成できたら、ぞろぞろと使用できるSeivicesウインドウのトップ画面が出るので、その中の「Ads」を選んで、スイッチをONにします。

f:id:hamazakifactory:20151228161036j:plainf:id:hamazakifactory:20151228162948j:plain

 13歳以下の児童を対象にしているかどうか聞かれるので、作成しているアプリに応じで登録します。

f:id:hamazakifactory:20151228162246j:plain

  以上でUnity Adsを利用する準備は完了です。

f:id:hamazakifactory:20151228163219j:plain

 Advacedを開いてみると、ちゃんとiOSAndroidそれぞれにIDが自動生成されて書き込まれています。

f:id:hamazakifactory:20151228163447j:plain

Unity Adsは、どうやって使うの?

 次に使い方ですが、基本的な使い方もきちんとマニュアルに書かれています。

docs.unity3d.com

 ここを読んでおくとわかるのですが、iOSAndroid向けに作られたプロジェクトであれば、エディタ上でUnity Adsの設定を行えば、スクリプトによる初期化は必要なくなったようです。

 Unity5.1以前でAsset Storeのパッケージで使うのであれば、従来のようにAdvertisement.Initializeで初期化が必要ですが、どうやら、Unity 5.2以降でこの初期化メソッドを実行してもまるっと無視されるようです。Advertisement.Initializeで設定していたテストモードの設定も、Unityエディタのチェックボタンで設定されたものが優先されるようです。

 このほか、Advertisement.isReady()が、Advertisement.IsReady()になっていたり、広告再生するAdvertisement.Show()で、静止画広告のためのpauseオプションがなくなっていたりします。以前バージョンのコードを拾ってきてしまうと、エラーが起きるので余計なものはカットしてしまいましょう。

 ちなみにサンプルコードもUnityエディタにあるので、そちらをコピーすればOKという至れり尽くせりな状態です。

f:id:hamazakifactory:20151228170409j:plain

 ここでCODE SAMPLEを選べば、単純に再生する場合(SIMPLE)と、映像の再生状態によって処理を振り分けられる(REWARDあり用)のサンプルが得られます。

f:id:hamazakifactory:20151228170533j:plain

f:id:hamazakifactory:20151228170643j:plain

初期化はいらないけど、準備ができるまで多少時間は必要

 先ほど、Unity Adsをアプリ側で使う時には初期化処理が不要と書きましたが、実際にはアプリが起動してから、広告再生の準備が整うまで多少の時間が必要とされるみたいです。 具体的にどれくらいの時間が必要かは検証していないのですが、実際に製作したアプリで、起動>広告再生ボタンを押す、と連続してやったところ、数秒待たないと広告再生の準備が整わない様子でした。より万全を期すならそのあたりのエラー処理も考慮すべきなのでしょう。自分はめんどくさくて、放置してますが…。