【ノベルゲーム制作】①Unity Naninovelノベルゲーム 開始~キャラクター表示【まほだん】
活動記録
新たに一員となりました水面です。
もっきゃりぺおの一員となりました水面です(これはハセさんという方に描いてもらった私で、完全にこれです)。もっきゃりぺおでは、主にゲームとして実装していく仕事をします。他には(私自身もシナリオが書ける人なので)シナリオの相談に乗ったり、案を出したり、どういう方法で展開していくか……とかの話をしたりと、色々しています。備忘録や思考整理を兼ねて、せっかくなので記事に残しながら作っていこうと思います。使い方の解説をする記事じゃないので、細かい使い方はマニュアルを読んでね。
スキルについて
unityははじめてです。C#はちょっと触ったことがあります。
CとかpythonとかC++とかも浅く広く触っているので、プログラミングの全くの初心者ではないです。プログラミング初学者というところで……。私はどっちかというと組み込みとかのハードウェアを動かす方のエンジニアなので、ソフト開発らしいソフト開発はほとんどはじめてなんじゃないかな。
まあプロダクトを考えて実装することはどんなモノづくりだって同じでしょ。という気持ちで取り組んでいます。みるきさんがありえんスピードでゴリゴリシナリオを書いているから私も急がねばならぬと決意した。なんかもう最終章話書いてるし……。
Naninovel
NaninovelはUnityのアセットなのですが、英語です。色々と機能が充実してて、デフォの画面もかっこいいし、色々な環境に移植する際にも勝手に対応してくれるらしいので、Naninovelでやることになりました。
ちょっと触ってみた、みたいな記事や説明はあるけれど、これでガッツリ作っている過程が日本語の記事になっているのはあまり見ないので、読む価値のあるものが残せるだろうと思い、記事にしています。ci-enの記事はいくらあってもいいしね。
純粋にテクニカルな部分の書き出しだけじゃなくて、どういう流れでゲームを作っていくのか……みたいなのも残せたらいいですね。
まずはざっくりデモを触ってみる
基本的な処理はだいたいわかる
なにはともあれデモを触ってみます。プログラムならとにかくできてるものを見て学ぶのが一番だと思ってます。合わせて
NaniNovelはビジュアルエディターって機能があって、動かしながらコードをリアルタイムで追えるから、理解も容易だしデバッグもしやすそうです。キャラクターの挙動や画面効果、演出などを、こういう形でスクリプトとして書いていけばとりあえずはモノになりそうです。
さらっとNaniNovelみたいなアセットを使わない方法でのノベルゲーム作成を調べもしたんですが、バキバキにプログラムする必要がありそうで、ちょっと大変そうでした。
デモで基本的なことはわかりました。マニュアルも同時に追い、どういうことができるかをざっくり確認しました。みるきさんにも、こんな機能があるけどやりたい演出とかある? みたいな質問をしました。それ以外にも、とりあえずマニュアルを眺めて、実装方法はわからなくてもいいから使いたいものがあれは言ってねと伝えてあります。
機能の活用って、すでに表現したいものがあってその手段を探す場合と、機能があってそれならこういうこともできそうだねと広がる場合がありますよね。せっかくNaniNovelを使うので、よくなりそうなら積極的に使いたいところです。
ここからどう制作していくか
チュートリアルには当然、NaniNovelのすべてが書かれているわけじゃないので、すでに決まっている表現したいことの実装方法を考えていきます。
ノベルゲームとして形にするだけなら、テキストを流し込んだあと、ごりごりとスクリプトとして実装していけば、とにかく形になるというのはわかりました。そのままでもかなりおしゃれな感じのセーブ画面、ロード画面とかもすでに用意されてます。なので、ごりごりとスクリプトを書くだけじゃどうにもならない色々なことや、スクリプトを書く前の準備について考えてみます。
- キャラクターの登録
- 口パクしたい
- 表情やらなにやら、差分がめちゃめちゃある
- 照明の効果だったり、フィルタをかけたりしたい
- 画面づくり
- 文字が表示されるところ(プリンターというらしいです)も変えたいし
- 枠とかつけたい
- ちなみにおおよそ作りたい画はみるきさんにすでに提示してもらっています
- かっこいいカットイン
- カットインを入れるとき、かっこいい感じに入れたい
- なんかこう……いい感じに入ってきたりね
- カットインを入れるとき、かっこいい感じに入れたい
- ストーリーの分岐
- 何を隠そう、まほだんには分岐があります!
- 特殊なゲームモード
- 『魔法少女確殺弾』モードというフリーカーソルのモードが挿入されます
- これはまあ、ちゃんとプログラムをしないといけないでしょうね
- 多言語対応
- まほだんは英語とか中国語とかに展開する予定です
- CG集 エンディング集
- まほだんはマルチエンディングなので、コレクションしたいですよね
ざっとこんなところでしょうか。他にも細かい色々はありますが、とりあえずこんな感じで実際に作っていきましょう。ものを作るとき、仮固定として方針ぎめをして、それから進めるのがいいんじゃないかな、と思います。まったく方針ぎめをしないとバタバタするし、はじめに決断的に全部決めるのも、現実的じゃないですからね。
平野さんを表示できるようにしよう!
というわけで、まずはキャラクターの表示をしましょう。ただの立ち絵なら簡単で、枚数が少ないなら表情などの差分も全部画像を用意すればいいんですが、もう少し込み入ったことをやりたいです。特に口パク。
というわけで、今回はLayerdCharacterという方法でキャラクターを用意します。
この方法だと表情差分とかを作りやすそうです。unityのスプライトレンダラーという機能をガッツリ使う機能っぽいですね。服を変えるとかもやりやすそう。なにより、PSDImporterPacakageという方法で、PSDファイルからレイヤー情報をある程度維持ししたまま読み込めるらしいので、これは便利そうです。基本的にみるきさんにクリスタで作り込んでもらって、それをインポートする感じでやっていきます。
そのままPSBファイル(PSDインポーターだけどPSBファイルなんですね)を投げ込めばいいんだと思ってしばらく悩んだんですが、PSBインポーターっていうアセットをいれないといけないんですね。入れたら一発で通りました。ちゃんとレイヤーごとに分けられるデータになってますね。
というわけで、デモにねじ込まれて荒野で元気よく挨拶する平野さんです。やった~表示はできたぞ!(デモで表示されてるNaniNovelのNaniくんの代わりに平野さんを表示できるようすげ替えました)
今回はこんなところで。次回は表情差分とか、シェーダーとかで、もっとちゃんと色々実装してみようと思います。GWなので、そこでやれたらいいですね!