投稿記事

もっきゃりぺお 2024/03/29 21:04

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

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

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。
今回の #7 では各キャラクターについて、
描く・書くうえで困ったことをしゃべっています。

はじめに

こんにちは!もっきゃりぺおのみるきーです。
寒かったり暑かったりな日が続きますね~。
私はまだ風邪などは引いていません!
今年は病気なんてしない年にしたいな~。

今月の進捗

ラジオでも触れましたが、
四章のシナリオが一旦書きあがりました!
なので、一応一区切りついたことになります。
まだまだ手をつけていない分岐や、修正があるので
完全に完成!となるまでは先ですが…
早くイラストの作業に入れるように頑張ります。
応援よろしくお願いします!

以下、一枚だけですが百合っぽいイラストを書きました。
是非見てみてくださいね~。

フォロワー以上限定無料

イラストです。

無料

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

ラジオです。

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

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

月額:500円

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

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

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

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

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

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

はじめに

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

この2か月の進捗

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

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

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

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

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

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

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

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

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

月額:500円

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

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

もっきゃりぺお 2023/12/31 20:16

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

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

みるきー・水面が魔法少女確殺弾・世界を破壊する魔法について
楽しくおしゃべりしています。
今回の #5 ではci-enの記事を見ながらのんびり今年を振り返っています!

はじめに

こんにちは! もっきゃりぺおのみるきーです。
あっという間に2023年も終わりますね…!
今年は応援ありがとうございました!
来年もよろしくお願いします!

今月の進捗

水面さんからかなりすごいゲーム面での進捗が届いています。

詳しくはこちらの記事でどうぞ!

あとはシナリオを書いたりとか…
ゲームのジャンル名を決別百合ジュブナイルノベルゲームから変えて、
改めて決めたりしました。

初恋清算デス百合ノベルゲームです!

まだまだ変わるかもしれませんが、とりあえずこれでいきます。
これに決めた経緯みたいなものもかきたかったんですが、酔っぱらって今うまく文字書けないので来月に回そうと思います。ビールうめ~


以下、載せ忘れた過去のラフイラストとかです!
よければ見てってね~

【 もっきゃり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円

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

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

« 1 2 3 4 5

月別アーカイブ

記事を検索