投稿記事

2021年 08月の記事 (3)

WL 2021/08/29 17:55

8/29更新分

こんばんは。クーラーをずっとつけてるので室外機のところが海みたいになってました。機械がこんなビショビショになってると心配になりますが大丈夫なので面白いですね。
以下進捗報告です。


記事の最初に入れた画像がサムネになるのでえっちなやつを上に持ってきました。

実装と完全に独立して描いてるので、Unityに虐○されればされるほど相対的に絵の進捗がよくなり、CG枚数の多いリッチなゲームになります。

念の為申し上げておくとこれは未完成品で、ゲームに入る絵はもっと気合入ったやつなのでご安心ください。
今後週一枚くらいで似たようなやつを掲載できたらいいなと思ってます。

全般

ゲームシステムを思いついたので備忘録的に書き留めておきます。

  • Slay the Spire 風にデッキを作る
  • ボス以外の戦闘マスでは 自分が作ったデッキとお姉さんのデッキを戦わせる
  • お姉さんのデッキは自分が作ったデッキとの対戦成績によって強化される
  • ボスマスではお姉さんのデッキとボスのデッキを戦わせる
  • 勝利条件:お姉さんがボスに勝つ
  • 敗北条件:自分またはボスのデッキがお姉さんを倒してしまう
  • 自分のデッキを育ててお姉さんをいい感じに痛めつけることによって間接的にお姉さんのデッキを育て、ボスを倒す

改めて書き出すとクッソ複雑なゲームですね。このどうしようもない複雑さによって以下のような問題を解決することが期待されています:

  • この手のゲームでよくあるわざと負けたほうがえっちな展開になりやすい問題(ゲームクリアのための方針とすけべぴくちゃを見るための方針が同じでない)
  • 操作キャラクターが女性で陵○ものなのにシチュの内容を選択できることには説得力がない問題
  • グッドエンドでは最終的にお姉さんに幸せになってほしい

「いいじゃん、パクったろ^^」と思っていただいた方は私の代わりに作っといてください。多分あなたのほうが私より作るの早いので...

実装

Unity Learnというサイトを見つけました。Unityに関する体系的な知識を手取り足取り教えてくれるコースがUnity公式によって用意されており、かなり有用です。
今までAPIリファレンスと首っ引きでやってたんですが、Unityとしてはそういうことではなくこっちを見て学習することを想定してたように思えます。問題はほぼ英語なことで、日本語のコースもあるにはあるのですが非常に数が少ないです。もしこれをご覧の中高生の方がいらっしゃいましたら、英語の勉強を真面目にやっておくことを強くおすすめします。英語に対する抵抗感がないというただそれだけで得られる情報が何十倍にも増えます。あとこんなもん見てんじゃねえ。

Input system

前回3Dオブジェクトへのマウスオーバーを検出するのができなくて詰まってたんですが、結論から言うとColliderをオブジェクトにつけていなかったのが原因でした。この記事にあるやり方を使っていたのですが、Physic Raycasterからキャストされたやつ(?)(これなんて言えばいいんだ...)がColliderを持っているオブジェクトにしかぶつからないというわけですね。多少Unityわかってる人なら当たり前じゃんって言いそうなことですが、マジで右も左も分からないのでこういうところで初狩られてしまいます。ちゃんと問題を切り分けて別のオブジェクトで試すとかしてればもっと早く解決できたと思うので次回に活かしたいと思います。

その他

他の前回の目標だった部分はなんかすんなりいきました。スクショを貼っても何が起きてるか分かりづらいのと、録画が超めんどくさかったのでビジュアルがなにもないんですが許してください。UnityからWebGLでビルドしてアップロードできるらしいので、現時点での状態をwebから遊べるようにしてもいいかなと思ってます。


今週はおおまかなゲームシステムを思いつけたのでよかったです。これが面白ければ言うことないんですが、まあどうでしょうね。祈りましょう。

来週は

  • webGLビルド(できたら)
  • デッキを構築する仕組み
  • 対戦マスのかんたんな実装
  • お姉さんの名前を考える

くらいまでできたらいいかなと思ってます。Unity Learnも引き続きやっていくので、もしかしたら全然時間なくてカスみたいな進捗になるかもしれません。

では来週もまたよろしくお願いします。お元気で。

WL 2021/08/22 13:03

8/22更新分

こんにちは。蒸し暑すぎるせいか今横を見たらいつの間にかカーテンがカビてました。
以下進捗報告です。

実装

先週どこまでやったかな~と思って見返したら実質的にマジで何もやってないという感じでした。今週はすごろくを自動的に生成するやつをやる予定でしたね。

すごろく

ここですごろくと呼んでいるものはいわゆるローグライクゲームのマップっぽいやつです。戦闘マスがあったりショップマスがあったりして、たいてい最後にボスマスがあるやつですね。Slay the Spire、One step from eden、アークナイツの統合戦略などをイメージしていただくとわかりやすいかもしれません。
今回は超適当に以下のようなロジックで生成することにします。

  1. マップの長さを決める
  2. マップの幅を決める
  3. それぞれの深さの地点に対して、1~幅の深さまでのランダムな数マスを置く
  4. マス同士をつなぐ

ではやってみましょう。
モデルを作って...


Unityでシーンを作ってぶち込みます

あとはスクリプトを書いてランダムにマスを生成するようにします

思ったよりうまく行ってビビりました。これは深さ8、幅3で作ってます。

困ったこと:エラーメッセージの読み方

次のようなコードを見てみましょう。

public class Node {
	List<GameObject> next;
	void Start()
    {
    	next = new List<GameObject>();
    }
    public void AddNext(GameObject o)
    {
    	next.Add(o);
    }
}

Start より先に AddNext を呼んだ場合、 next が未初期化なのでエラーが出ます。問題はUnity上でのエラーメッセージの内容で、

NullReferenceException: Object reference not set to an instance of an object
Node.AddNext (UnityEngine.GameObject o) (at Assets/Scripts/Sugoroku/Node.cs:47)
MapManager.Generate () (at Assets/Scripts/Sugoroku/MapManager.cs:35)
MapManager.Start () (at Assets/Scripts/Sugoroku/MapManager.cs:10)

こんな感じになっています。私がC#に慣れていないのが悪いのかもしれませんが、こう言われるとただのリストである next ではなくゲームオブジェクトの o が疑わしいように読めませんか??これは最初全然わからなくてかなり時間と体力を吸われました。

InputSystem

カメラをぐりぐり動かしたりマスをクリックで選択したりできるようにしたいという問題があります。この目的を達成するためにInputSystemというのを使うことにします。

今3Dオブジェクトをマウスオーバーするのが検出できなくて苦戦してるんですが、これは私がUnityを知らなすぎるだけなので明日にはできてることでしょう。多分...


今週はそこそこ進んだと思うんですが、今の所エロさのエの字もないので折角見ていただいた方をがっかりさせてしまっていないか心配です。並行してイベントスチルを描いたりしてますので来週はそのラフでもアップできたらいいなと思ってます。
実装の方は

  • カメラで見回す
  • 主人公のアイコンをマスに沿って動かす
  • 前回と同じ流れで タイトル画面->すごろくスタート->すごろくの最後のマスに行くとゲームクリア みたいな感じにする

とかができたらいいなと思います。

それではまた来週もお願いします。お元気で

WL 2021/08/15 11:10

8/15更新分

こんにちは。今日は雨が降っていて嬉しいです。
一人でやってるんでめちゃくちゃ遅いと思いますが暖かく見守ってやってください。100週(≒2年)以内に終わればいいな、くらいの感じでやっていきたいと思います。
以下進捗報告です。

全般

今回作るゲームはざっくり次のような感じにしたいと思います

  • 楽しい
  • ゲームプレイ中にシコれる
  • しばらく(6ヶ月後とか...)後に思い出してやりたくなる

などと言うのは簡単で、じゃあどうすんだよって話なんですが、某お船のゲームや某ウマのゲームのようにメインのゲームシーンではプレイヤーが介入しないようにすればゲームプレイ中に右手を特定の作業に集中させることができていいんじゃないかな〜とか、いま大はやりの広義におけるローグライクでリプレイ性を担保できるんじゃないかな〜とか考えてます。
とはいえこんなのどうせ作ってるうちに変わるのでゲーム内容を保証するものではありません。ゲームジャンルとかに対する言及が一切ないのは単に決まってないからです。どんなに頭の中でこねても面白くなかったら意味ないしな…

実装

昔の偉い人は言いました。「完璧を目指すよりまず終わらせろ」と。昔の人じゃなかった気もしますがまあそれはよくて、今回は私もまず終わらせるところから始めたいと思います。
具体的には、タイトル画面でゲームスタートをクリックした瞬間ゲームクリア画面が表示されるものを作ります。これでもうゲーム一本完成ってワケ。チョロいですね。

UI Toolkit

UnityでUIを作るのは非常にしんどかった思い出がありますが、今どきのやつにはUI Toolkitというやつがあるらしいのでこれを使っていきます。

実際に触ってみたところCSSでスタイリングするっぽいんですが、CSSには個人的な恨みがあるので最終的には3Dオブジェクトを置いてUIを作るかもしれません。でもそれはそれでしんどいからこういう機能が作られてるんだろうな...

今回は普通にUI Toolkitを使ってボタンを設置しました。次に、ボタンをクリックしたときに他のシーン(今回はエンディング)を読み込むコードを書きます。恥ずかしながらC#のイベントというものを知らなかったのですが、ラムダ式を使うと

    startButton.clicked += () =>
    {
        SceneManager.LoadScene("Ending", LoadSceneMode.Single);
    };

このようになって見た目が可愛いですね。初見だと絶対意味不明なので読む前に書けてよかったです。
話は変わりますがUnityの公式ドキュメントはこのようなガチ虚無のページがそこそこあってつらいです。2行くらいでいいから使用例みたいなの書いてくれ...

シーン遷移

なんとUnityでシーン遷移する方法を知らない(もしくは忘れた)ので調べながらやりました。Build Settingsでロード対象のシーンを入れなければならない点などに初狩られましたが、無事
このボタンをクリックすると...


エンディングが表示されるものができました!!!!!!!!!!!

なんかアスペクト比がイカれてたりするんですがよくわかんなかったので放置してます。というかこれCanvasで背景画像を出してるんですが、UI ToolkitとCanvasが混在してるのは良くない気がします。ググっても古い情報がいっぱいあってよくわからんしUnityの本とか買ったほうがいい気がしてきました。

これで一週間かかっているようでは一生終わらないので、来週はもっと頑張りたいと思います。先にゲームメカニクスを作りたいので、○verdungeonのすごろくみたいなマップをランダム生成するやつをやっていきます。
それではまた来週よろしくおねがいします。お元気で

月別アーカイブ

記事のタグから探す

限定特典から探す

記事を検索