ぼちぼちまちま日誌2

【ウディタ】デバッグで詰んだ箇所メモ

ウディタ製ゲームのバグ取りの際に何十分も足止め食らった箇所として記憶にあるものの個人的まとめです。
起動条件・イベント移動系のバグがないのは作ってるゲームの仕様上ほとんど使うことがないからです。

【CDB読込み/書込み場所の指定を間違えてる】

20200419170539.PNG
割とやらかす。
下みたいに指定する変数を間違えた例について、単純に変数の指定を間違えた場合ならまだいいんですが、「Cself24で値を取ってCself25に入れて、Cself25を使って違うDBから値を取る……」みたいなことを何回もやって「あれ、これってCself24?Cself26?」ってことになるとバグ取りで大混乱が起こります(実際に起こりました)。DBにアクセスする可能性がある変数が複数存在する場合は名前の付け方に気をつけような……!

【数値代入の変数間違えてる】

20200419170540.PNG
これもまぁやらかす。明らかにおかしい値が出たら多分これ。
バグったらバグ起こった箇所前後を精査することになると思うので、前後のやつに比べるとある程度気づきやすいと思います。

【DB読込んだつもりだったけど読み込んでない】

つい最近こいつで30分詰みました。
条件分岐Aの時にa,bを、条件分岐Bの時にb,cを読み込むとき、条件分岐Bで実はbを読み込んでいなかった みたいな奴です。
前回呼び出した時のbの値が残っており、条件分岐Bで処理したいbの値と偶然一致したりすると上手く動いたりするのでまぁ気づかない。
ちなみにこれについては、「DBを読み込むタイミングを統一する」である程度対策取れます。というかスクリプトの視認性考えても読み込むタイミングを統一したほうが良いかと。
ただ、DB読み込む項目数が極端に多い・文字列を複数読み込む場合などで処理落ちが心配な場合は、とりあえず最初の処理でCself10~Cself99=0入れるのが良いと思います。それで処理おかしくなったらこれが疑わしいかなー。

マップ組みとギミックあれそれ

マップの外観は去年に大方終わらせてるので、今はマップの中身(ギミックとか、エネミーの配置とか)を組んでます。
エネミーのAIも組んだ!移動コモン作った!坂道も正常に動く!さぁイベントをガンガン設置していくぞ!俺は今ゲームを作ってるんだ!と意気込んでましたが、そ、想像以上につまんねぇ……。まぁ地形見ながら坂道はここからここまでの座標でーとかそういう作業なのでつまらなくても仕方ないね。ちゃんと動くとテンション上がることには上がるのでそれをモチベに頑張ります。

マップに向き合ってることでギミックもじゃんじゃか作ってるので、とりあえずギミックの紹介。

【スイッチ】
割と早い頃に登場します。攻撃することでスイッチが押下され、ギミックが作動したりします。
攻撃で作動するタイプか触ると作動するタイプかで悩みましたが、触ると作動する場合は仕組みに気づかずに作動しちゃう可能性が十分にあり得るので攻撃で作動するタイプにしました。

【強制スクロール】
ザ・アクションゲームっぽいギミックです。それなりに早いタイミングで登場します。
あまり頻繁に登場するギミックではないのですが、登場するマップが異様に長かったり変則的だったりするのでもしかしたら鬼門になるかも。
もし難易度が極端に上がるようだったらコンティニュー時の救済措置もありなのかなぁとか考えてます。ひとまず保留。

【破壊ブロック】
名前がわからない!!攻撃すると周囲のブロックを壊す奴ですね。序盤の最後のほうで出てきます。
スイッチが汎用性高いので何でもかんでもスイッチでもいいんですが、あまりにもスイッチに頼りすぎてる感があったので入れました。
本当は攻撃すると切れるヒモを導入する予定でしたが、ヒモってわかりにくくね……?ってことで破壊ブロックに。例えばヒモで吊られてる足場があって、足場がぐらぐら揺れる~とかなら「あっこれヒモだな?」ってわかりますけど、白い棒一本だったらヒモってわかってもらえるか微妙なんですよね。それならいっそのこと爆弾マーク書いてある破壊ブロックみたいな方が良いかなって。

恐らく今月いっぱいでラスダン以外のマップのセットが終わるので、終わったら残りの武器作って中ボスのAI組んでボスのデザインして~ってところですかね。10月くらいにはアクションパートある程度組み終わりたい……!
10月くらいにはアクション終わらせたい!というと終わり近づいてくるように見えますが、マジのマジで作業量予測不可能なストーリーパートがあるのであと1年は絶対終わりません。2021年下半期~2022年頃完成を目指してます。

サウンド周り整備終わり

サウンド周りの整備が終わりました。
いざ動画で撮ってみると「だから何」感あるんですが、これ本当きつかった……けど、この整備のおかげで表現したいことができるようになった筈なのでまぁ良し。表現したいことに関しては、実際にプレイしてみてからのお楽しみみたいな感じでお願いします。
ものっすごいクセが強かった坂道処理がついに安定化したり、中ボス・ボスのプログラムが完成したりと何だか着々と進んでおります。とは言っても”システムに関しては”の話なので、まだまだやること山積みなんですがね。2022年くらいの完成を目途に頑張ります。

メニュー縮小化

20200402205339.png20200402205340.png

上がステージ内でのメニューで、下がワールドマップや一部マップでのメニューです。
下はゴチャゴチャしててわかりにくいですが、「操作方法・オプション・セーブ・ロード・タイトルに戻る」がメニューです。

今までの予定ではステージ内とワールドマップとでメニューを分けず、一つのものを使うという方針でしたが、セーブ・ロードはステージでは使わないし……あと○○も使わないんだよな……って削っていった結果、結局メニューを分けることにしました。
また、今まではあった「ストーリーあらすじ」を廃止し、「アイテム回収率一覧」はワールドマップのシステムに組み込んだりと全体的にスリム化させました。
オートセーブにする?とか散々言ってたセーブは結局メニューに表示する形にしました。
操作方法はカットしようか悩み中ですが、低難易度ゲーという事を考えると表示しててもいいかなという事で表示中。

GUI作るの苦手すぎてどこからアプローチしたらいいのかわからず、とりあえず場所だけ決めとけ~!と思って今に至ります。
「とりあえず中身だけ」っていうの中々モチベーションあがらなくて萎えながらやってましたが、作った結果システムの関係上レイアウトこうしないといけない、みたいなレイアウトの制約が生まれたのでちょっとGUI作りやすくなりました。めでたしめでたし。

【おまけ】
・SKIMA登録しました。のろらるで公開してるコミッションよりもわかりやすい感じの内容になっています。
https://skima.jp/profile?id=110940
・pixivFANBOX更新しました。
https://www.pixiv.net/fanbox/creator/4322080/post/935850

【ウディタ】描画座標シフトメモ

ウディタの描画座標シフトとようやく和解できたのでメモも兼ねて。
正直合ってる自信あまりないのでここ違くね?とかあったらツッコミください。

前提の話

20200326211149.gif

上のGIFはX=200で表示している★マークを200pxスライドさせたものですが、これを実行する方法としては以下が挙げられます(他もあったら補足オナシャス)
(1) ピクチャ移動でX=400を指定
(2) ピクチャ移動で相対座標でX=200
(3) 描画座標シフトでX=200シフト
20200326211150.PNG
1の例はともかく2と3ってほぼ同じじゃね?ってところから今に至ります。ってことで2と3の違いをザックリまとめたあと、使い分けについてのメモりながらのまとめです。

てかどう違うんだよ

前提の話であげた例のX=200を2回実行してみます。
(a)ピクチャ移動で相対座標X=200を2回やる
(b)描画座標シフトX=200を2回やる
20200326211151.PNG
aの場合、今★マークがあるのは200(最初の表示場所)+200(相対移動1)+200(相対移動2)=600ですが、bの場合は200(最初の表示場所)+200(シフト分)=400です。まぁつまりそういうことです。

使い分け例

これは前提の話(1)の移動方法も含めてのメモです。多分実例上げたほうが早い。

ケースA : 右キー押すとピクチャを100px動かす
(1) 初期座標+100+100+100……
(2) 押される毎に相対座標100
(3) シフト量 = 100×右キー押された回数または押される毎に+10020200326211152.PNG

もしかしなくても一番簡単なのは(2)。(1)と(3)は手間としては同じですが、変数操作+のピクチャ情報取得で描画座標シフトの値を取ることはできないことを考えると、(1)のほうが管理的には楽なのかなぁと。後で詳しく触れますが、「描画座標シフトした結果描画されている位置≠ピクチャ座標」なのでここ注意。
ちなみに横スクロールゲームを作る際プレイヤーをピクチャとして描画する場合は移動量を相対でプラスしていくよりも下のやり方のほうが安定すると思います。

ケースB : ウィンドウ表示の際、後半がゆっくりになるように表示する
(1)1回目2回目共に同じ座標を設定し、1回目の移動はディレイ0で、2回目の移動は一定ディレイ置いてから実行
(2)何か上手いこと頑張る(スクショ参照)
(3)座標で指定する例と大体同じ。ただ描画座標シフトにはディレイはないのでウェイトで擬似的にディレイっぽくしています。20200326211153.PNG

(2)はちょっと面倒くさい……というか切り替わるタイミングで一瞬止まったりして上手く行かなかった記憶があります。ってことで、(1)と(3)の事例で絞ります。
移動ピクチャが1枚または複数枚で同じ座標の場合は(1)のほうが記述量が少ないので管理しやすそう。(3)が力発揮するのは座標がバラバラの塊を移動する時ですかね。

つまり描画座標シフトって何

ってことで再び本題。最初に「描画座標シフトと相対移動って大体同じだろ」って言いましたが、相対座標が「○○px動かす」を得意とするのに対し、描画座標シフトは「目的地の○○pxまで動かす」を得意としてるのかなーという感じです。言うまでもなく「目的地の○○pxまで」って動かし方を一番得意としているのは座標で指定する動かし方ですが、座標指定は座標指定ゆえに座標がバラバラの複数枚数の位置関係を維持しながら移動させるのは苦手、というか面倒臭いです。20200326213132.PNG

描画座標シフトが生きてくるのは、「それぞれの位置を維持しながら指定位置まで複数ピクチャをずらすとき」なのかなーと思います。例えばRPGゲーム戦闘画面のHPゲージとMPゲージを動かすときとか。座標をガッツリ指定するとなると「HPゲージはxxピクセルでMPゲージはxxピクセル……」と算出する必要がありますが描画座標シフトならピクチャ指定して○○px遷移でOKです。
もちろん相対座標でもできるんですが、使い分け例ケースBで示したように緩急つけるとなるといちいち「何フレームは何px動かして……」と算出しなきゃいけないので面倒臭い。

一方描画座標の欠点は間違いなく「描画座標シフトした結果描画されている位置≠ピクチャ座標」。例えば複数コモンで1枚のピクチャをアレコレしてる場合、コモンAで初めに座標(0,0)でピクチャ表示→コモンBでX200pxシフト→コモンAでピクチャ移動(200,0)みたいな時、予想したピクチャ位置とは当然ずれます。あとピクチャ情報取得で描画座標シフト量は取れないので「変数操作+」のピクチャ座標取得であれこれする場合も当然事故ります。

まぁつまり、ガッツリまとめると描画座標シフトって「複数枚のピクチャを対象に、それぞれの位置を維持したまま何かをスライドする時」に特に強いのかな!と思います。

進捗動画あげました

第一回進捗動画公開しました。現時点ではこんな感じに動きますっていうのを見ていただければ。

色々の動作を見せるためにあえてゆっくり歩いたりカウンターで攻撃したりした結果こんなゆっくりプレイになっています。普通にプレイする時はダッシュ移動とダッシュ攻撃がメインになると思うので、実際はもっとプレイは速い筈です。ちなみに私ができるだけ速くクリアできるようにプレイしたところ23秒くらいで動画終了地点につきましたが、ダッシュ攻撃に頼りすぎて2回くらい穴に落ちてます。

ようやくゲームの操作部分に手を付け始め、色々とシステム変更なども出てきましたのでとりあえず報告。

●HPについて
今まではHPゲージの予定でしたがHPアイコンに変更しました。多分HPアイコン7、8個くらいになるかな……。
HPアイコンにするとあと何回ミスったら死ぬかってわかりやすいからいいのかなーと思う反面、たんぽぽ持ってるカエルの綿毛でも1減少するので難易度上がるのでは?って不安はあります。と言っても特に序盤は余るくらいHP回復地点があるのでステージクリアできねぇ!ってことはない筈。
あと残機システム導入しました。1ステージにつき残機2で次ステージに繰り越し不可、ボス戦では残機0です。

とりあえず今はワールドマップの処理をもう少し詰めたり、アイテムの仮画像を置いたりしてこれからステージ大量生産できるようにしてるところです。ワールドマップ、アイテム、回復地点、移動、ステージクリアあたりの処理がそれなりにできたら量産作業にいきたいところです。

パターンが多い

ってことで進捗動画を上げるのを目標にアクション実装作業に戻ってます。
ちなみに無事弩のモーションは終わりました。お疲れ様でした。

hk3の攻撃モーションって割と好き勝手組めるので、アニメーション変化ウェイトも10→6→4→2→10みたいに自由なんです。まぁそれはそれでいいんですが、何気にどのパターン番号を当てはめるのかパターン数を数えるのが死ぬほど面倒くさい。なぜならこのゲーム、パターン数がメチャクチャ多い。
現在の時点でパターン数160(横20×縦8)で、これからもまだまだ増えるので最大300くらい行く可能性がありまして。もうこれを縦数えて横数えて……とかやってるとマジでキツい。あとウディタのピクチャのパターン番号って始点左上1なので、横10×縦2のピクチャで2行目の一番左側は11になるんですよね。慣れると良いんですが案外これ数えにくい。

ってことでコモンでポンっとしました。

20200318204030.png

上下キーで行ごと移動して、左右キーでパターンを1ずつ移動する……みたいな感じのコモンです。
ザックリ作ったコモンの割には意外と便利でした。ヨシ!

ノウハウみたいな内容になりましたが大体そんな感じです。終わり。
たぶん予告通り1週間以内(大体日曜くらい)には進捗動画出せると思います。頑張るぞ!

まだまだ主人公グラフィック

20200314204633.PNG
まだまだ主人公グラフィックが続いてます。
アクションパートのグラフィックは半分以上は終わってる筈。知らんけど。

結構前から財二の武器は短刀・弓・???だと言ってましたが、グラフィック描き直しに伴い弓から弩(クロスボウ)に変更しました。クロスボウ・ボウガンのほうが通じやすいですが世界観を考慮してゲーム上では「弩」と表記しています。弩よりも手弩のほうが適切かもしれませんがそこまで厳密に定義する作品でもないので「弩」。
弓のほうがアクション映えはするものの、冷静に考えると弓って扱い難しくね……?というのが変更理由です。クロスボウを使ったことがないのでクロスボウの使い勝手はわからないんですが、おもちゃとして作って飛ばせるあたり弓よりは楽なのかな……と思ってます。

そういえばクロスボウといえばこんな動画あってビックリしました。(※グロいシーンあり)

クロスボウのリロードモーションだけまとめたってニッチだな!?!?と思いつつも作画の際にめっちゃ助かりました。
構造については静止画でもなんとかなりますが「どう動かしてるか」っていうのは動画見ないとわからないのでこういうものは本当ありがたい。
ちなみに私が描いてるグラフィックで矢の部分は描画してないんですが仕様です。実際のゲームサイズに縮小すると潰れすぎて逆に見映え悪くなるんですよね。あと「普通こんな感じに使わねぇだろ」みたいな使い方もしてますが仕様です。ある程度は使い方考慮してるつもりですが、結局は見映えとか「こう動かしたい!」を優先しちゃってるので……。

Cupheadクリアした

タイトルにある通り、Cupheadのレギュラークリアしました。
(厳密に言うとステージ3のラン&ガンをクリアしていないので完全にレギュラークリアとは言えませんが……)
いやーー面白かった。「でも難しいんでしょ?」と敬遠していたんですが勇気出して買ってよかった。PCだと作業したりして離れちゃうんですが、Switchの場合起動したらゲームしかないみたいな感じなのでゲームへの集中度という意味ではゲーム機って本当良い。
と思ったら1か月くらい前の記事でも同じようなこと言ってました。マジか。

大体感想も1か月くらい前の記事で言ってることと同じような感じです。
難易度高いし何回も同じボスの第一形態と戦うことになるんですけどモチベーションが不思議と折られないんですよね。
何でかなぁと思ったんですが、今回どこまで進んだかの進捗度がわかって「もう少し頑張ればいけるのでは?」という期待とか、「よしこのボス倒すぞ!」っていう意地?モチベ?が生まれやすいのかな、と思いました。そして、「タマシイの契約書を集める」という目標。契約書を集めると一覧にチェックが埋まっていくのが何か楽しいんですよね。

音楽やイラストも良いんですがキャラデザインが本当に楽しいんですよ。もちろん”良い”んですけどただ良いんじゃなくて”楽しい”という表現が適切だと思います。
ボスのHPが減るごとに姿が変わっていくんですが、姿の変わり方がとにかくユニークで、時に予測不可能な姿の変わり方がしてハァ!?ってなったり嘘でしょwwwwってなったり。
一見するとただの背景であったりボスの付属品みたいなものが襲ってきた……のはともかく、急に付属品みたいな奴がボスそっちのけでメインにしゃしゃり出たり、生き物の形をしたボスが何でか大型のアイテムに変身したり。ハッキリ言ってメチャクチャ。このメチャクチャさが最高。

Cupheadのボスたちって「開けてみてから(プレイしてから)のお楽しみ」の詰め合わせですよね。「お楽しみ」といってもプレイヤーとしては開けたら初見殺し!DEAD!リトライ!みたいなお楽しみもクソもねぇ!フ×ック!と苦いことばかり。でもしばらく経ってみると何か笑えてきたり面白い思い出として享受できてしまうし、ボスの見た目もよくよくみたら良いデザインだな……と感心してしまう。こんなビックリ箱のマトリョーシカみたいなボスが何十体もいるんだからもう楽しくてありゃしない。

もうCupheadの感想とかレビューって日本語でも外国語でも沢山あるので、感想書こうとしても「これと同じです」みたいなことになるのでこれだけ。
ただ、これも繰り返し言われていることですが100人いたら100人に勧められるかといったら全員には勧められない……。

素材置き場

素材置き場追加しました。
素材置き場 | のろらる
どこに置けばいいのか悩みましたが結局Gallery内のOtherに置くことにしました。まだ3個。
規約にある通りサポートは気まぐれなので期待しない程度なのと、バグ修正も気分が乗らないと修正しない可能性があるのでそこんとこよろしくお願いします。

ウディタのコモン素材についてですが、ウディタ製ゲームプレイして「あっこのシステム欲しいな……」と思ったコモンを作ってる みたいな方針です。
hk3はそもそも自作システムな為、ウディタの基本システムとの互換性みたいなのが結構アレでアレなんですよね。