基本的なゲーム作りの考え方:GDevelopをはじめるために知っておくべきこと

GDevelopの基本コンセプトはシンプルです。ソフトウェアの使用を開始するには、この後の説明をお読みください。もしまだ GDevelop を持っていない場合は 最新バージョンをここからダウンロードして下さい!

座標

GDevelopの画面/シーン上に表示されるもの(オブジェクト)には、X座標とY座標があります。これらの座標は、平面上の水平位置(X軸)と垂直位置(Y軸)に対応しています。

X座標は、左に行くと減少し、右に行くと増加します。Y座標は、下降するにつれて増加し、上昇するにつれて減少します。

何かを移動または回転させるには、目的の角度を度数(0度から360度未満)で指定する必要があります。. 次の図は、GDevelop が回転角度を指定する方法を図解しています。

サインコサインの ような三角関数を使用する場合、角度をラジアンで表す必要があります。(1ラジアン= 180 / PI 度。および 1度= PI / 180ラジアン。PIは円周率のことで、3.114159にほぼ等しい数値です)。

イベントとオブジェクトの理解

ゲームのルールを作成するために使用するイベントは、条件とアクションで構成されます。

ほとんどの条件とアクションはオブジェクトを操作します。オブジェクトとは操作する対象、例えばスプライトやテキストなどです。 条件の部分でオブジェクトに対して影響を判断し、アクションはオブジェクトを操作します。

条件の指定のないアクションは、全てのオブジェクトに影響を与えます。 イベント中で最初にオブジェクトを使う場合、GDevelop はシーン中の指定した全てのオブジェクトの操作をします。 オブジェクトで同じイベントを繰り返したい場合、GDevelop は前回の条件により選択されたオブジェクトに対して適用します。

下記はアプリケーションのロジックの例です。 例えば、このイベントは条件がありません。.”Square”と名付けられた全てのオブジェクトを削除します。

次のイベントは条件があります。”Square”のX座標が100ピクセル未満の場合、”Square”オブジェクトだけを削除します。

やってみよう!🎮次のサンプルをオンラインで実行してみよう: https://editor.gdevelop-app.com/?project=example://object-selection

イベント: 順番は重要です

イベントの順番(順序)は重要です!

一番上にあるイベントが一番最初に実行されます。ゲームが表示されるたびに、イベントは毎回実行されます。 この表示はフレームと呼ばれ、1秒間に60回実行されます。 次の2つの例は、同じではありません

  • 上のイベントブロックでは、座標X: 100. Y: 200 (100;200)の位置に”Square”オブジェクトを作成します。次のイベントで作成されたものをすぐに削除します。“Square”は画面上に表示されません。作成された直後に削除されます。
  • 下のイベントブロックでは、最初に画面から“Square”オブジェクトを削除します。次に、“Square”を座標X: 100, Y: 200 (100;200)の位置に表示します。このイベントではSquareが画面に表示されます。 (次のフレームが削除される前に、すぐにフレームが再作成されます).

フォースを使用したオブジェクトの移動

オブジェクトの移動は、フォースという仕組みで実現できます。フォースはオブジェクトを“押す”ように使われます。

このような場合に使えます:

  • 縦横の座標の移動 (例えば X と Yの ピクセル単位の移動).
  • 極座標 (ベクトルの角度と距離).
  • 減衰力、0と1の間の係数.

毎秒ごとに移動量は分散の値により増加します。1の値は動き続けることを意味します。0の値は直ぐに停止します。途中の値は、徐々に停止する中間の動きを意味しています。。

オブジェクトに追加できるいくつかの動作は、オブジェクト自体を移動します。これにより、フォースを使用する必要がなくなります。 この例は以下を見て下さい。

このオブジェクトを下に向かって動かしましょう。

X/Y 座標に対して、X座標を0、Y座標を150ピクセル移動しなさいと指示します。 または同じ動作を、極座標を使って、90度の角度で150ピクセルの長さを移動しなさいと言い換えることもできます。

オブジェクトを移動する他の方法

物理エンジンやパスファインディングなどの一部の動作は、オブジェクトを単独で移動させる場合があります。この場合、組み込みのフォースシステムを使用せず、使用する拡張機能によって提供されるアクションのみを使用することをお勧めします。

やってみよう! 🎮次のサンプルをオンラインで実行しよう: https://editor.gdevelop-app.com/?project=example://move-object-with-physics

変数

変数にはデータを入れておくことができます。 例えば、変数には数字または文字列を入れておくことができます。メモを入れられる引き出しや箱のように例えることもあります。 文字列や数字形式の各データは変数の中に保存できます。ゲーム中のプレイヤーの残機数やハイスコア、残り銃弾数、倒した敵の数等、全てを変数に入れておけます。変数に数値を格納するのが一般的です。

アクションと条件では、変数のを判定または変更します。

変数はどこに保存されますか? (変数の"スコープ")

変数のスコープは、変数にアクセスできる範囲を決めています。GDevelopでは、3つの変数スコープが利用可能です:

  • Global グローバル変数は全てのゲームシーンからアクセスできます。例えば、これらのプレーヤーのスコアの変数データは、違うレベルやシーンからもアクセスできます。
  • Scene シーン変数は作成されたシーン内でのみアクセスできます。例えばシーン変数はレベルやシーンの残り時間中のみ有効です。
  • Object オブジェクト変数は1つのオブジェクト内でのみ有効です。例えば、ヒーローは、“Health” や “Ammo” の変数を持てます。
変数に関しては次のページも参照して下さい Variables。 変数については沢山使われていますし、多くのチュートリアル中でのサンプルを含めて使用例を見ることができます。
どのように変数が使われているのをチュートリアルビデオで確認したいですか? このチュートリアルをチェックしてみて下さい[https://www.youtube.com/watch?v=SRfpBTgx-PY|Variables explained for Non-programmers]].

最後のフレームからの経過時間 (TimeDelta)

ゲームはイベントを判断し、毎秒数回画面を再描画します。ゲームは、瞬時ににリフレッシュアップデートされます。 これはあなたのコンピューターの性能に依存します。遅いコンピューターは1秒間に25フレームしか描画できませんし、早いコンピューターは60フレーム描画できます。 GDevelop は常にこの値が全てのコンピューターで同じになるように調整しています。 しかし、例えば、数学的な計算や移動の描画により、コンピューターによってはこのスピードが変わってしまいます。

スピードを変更する計算をする場合、 TimeDelta()式 を使って下さい。これは最後のフレームからの秒数を返します。

例えば、次のようにはしないで下さい:

しかし、代わりに次のようにして下さい

  • 前のイベントでは、ゲームが再描画されるたびに、20を加算しています。 (例えば、最大60回/秒) これはおすすめできません。. 変数の増加の速度がコンピュータ間で同じではないようなイベントを使用することは正しくありません。 たとえば、10 秒後に変数の値を予測することはできません。それはゲーム中に描画されるフレーム数によって変わるからです。
  • 後のイベントは正確で信頼性があります。300の数字をTimeDelta() と掛け算しています。この結果、、変数はすべてのコンピュータで同時に増加します。TimeDelta() が秒単位の時間を返すことにより、正確に増加の割合のばらつきを無くすことができます。私達の場合では、変数が秒間300ユニッにまで増えました。 結果10秒間で3000ユニットまで増加しましたが – この時間中にいくつものフレーム数の描画が問題なく行われました。

覚えて下さい 値を継続的に追加していく場合は、TimeDelta() を使って下さい。一度だけ起動されることを意図している場合 (例えば、衝突してオブジェクトを消す場合等) 、TimeDelta を使わず個別の値を使用して下さい- ゲームの速度に依存しない場合などです。

フォース を使ってオブジェクトを動かそうとする場合は、GDevelop が自動的に移動させるので、TimeDelta() を使う必要はありません

全てのオブジェクトに共通の条件やアクション

それぞれのオブジェクトは共通の条件やアクションを持っています ここを参照して下さい.

そして...あなたの知りたいことは全てここにあります

➡️ 次に続きます。 チュートリアル GDvelopを使ってすごいゲームを作る方法!