自作ゲームの大福島

プログラムの使えない素人がCF2.5(インディゲームクリエーター)を使ってゲームを作ってみるブログです

スポンサードリンク

自機狙い弾の作り方

ふと気づいたらこのブログを見ていた嫁(ゲームやプログラミングに一切興味無し)が、CF2.5を「シトラスック2.5」と読んでいました。

一体何を食って育ってきたらそう読めるようになるのか…

 

というわけで、あいも変わらずチマチマと敵性MOBを作りながら、

寄り道しております。

ですが寄り道のお陰で幾つか共有出来る技術が出て来ましたので紹介を。

 

先ずは自機狙い弾でございます。

 

 

自機狙い弾のイベント設定

f:id:vobo:20170722223014g:plain

こういう奴ですね。

敵MOBがプレーヤーのいる方向に弾を撃ってくる動作です。

(ホーミングではなく、発射時に一度だけプレーヤーのいる方向を計算して撃ってくる動作)

先にお断りをしておくと、この内容は、某有名講座で紹介されていた方法に自分なりの改変を加え、解説をしたものとなります。

それでは具体的なイベント解説です。

 

f:id:vobo:20170722224758g:plain

フレーム画面はこんな感じです。

0.5秒毎に、敵からプレーヤー(猫)に向かって弾が発射される、というイベントを組んであります。

(この条件は何でも自由に設定しましょう!)

 

f:id:vobo:20170722225146j:plain

「発射」ではなく、「オブジェクトを作成」を選びましょう。

f:id:vobo:20170722225452p:plain

で、これが作成された弾自体がプレーヤーの方向へ飛んでくるイベントになります。

前提として、

変数(移動速度(半径))=30を代入しています。

内部フラグ0=弾オブジェクトが敵の位置に作成されたらフラグが無効のイベントが実行。その直後にフラグが有効に切り替わり、以降、「フラグ0が有効」で定義されたイベントが実行され続ける、という構造になっています。

 

それでは弾の移動アルゴリズムの解説です。

ざっくり言うと、自機狙いの動作は「三角関数」の公式を用いて動かします。

必要な予備知識は、「sin=サイン」「cos=コサイン」「atan=アークタンジェント」の3つです。

*この3つは当ブログでも、前記事で解説しておりますし、他所サイト様でも分かりやすい解説が豊富にありますので、未見の方は予習される事をお勧めします!

CF2.5 三角関数を使った自力!円運動講座 ② - 自作ゲームの大福島

 

f:id:vobo:20170722230405j:plain

変数(次のX座標)、変数(次のY座標)は、

弾が1フレーム後にいるはずの座標を格納します。

弾が敵オブジェクトの位置に作成されたばかりの時ですから、作成された瞬間の弾の位置を記録させてやりましょう。

 

 次の行では、

変数(主人公のいる角度)に、アークタンジェント関数を使って敵とプレーヤーとの角度を代入してやります。

 角度を求め終わったら、弾の初期設定は完了です。

内部フラグ0を有効に切り替えて、移動イベントに移行します。

 

f:id:vobo:20170722231152j:plain

 後半のイベントでは、最初に設定した移動速度と角度を使って、フレーム毎にX座標、Y座標の位置を割り出します。

f:id:vobo:20170722232020g:plain

イメージ図です。(わかりやす…いのか?)

三角形の斜辺が1フレーム毎に30ピクセル分進みます、

それに対する横と縦の比率がそれぞれCOS(横)、SIN(縦)でしたね。

ですので、1フレーム後に弾があるべき座標はそれぞれ、

X軸=移動速度(=30)×cos

Y軸=移動速度(=30)×sin としてやる事で、実際の移動距離が出せますね!

後はこれを現在の弾のX軸、Y軸の座標に加算してあげる事で、1フレーム後にあるべき座標に移動し続ける事が出来るわけです。

これで自機狙い弾の完成です。

一つ雛形を作っておけば、クローンを使って様々なデザインに変更して活用出来ると思います。

また、プレーヤーのいる方向に向かって突撃してくる敵、などにも応用出来ますね。

 

 

ちなみに、プレーヤーのいる角度を求めるイベントを「常に実行」してやると、

f:id:vobo:20170722233309j:plain

f:id:vobo:20170722233052g:plain

死ぬまで追い続ける永久ホーミング弾が完成します。

 

何これコワイ

CF2.5 三角関数を使った自力!円運動講座 ④

さあ今回でようやくこの講座も最終回で御座います。

今回は、円運動イベントの発展系のご紹介です。

是非実際に組んでみたって下さい

 

 

左回りの円運動

 

f:id:vobo:20170717223038g:plain

これは簡単。角度θに回転速度を加算ではなく減算させてやります。

以上!

 

 

円運動の中心点を動かす処理

これも理屈が分かれば簡単ですね!

f:id:vobo:20170717223451g:plain

ポイントは二つです。

①中心点の座標計算を「常に実行」で常時計算する事

②中心点オブジェクトに動作設定をしてやる事

 

今回は、中心点オブジェクトが、マウスカーソルの位置に同期するように設定しています。つまり、マウスカーソルを中心に円運動が発生するようになります。

これをプレーヤーオブジェクトに同期させてやれば、シューティングゲームのオプションのような動きが実現できますね!

 

円運動の半径を自動計算する処理

まずどんな処理なのか、という事ですが、

f:id:vobo:20170717224919g:plain

適当な座標にドラッグした回転オブジェクトと中心点の距離を自動計算し、円の半径を自動で計算するという処理になります。

今までのプログラムでは常に半径を前もって代入しなくてはなりませんでしたが、この処理を使うと、より視覚的に半径を設定してやる事が出来ます。

ではイベント内容を見てみます。

f:id:vobo:20170717225243g:plain

 

 

 

…何いってんだこいつ?

          /     \
     /   ⌒  ⌒ \   
   /    ()  () \
    |   、" ゙)(__人__)"  )    ___________
   \      。` ⌒゚:j´ ,/ j゙~~| | |             |
__/          \  |__| | |             |
| | /   ,              \n||  | |             |
| | /   /         r.  ( こ) | |             |
| | | ⌒ ーnnn        |\ (⊆ソ .|_|___________|
 ̄ \__、("二) ̄ ̄ ̄ ̄ ̄l二二l二二  _|_|__|_

 

となった方もいらっしゃるかもしれません…

ですが、寧ろこのイベントの為にこの回を作ったといっても過言ではありません!

しばし辛抱です。

 

まず、このイベントの為に二つの変数を追加しました。

 

・変数(アークタンジェントθ)…中心点から回転オブジェクトを結ぶ直線への角度を代入します

・変数(cosθ)…円の角度θに対するcosの数字を代入します。

 

次に、このイベントを理解する為に、次の二つのポイントを抑えましょう

 

・斜辺θの長さを計算する時は、底辺÷cosθで計算出来る

*底辺の長さ=cosθ×半径(斜辺の長さ) で計算しましたね!

→斜辺の長さ=底辺の長さ÷cosθ   という、単純な方程式の考え方です

 

・アークタンジェントθとは、底辺の長さと縦の長さから、角度を求める関数です

 

f:id:vobo:20170718073447g:plain

図で見ると、赤の線の長さ(回転オブジェクトと中心点のY軸ピクセル差異)と緑の線の長さ(回転オブジェクトと中心点のX軸ピクセル差異)を渡してやる事で、紫の線(円の半径)に生じる角度を計算してくれます。

 

X軸、Y軸それぞれの座標距離を求めるには、片方から片方のX位置、Y位置を引いてやればOKです。

f:id:vobo:20170718073935g:plain

「特別」→「サインおよびコサイン」→「y/xのアークタンジェント」を選びましょう。

f:id:vobo:20170718074219g:plain

こんな感じで、Y軸入力部分、X軸入力部分それぞれに、回転オブジェクトのY座標から中心点オブジェクトのY座標を減算してください。

 こうする事で、イベント行1行目で変数(アークタンジェントθ)には、中心点とオブジェクトの角度が入力された状態になりました。

 

次にイベント2行目を見てみましょう

ここでは後のイベントを分かりやすくする為、一度コサインの値を変数に格納しています。

コサインを計算する為には、角度が必要でしたね。今回必要な角度は、変数(アークタンジェントθ)に格納してありますから、

cos(変数(アークタンジェントθ) )と入力してやる事で、角度θのCOS(斜辺に対する長さの比率)が計算出来ました!

3行目でいよいよ斜辺の長さを計算します。

f:id:vobo:20170717225243g:plain

 3行目では、先述の、「X軸の距離=底辺の長さ」を「cosθ(比率)」で割り算してやる事で、斜辺の長さを計算。

その結果を変数(円の半径(斜辺の長さ) )に代入しています。

さあ、これでようやく、適当に設置したオブジェクトと中心点の角度、半径を自動計算出来ました。後は通常通りの処理が行われているだけです。

f:id:vobo:20170718075636g:plain

動いた!ハッピー!!

 

という事で、見た目の距離を半径として円を描くイベントを組む事が出来ました。

半径が長くなればなる程見た目の回転スピードは速くなりますので、速度の調整は必要ですが、この組み方をすれば、

「半径の異なる同心円を描くオブジェクトが大量に必要」というシチュエーションに役立つ。かもしれない…

 

 

何よりも、今回ご説明したアークタンジェント(愛称、あーたん♪)関数は、自機狙い弾や、プレーヤーのいる方向に回転し続けるオブジェクト、などのイベントに非常に応用が利く関数です。

少しでも理解の助けになっていれば幸いです。

 

 

 

 

長くなりましたが、4回に渡る三角関数講座もようやく終了です。

拙い説明だったと思いますが、最後まで読んでくださった方はありがとう御座います。

 …ところで、一つ気づきませんでしたか?

 

ちょっとだけ三角関数の事を好きになっていた事に

f:id:vobo:20170718082302g:plain

だがタンジェント。お前は駄目だ。

CF2.5 三角関数を使った自力!円運動講座 ③

さあ、今回はCF2.5での具体的なイベント作成の解説です。

f:id:vobo:20170715012923g:plain

f:id:vobo:20170715013545g:plain

使用するオブジェクト変数と意味は以下の通りです。

 

・中心点のX座標…その名の通り円運動の中心となるX座標を定義します。

・中心点のY座標…円運動の中心となるY座標を定義します。

・円の半径(斜辺の長さ)…中心点から回転オブジェクトまでの距離を定義します。

例えば100を代入すれば、半径100ピクセルの等心円を描きます

・角度θ…中心点から回転オブジェクトまでの直線(半径)を繋ぐ角度です。

0からスタートし、360°まで増加させます

・回転速度…1フレームに計算する角度の数です。例えば10を代入した場合、1フレーム目は0°の位置、2フレーム目は10°の時のオブジェクトの座標を計算します。

当然ですが、この数字を上げる程、見た目の回転の早くなります。

 

ではイベント解説です。

前提として、変数(円の半径)に100、変数(回転速度)に1を代入します。

 

「フレームが開始」

・まずは円運動の中心となる座標を定義します。その為に変数(中心点のX(Y)座標)に、中心点オブジェクトの位置を代入します。

 

「常に実行」

・ここで半径に対するsin、cosを使って回転オブジェクトの座標を計算していきます。

前回の講座内容より、半径(斜辺の長さ)にcosをかけた物がオブジェクトのX座標、

半径(斜辺の長さ)にsinをかけた物がオブジェクトのY座標であるという事が分かりましたので、1フレーム毎に位置を変更していくわけです。

ちなみに、中心点の○座標に移動距離を加算する形をとっていますが、この計算を入れないと、

 

f:id:vobo:20170717124830g:plain

このように、CF2.5の画面左上端を中心とした円運動に変更されてしまいますので注意が必要です。

CF2.5では左上端が(Y,X)=(0,0)だからです。

 

 そして最後に、次のフレームで計算する角度を変更してやるイベントを組みます。

今回の場合は、

変数(角度θ)に変数(回転速度=5)を追加してやります。

こうする事で、毎フレーム5°ずつ回転するオブジェクトの完成です!

いかがでしょう。動きましたでしょうか?

それでは角度の計算に関して補足です。

 

角度θを360°周期で0に戻すには?

このプログラムでは、問題なく円運動は出来るものの、角度θの変数を見てみると、

360°を超えても400~500と無限に増えていってしまっているのが分かると思います。

永遠に加算し続けるわけですからそらそうですよね。

これをきっちり360°に到達したら再び0°に戻すには以下のように組んで見て下さい。

f:id:vobo:20170717171423g:plain

f:id:vobo:20170717171629g:plain

ポイントは『mod』という関数です。

数字①mod数字② と記述する事で、「数字①を数字②で割った時の余りを返す」関数です。

 重要なのは、

数字①より数字②が大きい場合は計算されない

 という点です。

つまり今回の場合は、角度θが0からスタートしますから、

 当然0を360で割る事が出来ず、mod360の部分は無視され、回転速度5が加算されるのみとなります。

で、次のフレームでどう計算されるかというと、

『5mod360+5』という公式になります。

今回も5を360で割れませんから、無視。『5+5』というシンプルな公式となり、次のフレームでの角度θの値は10となるわけです。

もうお察しの通り、360°に達するまで、5ずつ角度が増えていき、円運動が一周する360に達した瞬間、360÷360=余り0となり、再び0°からの計算に戻してくれます。

 

このmod関数、地味に便利です!

応用として、例えばタイマーを用いずに、変数で~秒毎に△△する、というイベントを組むときに、

 

・常に実行  変数Aを 『変数Amod100+1』 に変更

・変数Aが100になった時  ○○○を発射

 

このような形にしてやると、たった2行で変数タイマーの完成です!!

わざわざ「変数Aが100になったらイベントを行って、変数Aを一旦0に戻して…」

とまだるっこしい計算をする必要が無くなります。

神ってる!mod先輩神ってる!!

 

 

長くなりましたが、以上が円運動イベントの基本形の解説で御座いました。

まだ気力があれば、次回は円運動の発展系イベントの組み方解説をやってみようと思います。

CF2.5 三角関数を使った自力!円運動講座 ②

 

初めに。

この講座はあくまでCF2.5で三角関数を扱う際に理解を深める為の物で御座います。

数学的に正しい情報では間違っても御座いませんので、正式な三角関数の知識が必要な方は間違っても当講座を参照されないようにご注意下さいませ。

 

 

 

前回の続きです。

前回で、円運動には三角形の角度と辺の長さを計算してやる必要があるよ、という事まで説明致しました。

今回は、本題である三角関数を使って実際に座標計算してやるところまで行こうと思いますよ!

図で確認しておきましょう。

f:id:vobo:20170714115058p:plain

オブジェクトを既成の動作を使わず移動させる為には、常に「移動先の座標」を計算してやる事が必要になるわけですが、円運動に於いては、

中心点を起点とした三角形の、底辺の長さがX座標

縦に伸びる辺の長さがY座標

と言えます。

 たとえば、上の図の中心点が(Y、X)=(0,0)だとして、底辺が10ピクセル、縦の辺が6ピクセルだとしたら、オブジェクトの座標は(-6、-10)の位置にあるという事です。

で、今の三角形の中心の角度が220°だと仮定しますと、次のフレームで221°になった時、底辺、縦辺の長さがどうなるか、を計算していくわけですね。

 

ここでいよいよ三角関数が出てきます。

f:id:vobo:20170714123437p:plain

懐かしいこれです。超ざっくり説明しますと、

中心角がθ°だった際の斜辺の長さが「1」だった時の、縦の辺の長さ比率=sinθ

底辺の長さ比率=cosθ

 

 例えば、斜辺の長さが10ピクセル。角度θが40°だった時、斜辺に対する比率である

sinθ=0.4 cosθ=0.9 といった感じに、斜辺に対する比率を返すのがCF2.5における三角関数です。(数字は全く正しくありませんので悪しからず)

なので実際に数字を代入してみると、以下のようになりますね。

f:id:vobo:20170715012351p:plain

比率から具体的な数字を出す為には、角度θ(40°)の中心座標が0.0だとすると、

sinθ(比率)×斜辺=0.4×10=4→Y座標は-4

cosθ(比率)×斜辺=0.9×10=9→X座標はー9

という風に、具体的な座標を求める事が出来るわけです。

 

 

では、具体的にCF2.5で円動作を実現する為に、どんなイベントが必要なのかを見てみます。 

f:id:vobo:20170715012923g:plain

上記画像で、■を中心として、緑のオブジェクトが一定速度で回転し続けるイベントをシンプルな形で組んだものが以下になります。

f:id:vobo:20170715013545g:plain

 こいつを実行すると、一定速度で■の周りをオブジェクトが右回りに回転し続ける動作の完成です。もうこの段階で全てを理解された方もいらっしゃると思います。

次回は、イベントの詳細な解説と、発展系(中心点を自由に動かしたり、逆周りの動作をさせたり、角度の変数を操作したり…といったイベント)の解説を出来れば、と思います。

 

サクサク解説まで完了出来ればいいのですが、思っていた以上に時間がかかりますね…

それではまた近い内に更新出来るように致します!

 

CF2.5 三角関数を使った自力!円運動講座

おまえと…おまえとだけは戦いたくなかった…。

 

そう。

 

三角関数

 

 

*本文下部に、エクステンション無し、三角関数を用いた、「円動作」の作り方解説が御座います。面倒な方は下段までスクロールして下さい*

 

 

 

先日、あいも変わらず敵AIを作成していた時の事ですが、

自機狙いの弾を発射する敵MOBを作成する際、今までなら「オブジェクトの方向に発射」という便利な既成イベントを使用していたのですが、ふっ と思いつきで

「『オブジェクトを発射』を使用するイベントはバグや制約が多いと聞く。なら自作でイベントを組んでみるか…」

と思い立ってしまったのが運のつき。

そこから、深くて長い、おまけに暗い「三角関数」のトンネルに入ってしまったのです。…

 

当然のごとく組み方を思いつかなかった私は、某サイトの自機狙い弾の作成講座を参考に、とりあえず教えられるがまま、イベント自体は組めるようになりました。

そこで、このような動作は三角関数の使用が必要という事が判明。

(講座の作成主様はどうやらその講座へのリンク、拡散を望んではおられないようですので、当サイトからのリンクや、タイトル名の公表は控えさせて頂きます。ごめんなさい)

 

 

ですが、ヘタレのくせに負けず嫌いなワタクシは、気の迷いから、「どうせやるなら

三角関数をこの機にマスターしたろやないかい!」と考えてしまったわけですね。

どうすんだ。高校時代数学の成績5段階中1だったくせに。テストで0点を2回とったくせに。

 

というわけで、無い頭を振り絞り、様々な先人の知恵をお借りし(開発言語での講座も参考にしつつ)、何とか自分自身の頭で最低限理解出来るようになりましたので、同じ悩みを持つCF2.5ユーザーの方に共有です。

今回は「円運動」です。ベクター動作で簡単に出来るじゃん。というのは無しで。

自機狙い弾は割りと講座が有名なので、知っている方も多いだろう、という事で

円動作の解説で御座います。

 

 

CF2.5での円運動の作り方

f:id:vobo:20170714025449p:plain

ここで言う円運動とは、『ある座標を中心に、360°オブジェクトが回転する動作』 を指します。この『360°』というのがポイントです。

f:id:vobo:20170714030143p:plain

少し見方を変えてみると、円運動とは、「オブジェクトがくっついた○○ピクセル分の長さの棒が、360°回転する動作」と言えます。

 更に言い換えれば、棒の長さ=円の半径である、と言えますね。

 次に、「角度」という言葉が出てきましたので、円運動における角度を図に表してみます。

 

f:id:vobo:20170714032453p:plain

 勿論左右がX軸、上下がY軸。線が交わる点が、円運動の中心座標と考えて下さい。

f:id:vobo:20170714033352p:plain

続いて、先ほどの画像に、円運動するオブジェクトと、半径、角度の関係を重ねてみました。

……これって何かで見たような

 

f:id:vobo:20170714033744p:plain

あっっ!!(察し)

 

 

そうです。

これって、数学の授業で見た、あの忌まわしき

直角三角形

になってるんですね。

つまり、円運動というのは

f:id:vobo:20170714034657p:plain

『直角三角形の斜辺を半径として、オブジェクトのXY座標が、360°移動する』

というプログラムになるわけです。

f:id:vobo:20170714035718p:plain

こんな感じで動いていくわけですね。

つまり、オブジェクトを円運動させるためには

 

直角三角形の辺の長さを用いてオブジェクトのXY座標を求め続ける必要があるわけです。

 

…ああ、長い。

次回は実際のイベント講座まで進めたいと思います。

続く!と思います…

 

自作タイトルとコンセプトとか

さてまだまだ自作ゲー製作は目下敵AIを作成中です。

知識は以前よりも増えたつもりではありますが、やっぱり動作部分で難航しております…。

いや本当、プロの作った既成のゲームって良く出来てんな、と頻繁に思います。。。

 

今回の作成中ゲームのタイトルは

『ReCambria』

でいこうと考えております。

Cambria=カンブリア紀 カンブリア大爆発、のカンブリアです。

意味は文法無視で、「二発目のカンブリア紀だよ!」的な意味を持たせています。

うっすい知識で平たく言えば、カンブリア大爆発とは古代 、現代生物の始祖となる種が爆発的に増えた(特に変わった見た目の生き物が)時代を意味します。

不思議生物好きとしては非常にロマン溢れる時代です。

 

ゲームのコンセプトは『多様性』

 

タイトルまんま、ですが、

人類や既存の生物がいなくなった後の世界で、多種多様な生物が一斉に進化、生存競争を繰り広げる中を、多様な生物の一匹が冒険するというストーリーを考えています。

(今回は主人公は猫でなく)

若干最近プレイしたゲームに影響を受けている気がしますが、気のせいです…

 

 

とにかく出現するクリーチャー達に姿形、習性に多様性をもたせる事で、サファリパークを散歩するような、レベルデザインの妙を楽しむのとはまた別の面白みを出せたらいいなあと思っております。

草食動物、肉食動物、植物、多種多様な生物が相互に関係しあう様を描きたい…と思っています。

まあ、あんまり高度な目標を持ちすぎるとエターナりますので、とりあえず、「動くクリーチャーを一杯作る!」というシンプルな目標を立てています。

数こなす事で、勉強にもなりますしね。

  

f:id:vobo:20170711003111g:plain

 という事で、適当なグラフィックを当てて毎日AI作成。

出来る事も、学べた知識も限られてるんですが、少しでも生き物っぽく動くよう試行錯誤しております。

その進度たるや亀の如し。

元から絵を描くのは好きでしたので、グラフィックから入ると確実に自己満足してしまうのが分かっていますから、今はシステム作成のみに集中…辛い。

 まだまだ道のりは長いですが、少しずつ作り上げていこうと思います。

 

steamサマーセール2017の収穫

steamのサマーセールが終わってしまいましたね。

ここ数年は、ダクソやウィッチャー等AAAタイトルは幾らであろうが出たら即定価買い、セール期間に比較的小粒な作品(主にインディー系)をチマチマと購入するようになってきました。

 

で、今年のサマーセールで購入したのが、

 


store.steampowered.com

store.steampowered.com

この3本を購入。3本とも半額まで値下げされていましたので、3本合わせて2000円前後でした。

やっ…安すぎ…。

特に下2本はかなり有名な作品なのでプレイ済みの方も多いのではないでしょうか。

ジャンルとしてはいずれも2Dプラットフォームアクション。(the aquatic adventureはシューティングかな?)

上二つが探索型アクション。risk of rainが横スクタイプのローグライク、といった所でしょうか。

 

いずれも並行してプレイしつつ楽しませてもらっていますが、中でもやっぱり「ori and blind forest」(日本語版は『オリとくらやみの森』)のグラフィックが圧巻ですね!!

2Dタイプのゲームはいつも自作ゲーム用に何か参考になる物を探してしまうのですが、

これに関してはレベルが高過ぎる為、全く参考になりません…否、参考に出来る腕が無いというべきなのか…

ゲームとしての質は勿論、あのグラフィック、流れるような映像美を体験出来ただけでも買った意義はあったと思う!!

私のような重度グラ厨の方には是非お勧め!

 

ちなみに『the aquatic adventure』はあまり日本語情報も無く、ご存知ない方も多いと思いますが、全方向スクロールタイプのシューティング。かつ、ステージ制ではなく、なおかつ比較的自由に進行を決められる探索型という珍しいタイプのゲームです。

全世界が水没し、滅亡した後の世界を冒険する、これまた廃墟祭りのゲームです。

(どんだけ好きなんだ俺)

巨大なお魚さんやタコさんとガチガチのバトルを繰り広げます。

グラフィックは若干のチープ感がありつつも、演出には目を見張る物があったり。

何よりも「ああ、作者がやりたい事、好きな物全部突っ込んでるなあ」という感じが結構好き。

海中の廃墟に、「マクナルド」を発見したりしてテンションが上がりました(笑)

今日現在で英語版しかありません。また、ゲーム中には結構な量のテキストが出てきますので、(読めなくてもクリアには影響無し。多分)万人にはお勧め出来ませんが、独特な雰囲気のゲームが好きな方は購入してみて損はないと思います!

 

ただし、「RAINWORLD」に引けをとらない超絶鬼畜難易度の為、その点は注意が必要です…。ああ良かった。魚介類が人間よりも小さくて。と思える一作。

 

f:id:vobo:20170710222148g:plain

 

 

進捗

f:id:vobo:20170708005913g:plain

今現在のゲーム画面です。(色々な要素が仮)

以前の記事に挙げた、探索型アクションに必要と思っている要素の8割は実装を終えたので、現在は背景などのグラフィックを準備しつつ、仮の画像を使って敵AIを作る作業です。

 

とりあえず先人の技術を参考に自力で実装出来た要素としては

・セーブ&ロードシステム(ファイルは一個のみ)

・MAP画面、アイテム画面

・PMOでのハシゴ昇降、壁ジャンプ動作

・ファストトラベル(セーブポイントから他セーブポイントへ)機能

・キーコンフィグ機能(エクステンション無し、ゲームパッド対応) 

 

といった所です。

と言っても先ずは探索型アクションの雛形を作りたい、という思いがありましたので、演出等は殆どなく、あくまで機能のみの実装に留まっております。

お陰で、荒削りではあるものの、最低限ゲームとして機能はするかな…という所までは何とか来ました。

な…長かった…

 

f:id:vobo:20170708013009g:plain

で、こいつが作成途中の敵AIイベントです。

前作同様、敵の動きに関してはオブジェクトイベントに全て書き込み、

オブジェクト単独でコピペが簡単に出来るようにしています。

 

オブジェクトイベントには、

・オブジェクトグループが使えない

・イベントリストエディタが使えない

など、結構嫌な制約も多いのですが、やはりアプリケーションを跨いで簡単にコピペ出来るというのは大きな利点だと思っています。

素晴らしい動きをするAIをオブジェクトイベントで完結させる事が出来れば、今後他の作品にも簡単に使いまわし出来ますし、一つの財産と言えますよね!

まあそんな財産持ってないんですけどね…。

 

という事で本日はこのへんで。

 

 

 

ヌルヌルニャンコの魔界大冒険  rain world レビュー(ネタバレはありません)

今回は、前々回あたりに掲載しました、今年私のハマったゲーム、

『rain world』のレビューです。

 

http://rainworldgame.com/

*公式サイト(海外サイト)のURLです ゲーム画面等は著作権の関係上こちらから

 

 

本作は、家族とハグれてしまった「slug cat」と呼ばれる猫型生物が、弱肉強食の世界でサバイバルしつつ、家族との再会を目指して奇妙な生物で満ち溢れた世界を冒険するというもの。

海外製の作品であり、2017年7月現在、日本語版は存在しません。

ですが、徹底して言語を廃したUIの為、英語が分からなくとも楽しむ事が出来ました。

*厳密にはストーリーを追う為に英語力が必要な場面もあるにはありますが、日本人の方の実況動画等で和訳解説されている為、楽しむ分には問題ありませんでした。

 

タイプとしては、比較的シンプルな2Dドット絵探索型アクションゲームです。

一般的な同型探索ゲームのように、主人公のスキル獲得による探索範囲が広がる要素は無く、プレーヤーの腕と、気合さえあれば、攻略順はほぼ自由です。

 

冒険の舞台は、お好きな人にはたまらない、廃墟に次ぐ廃墟、正に廃墟祭!!

私は好きです。ええ、

 

本作の長所と短所です。

長所

・グラフィック(ドット絵)が繊細で魅力的

・『食物連鎖』システムが新鮮

・アニメーションが豊富で、まるで本当に生きているかのようにヌルヌル動きます

 

短所

レベルデザインが鬼畜すぎ!

・コンティニュー時が冗長だったり、若干テンポが悪い

 

総評

世界観・雰囲気=100点…個人的にドストライクな世界観です

グラフィック =90点…ドットの緻密さは勿論、リアルタイムで変化する空気感の演出は圧巻でした。unityで作られているようですが、

これcf2.5で再現出来るのかなあ…出来る人は出来るんだろうなあ…

没入感    =90点…言語を介さず、プレイする人の想像に全てを任せる感じ。バックストーリーも多くは語られず、想像の余地が多く、

グラフィックの美麗さも相まって、どっぷりと世界に浸れます。

操作性    =60点…キビキビとは動きません。癖が非常に強いです。

この操作性も高難易度の要因になっています。

運ゲー度   =90点…多少はプレイスキルによって緩和されるというのは分かっていますが…また後日の記事に記載しますが、ゲームのシステム上かなり運に左右されます。

親切度    =50点…所謂プレイアビリティです。上述の通り、頻繁に死ぬ前提のゲームデザインの割りにコンティニューが冗長だったりと、快適性は著しく低く感じました。

 

という事で、総じて言える事は、

ポストアポカリプスな世界観や、美麗な廃墟グラフィック、敵性MOB同士が

相互作用しながら食物連鎖を演出するなど、

お好きな方にはたまらないゲームと言えます。

逆に、サクサクと時短プレイしたい方にはお勧め出来ません。

個人的な感想としては、『雰囲気ゲー』の側面が強いと思います。

じっくりと世界観に浸れるゲームだと思いました。

 

さて、操作性やゲーム性では辛口のレビューとなってしまいましたが、世界観は本当に秀逸で、よりプレイしやすさを増した続編を大いに期待出来る一作です!

興味を持たれた方は是非プレイしてみて下さい♪ 

 

 

デバッグは大切(後編)

前回、CF.2.5標準搭載のデバッグ機能をご紹介しましたが、もう一つの方法は

非常に泥臭いやり方で御座います。

*もっといいやり方はあると思うんですけどね。

 

f:id:vobo:20170626014603g:plain

はい、こんな感じでフレーム画面に「静的テキスト」と「カウンタオブジェクト」を組み合わせて表示し、それぞれ確認したい変数にカウンターをセット。

この状態でアプリを実行する事で、標準デバッグよりも高精度のリアルタイムデバッグを行う事が出来ます。

作るのは面倒くさいですが、まとめてコピペすれば簡単に別のフレームに移行出来ますので、汎用性は高いと思います。

 

二つのデバッグ方法の長所・短所

標準デバッグ

長所)

・一度に大量の変数を確認出来る

・簡単に表示が出来る

短所)

・タイミングがズレる為、精度は高くない

・特定の変数のみをコンパクトに表示する事が出来ない

 

自作カウンタデバッグ

長所)

・必要な変数のみを抽出して確認出来る

・フレーム単位の正確な変数変動を確認出来る

グローバル変数、内部フラグ、オブジェクト変数など、母体の違う

 変数を一まとめで確認出来る

短所)

・作るのがシンプルに面倒くさい

 

あくまで私見ですが、アクションゲームを例に出せば、こんな風に使い分けてやると良いと思います。

標準デバッグ

・敵、味方の体力増減や、アイテムを取得した時のフラグON、OFFなど

 比較的ロングスパンでの変数遷移の確認。

自作カウンタデバッグ

・特定のイベントでフリーズしてしまう。

 何となく目星はついているが、瞬間的に発生してしまうバグの調査。

 

にそれぞれ向いている気がします。

特に初級→中級くらいの事をやろうとして、フレーム間、又はアプリケーション間の遷移を繰り返すような処理を組んでいると、信じられないくらいバグリまクリスティですので、どちらを使うにせよ、デバッグは必須だなと思いました。

 

前回猫アクションの時はデバッグの方法を知りませんでしたので、勘のみに頼っていましたが、デバッグに時間を割くようになってから、比較にならないくらい理想に近いイベントが組めるようになってきましたので、まだ使っていない方は是非使ってみて下さい♪

 

 

f:id:vobo:20170626023021g:plain

デバッグ

それは目にみえる地獄。