ヨノアメゲームズ.log

業界歴10年のゲームプログラマーがゲームを作ったり遊んだりします。 目標は1万本ダウンロードされるゲームを作る事!

【無料】デッキビルドローグライク開発用アセット

「Slay the Spire」などに代表される、デッキビルドローグライクゲームを簡単(?)に作れるアセットを発見しました!

assetstore.unity.com

 

自分が作りたいのはこのタイプじゃなくていわゆるシレン風なので今回は使いませんが、

デッキビルドローグライクゲームを作りたい、という方はとりあえず使ってみて損はないかと思います。無料ですし。

 

ドキュメントは全て英語なので翻訳ツールが必要になりそうですが、0から作るよりは手っ取り早くできそうな。

 

オープンソースなので、Githubからマージリクエストもできるようです。

arefnue.itch.io

 

Unityで画面振動、シェイク

ゆらす

この記事は、以下の「桜井政博のゲーム作るには」の「画面振動 【エフェクト】」の回で、

youtu.be

「画面振動は大きなショックを表現するのにうってつけなので、
 どんどん織り込んでいくべき」

と桜井さんもおっしゃっており、自分のゲームにも早速実装してみたので、
動画では説明されていなかった、具体的な実装方法についてUnityを使って説明をしようと思います。

画面振動の実装を簡単に行うために以下の無料のアセット「DOTween」を導入します。

assetstore.unity.com


細かい使い方についてはここでは解説しません。

コード全体はこのような感じです。

using DG.Tweening;
using UnityEngine;

public class ObjectFollower : MonoBehaviour
{
    [SerializeField] private GameObject followObj = null;
    [SerializeField] private bool isFollowable = true;
    private Tweener tw = null;
    private Vector3 defaultPos = Vector3.zero;

    void Start()
    {
        Follow();
    }

    void LateUpdate()
    {
        Follow();
    }

    private void Follow()
    {
        if (!isFollowable)
        {
            return;
        }
        transform.position = new Vector3(followObj.transform.position.x, followObj.transform.position.y, transform.position.z);
    }

    public void SetFollowable(bool value)
    {
        isFollowable = value;
    }

    public void Shake(float strength, float duration)
    {
        if (tw != null && tw.IsActive() && tw.IsPlaying())
        {
            return;
        }
        isFollowable = false;
        tw = transform.DOShakePosition(duration, strength).OnComplete(() => { isFollowable = true; });
    }

    public void Shake(float x, float y, float duration)
    {
        if (tw != null && tw.IsActive() && tw.IsPlaying())
        {
            return;
        }
        defaultPos = transform.localPosition;
        isFollowable = false;
        tw = transform.DOLocalMove(new Vector3(x, y, transform.localPosition.z), duration).SetEase(Ease.InCubic).OnComplete(() =>
        {
            transform.DOLocalMove(defaultPos, duration).SetEase(Ease.OutCubic).OnComplete(() =>
            {
                isFollowable = true;
            });
        });
    }
}

これはカメラにアタッチして、インスペクター上でfollowObjにプレイヤーのオブジェクトをアタッチする事で、
プレイヤーを追従するクラスです。
コードにコメントを追加して説明します。

    public void Shake(float x, float y, float duration)
    {
        if (tw != null && tw.IsActive() && tw.IsPlaying()) //tweenが存在しているかどうか、アクティブか、再生中かをチェック
        {
            return;
        }
        defaultPos = transform.localPosition; //Tweenした後に元の座標に戻るために自分の座標を保存しておく
        isFollowable = false; //一時的にfalseにすることで、Followメソッドでの追従を止めてます。

        //tweenに、移動先のXY座標と、移動演出の時間を設定、動きの種類をInCubicに変更
        tw = transform.DOLocalMove(new Vector3(x, y, transform.localPosition.z), duration).SetEase(Ease.InCubic).OnComplete(() =>
        {
            //1つ目のDOLocalMoveが終わったら、保存しておいた最初の座標に戻る
            transform.DOLocalMove(defaultPos, duration).SetEase(Ease.OutCubic).OnComplete(() =>
            {
                //一連の処理が終わったのでFollowメソッドで再び追従するように
                isFollowable = true;
            });
        });
    }

上記のような実装で、簡単に画面振動、シェイクを実装する事ができます。
2Dでの使用を想定していますが、応用すれば3Dでも使えるかと思います。

今回ローグライクの移動で壁にぶつかった時に振動するようにしてみました。
まだ移動しかできないゲームとも呼べない状態の代物ですが、
この画面振動を実装した事で、ゲームを遊ぶプレイヤーに対して親切な演出が追加されて、
なんだか少しリッチに感じました。

壁に当たった時だけでなく、自分が攻撃をした時、攻撃を受けた時などにもこの画面演出を使おうと思います。

今後も桜井さんの動画の中で自分が実装できた事があれば、また記事にして共有しようと思います。
あの桜井さんが言ってる事なので、全部実戦できたらきっと素晴らしい神ゲーができるはず!
と思ってるので、引き続き頑張ります。

2022年12月の進捗

12月は細かい不具合の修正や、UIの見た目の改善などしてました。

 

 

バナー、インタースティシャル広告の設定などもしました。

 

これで広告収入入るかな、などと考えていたのですが、本業と同ような事を副業でやるのはあまりよろしくない事らしいので、広告収入型の基本無料ゲームを作るのはいったん中断する事にしました。

競業避止義務、というらしいです。

もし作るとしても稼げるゲームではなく、好きで作りたいゲームかな、という。

 

最近ホロライブのファンゲームが話題になったり、Twitterで色々なファンアートを見たりして、少し憧れがあったので、ファンアートかファンゲームか、そういったものを作ろうかな、などと考えてました。

あと3Dモデルのキャラも作っていたので、VRChatでオリジナルキャラに似合う、雨の似合うワールドを作るのも楽しいかな、などと考えたりもしてました。

 

今までは明確にゲームを作る、と意気込んでいたんですが、とりあえず直近では明確な目標が無い状態なので、しばらくの間は定期的な更新がなくなるかな、と思います。

また何か作り始めたりしたら更新しようと思います。

 

 

 

 

 

2022年11月の進捗

9月の進捗の記録がなかったのはスプラトゥーン3が9月8日に発売されたからです。

ツイートも1か月空いてます。

 

この後ウデマエはS+になりました。

 

 

ツイートの通りですが、最初なので武器やアイテムもない、"簡易"ローグライクを作ろうとしていたのですが挫折しました。

資材管理とかが楽しさの肝になってると思うんですよね。色々な種類のアイテムを組み合わせて使ったり、レアな武器を手に入れたり。

そこが面白い所だと思うので、それを排除してランダムなマップで階段を目指すだけのゲームを面白くする、というのはハードルが高かったです。

 

10月もほぼ進捗がなく、自分が作ろうとしてるゲーム以外のゲームを研究名目で遊ぶのは研究費用高すぎるんでは?などと思ったりしてました。

 

 

今まで知らなかったんですが「四葉のクローバー」というトランプの一人遊びゲームを作る事にしました。

 

 

リアルにトランプで遊んでみたりして研究を重ねました。

 

 

 

ざっとこんな感じでルールの実装まではほぼ完成したので、この後は引き続き演出やUIの実装などを進めようと思っています。

 

ポケモンスカーレットは発売日の11月18日に購入してストーリークリアして満足しました!

 

2022年8月の進捗

 

最低限月イチくらいの頻度で進捗報告をしようと考えてます。

基本的に進捗があればTwitterで更新しているので、それ月イチでまとめる、予定です。

 

8月7日。3Dの脱出ゲームを製作していたものの、謎とかパズルを作るのが難しいと感じ、断念。

UV展開確認用にテクスチャに落書きしてあるのとか、箱とか、見えてないですがカギと洗濯機の3Dモデルも作ってました。操作は大体覚えたので、簡単な物なら今後も作れそう。Blenderの練習にはなったからいいか…

 

 

2021年5月に更新が止まっていたローグライクを再開する事に。

 

2021年5月で更新が止まってた自分のローグライクリポジトリを見たら既にランダムダンジョン生成ロジックと移動処理まではできてました。[@]が自分で、「↓」が階段で、入ると下のフロアに進む。この時点で数分遊んで楽しいんだから脱出ゲームよりおもしろいのできそう。

 

ゲーム製作用の名義を「夏野ヨノアメ」(なつのよのあめ)として、屋号を「ヨノアメゲームズ」に決定。

 

夏野ヨノアメとしてのアバターが欲しいと思ったのでキャラデザして、モデリング

【第1回】ワニでもできる!モデリングforVRChat - Blender2.8さわってみよう - YouTubeを見ながら作成しました。

ちょくちょくBlenderは触ってましたが、ちゃんとしたキャラクターを作るのは今回が初めてでした。

 

Blenderでのモデリング、スキニング、シェイプキー設定までできました。

 

VRChatにアップロードしたいのですが、今はひたすら放置でVRChatのトラストランクを上げているところです。

びしょぬれのしずくさんが雨が似合って素敵。

 

雨が降るタイトル画面実装など。

 

現状はここまで。広告の表示タイミングは仮ですが、無料で出す以上どこかしらで入れる必要があるので、区切りになるような場所で表示予定です。

 

こんな感じで今後もゲーム製作の進捗をまとめようと思ってます。

このサイトについて

 

2023年5月10日:追記

「野」の字には特に思い入れも無くてロゴにもしづらいと感じたので、「乃」に変更して、

「夏乃ヨノアメ」

になりました。

---------------

 

このサイトは2013年からゲームプログラマーをしている 夏野ヨノアメ(なつのよのあめ) が個人ゲーム開発の進捗報告についてなどの記事を更新していく予定です。

 

「夏野ヨノアメ」は「夏の夜に降る雨のように、少し嬉しい心地よさのような感情を届けられる存在になれたら」といった意味です。

という建前とは別に、本当は某MMOでシェイクスピアの「夏の夜の夢」からもじって、「夏の夜の雨」という名前の弓キャラで遊んでいたのが最初です。矢を雨のように降らすスキルとかあったので。

 

屋号「ヨノアメゲームズ」はゲーム開発をしている事がわかりやすいように、名前にゲームズを付けました。

 

小さい頃から雨が好きで、窓際で雨音を聞きながらゲームしてたり、60分間雨音だけの「雨音のしらべ」というCDを高校生の頃に買ってずっと聞いてました。

SCEの「rain」も大好きでもちろんクリア、トロコン済み。

ゲームの中でもできるだけ雨が降ってたらいいな、と考えてます。

 

ローグライクが好きで、シレントルネコチョコボのシリーズそれぞれいくつも遊んでいたので、今はローグライクゲームを作ろうと思っています。