WGGの活動log

都内でゲーム開発だったりVRだったりをしてるかもしれないエンジニアです. WGGは「ワグ」と読みます

【マスコットアプリ文化祭】プロ生ちゃんくりっか~ 作りました

マスコットアプリ文化祭の投稿フォームが完成したようです

mascot-apps-contest.azurewebsites.net

 

何かミニゲーム程度に作ってみようと思い,プロ生ちゃんをいじめられるクリッカーゲームを作りました.

一応自作ゲームを一般公開するのは初になります.

 

DLリンク

ReadMe.txt

プロ生ちゃんくりっか~ ver101.zip

 

「マスコットに悪いことしたいよね?」

 

内容:

倒しても倒しても増殖するプロ生ちゃんを退治し続けるゲームです

基本マウスクリックだけの簡単操作でプロ生ちゃんをやっつけます

オートセーブ形式なので,暇時間にちょこっと遊んだりできます(←ならスマホアプリの方がいいのでは?)

  →スマホアプリは開発環境も知識も無いので断念しました...

細かいルール,遊び方などは.zipファイルの中のReadMeに書いています

 

※このゲームはDirectX9以降の入ったWindowsOS(98~10)に対応しています

 上記動作環境を満たしていて動作しない場合は,対応できる保証はありませんが,連絡

 いただけると幸いです

 

SS:

f:id:wgg00sh:20151031202543j:plain

f:id:wgg00sh:20151031202544j:plain

 

見ての通り,約1時間で1000万ものプロ生ちゃんが犠牲になります,ヤッタネ!

マスコットの数ってどう数えたらいいんだろう...?

 

ReadMe.txt

プロ生ちゃんくりっか~ ver101.zip

 

DLサイト(↑2ファイルが置いてある)

https://bitbucket.org/WGGSH/pro_nama_chan_clicker/downloads

3D弾幕結界について

動画投稿しました

以前リクエストをもらった弾幕結界の3D化の途中段階です

www.nicovideo.jp

 

途中段階ではありますが,ある程度考えが纏っているので少し解説を書いていきます

 

<弾幕結界について>

まず,原作東方妖々夢/永夜抄の「弾幕結界」から考察します

f:id:wgg00sh:20150912205427p:plain

 

この弾幕の(主に1~4波の)流れは

①オプションの発生

②オプションが特定の軌道を描きながら弾を発射

③ここで発射された弾は主に、

 1.中心付近を向いて飛ぶ

 2.1と正反対に画面外に向けて飛ぶ

 3.そのまま停滞

  1の場合、多くは暫くすると弾は停止します

④オプションによる弾の発射が終了すると,発射された弾(特に停止している弾)が中央に収束

⑤①に戻る

といった感じです

 

この弾幕の攻略法ですが

例えばオプションが弾を発射している時はフィールドの中央はほぼ安全です,しかし最後の収束までには脱出しなければなりません

逆に画面下の方で回避するとオプションが後方から飛ばしてくる弾を避け続け,収束は上から降ってくる弾を避けるという形になります

どちらにしても,収束時の弾幕を安全に避けるには予め弾の軌道を覚えて安置、または容易に避けられる場所を探すことが重要です

 

<3D弾幕結界>

この弾幕を3D化するにあたって,気づいた点が一つ

「オプションは基本的に円運動しかしていない」

という事です

画面中心を基準に回転しているだけであとは半径や角速度が多少変化している程度です

よってこのオプションは

・半径

・角速度

・角加速度

この3つのパロメータがあればおおよそ再現できるだろうと推測しました

 

ここからそれを3Dに持ち上げる作業です

まずは下の画像をご覧下さい(3枚すべて同じモデルを別の角度から撮影しました)

f:id:wgg00sh:20150912211652p:plain

f:id:wgg00sh:20150912213040p:plain

f:id:wgg00sh:20150912213042p:plain

 

ここでは

赤:X軸

青:Z軸

緑:Y軸

としてそれぞれ色の明るい方を正とします

また球を描画すると見辛いので3本の銀のワイヤーで球を表現しています

棒と連結している白い球が「オプション」の位置です

このオプションの位置を決定するためには

・半径(長さ-Rとする)

・角度その1(水色の扇部分-Phyとする)

・角度その2(緑の扇部分-Sitaとする)

この3つだけで決定します

2つの角度は「XZ平面の位置を決定する角度」「Y成分を決定する角度」といった感じです

いわゆる「3次元極座標」と呼ばれる座標系です

これをXYZの座標系に変換する必要があるのですが

X=R×cos(Phy)×cos(Sita)

Z=R×sin(Phy)×cos(Sita)

Y=R×sin(Sita)

でそれぞれ求められます

この3次元極座標を使用するメリットは

・「長さ」の成分をダイレクトに持っている

これは,例えば長さを固定して角度だけを変えれば同一距離上にある複数のオブジェクトの生成,半径を維持した円運動の表現が容易、などができることが挙げられます

今回作ろうとしている物にピッタリですね

下の画像の大量の球は全て中心から等距離に存在します

これらは予め長さだけを決定して,2つの角度を等間隔で加算していきました

f:id:wgg00sh:20150912212749p:plain

 

 こんな感じで時間経過とともに半径,角度を変更していくと,冒頭の動画のような3D空間を回転するオプション群を作ることができます

あとはオプションに一定間隔で弾を発生させ,その方向,速度,加速度等を指定すると弾幕結界のような3D弾幕が展開できます

 

と,弾幕の作り方は大体完成しています

あとは実際にどういう形に展開すれば弾幕結界を再現できるか,或いは3D映えする弾幕にできるかを模索中です.

いつ完成するかは未定ですが,できたら動画投稿します

 

この弾幕の作成にあたってDixq様の以下のサイトを参考にしました.

http://dixq.net/rp/36.html

 

夏休み開始

夏休みが始まりました.

割と時間に余裕ができるので色々作ろうと思っています.

 

今後の制作予定

 3D弾幕動画,8/9(日)までに投稿しようと思っています.

上の画像の,霊夢のスペルカードをテーマとした弾幕です.

 

 学園祭の発表に向けて短時間でプレイできる3Dフライトシューティングゲームを作ろうと思っています.

Ace C0mbatとか Star F0xみたいな感じかな?

上のモデルが自機となる予定です

 

と,暫くはこの二つを中心に制作を進めていくつもりです.

進捗具合はこことtwitterで随時アップしていきます.