同人ゲームサークル reverse snare 開発ブログ

主に2DSTGを作ってる同人ゲームサークル reverse snareの開発記、イベント・作品宣伝を行うブログです。

6月作業:敵動作編集エディタ作成

6月は敵動作編集ウィンドウを作成。

以前winFormで作ったものをUnity上で再作成しました。また完成してしまった。

gen.png

edit.png

体力や形態などの基本データ、移動、弾幕、当たり判定、アニメの設定が可能。

タブを用意しているけど効果音とエフェクトのフォームは作っていない…音やエフェクトは仕様を決めていないのでまだです。

col.png

アニメはedge2から読み込んだデータを使用し、当たり判定はフォーム上の敵画像をドラッグで設定する。

…テクスチャは透過部分が塗りつぶされてるし、レスポンスが悪くドラッグ中は矩形が表示されない。

その他レイアウトがいけてない箇所も多々あるが、編集中に致命的な問題が発生しない限り動けばOKのスタンスでいきます。

今月はエフェクト類をどう実装するか調査しつつ、素材作成して乗っける予定。

rec_3_2.png

Effekseerで試しに作成した物。ボンバァ~

Unity LineRendererでレーザー各種作成

Unity LineRenderer完全に理解した

linerendererでレーザー各種を作成

unityのLineRendererで簡単に画像の変形描画ができます。

parumu.jpg

むしふたパルム的なレーザー。ベジエ曲線でなんやかんや

DDPLaser.jpg

DDP

chaselaser.jpg

基本的な追尾レーザー

・どう使うの

1.オブジェクトにLineRendererコンポーネントをつける

2.LineRendererのPositionの使用数を関節数分設定する

(曲がる線を描きたいなら多めに、一直線なら2)

lr.png

3.描画に使う画像をプロジェクトに取り込む。

 マテリアルを作成し、マテリアルに描画に使う画像を割り当てる。

 

4.初期化処理

 LineRendererとそのマテリアルを受け取る。

 レーザーの軌跡など、関節数分の座標履歴を持つ。

LineRenderer lr;

Material material;

Vector3[] history;

public ChaseLaser(GameObject gameObject, int taleCnt) : base(gameObject) {

history = new Vector3[taleCnt];

for (int i = 0; i < history.Length; i++) {

history[i] = Vector3.zero;

}

lr = gameObject.GetComponent<LineRenderer>();

material = lr.material;

}

5.ゲーム動作処理

 移動で座標履歴を更新するとか、衝突でレーザー短くするとか。

6.描画処理

 関節座標を描画に反映させる

for (int i = 0; i < history.Length; i++) {

lr.SetPosition(i, history[i]);

}

 画像スクロールを行う場合はマテリアルのOffset(material.mainTextureOffset)を変更する

 (1.0fで画像一枚分動くので、ゲームの座標単位から変換する必要がある)

 

DDPレーザーみたいにスクロールするもので、長さによって画像が伸び縮みすると違和感がある場合は、

 最長の長さを定義しておいて、現在の長さの割合をmaterial.mainTextureScaleに設定する。

 (最長なら1、半分なら0.5)これで引き伸ばし感が長さに影響されない

ベジエ曲線のレーザーの描画のシワがちょっと気になる。

かなり基本的な使い方しかしてないので理解したなど到底言えないですね

5月作業:自機回り

5月は自機周りのプログラムを作成。

画像の用意がまだで、unityUIのデフォ画像で代用してるけど動いているものを見ると少しテンション上がりますね。少し。

5gatu_0.jpg

5gatu_1.jpg

基礎的な部分ができて、ごちゃごちゃ書いてたソースを共通部分と操作キャラ別の部分で分離したのであとはキャラ別に作り込んでく感じ

来月は敵のエディターを作成する。

編集中のプレビューが難しそうな予感

UnityEditor拡張 edge2アニメデータの読み込み

blg.jpg

blg2.jpg

blg3.jpg

以前windowsFormで作成していたedge2のアニメーションデータxml->ゲームで使用するアニメデータに整形・データ追加のツールをUnityのエディタ拡張で作ってみました。

過去にツイッターで見たEDGE1のアニメデータ(テキスト)の読み込みツール

とほぼ同じ?使ったのが結構前なのでうろ覚えですが

画像をunityプロジェクトに取り込んでspriteシート設定を割り当てる。

アニメに使用するspriteシートのrect割り当てやループ設定・回転許可などの設定はscriptableObjectに保持する。

上記ツールはソースが見れるのですが知識0ではほとんど理解できなかったのでググりまくった。

エディタ拡張

https://anchan828.github.io/editor-manual/web/reorderblelist.html

http://kan-kikuchi.hatenablog.com/entry/ReorderableList

過去ソースを移植した時にソリューションを2つに分けられて困ってたけど、エディタ拡張でEditorフォルダ使うからなのね。

画像取り込み

https://qiita.com/sapphire_al2o3/items/54a6d8ac321d6e1d9b79

EditorUtility.OpenFilePanel()で開くダイアログで画像を指定して読み込み。

https://qiita.com/harhogefoo/items/91fd13a8ab0a51def7e4

エディタウィンドウ表示用。全体を取り込んでからアニメデータに基づいて切り抜き。

edgeのyの0原点は上だが、unityは下が原点のため、反転計算が必要。

https://answers.unity.com/questions/943797/editor-script-to-slice-sprites.html

sprite保存時のrect割り当て。

SpriteMetaDataの配列をsprite.spritesheetに入れる。

コンボボックス的なやつ

https://docs.unity3d.com/ja/current/ScriptReference/EditorGUILayout.Popup.html

disabledなGUI

http://tiri-tomato.hatenadiary.jp/entry/20140318/1395104788

EditorGUI.BeginDisabledGroup(bool);

EditorGUI.EndDisabledGroup();

画像・spriteシート保存した後のunity Projectウィンドウ更新

https://qiita.com/thaladabar/items/8e74cd30d3a4294d07ad

AssetDatabase.Refresh();ではspriteシートが表示されないため、

AssetDatabase.ImportAsset( パス, ImportAssetOptions.ForceUpdate );

保存したspriteのspritesheet読み込み

http://kan-kikuchi.hatenablog.com/entry/MultipleSprite_LoadAllAssetsAtPath

画像保存後、再度読みだしてscriptableObjectに設定する。(冗長な処理な気がする)

画像保存とscriptableObject保存だけ行っていてこのデータでゲームを動かしていないので、ちゃんと動くかは今後の実装のお楽しみ。

あ、ンスプブGWで半額セール中です。(告知が遅い)

http://www.dlsite.com/home/work/=/product_id/RJ196354.html

3月の作業

3月の作業

ドット絵数枚作成、既存のドット絵微修正。

攻撃モーションのキーフレームとか書いた。

ついでにゲーム画面サイズのキャンパスにドット絵表示して画面との比率を見たけど、やはりこのサイズだとフルHDは耐えられないな。1280x720でいきます。

unity調査

・オブジェクト管理

ゲームマネージャからゲーム動作全部任せればこれまで通りできそう

今作もセルフ処理落ちを用意するので処理落ち発生時に手動GCとか無理やりできないかな…?のちに調査する

・ブラーエフェクト

カメラ1内容をrender target textureに転送→カメラ2を1にかぶせ、textureとゲーム内容を撮影してゲーム画面とすることでこれまで通りっぽくなる。

targetRenderTexture2.gif

右上のTartarget textureの指定がころころかわっておるじゃろう?書き込み先をいくつか用意してフィードバックを得るんじゃ。

カメラ2個はめっちゃ負荷たかそうだし、代替手段を見つけたいところ。

今月入ってからは、DXlib環境のソースをunityにぶち込んで修正してとりあえずコンパイル通したが、オブジェクト管理がこの時点でダメダメっぽいので一部ロジック除いてプログラム書き直す

今月中で自機、敵基本、自機弾敵弾の管理を作って、敵動作を編集可能なものにするべくunityの仕様を調べるのを目標にしよう

PCが届いたぞ

新PC届いてから色々やってました

ちなみに旧PCはしまう場所がない為部屋のど真ん中でちゃぶ台と化しています

苦楽を共にした戦友への扱い、これでいいのか?

曲書いた

旧PCで作業開始していたがいよいよHDDがダメになってきたので適当なところでバックアップを取って新PCで続行。

cubaseVSTのインストールも問題なかったがフリーのVSTのEQをGUI操作するとDAWが落ちる現象が発生していた。おまけにEQ設定リセット。GUI開かなければEQ稼働しているので謎である。

曲の下書きは年末の上京時の移動中にios KORG Gadgetで書き始め、しばらくgadget上で作業していた。下書きと言いつつ手元の音源でgadgetよりいい音が見当たらずそのまま使ってるけども。

イメージはリヴィエラやインザナのタイトル放置デモ。ゲームに使うとしたらPVか同じくタイトル放置デモだけど、自作ゲームに使いたい作風にやや遠い気もするので使うかどうかは考え中。

いつも音圧が出なくて悩んでたが今回はあげれた感ある。しかしバランスがやや悪いと思う。

まずドラムが派手すぎた。リリースやリバーブ切ってスッキリさせるといいかもしれない。

ストリングスやオルガンのパンの設定はちょうど良かった。音圧稼ぎに一役買ったが、ストリングス出てきすぎな気がする。

コード進行させる役割として単調なフレーズしか入れてなかったがために音量あげないと地味だったから…というのが原因かもしれない。

メロのギターは生録ではなくフリーVST bot紹介のyamaha guitar>cubase付属ディストーション>アンプシミュLe456>ampliTubeのキャビネット部 で音作り、ピッチベンド設定してチョーキングなどの再現を行った。

単音弾きならチョーキングに並んでスライドも多用したいのだけれど、再現出来ず断念。ベンド幅あげればできるかな。

入力はやや手間だが実際に弾くとタイミングヨレヨレだし何takeかかるかわからないwので圧倒的に制作速度は早い

unity

メニュー画面から作成中。

これまでゲーム中のオプション変更に対応していないので、どこからでも呼べるようにしたい。

フォント作成

メニューに使うフォントを急ごしらえ。

フォントもこれまでフリーフォントを使っていないのでライセンスについて調べつつ、inkscapeで加工して取り込む。

5000兆円の作り方を参考に金属プレートな感じで作ってみた。

キャプチャ

テキストオブジェクトコピーしてフチ太くしてずらしてグラデつけて…こんな感じになった

unityの音声プラグイン adx2le 機能確認

http://www.adx2le.com/

BGMのシームレス切り替え機能を確認。自由に再生ブロックを設定できそうなのでやりたいことはできそう。

2月はあっという間に通り過ぎてしまったし、3月も調査に時間かかる予定。

stolen explosive DL販売にC93版を追加!

DL販売サイトにて、C93で頒布したstolen explosive アレンジバージョンを追加しました!

販売サイトとすでにお持ちの方向けのアップデートファイルのリンクを紹介します。

通常版PV

(動画前半)アレンジ版PV

新規に購入する方は以下のDL販売サイトからどうぞ!

DLsite

http://www.dlsite.com/home/work/=/product_id/RJ196354.html

メロンブックス DL

http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000194043

DLしたフォルダの中に通常版とアレンジ版が入っています!

C93版、通常版をすでにお持ちの方はこちらからアップデートファイルを適用することで、両方のバージョンが遊べます。

https://www.dropbox.com/s/x87g6l7m0ghrydc/nspv%E6%9B%B4%E6%96%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.zip?dl=0

ただし…少々面倒な手順が必要です。

フォルダに同梱しているアップデート方法.txtより、引継ぎ手順です。

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

step0. (必要に応じて"replay"フォルダ、"file"フォルダをバックアップしてください。)

step1. 既存のゲーム本体exeがあるフォルダに"nspv_ver1_02.exe","nspv_C93ver1_01.exe"を追加します。

step2. 既存のゲーム本体exeを削除します。

step3. 追加したexeのどちらかを起動します。

step4. 初回起動のダイアログで、引継ぎ元のバージョンを選び、プレイデータとリプレイが引き継がれます。

       Zキー:通常版から引き継ぐ

       Xキー:C93版から引き継ぐ

上記手順でスコア、リプレイデータが選択したバージョンの最新版に引き継がれます。

キーコンフィグや画面設定なども引き継がれ、両バージョンで共通となります。(片方で設定変更すると逆側でも適用されます。)

<既存のゲーム本体exeのファイル名>

通常版:nspv_01_00.exe、nspv_01_01.exe

C93版:nspv1.exe

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

ファイル管理の想定が甘かったためユーザーの皆様にはご迷惑をおかけしますが、上記手順後に引き続きンスプブで遊んでいただければ幸いでございます。