This Project Has Not Released Any Files
プレイヤーの属性ごとの攻撃方法を考えていました。通常攻撃は、近距離・中距離、遠距離・特殊(範囲攻撃)。で、スキルは攻撃補助や通常攻撃を補助するような攻撃方法がいいのかなと。 でも何かしっくりこないのですよね。なんでかなぁ、と考えていたのですが理由は2つあるような気がしました。
1つは「シチュエーションの想定」が足りていないこと。どんな敵が攻撃してきて、どうやってそれらをなぎ倒すか、という想定ですね。敵が大量に突進してきた時にプレイヤーはどういう行動を取るのか。敵が弾を大量に撃ってきた時にプレイヤーはどうするのか。敵がプレイヤーに気づかず待機中で待ち構えているとき、プレイヤー側はどう仕掛けるか。…たぶんこの手のゲームを作り慣れている人なら、なんとなくイメージが出来てて、脳内シミュレーションで完結するのでしょうけど、今回初めて作るジャンルなので、そこまで論理が飛躍しないのですよね。
もう1つは、そのシチュエーションに対して、「有利不利の特徴」をもたせられているかどうかの判断。簡単に言えばジャンケンですね。グーはチョキに強い。チョキはパーに強い。パーはグーに強い。せっかく複数の攻撃方法を用意するからには、攻撃方法に特徴を持たせたいところです。でもある攻撃方法が他に比べて絶対優位な戦略となると、攻撃方法が切り替えられる意味が無いですよね。…最近、メトロイド・フュージョンをクリアしたのですが、そのゲームではブロックを壊すための絶対優位な攻撃方法がなく、使い分けを要求されていてとてもうまい作りだなと思いました。
という思考実験をした結果、もう少し考えをまとめてから実装をしようかと思いました。まあ最終的には動かしてみないと分からないので、あまり頭でっかちになるのは良くないですけどね
敵を倒したらコインを出すようにしました。半径48pxに近づくと自動で吸い込むようになっています
プレイヤーのドット絵を差し替えました。そして画面上の「P」を取ると属性チェンジして色が変わります。しかし各属性にどんな攻撃を割り当てるかはまだ考えておりません…
スプライトフォントが実装できたことで、ダメージ数値の表示を実装しました
スプライトフォントを実装していました。 時間がかかるかと思ったのですが、font_add_sprite_ext ()関数を使うことで簡単に実装できました。GameMakerすごい!
今日も敵の状態遷移を実装していました。
そしてようやく弾を打つ敵を作れました。
今日は敵の状態遷移を実装していました
AIではお馴染みのステートマシンによる実装で、状態変数"state"に対応するユーザ定義イベントを呼び出しています。 継承先では各イベントを上書きして実装する予定です。
- switch(self.state)
- {
- case ENM_ST_IDLE: { event_perform(ev_other, ev_user0); break; } // 待機モード
- case ENM_ST_CHASE: { event_perform(ev_other, ev_user1); break; } // 追跡モード
- case ENM_ST_ATTACK: { event_perform(ev_other, ev_user2); break; } // 攻撃モード
- case ENM_ST_ESCAPE: { event_perform(ev_other, ev_user3); break; } // 逃走モード
- case ENM_ST_INTERCEPT:{ event_perform(ev_other, ev_user4); break; } // 迎撃モード
- case ENM_ST_AROUND: { event_perform(ev_other, ev_user5); break; } // 取り囲むモード
- }
エフェクト周りを色々入れてました。まだ地味なので何とかしたいけど、今のところはこのくらいで。
あと、敵が弾を撃つようにしました。当たり判定はやや小さめで。
それと、敵動作仕様を作っていました。(→敵仕様) この通り作るかはわからないけれども、AI作成の方針として頭のなかの整理のために作りました。
昨日は23:00に就寝して、今日は朝6:00に起きました。早寝早起きして気分がいい状態で開発していました。
今日はコリジョンを実装。
これで壁を使って待ち伏せするという攻略ができるようになりました。
あと、デバッグ機能で敵のパラメータを見れるようにしました。
マウスカーソルを合わせるか、敵に攻撃すると見えるようになります。これで少しは開発が捗るはず
正月も開発しています。HPゲージ・MPゲージを実装しました。
静止画ではわからないのですが、ゲージの柄がUVスクロールしています。ちょっと悩んだのがテクスチャのリピートを使う場合は、
としないとうまく描画されないようです。
あと、敵が重ならないようにしました。
これで敵に囲まれた感が出るように…!! まあこんな状態になったら即死ですけどね。 実装方法は、
という記述で対応しました。この方法だと壁に埋まる可能性があるのですが、問題が出たら対処する方向で進めようかなと。ザコが壁に埋まっても問題ないでしょうし…。
ルームのリソース構成を考える。GameMakerだとルームを名前指定でインデックス番号を取得することはできないよう。仕方ないので「room[ステージ数(3桁)]_[フロア数(3桁)]」という命名規則でリソースツリーにソートして配置することにしました
Hammerwatchを再びプレイ。やはりこのゲーム面白い。理由は、
の2つだと思いました。敵やコインをちまちま集める感覚がぷちぷちをつぶす感覚と似ていて、止め時を失います。あとコンボ→フィーバーによる無双状態が楽しいです。通常の火力が低く、HP回復のリソースが有限なので、ついついコンボを狙いたくなります。(そして敵のまっただ中に突っ込んで死ぬというリスクが発生)
以下、GameMaker-SNSの日記に書いた内容をそのまま引用。
次回作の参考にHammerwatchというゲームをやっていました。これがなかなか良くできたゲームで、ご飯も食べずに6時間ぶっ続けでプレイしてしまいました。ちなみにどんなゲームなのかはここの紹介記事を見るといいかも。
ジャンル的にはハック&スラッシュ系、といったところでしょうか。あまり日本では人気のなさそうなジャンルなので、簡単に説明すると、
これだけのシンプルなゲームです。基本、敵をボタン連打で倒すゲームです。
なのですが、自機の火力が低く、敵が容赦なく大量に出るので無謀に敵に突っ込むと死ぬ、というゲームバランスが絶妙です。体力の自動回復はなく、回復アイテムの配置も限られているため、常に死のリスクを感じさせる作りとなっていて、とてもスリリングです。
なぜこのゲームをぶっ続けでプレイしたのか、理由を考えていたのですが、2つほど特徴的な理由を思いつきました。
1つは探索要素です。このゲームは鍵やスイッチを使って、扉を開けたり、壁を壊したりします。そのためにはマップを隅々までくまなく調べる必要があります。またマップ上には破壊オブジェクトが大量に配置されていて、そこからパワーアップに必要なコインが出現します。それらのアイテムを探して見つけ出すのがとても面白く感じて、「そういえばあそこは調べていないな。もうちょっと調べてみよう」というように止め時を失っていたように思います。(ミニマップで未探索の場所が確認しやすいようになっています) 例えると、プチプチシートのつぶれていない部分を調べる感覚に似ていて、止められない止まらない状態になります。
もう1つはコンボの存在です。一定時間内に10の敵を倒すとコンボボーナスで一定時間プレイヤーがパワーアップします。パチンコなどで言うフィーバー状態となります。この状態になると全方位に弾を撃てたり、体力やマナ(特殊攻撃を使うためのMP)が少しずつ回復します。体力リソースは有限なので、この回復はとても魅力的ですし、通常の火力は低いので、フィーバー状態はとても有利です。ただ、そのためには敵のまっただ中に飛び込んだり、敵をうまくコントロールして一箇所に固まるように移動させまとめて倒す、という工夫が必要です。これは失敗すると死ぬこともあり、コンボを狙うのはリスクが高いです。でもリターンも高いです。またコンボ中は火力がアップするので、さらにコンボからコンボにつなげる、というかなりリスキーなプレイスタイルも許容しています。 つまり、通常の能力が控えめになっていて、フィーバー状態だと強い、という極端な対比が、感情のアップ・ダウンを繰り返させ、このゲームを面白くさせていると思いました。
敵が出現する穴を実装。
出現のルールをちゃんと決めたいところ。一定時間で出現させると無限に湧き続けるので何らかの出現しない条件が必要?
敵の旋回移動を実装。接触でダメージとなるので敵の機動力は低めにした方がいいと思い、旋回するようにしました。
GameMakerのTile機能を使ってみました。どうやらテクスチャはBackgroundとして読み込んで「Use as tile set」にチェックを入れることで、Tileとして扱うことができるようです。あとShiftを押しながら左ドラッグで複数配置のようです(GameMaker上のヘルプになかったので一瞬戸惑いました)。
Hammerwatchのステージ1をようやくクリアしました。ボスが結構強かったです。あとコンボ開始時にHP/MPが回復するスキルを手に入れたのですが、これが結構強力ですね。MPが回復するのでコンボからコンボにつなげやすくなり無双できます。
開発の方はひとまずキャラが動かせて、弾を撃てる状態にしました。まだまだこれからという気がします。気がついたのが、Hammerwatchでは、たいていの敵に接触してもダメージとならず、攻撃モーションをした後に攻撃します。あと8方向のどちらを向いているかが絵から分かります。この作りにするには画像リソースの作成が大変なので、今回は敵に攻撃モーションを持たせず、敵に接触でダメージ・ノックバック、というシステムにしようとかと考えています。
Hammerwatchのシステム分析。敵編
敵そのものに攻撃判定はなく、攻撃モーション後、攻撃判定が発生します。おそらく近接攻撃のキャラクターでも戦いやすくするため、また敵に囲まれても完全にハマり状態にはならないため、の仕様であると考えました。
イモ虫の毒弾ですが、一定時間ダメージを喰らい続けるので、トータルのダメージ量が大きめです。地中針はプレイヤーの位置を確実に狙って攻撃するため、移動しながら戦う必要があります。そのためパラディンやウォーロックだと戦いづらいです。
また敵を発生させる敵もいます。彼ら自身は特に移動も攻撃もしません
分類 | 名称 | 移動速度 | 耐久力 | 攻撃方法 | 備考 |
通常敵 | コウモリ1 | 中程度 | 低い | 攻撃モーション後、前方に攻撃判定発生 | |
通常敵 | コウモリ2 | 若干速い | 低い | 攻撃モーション後、前方に攻撃判定発生 | |
通常敵 | 昆虫1 | 中程度 | 低い | 攻撃モーション後、前方に攻撃判定発生 | |
通常敵 | 昆虫2 | 中程度 | 少し低い | 攻撃モーション後、前方に攻撃判定発生 | |
通常敵 | 昆虫3 | 中程度 | 中程度 | 攻撃モーション後、前方に攻撃判定発生 | |
通常敵 | 昆虫4 | 中程度 | 高い | 攻撃モーション後、前方に攻撃判定発生 | 周囲の昆虫の攻撃力を上昇させる |
通常敵 | イモ虫1 | 遅い | 少し低い | 攻撃モーション後、プレイヤーめがけて弾を撃つ | |
通常敵 | イモ虫2 | 遅い | 中程度 | 攻撃モーション後、プレイヤーめがけて弾を撃つ | 当たると毒状態になる |
通常敵 | イモ虫3 | 遅い | 中程度 | 攻撃モーション後、プレイヤーめがけて2way弾を撃つ | 当たると毒状態になる |
通常敵 | イモ虫4 | 遅い | 高い | 攻撃モーション後、プレイヤーめがけて3way弾を撃つ | 当たると毒状態になる |
通常敵 | 地中針 | - | 中程度 | 一定間隔でプレイヤーの位置にダメージ針を出現させる | 離れると攻撃してこなくなる |
母体 | 巨大イモ虫 | - | 中程度 | 一定間隔でイモ虫を発生させる | |
母体 | 地面のひび割れ | - | 中程度 | 一定間隔で昆虫を発生させる | |
母体 | 岩 | - | 中程度 | 一定間隔でコウモリを発生させる |
Hammerwatchのシステム分析。アイテム編。
アイテムは最初から配置されていたり、箱やツボ、宝箱から出現します。敵からもまれにドロップします。
箱を壊すと、たまに爆弾が出現することがあります。結構ダメージが大きく、ウィザードの初期状態では即死します。
Hammerwatchのシステム分析。ギミック編。
基本わらわら湧いてくる敵を倒してアイテム回収するだけなのですが、探索要素もあります。パズル要素も若干あります。
探索要素としては、キーによる扉のアンロック、スイッチによる壁や即死ギミックの解除、壁すり抜けと破壊可能な壁、というところでしょうか。
分類 | ギミック名 | 説明 |
キー | キー(銅) | 銅の扉のアンロック |
キー | キー(銀) | 銀の扉のアンロック |
キー | キー(金) | 金の扉のアンロック |
スイッチ | スイッチ | 扉や壁の開放。即死ギミックの解除。複数のスイッチを押すことで扉が開放されることもあります |
壁 | すり抜け壁 | 見た目は当たるけど実は通れる壁 |
壁 | 破壊可能壁 | 見た目に少しヒビが入っていて、攻撃することで破壊可能 |
トゲ | トゲ | 接触すると即死。スイッチにより解除可能 |
複数のスイッチを押して、トゲをうまく解除するパズルもありました。なおトゲは即死します。Hammerwatchは残機制なので死にすぎるとゲームオーバーとなります。
Hammerwatchのシステム分析。キャラクター編。
キャラクターは4種類の職業から選択できます。
職業 | タイプ | 通常攻撃 | 特殊スキル | 耐久力 | 備考 |
パラディン | 近接攻撃専用 | 近接攻撃 | ダッシュ攻撃 | 高め | 正面であれば敵の弾を防ぐことができる |
ウィザード | 中距離攻撃 | 中距離+範囲 | 前方±45度方向への中距離攻撃 | とても低い | |
レンジャー | 長距離攻撃 | 長距離 | 設置すると一定時間で爆発して範囲攻撃 | 若干低め | |
ウォーロック | 近接+長距離攻撃 | 近距離攻撃。当たると範囲攻撃 | 長距離の弾。当たると範囲攻撃 | 若干高め |
ショップでコンボスキルを購入すると、10コンボ達成時にスピードアップ+全方位攻撃のボーナスがつきます。
パラディンは多少攻撃を受けても大丈夫なのですが、基本的に近接攻撃のみなので敵の攻撃を受けやすいです。 ウィザードはうまくいくと敵をガンガン倒せますが、耐久力が低いため死にやすく結構シビアです。 レンジャーは通常攻撃が長距離なので、手数を稼げてとても有利に進められます。爆弾でコンボを稼いで無双することもできます。 ウォーロックはちょっと特殊能力タイプ。範囲攻撃があるのでコンボが稼げそうです。
どれも能力にメリハリがあり、キャラクタごとにゲームプレイに変化が顕著に現れます。ただどれを選んでも、迂闊に敵の巣に突っ込むと即死するのは変わりません。全体的に、わらわら出てくる数に対して火力が低めです。基本はちまちま倒しつつ、ときにはコンボを駆使して敵を一掃する、というプレイスタイルが良さそうです。
個人的な印象としてはレンジャーが圧倒的に強い印象を受けました。ただボスまで進めていないので、ボスのような耐久力の高い敵には苦戦するかもしれません。
ようやく「ヤルハラのおもち」の開発が終わったので、次回作に着手しています。次は見下ろし型のアクション・シューティングを作ろうと思っています。
参考にしているゲームは「Hammerwatch」( http://www.gamespark.jp/article/2013/09/18/43509.html )です。
この手のゲームで馴染みのあるのは「ゼルダの伝説」ですが、こちらは何も考えずひたすらボタン連打して敵を倒し、アイテムを回収するタイプのゲームです。探索して新しいアイテムやスキルを入手してパズルを解いていくタイプのゲームとは若干趣きが異なります。例としてはスマッシュTV( http://www.youtube.com/watch?v=4AapB7dW3HA )が近いです。わらわら湧いてくる敵を直感で倒して爽快感を得るゲームです。
実際にプレイしてみたのですが、小さい敵がわらわら湧いてくる感がとてもよく出ています。うっかり敵の巣に突っ込みすぎたり、敵を倒し損なうと、一瞬で囲まれ、あっという間にゲームオーバーです。この辺のシビアな難易度は海外ゲーならではですね。でも難しいぶん、ピンチを切り抜けた後の爽快感が半端ないです。
攻略法としては、敵は近づいたり攻撃すると動き出すので、少しずつ倒しながら進めていくというのが基本的な戦略となります。ただその方法だと攻略に時間がかかってしまうので、ときには敵の巣に突っ込み、特殊スキルを駆使してまとめて敵を倒して効率的にプレイします。さらに10コンボすると一定時間プレイヤーの能力がアップするので、うまくいくとごっそり敵を倒せます。なおスキルやステータスアップは回収したお金アイテムで購入することができます。なお特殊スキルはゲージを消費し、一定時間で回復します。
結構難しくてまだボスまで進めていないのですが、プレイを進めてくことでだいぶイメージが掴めてきたので、そろそろ基本システムの設計を始めようかなと思います。
作業タスクをチケットに洗い出ししました。
今回、ダンジョンエクスプローラーやスマッシュTVを参考に作ろうと思うのですが、東方ではすでに「東方スマッシュ」や「東方エクスプローラー」といったゲームが存在しているのですね…
[PageInfo]
LastUpdate: 2014-01-10 00:21:02, ModifiedBy: syun77
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:admins, delete/config:admins