0.5から始めるインディーゲーム開発 初作編⑮~躓きを解決します~
こんにちは、Yasaです。
時間が前と変わった夜勤でもれなくリズム狂いまくっていて既に転職したいYasaです。
多分します!(!?)
好きでもないことはどうしてこんなにも忍耐が持たないんでしょうね。
ヘタレてるだけかもしれませんが、やりたい事には全力を出し続けられるからOKという事で、進捗公開と、起こした行動をお見せしていきますよ。
少しの間はウディタの話になるので、あくびが止まらない方は飛ばしちゃってくださいな。
前回の躓き
戦闘画面ではなく、マップ上でこのような状態を作りたいと考えていました。
敵がいます。その敵は、このように扱います。
![](https://assets.st-note.com/img/1727996653-2IJ4Hgwz3SkdvfshCG0QpAT9.png)
・近づいてZキーを押せば攻撃できてダメージを与える事ができる
・変な位置から攻撃しようとするとダメージを受けてしまう。
つまり、敵によって正しい位置を見つけ出してZキーで攻撃して倒す事が目的になります。
というのを作ってみたいと考えていたのですが、これを実装するために、ウディタでは2つのページを作って実現させようとしました。
・①ページ目
変な位置で触れた場合はこちらの設定が発動するように設計。
![](https://assets.st-note.com/img/1727996654-nFUsgQ0LTVeCIjmiZMazYkfd.png?width=1200)
・②ページ目
正しい位置でZキーを押した場合は攻撃ができた場合はHPを削る事ができるように設計
![](https://assets.st-note.com/img/1727996654-SIZbN7CeDf9sowBQOP2LXjdV.png?width=1200)
起動条件のところに「イベント接触」と「決定キーで実行」それぞれあるので・・・
・イベント範囲に接触してしまった場合はダメージを受ける。
・イベント範囲に触れずに決定キーを押せた場合はダメージを与えられる。
といった解釈をして実行してみたところ、なんと
2ページ目しか発動しませんでした。
ここまでが前回躓いた課題点になります。
解決しようとはした・・・
これらの躓きを記事としてお届けしました。
すると、具体的な助言をいただけたので(本当にありがとうございます)
早速仕組みを作り直して実装へ向けてパソコンとバトルしましたよ。
まず、前回躓くことになった理由がわかりました。
たしかに、起動条件の「触ると発動」と「決定キーを押すと発動」という部分は異なっていました。が・・・
どっちのページも、このイベントが発生する発生条件に関しては同じなので、1ページ目さんと、2ページ目くんが「どっちが発動するんだい?」という喧嘩状態になっており、仕様上、2ページ目しか発生していない事がわかりました。
これではうまく作動しないわけです。
触れたら1ページ目が発動して、Zキー押してきたら2ページ目が発動すればよくない?みたいな臨機応変なシステムにはならなかったと解釈しました。
それならまずは、起動条件の並列実行を取り入れてみようという挑戦をしました。
そこでまず、並列実行というワードを目にしたとき、ひらめきました。
並列実行のコモンイベントを作って、それを「決定キーを押すと実行」の②ページに埋め込んでしまえば、触れればダメージを受けるし、Zキーを押せばダメージを与えられる仕様になるのでは!?
と、システムをあまり理解していないまま若干思考停止でとりあえず挑戦。
![](https://assets.st-note.com/img/1727997385-Lie1cQ5AJvZDUo7YthmpI0n4.png)
コモンイベントを作っています。
そしてこのコモンイベントを敵さんにぶちこみます。
![](https://assets.st-note.com/img/1727997689-YxksFmZAeR9Vyo725TWbh6EI.png?width=1200)
上から2段目のコモン222が作ったやつです。
こうして、作ってみたコモンイベントを敵さんの行動の中にぶちこんでみました。
これで、触れるとダメージ、かつ、Zキーを押せば攻撃する、という仕組みの完成では・・・!?
それではさっそく、保存してゲームをスタート
・・・
![](https://assets.st-note.com/img/1727997870-AD97ER8kblLhvrpnc5e0wSKV.png?width=1200)
急に音が出るし画面は赤くフラッシュしまくりました。ビビッタ
ちなみに背景の学校はみんちりえ様からです。
並列実行ってそこからも実行するんかーーーい。
タイトル画面の時点でダメージを受けまくってます。
もはや敵がチート。
このまま様子見してたら・・・
![](https://assets.st-note.com/img/1727997869-HV5OPFTqJMustK2pBXWSIfoi.png?width=1200)
タイトル画面の画像が消され、ゲームオーバーになりました。
プロローグの様子が丸わかりです。
タイトル画面でゲームオーバーするゲームなんて聞いたことありますか・・・?
さて、このままではお話にならないので、今度は、2ページ目そのものを並列実行にしました。
![](https://assets.st-note.com/img/1727736264-xqfIyeLGW18s2gbktUS0MKYm.png?width=1200)
発生条件はいじってませんが、とりあえず並列実行にして動作確認。
どうなるでしょうか。
![](https://assets.st-note.com/img/1727736219-HTEVU4da8RCqyeJg1ub5cFAN.png?width=1200)
どこにいても喰らっています。
またしても敵がチート。
起動条件が「並列実行」なので、同じマップにいる限りはイベント内容の「ダメージを食らう」が発動してしまっているんですね。
これを解決するためには、少し難しそうな方法があるようですが、ここでまた躓き・・・。
でもこの理不尽な演出のおかげで、理不尽に関するアイデアが思いつきました。
そして肝心の解決法についてはまだ理解できていませんが、別の思考にたどりつきました。
ちょっとややこしい話になります。
実は、アドバイスを2種いただいてまして、そもそも「発生条件が同じだよ!」という事もいただいてます。
![](https://assets.st-note.com/img/1727998381-wqiUDkBKXcx7rd9eEI8m16nA.png)
![](https://assets.st-note.com/img/1727998432-g6aoFkAR4ULw09uC7TVsvN3M.png)
繰り返しの記述になりますが、どっちのページも、このイベントが発生する条件が同じなので「どっちが発動するんだい?どっちなんd・・・」という喧嘩状態になってます。
そして2ページ目しか発生していないわけです。
そこで、発生条件を変えてみては?という展開へ繋げました。
ここで、そもそもの敵の作り方にピンときたんですよ。
特定の位置(背後とか)からじゃないとノーダメージで攻撃を与えられない。だと面白味に欠けると感じました。
そこで、もうちょっと面白くできないかな?と閃いたとき
敵が反撃状態になるという仕様を考えました。
特定の条件になると一方的に攻撃してきて、特定の条件になるとこっちが攻撃をできる。
さらに別の条件になると、攻撃をすると反撃もされる。
という3つのパターンを用意してみようと思いました。
![](https://assets.st-note.com/img/1727999289-w4MyJn25DLadB73QFI10uclr.png?width=1200)
発生条件がだいぶ増えたのが伝わるでしょうか。
![](https://assets.st-note.com/img/1727999328-O0wGg31JIvhjcteozspMXT49.png?width=1200)
発生条件に違いがあるのが伝わるでしょうか。
これに加えて、1ページ目と2ページ目を行き来する条件も付けることができたので・・・
触れるとダメージ、Zキーを押すとダメージを与える
というのはどちらも発生させられますね!
では、どうなるとページが切り替わるのか?
というのをめちゃくちゃ悩んだ結果・・・
攻撃したタイミングがどんな状態だったら切り替わるのか?
HPが削れていたらなのか?
敵が元気だったらなのか?
に細かく考えてこうなりました。
![](https://assets.st-note.com/img/1727999471-Gf0orpVsceCLkIZiUJ3N7ExM.png)
これを2ページ目に埋め込むことで、システム上こうなります。
敵にZキーを押して攻撃をしたタイミングが、現在時刻でいう0~59の内の40秒以上だった場合、ページ1に切り替わる。
となります。
そうなると、1ページ目しか発生しませんから、触れると攻撃を受けるだけでダメージも与えられなくなりクソゲーになります。
それを防ぐために、1ページ目にこんなのを組み込みました。
![](https://assets.st-note.com/img/1727999638-GlOqMuFrxJadR9pWvinyPbSQ.png)
これを加える事でシステム上こうなります。
触れるとダメージを受けるが、そのタイミングが現在時刻の38秒以上だった場合はページ2に切り替わる。
です。
ちょっと長文になってきたのでサクッと書きますね!
攻撃を仕掛けた時ダメージを与えるが、特定の秒数だった場合は敵が攻撃してくるフェイズになる。
敵が攻撃してくるが、そのタイミングが特定の秒数の場合は攻撃できるフェイズに切り替わる。
といった結果になります。
つまりプレイヤーからすると、攻撃を仕掛けたことで敵が激おこなら一方的に攻撃してくるし、疲れたら一方的にたたける、という状態になったはずです。
さて、もったいぶらず、どうなったか動画で晒します。
ややこしくなったので結果を進捗動画として公開
出来てると思いませんか!?
プレイヤーにとっては、敵がいつ激おこで、いつ攻撃できるのかがわからないので、逃げたり追ったりして戦う感じになります。
〆
今回はいろいろ複雑なことを書いた気がします。
進捗に向けての作業工程が多かったですね・・!
結果、なんとなくですが、こちらからの攻撃フェイズ、相手からの攻撃フェイズがあるのが伝わったでしょうか。
助言いただいたおかげで、こんな風に解決できてゲーム性まで増しました!
めちゃめちゃありがたいですね・・!
動画で登場したマップでは逃げ場も多く、嵌めれるポイントがあるので攻略が簡単ですが、違うマップだとまた変わってきますね。
2体同時出現だとか、色々考える余地がありそうなので今後も楽しく作れそうです。
個人的には、しっかり成長ができたと思っていて、次のアイデアがどんどん膨らむきっかけにもなりました。
応援も助言も本当に励みになりますし、自分が面白いと感じるゲームを完成させてやろう!という根気にもつながります。
さて、今回の記事が読んでくださる方々へのパワーになっていれば幸いです。
とても長くなりましたが、最後まで読んでいただきありがとうございました。