投稿記事

魔法少女の記事 (13)

もっきゃりぺお 2024/02/29 23:11

【ゲーム開発】⑬「魔法少女確殺弾」制作進捗

もっきゃり500えんぷらんでは
もっきゃりぺおのシャラララジオが聞けます。

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。

はじめに

今年はじめての記事になってしまいました…!
大変申し訳ないです、
も~忙しくて忙しくて。
なんなら今仕事が終わって2月が終わる1時間前に書いてますこれ。
間に合うのか…?

この2か月の進捗

・シナリオがそろそろ終わりそうかも!
・ゲーム面めっちゃオシャレになっていってるよ!

絵を描かなかったから
報告することが ねえ~!
今から描く時間もねぇ!

いや…なんか唯一…
描いたやつがあるな…
なんだこれは…
うわっ…

え?
ひどすぎる
本当にすみません

ラジオはちゃんと録音したので…(先月分を)
本当にすみません…進捗はちゃんとあるんで…
あるんで…あるんで…
応援よろしくお願いします!!!

【 もっきゃり500えんぷらん 】プラン以上限定 支援額:500円

もっきゃりぺおのシャラララジオが聞けます!

プランに加入すると、この限定特典に加え、今月の限定特典も閲覧できます 有料プラン退会後、
閲覧できなくなる特典が
あります

バックナンバー購入で閲覧したい方はこちら
バックナンバーとは?

月額:500円

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

もっきゃりぺお 2023/12/07 22:06

【ノベルゲーム制作】④Unity Naninovel カスタムUI、カスタム変数【まほだん】

Unityのことを完全に理解した

完全に過言ですが、ちょっとずつこなれてきている感じがします。またまた時間が開いてしまいましたが、進捗がないというよりは、機能を色々と追加していて、せっかく動画にするならちょっとまとまったところまでやろう、という感じで溜め込んでいました。AC6ももりもりやりましたが。

というわけで、何はともあれまず成果物です。

見ての通り、画面が動いたり、タイマーが表示されたり、カーソルが切り替わったりしてます。あと、Naninovelのバージョンがv1.18とそれ以前で大きく変わっていて、特に、TextからText Mesh Proに変わったこととかもあります。全部一つの記事にまとめると大変なので、いくつかに記事を分けます。

Naninovelというか、Unityをやっててわかったのは、まあオブジェクト指向なんですね。そりゃそうなんですけど、いや、今更って話なんですけど、なんか作りながらわかっていけばいいか~という気持ちで触れてたので、なんというかそういうことが腑に落ちたという感じです。インスペクターでぽちぽちしてるけど、基本的にはとりあえず、UnityEventを使って、呼び出す関数と、関数を呼び出す仕組みを作ればまあ色々できるというのを、GUIで便利にしてるんだな、というのがわかってきました。それを使って、タイマーを作ったり、アニメーションに合わせてSEを入れたり、カーソルを変えたりというのを作ってます。

それと、ラジオは一応毎月かかさずとってるので、有料のプランの方は聴いてみてね。

特別な演出

目的 ―― Naninovelにない演出や特別な処理をしたい

Naninovelにもいろんな効果や表現がデフォルトで実装されてますし、それだけでそれなりにリッチな表現ができると思うんですが、基本的にプレーンで、特定のスタイルを押し出したものではないし、冒頭の動画のようなタイマーみたいな処理は用意されていません。しかしNaninovelはUnityのアセットなので、プログラムすればそれこそUnityで出来ることは何でもできると言ってもいいでしょう。

魔法少女確殺弾では、タイトルの通り魔法少女確殺弾で、それを撃つ、撃たないというのが重要な選択になっていきます。その重要な選択を強調するのに、特別な演出を実装することになりました。
まほだん制作開始時ではそんな予定ではなかったんですが、専用のUIをこんな感じでやるといいんじゃないか、とみるきさんと話し合って、やることになりました。

カスタムUI ―― NaninovelとUnityの自由さの接合面

Naninovelでそういう色々な機能を追加したいときには、カスタムUIというものを使います。

WARNING
カスタムUIを作成したり、既存のUIを変更したりする前に、まずUnityのUIシステム 🡕(uGUI)をよく確認してください。以下で利用できるUIカスタマイズのチュートリアル動画とサンプルプロジェクトがありますが、Unityの組み込みツールについて追加のガイダンスまたはサポートは提供していませんので、ご注意してください。詳細は サポートページ をご覧ください。

って書いてありますが、Unityで好きにあれこれやるための機能なので、これを使えばかなりのことがNaninovelと結合できるよ、ということです。他のノベルゲームのエンジンについて何も詳しくないのであれなんですけど、UnityのPrefabやAnimatorの表現力や自由度ってかなりのものだと思っていて、わざわざUnity使ってノベルゲーム作る人って、そのあたりに魅力を感じているからではないでしょうか。たぶん。

カスタムUIの機能を使うと、動画の、黒い枠がにゅーっと出てきたり、タイマーを呼び出したりとか、カーソルが変わったりの演出が、


こんなかんじに、
@showUI MahodanUI (枠がでるほう) @showUI TimerUI (タイマーのほう)
とか
@hideUI TimerUI @hideUI MahodanUI
とかのコマンドで出し入れできるようになります。
Naninovel公式の説明動画だと、コマンドでカレンダーを呼び出してるのがわかりますね。私はだいたいこの動画を真似して実装していきました。

カスタムUIの作り方 ―― 無垢なカスタムUIの赤ちゃん

カスタムUIを作って使えるようにするだけなら、かなり簡単にできるようになっています。といっても、それだけだと何も機能のないものになりますが。


こんなかんじで、Projectの中を右クリックして、Create→Naninovel→CustomUIをすると、NewCustomUIというPrefabが作成されます。このカスタムUIの赤ちゃんに名前をつけて、Configulation→Naninovel→UIから登録すれば、それだけでオッケーです。

こんなかんじでMahodanUIとTimerUIが登録されてます。

カスタムUI ―― かわいいベイビーが動いたり、数を数えるようにする

Prefabを呼び出せるので、それだけで好きなオブジェクトを追加できて、枠なりなんなりはいくらでも作れます。枠や画像を出すだけじゃなくて、Prefabなのでアニメーションを入れたりもしてます。にゅーっと黒い枠で狭まる効果は、MahodanUIが呼び出されると共にアニメーションさせています。


これは実装したMahodanUIのCustomUIというコンポーネントです。項目は色々ありますが、重要なのはOn Show()とOn Hide()で、その通り、NaninovelからShowしたときとHideしたときにイベントを呼び出せるので、これによってアニメーションを操作してます。このあたりの処理は口パクのほうで結構書いたので、参考になれば。

Timerはこんな感じで、自作のscriptを追加しました。
ちょっと試行錯誤したままのコードなので恥ずかしいのですが、こんな感じです。

using UnityEngine;
using System.Collections;
using TMPro;
using Naninovel;
using UnityEngine.Events;

public class Timer : MonoBehaviour
{
    private float totalTime;
    private float seconds; // 秒数の変数
    private float timeSpeed = 1f; // timeSpeed の初期値を設定
    private bool timerStarted = false; // タイマーが開始されたかどうか

    [SerializeField]
    private TextMeshProUGUI TimerText;
     // 3秒以下の時に呼び出す
    [SerializeField]
    private UnityEvent onThreeSecondsLeftEvent;
     // 1秒以下の時に呼び出す
    [SerializeField]
    private UnityEvent onOneSecondLeftEvent;
    // タイマー終了時に呼び出す
    [SerializeField]
    private UnityEvent onTimerFinishedEvent;  

    public void Start()
    {
        
        timerStarted = false;

        // 外部の変数マネージャーから秒数を取得し、floatに変換して代入
        var variableManager = Engine.GetService<ICustomVariableManager>();
        string timerString = variableManager.GetVariableValue("timer");
        if (float.TryParse(timerString, out float timerValue))
        {
            totalTime = timerValue;
        }
        else
        {
            totalTime = 0f; // または適切なデフォルト値を設定
        }

        // タイマー表示用UIテキストを更新
        UpdateTimerText();
        StartCoroutine(UpdateTimerColor()); 
    }

    public void StartTimer() 
    {
        timerStarted = true; 
    }

    private void UpdateTimerText()
    {
        TimerText.text = totalTime.ToString("F2"); 
    }

    private IEnumerator UpdateTimerColor()
    {
        while (totalTime > 0f)
        {
            if (totalTime <= 1f)
            {
                TimerText.color = Color.red;
                onOneSecondLeftEvent.Invoke();
                timeSpeed = 0.8f; 
            }
            else if (totalTime <= 3f)
            {
                TimerText.color = Color.yellow;
                onThreeSecondsLeftEvent.Invoke();
                timeSpeed = 0.9f;
            }
            else
            {
                TimerText.color = Color.white; 
                timeSpeed = 1f;

            }

            yield return null; // 次のフレームまで待機
        }

        // タイマー終了時に timeSpeed を元に戻す
        timeSpeed = 1f;
    }

    void Update()
    {
        if (!timerStarted || totalTime <= 0f)
        {
            return;
        }

        totalTime -= Time.deltaTime * timeSpeed;

        if (totalTime < 0f)
        {
            totalTime = 0f;
        }

        // タイマー表示用UIテキストを更新
        UpdateTimerText();

        if (totalTime <= 0f)
        {
            Debug.Log("制限時間終了");
            onTimerFinishedEvent.Invoke(); 
        }
    }
}

こんなふうに自分で作った関数を呼び出せるので、カスタムUIでかなりのことができるなと思いました。同じ感じでカーソルが拳銃の照準に変わるのとかも、実装してます。
あとは、animatorの方にEventhandlerを持たせて、アニメーションに合わせてSEを鳴らしたりとかも実装しました。

カスタム変数 ―― Naninovelの方から変数に触る

ここで、タイマーの時間設定なんですが、8秒に設定されています。この決定は、自作のスクリプトの方ではなく、Naninovelの方で設定できるようになっています。Naninovelにはカスタム変数という機能があって、Naninovelのスクリプトの方からある程度変数に触れるようになっています。
公式のカスタムUIの日付表示の動画サンプルも、カスタム変数で実装しているので、この動画を見るとわかりやすいです。
タイマーの時間セットは、
@set timer=8 @showUI TimerUI @wait {timer+2}
という形でNaninovelのスクリプトの方で動くようになっています。
このtimerというカスタム変数を登録するだけなら、


こんなかんじでマニュアル通り、Custom Variablesに項目を追加するだけでできます。ここで作ったTimerというカスタム変数は、上記のコードだとstart()内の
var variableManager = Engine.GetService<ICustomVariableManager>(); string timerString = variableManager.GetVariableValue("timer");
で呼び出しており、設定したカスタム変数名を入れるだけで呼び出せます。

というわけで、今回はカスタムUIとカスタム変数について触れました。UnityそのものやC#についてはもっと詳しい記事がいっぱいあると思うので、そのあたりについてはかなり省略しました。

ゲームの制作って地道ですね。一つ一つ機能を追加したり、パラメータを調整したりして、いい感じになるように頑張っています。それでは!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

もっきゃりぺお 2023/11/29 21:15

【ゲーム開発】⑪「魔法少女確殺弾」制作進捗

もっきゃり500えんぷらんでは
もっきゃりぺおのシャララジオが聞けます。

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。
今回の #4 ではいわゆる"ヘキ"の話をお酒を飲みながら語っています!

はじめに

こんにちは! もっきゃりぺおのみるきーです。
ちっちゃい秋がでっかい冬になってきましたね。
皆様体調など崩されぬよう…

私はいつも眉間のあたりから来る頭痛に悩まされてきたんですが、
症状でggったら(症状でggるのは負け犬しぐさ)
蓄膿症かもしれん、という記述が見つかり…
病院で蓄膿症の薬出してもらったら頭まったく痛くなくなりました。
うれしすぎる。たまには症状でggる負け犬になってもいいのかも。

今月の進捗

今月はシナリオで全体的にフェアリーハートの出番を増やして、
勿体ぶって書いてこなかった
「平野が朝野を殺したい理由」をちゃんと全面に出していくことにしました。
そこ勿体ぶってもなにもいいことありませんからね…

というわけでちょ~っとだけ活動内容の紹介ページを改めたので、
ここに一部抜粋してはっつけてしまいますね。ドン!


作中ほぼすべての選択肢が、殺すか殺さないか。
当たれば魔法少女を絶対に殺せる銃弾、
「魔法少女確殺弾」を手に入れた主人公「平野 みずち」は、
自分の告白をなぁなぁにされた恨みから
幼馴染である「トゥインクル・モーニー」(朝野 ヒカル)を殺すため、
魔法少女とカイジュウとの戦場に、銃を片手に乗り込んでいきます。
確殺の銃弾を手にすれば、すべては銃爪を引くか引かないか。
常に致命的な決断を迫られ、『今だ』と決めた瞬間、物語はすぐに結末を迎えるでしょう。



というわけで、平野は朝野に告白したんだけどなぁなぁにされたのでブッ殺したいのでした。わ~~。

元はもう少し違う感じだったんですが、朝野もそんなに良い子じゃないことをちゃんと全面に出したかったので、告白をなぁなぁにされたという感じに方向を修正しました。
どんな理由があれ人は殺しちゃダメですが…

それと、フェアリーハートの出番をメキメキ増やしています。
まほだんはほんのりバディもの…?というか…?
平野とフェアリーハートのやりとりが実はかなり重要なお話なので、
出番を増やせば増やすほどうまみが増すかな、ということで。

ゲーム面の進捗については、私から見るとかなり進んでいるように見えるんですが、
naninovelを扱う方向けに記事を書くにはもう少しいろいろやってからのほうがよい、と水面さんがおっしゃっていたので、そういう事情があるみたいです(フンワリ…)
でもめちゃめちゃ進んでいて、シナリオ担当はとてもうれしいです!こんなにうれしいことがあるか?うれしすぎる。

以下、ほんのちょびっとですがイラストです…!
もっきゃり500えんぷらんの方はラジオもよかったらどうぞ!

【 もっきゃり500えんぷらん 】プラン以上限定 支援額:500円

ラジオとイラストです!

プランに加入すると、この限定特典に加え、今月の限定特典も閲覧できます 有料プラン退会後、
閲覧できなくなる特典が
あります

バックナンバー購入で閲覧したい方はこちら
バックナンバーとは?

月額:500円

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

もっきゃりぺお 2023/10/30 19:28

【ゲーム開発】⑩「魔法少女確殺弾」制作進捗

もっきゃり500えんぷらんでは
もっきゃりぺおのシャララジオが聞けます。

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。
今回の #3 では最新作魔法少女確殺弾・世界を破壊する魔法の
夕暮 からすと朝野 ヒカルの話をしています!


↑これは試し聞き版↑


はじめに

こんにちは! もっきゃりぺおのみるきーです。
毎回思うんですけどハロウィンって30日なんですか?31日なんですか?



あと、実は魔法少女確殺弾に関連した記事を書いてから
だいたい一年経ったみたいです。

銃を買いました(玩具の)

【ゲーム開発】①「魔法少女確殺弾」ラフイラスト公開

一年、長かったような短かったような…ですね。
みなさん本当に応援ありがとうございます!
これからも応援よろしくお願いします…!


今月の進捗

今月も私はシナリオを書いていました。先月よりはだいぶ…進んだかな!!
しかしシナリオなので皆さんに教えられるような進捗はありません。
周りにいる知り合いの人とか一方的に知っているクリエイターの人が
ガンガン新作出してるの見るとシナリオだけでこんなに時間かかってるのに
焦る気持ちを隠せなくなりますが、
新しい試みをしようとしたりすると時間がかかるのは仕方ないし、
焦っても仕方ないので自分のペースでやっていきたいですね。


ちなみに水面さんのほうは結構良い進捗が得られたみたいです。
ラジオでもお話してくれていましたが、詳しいことは後ほど記事にしてくれるそうなので、私もとても楽しみにしています!

おまけ

ろくに銃を見ずに描いたら水面さんから
「銃が小さい」と文句を言われたので、

ガタガタ言っていました。

以下、イラストなど

今月は気晴らしにみるきーのツイッターアカウントで
イラストのお題を募集していたので
そういう絵が多めになります。

https://odaibako.net/u/mk_lk22

ちなみにこれはお題箱のリンクです。
気が向いたら描くと思いますので、お気軽にどうぞ~

【 もっきゃり500えんぷらん 】プラン以上限定 支援額:500円

イラストが見れます。もっきゃりぺおのシャラララジオも見れます。

プランに加入すると、この限定特典に加え、今月の限定特典も閲覧できます 有料プラン退会後、
閲覧できなくなる特典が
あります

バックナンバー購入で閲覧したい方はこちら
バックナンバーとは?

月額:500円

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

もっきゃりぺお 2023/09/30 18:46

【ゲーム開発】⑨「魔法少女確殺弾」制作進捗

もっきゃり500えんぷらんでは
もっきゃりぺおのシャララジオが聞けます。

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。
今回の #2 では最新作魔法少女確殺弾における
フェアリーハートと平野 蛟の関係性についてお話しています!



こんにちは! もっきゃりぺおのみるきーです。
今回の進捗は何度も風邪をひいていたりして
ほとんどありませんでしたスミマセン…
人間だからそういう時もある。
そのかわりいろいろ見たり読んだりしました。
今回はそれの話をしようかなと…!ネタバレはしないように気をつけます。
あとは紙に描いたらくがきも載せております。要チェック!

(ちなみに水面さんは前回の宣言通りアーマードコアをやっていました)


インプットしたもの

LILIUM-リリウム 少女純潔歌劇

吸血鬼ものの演劇シリーズがあって、そのシリーズのミュージカルです。
白いドレスを着た可愛い吸血鬼の女の子たちが歌ったり踊ったりします。
少女に対する憧れや、ある一定の少女性というのは、虐げられたり、自分では自分のことがままならなかったりすることや、悲しみ、儚さみたいなものが含まれているなという感じでした。そして、そうであればあるほど偶像的なのかなと。なので、美しい悲しみは美しい一方で、偶像的すぎて、それに惹かれれば惹かれるほど、現実からは遠ざかっていく、という風に感じました。

マリーゴールド

リリウムと同じシリーズのミュージカルです。
リリウムに出てきたマリーゴールドという少女の過去の物語になります。
物語に関わってくる重要なキャラクターが複数人いるぶん、
見ている人に対する各々のキャラクターの好悪の印象の管理がすごくしっかりと
なされていて、参考になりました。なんかもっと言いたいことあるんだけど
全部ネタバレになるんだよな…めっちゃ好きなんですけど…

まぶた(小川洋子)

短編集です。人におすすめされたので読みました。
心地いいまどろみの中で見る悪夢みたいな、いい本でした。

金は払う、冒険は愉快だ(川井俊夫)

骨董屋さんのノンフィクションのエッセイ…なんでしょうか?
痛快な語り口とハードボイルドさがよかったです。
これは本の内容とは関係なく、いつも思っていることなんですが、
大衆にとって正義とされること、ケッて思います。
その誰が作ったかもわからない正義が
お前になにかを手に入れさせてくれるのかよ、と思います。

インターネット・ラヴ!(売野機子)

BL漫画自分で買うの初めてなんですけど、第一話
がちょっとよすぎたので買ってしまいました。
今後好きな漫画3つあげろって言われたらこれは絶対あげちゃうと思う。
簡単に例えれば萌えでハッピーな漫画、と言えるんですが
萌えとハッピーに対する追求とシリアスさが凄かった。好みです。

青春リビドー山

R18じゃないけどエロ本です。こういうのでいいんだ、世界は…
性欲強いキャラがいると心が洗われるのでみんな性欲が強くてよかった。
全部この下品エロネタな内容でまとまってるの迫力ありました。

ポケモンSV・碧の仮面DLC

オオタチかわいかったです。
登場人物の感情の機微の描かれ方がよかった。

らくがき

こわめ

にんげんをきずつけるのはやめよう


以下0えんぷらんに9枚載せています。

500えんぷらんでは過去のイラスト・ついでにラジオが聞けます。
そして、もっきゃりぺおを継続的に支援することが出来ます!
ぜひ加入の検討よろしくお願いします!

【 もっきゃり500えんぷらん 】プラン以上限定 支援額:500円

もっきゃりぺおの裏話おしゃべり、もっきゃりぺおのシャララジオが聞けます。

プランに加入すると、この限定特典に加え、今月の限定特典も閲覧できます 有料プラン退会後、
閲覧できなくなる特典が
あります

バックナンバー購入で閲覧したい方はこちら
バックナンバーとは?

月額:500円

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

« 1 2 3

月別アーカイブ

記事を検索