投稿記事

2020年 12月の記事 (14)

satofumi 2020/12/18 20:00

ハッピーずんだ餅 Factory 開発(その2)

えっと、前回の記事の ハッピーずんだ餅 Factory 開発(その1) は金曜日に公開するつもりだったのですが、間違えて木曜日に公開してしまったので金曜日のぶんの記事を書きます。

ここまでに動作デモは作ったので、以降は「遊べるようにする」を目標に開発していきます。

ステージの定義

ステージ情報は、クラスで定義して YAML ファイルとして保存します。

ステージ要素
・ステージの広さ
・材料の出現位置について(位置、材料の種類、出現個数、出現間隔)
・キャラクターの位置(位置、名前)
・コンベアを配置できないグリッド(グリッド座標)
・壁(壁のあるグリッド座標)

とりあえずこれで良いことにします。
これらのステージファイルはいずれプレイヤー間で共有できるようにしたいですね。

そして、このステージのクラスを実装して Save, Load について Unity の NUnit のテストを通過させたのがこれです。


良いです。

LoadTest() の中身はこんな感じです。
`
[Test]

    public void LoadTest()
    {
        var path = Path.Combine(TestDataDirectory, "save_stage.yaml");
        var stage = new GameObject("Stage").AddComponent<Stage>();
        stage.Load(path);

        Assert.That(stage.Size.x == 10);
        Assert.That(stage.Size.y == 6);
        // 以下略
    }

さて、次はステージを画面に描画したりマウス操作でコンベアを建設するあたりの実装なのですが、今 19:22 なので記事はここまでにします。記事の公開設定はもっと計画的に行いたいと思いました。

今後の開発予定
・ステージの動作(材料の出力、ゲームクリア判定)
・コンベアの配置まわり
・キャラクターによる材料の変換まわり
・ゲームクリア時の結果表示
・ステージ選択
・タイトル画面
・クレジット表示

次回の更新: 月曜日の 20時

satofumi 2020/12/17 20:00

ハッピーずんだ餅 Factory 開発(その1)

仕事をしていたら唐突に「もっとあなたが楽しいことをするのです。そう、なんか意味不明だけど面白いゲームを作りたいでしょう?」という声が脳内に響き渡ったので、そういうゲームを作っていきます。

どういうゲームなのか?

・東北ずん子をテーマにしたずんだ餅をつくるステージクリア型のゲーム
・ステージには材料が降ってくる穴と納品先のカゴと材料を加工するキャラクターがいる
・ステージにコンベアを追加して適切に材料を変換してずんだ餅にして納品先のカゴに入れるとステージクリア

なにが面白いのか?

・材料の運搬経路を計画する楽しさ
・計画通りに運搬できたときの楽しさ
・資材が流れ行くさまを見る楽しさ
・超速コンベア駆動で予想外の材料の挙動を見たときの「箸が転んでもおかしい」楽しさ

動作デモ

とりあえずキャラクターが動くデモとコンベアの動作デモを作った。

ゲームのルール

・ステージは 2D 表示でスクロールしない。
・ステージには壁とキャラクターと材料出力口と納品先のカゴとが配置されている。
・マウス操作でコンベアを配置する。
・ステージ内の材料には重力が作用する。
・材料は指定間隔で指定個数だけ出てくる。
・材料の種類はもち米、餅、枝豆、ずんだ、ずんだ餅
・キャラクターは東北ずん子、東北イタコ、東北きりたん
・東北ずん子は範囲内の餅とずんだを消費してずんだ餅を生成する。
・東北イタコは範囲内のもち米を餅に変換する。
・東北きりたんは範囲内の枝豆をずんだに変換する。
・変換された材料はキャラクター位置から自由落下を開始する。
・コンベアには原材料用、加工済み用、ずんだ餅用があり対応した材料しか運搬しない。
 ・原材料(もち米、枝豆)、加工済み(餅、ずんだ)
・コンベアが配置できない領域が存在する。
・もち米と枝豆、ずんだと餅、同じ材料はそれぞれ衝突するが、それ以外の材料とは衝突しない。
・指定個数だけのずんだ餅を納品先のカゴに入れたらステージクリア。
・ステージ進捗に応じて「高速コンベア」「超速コンベア」「アンリミテッド・ズンダァ(質量保存則無視餅合成)」がアンロックされる。
 ・高速コンベア … 材料を放物線を描いて飛ばしたいときに使う
 ・超速コンベア … コンベアの速度と同じ速度で移動するずんだと餅はバースト状態になる。
 ・アンリミテッド・ズンダァ … バースト状態のずんだと餅とをずん子が合成することで追加のずんだ餅を生成する。
  ・ずんだと餅の片方がバースト状態のときは1つ追加で生成される。
  ・ずんだと餅の両方がバースト状態のときは2つ追加で生成される。
・コンベアを配置するとコストがかかる。コストが少ないほど良いことにする。
・各ステージ、および全ステージで使ったコストがステージ選択のときにわかるようにする。
・エンディングはなんかそれっぽく適当に作る。
・配置が同じなら同じ結果になるべきだが、無理にこだわらなくても良い。

今後の予定

コンベアのデモは作成したので、とりあえず1ステージが遊べるデモまでを作って試遊して色々と考える。

がんばって作っていきます。
(この企画は不定期更新です)

satofumi 2020/12/16 20:00

ツールを最初から動作確認してみる

今回は雑多な機能を実装したり、「体験版リリース」に向けてこのツールの初回起動からの動作を確認したりしています。

今回実装したこと

バーを描画する処理を共通のコードにして、メッセージ表示に適用した


バー同士が重なっているのは後でなんとかします。後は左側に顔や手といった何の操作なのかを示すアイコンを適用すべきですね。

出力の動画ファイルがデスクトップに出力されるようにした

使っている Evereal.VideoCapture クラスの saveFolder にデスクトップのパスを設定するだけでした。
VideoCapture.saveFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);

VRM モデルを取り込むための UniVRM をインポートした

今回は Unity Editor 上で UniVRM を用いて VRM ファイルを prefab に変更して取り込みました。いずれ VRM ファイルを動的に読み込んで変更できるようにします。

保存データをクリアして最初から動作させてみた

とりあえずアプリ起動直後の画面がこれです。


気付き
・ツール名をそろそろ決めよう。
・背景はもう少しなんとかしよう。
・「終わる」ボタンは違う色にしよう。

今、このタイトル画面で1番目立っているのが「終わる」なのはなんとかしたいです。

そして、「新しく始める」ボタンを押したのですが、画面が切り替わるまでに 10 秒くらいかかってました。ロードの進捗表示を行わせる必要がありそうです。

そして、ロード直後はこんな画面でした。


気付き
・モデルとミラーとが原点にあって何が描画されているかわからない。
・建物が暗い。
・左上のボタンの何を押せばいいのかわからない。
・新規プロジェクトの開始時にはチュートリアルを開始すべき。

いっそのこと、新規開始であってもデモプロジェクトを読み込ませるべきかもしれません。いきなりモデルとボタンがあるだけの画面を見せられても意味不明ですし、何をしていいのかわからないと思います。

上記を踏まえると、新規プロジェクトのときは
・ボタン一つで動画出力できるデモプロジェクトをロードしておく。
・編集の UI を表示した状態にする。
・チュートリアルとしてヘルプを表示する。
・ヘルプを再表示するためのボタンを追加する。
・各ボタンに Tooltip で説明を行う。
などが行われた状態で開始させたいです。

編集のための UI 実装もまだですが、それ以外にもいっぱい実装すべきことがありますね。

次回の予定

今日の記事を書いているのが当日の 19:56 なのは良くないなと思っています。もう少しコツコツ進めたいです。そして次回ですが、体験版リリースに向けて1つずつ編集 UI を実装していったり、VRM モデルを変更する機能のデモなんかを実装したいです。がんばります。

次回の更新: 金曜日の 20時

satofumi 2020/12/14 20:00

ハンドサインを変更できるようにする

今回は UI 実装を後回しにして、ハンドサインの変更まわりの動作確認をやろうと思います。

ハンドサインの動作デモ

部分的にアニメーションを変える方法を調べたところ、Unity では Animation Layers という仕組みを使うみたいです。
https://docs.unity3d.com/ja/2019.4/Manual/AnimationLayers.html

今回の動作デモでは、右手をパーとチョキとを交互に切り替えさせてみます。
さっそく、右手のみ動かすための Avatar Mask を設定して右手のみ動くように設定し、

パーとチョキとを切り替えるスクリプトを作成して動かしてみた結果がこれです。(手を隠してしまうのでスカートは非表示にしてあります)

右手以外は指定した Idle アニメーションを再生してゆらゆらしつつも、右手はちゃんと別アニメーションになってますね、良いです。

まとめ

今回の進捗はなんか少ないような気もするのですが、今まで使ったことのない機能を試せたので最高だった思います。(趣味開発は心がつらくなると開発を継続できないので、些細な進捗でもこんな風に自分を褒めていこうと思います)

次回は UI 実装の続きをやるか、座っている用のアニメーション作成をしようと思います。がんばります。

次回の更新: 水曜日の 20時

satofumi 2020/12/11 20:00

作りたいと思っているゲームの案とか

寒かったり週末が近づくとコーディングする元気がなくなってしまいます。というわけで今回はコーディングする元気を確保できなかったので「いずれ作りたい」と思っているゲーム案を記述していきます。ゲーム案を考えるのはコーディングより労力が少ないし楽しいので良いです。

VR 格闘ゲーム

人モデルの使い方とか VR コントローラの処理方法がわかったので、VR 格闘ゲームのデモ部分を作って自分で体験してみたいです。私が持っている VR 機器はヘッドセットとコントローラだけなので、主に手で攻撃する系のゲームにします。

考えていること
・パンチで攻撃する
・自分の頭への攻撃をかわす
・相手のパンチを防ぐ
・相手のパンチをさばく
・相手の腕を掴んでひきよせる
・相手の腕を掴んで投げる
・必要に応じて時間の流れをスローにする
・パンチを連打させるよりは正確に打たせたい(連打は疲れるので)

まだおぼろげに考えているだけで、1vs1 なのか 1vs多 なのかとかも未検討です。まずは VR 空間に立たせたモデルにパンチするデモを作りたいです。
相手か自分を女性モデルにして胸部を揺らす件については検討中です。

VR シューター

Zero Caliber VR というゲームを遊んでいて「あ、VR シューターもいいな」と思って作りたくなってしまいました。VR 空間だと対象との距離が離れると思った以上に弾が命中しなくて斬新な気持ちになれたのも良い体験でした。

ただ、このゲームを遊んでいると私は VR 酔いするのがわかったので酔いにくいゲームを作りたいと思います。なので加速度が変化しない「狙撃」とか「一定速で動く何かの上から撃つ or 相手が寄ってくる」というシチュエーションで遊べるデモを作りたいです。

考えていること
・敵はゾンビ
・塔の上から下を歩いているゾンビを狙撃する
・等の上から襲われそうになってる人を撃たずに襲っているゾンビのみ撃つ
・等速移動している馬車に乗っていて、寄ってくるゾンビを撃ちまくる

話は逸れますが、敵をゾンビにするだけで導入のほとんどの説明が省略できるのすごいと思います。良いです。

クエリちゃんのバグ退治の VR 対応

以前に作ったフィールドにユニットを配置するタワーディフェンスゲーム「クエリちゃんのバグ退治」を VR 対応させたいと考えています。


「ユニットを VR コントローラで掴んで配置すべき位置で離す」という処理は VR 向きだと思うのですが、ユニットのアップグレードや攻撃先の建物の指定など、マウス操作で行っていた操作を VR の操作やボタンにどう割り振るかが大変そうで悩ましいです。

考えていること
・VR 版は要素を削って開発コストを減らす(シナリオの削除など)
・ヘルプやメッセージの VR 空間での表示方法を決める
・フィールドとユニットの操作方法を決める
・システム操作のボタン割り振りと操作を決める

VR 格闘や VR シューターは「デモ作成」が目標なので開発コストは低いのですが、ちゃんと最後まで遊べるようにするアプリの開発コストは高いので、このゲームの VR 対応に着手するかは正直悩ましいです。

まとめ

月曜日と水曜日は VR PV 作成ツールの記事を書いていますが、それがリリースできるか開発中断したときに着手したいゲーム案を書いてみました。金曜日の記事はこんな感じでコーディング要素少なめになるかもですが何かしら書いていきたいです。コーディング要素が少ない記事を書くことで「本当はもっと実装した記事を書きたいんだよな、また月曜日にがんばるか」と思えるのは良いです。がんばります。

次回の更新: 月曜日の 20時

1 2 3

月別アーカイブ

限定特典から探す

記事を検索