zabumaru 2023/08/22 01:20

コック出現ができるまで

とりあえず、表現が汚いので読む方はご注意ください。

コック出現とは

コック出現はみかど出現の前の作品で、14回ウディコンに応募したゲームです。
順位も圏外の下のほうなので出来はまあ察してください。

どうしてもやってみたい!という方は置いておくのでやってみてください。
作者としては自信作です。


コック出現ver1.24.zip (40.36MB)

ダウンロード

作り始めるまで

私は以前からドット絵が好きでキャラの歩行グラフィックを作っていました。
すると、数年で50キャラくらい溜まってしまいました。

まあせっかくだから何かに使えないかと思い、ウディタのキャラチップの寸法に合わせて加工して、さらに歩行グラフィックだけでは味気ないと思い、通常攻撃(剣か格闘)、弓攻撃、銃撃、詠唱、魔法発動、被ダメージと大量に作っていきました。

そうなってくるともう何というか、これだけ作っておいて終わりというのはおかしいだろとなっていき、ウディタでなにかゲームを作って動かそうということになりました。

つまりコック出現はゲーム企画から始まったゲームではなく、溜まりすぎた素材を吐き出す何かバケツか洗面器のようなものという位置付けの妙なコンテンツというのが近いのです。

そうなると必然的に、その目的はキャラのアニメーションを眺めるというところに向かいます。

RPGは敵グラフィックが必要なので候補に挙がらず、結果としてシステムは操作の少なく、そして何より同時にたくさんキャラを出すのが不自然になりにくいリアルタイムストラテジーのようなものがいいかなということになりました。

出来上がるまで

というわけでゲームを作ることになったのですが、さあどのように作ろう、となった際に当然ながらいろいろ問題が起こりました。

ウディタの基本システムにリアルタイムストラテジー機能なんてないですし、コモンイベント集にもそのまま使えそうなものはありません。

結果、コモンイベントもデータベースも全部ゼロから作ったほうが手っ取り早そうだということになりました。

なので全部ゼロから作りました。といえばそれまでなのですが、せっかく四苦八苦して見つけたノウハウのようなものもありそうなので、書いていきたいと思います。

ただ、もちろんこの辺はどうやったかということが何か参考になる方がいればというものなので、そんなの当たり前だろだとか、いやおかしいだろとか、そういった話もあると思います。大目に見てやってください。

とりあえず、何かで見た「入力受付」「内部処理」「出力」は分けるべしといった話を思い出しながら、メインループとして各シーン「タイトル」「クエスト(いわゆる移動中をこう呼んでいました)」「イベント」「バトル」「メニュー(いわゆる部隊表示)」「個別メニュー(いわゆるステータス表示)」「装備変更」と作っていきました。

まあ「タイトル」のシーンは何とでもなったのですが、「クエスト」のところで早速問題が発生します。お察しの通り、「ブロック」と呼んでいたクオータービュー用チップの重なりがうまくいきません。奥にあるはずのブロックが手前に表示されたりします。

頭の中では時計回りに45度回転することでデータ上の左上が奥になって、と分かっているはずが高さの概念を入れただけでピクチャ番号がかぶったのか、なぜか消えたりと大混乱です。

結局、回転など考えるべきではないだろう、と市松模様にデータを置いていくことにしました。

これは今でもマップ作成がめんどくさかったりとちょっとセンスがないなとは思っていますが、とにかく作る!ということだけ考えるならば、悪くもないかとも考えています。何といっても頭が混乱しません。

無事表示されたので、続いてキャラの表示処理です。その前にブロックの表示処理を作ったこともあり、まあコピペするか、と安易に作りました。

そしてキャラの表示処理ができたので続いてキャラの移動処理です。このときキャラもブロック表示処理からコピペした故に、ブロックと同様にマップの個々の座標の箇所がどうなっているのか?という観点から表示有無や該当チップはどれかを判定して表示していました。

これはまあ作業を進めるという点では悪くはないのでしょうけれども、どういった意味を持つのか?をちゃんと考えるべきでした。

縦20、横20、高さ5のマップのキャラ集合を更新する際、2000箇所を判定し、表示状態の全てのピクチャを再表示していたのです。

私としては軽さをまったく求めていなかったので何も感じていませんでしたが、発表後大騒ぎになります。

ブロック集合はマップ切り替え時だけ更新するということで何とでもなりましたが、キャラは足踏みのたびに更新しますので、重いはずですね。

(見つけた解決策ですが、ブロックはマップの個々の座標の箇所がどうなっているのか?という考えで問題ない、というかたぶんそれしかのですが、キャラは各キャラが何処の座標に「現在いる」かと何処の座標に「直前にいた」かを情報として持ち、それらが異なっていた場合に「直前にいた」場所のピクチャを消去して「現在いる」場所に表示するというのが効果的、というかそうすべきでした。)

キャラの移動処理に戻りますと、そのままどこにいるかという情報だけですと、移動の際に隣のマスに瞬間移動したようになって不自然なので、マスの半分だけ前進しているといった情報をキャラに持たせて表示用座標と接触判定用座標がおかしくならないように表示処理をするなど、いろいろ気を使いました。

そうしてキャラの移動処理ができたので続いてイベント(会話)への切替処理です。いわゆるニワトリに話しかけるという処理です。

その前に、こういうゲームはマウスでも動かしたいよねと思い、入力受付処理にマウスを追加しました。このときマウス入力受付をキー入力受付からコピペした故に、マウスの左クリックは押下状態かそうでない状態かの2択だけが判定基準でした。

私としては一定時間押下状態を維持するという操作方法を知っていたので何も感じていませんでしたが、発表後大騒ぎになります。

キーは何か調べる際に押した状態を一定時間維持するのは普通のようなので何とでもなりましたが、マウスのクリックというのは素早く押下→離上と動かすのが基本なので、動かないはずですね。

(見つけた解決策ですが、マウスは押下状態から離上状態に切り替わったかを情報として持ち、クリックすると次に進むと言う場面でその状態であれば進み、マウスが押下状態から離上状態に切り替わったという情報を初期化するというのが効果的でした。)

戻りますと、イベントへの切替処理ができたので続いてイベントの中身です。

まあ結論としては「イベント」のシーンは何とでもなったという感じでした。

(ちなみにイベントの中身としてのウインドウに何を表示するかや選択肢はそれぞれどこに飛ぶかは全部ユーザーデータベースにまとめて入れました。)

その後はバトルへの切替処理とバトルの中身です。

ここは作っていてとても楽しかった箇所です。バトルへの切替は特に問題なく出来ましたし、中身についてはまずキャラの移動と行動の順番を決めていきました。

キャラの行動は最初ローグライクゲームのように主人公が1マス動く→仲間が1マス動く→敵が1マス動くというように組みましたが、陣形が崩れないので戦闘のわちゃわちゃ感が出なかったり、素早そうなキャラの素早い感じが出なかったりしたので、敏捷の蓄積をCT(チャージタイム)ということで設定して、相手軍の最も高いCTのキャラ以上のCTを持つ自軍キャラ全員が行動可能になり、行動終了後にCTはリセットされるという流れにしました。

続いてキャラの攻撃目標選択AIを組みましたが、これはもう思い切りアホにしたほうが見た目に合うだろうということで、ただただ最も近いキャラを狙うということにしました。しかし、主人公キャラ以外が全員AIなので、戦闘中に出来ることが何もなくなってしまい、結果として味方AIキャラはカーソルと敵のうち最も近い対象を狙うということにしました。私としてはAIの挙動とそれに合った操作方法を知っていたので何も感じていませんでしたが、発表後に何だこれはとなります。

いわゆるゲーム中で大渋滞が発生するわけです。主人公が下がれません。これは問題というかこのゲームの特長と言う表現で大丈夫なようでしたが、難易度が高いと言われることとなった大きな要因でした。

結論としてはカーソルを右後方や左後方の極端な位置に置くことで逆側にいる味方AIキャラを前進させつつ主人公キャラは後退するという動きをするのが想定だったのですが、そんなこと分かるか!となったわけです。

途中の畑の人に話をさせたり、敗北時のヒント表示のような形で、そのことはズバリ文書で伝えたほうがよかったなと今としては思っています。

そして、HPとダメージを設定しました。一撃で倒されるのちょっと不条理だが何回も殴り合いを続けるのも面倒。ということで、2~3回くらいで倒せるというのを基本として、攻撃特化にすれば1回で倒せて、防御特化のキャラは4~5回くらい耐えれるかもくらいのバランスにしました。まあ、これは問題なかったと思います。

結果、「クエスト」→「イベント」→「バトル」→「クエスト」の流れが出来ました。私としては、正直なところこれでもう満足だったというのがあります。

まあ、当初の溜まりすぎた素材を吐き出すという目的が果たされてしまった訳です。その後の手抜きは今になって振り返るとひどいものだったのでしょう。

まず、「メニュー」です。これは複数キャラがを表示することで味方として誰がいるかと敵の部隊はどんな状態かを表示するのですが、ここで戦略ゲームである以上、陣形の組替をする機能を付けるというのが望ましかったです。

機能を入れれば強力なキャラを右側に集めて左側の囮部隊を突撃させている間に右側の主力を敵リーダーのほうに接近させて仕留める的なことぐらいはできた訳です。もったいなかったという言い方もできます。

続いて「装備変更」です。これはアイテムを選ぶとそのアイテムを装備するということでまあシンプルといえばシンプルなのですが、仲間の数が数なので、ろくに装備が足りないにもかかわらず装備の数はすごいことになり、ページ数はかなりの数になりました。その中でページの切り替えをどうしようかということで、とりあえずクリックでなくマウス位置が切り替え矢印の上にあるかどうかを基準にしました。

(みなさんの動画を拝見するとページが滑りまくりでした。直接的な苦情のようなものは無かったので変更しませんでしたが、修正しておけばよかったと思います。)

そして「セーブとロード」です。とくに意識せず、サンプルゲームのように味方キャラを並べておけばいいだろうと軽く考え、無理やり30人押し込みました。

(これは何というかギャグとして面白かったようで、好評でした。作品の雰囲気にも合っていたようです。)

とかなんとかやっているうちに開催日になりましたので、裏面をもう少し作りたいというのはありましたが、間に合いませんのでバージョンアップの際にこっそり放り込もうということににして、とりあえずエンディング?に謎のクマを放り込んで見切り発車で発表です。

発表後

すでに色々書いた通り、何だこれは!となりました。

それでもまあ、もらったお話を色々参考にしながら日々アップデートをして徐々に重さも何とかなり、動作も安定してきました。(その中でこっそり裏面も追加しました)

しかしまあ全部直せるものでもありません。難易度もさすがに高すぎたようです。

結果、ここはこうしておけばよかった!というのは大量に残りましたし、ウディタ2での軽量化には限界を感じていたところでウディタ3の話が出たこともあり、次回作でできなかったことにまた挑戦したいという思いが大量に残った作品になりました。

しかし、動作不良の解決は作者としてのスキルを高められたと思っていますし、そして何よりも、この復讐心に近い鬱憤のようなものはみかど出現ができる原動力になってくれました。

とりあえず作って発表するというのは、とてもいいことだと思います。

月別アーカイブ

限定特典から探す

記事を検索