ゲーム開発は何から始めますか?
入力、ステータスの更新、レンダリングによるゲームループの理解
本ブログ作成文は、講義を目指して製作されました。 また、作成された文章の情報も間違っている可能性がありますので、ご注意ください。
ゲーム開発はグラフィックを描くことだけを意味しません。 プレイヤーの入力を受けて、ゲームの状態を変え、その結果を画面と音に伝える全体の過程を作ることです。
ゲームは状態を繰り返し更新する
キャラクターの位置、体力、スコア、現在のステージはすべてゲームの状態だ。 ゲームは実行中にこの状態を更新し続けます。
入力を読む。
ゲーム状態を更新する。
現在の状態を画面に描画します。
このプロセスをもう一度繰り返します。
この繰り返し構造をゲームループと呼ぶ。 エンジンを使用すると、ループ自体はエンジンによって管理されますが、開発者は各段階で何が起こるのかを書きます。
while (isRunning)
{
ProcessInput();
UpdateGame(deltaTime);
RenderGame();
}
フレームレートと時間は異なる
コンピュータごとに1秒間実行できるフレーム数が異なる。 キャラクターをフレームごとに1だけ動かすと30FPSと144FPSで速度が変わる。
だから移動量は前のフレームから流れた時間ですdeltaTimeを掛けます。
position += direction * speed * deltaTime;
これにより、フレーム数が異なっても毎秒移動速度を同様に維持することができる。 物理計算のように一定の間隔が重要なシステムは、一定の時間間隔で別々に更新することもある。
ルールと表現を分離する
プレイヤーが攻撃したときのダメージを計算するのはゲームルールに近いです。 剣を振り回すアニメーションと効果音を再生することは表現に近い。
両方を1つのコードに入れると、新しい武器やネットワーク機能を追加する際に修正範囲が大きくなります。 データ、ルール、画面表現を分けると、同じルールを他のグラフィックやUIでも使用できる。
最初から巨大なゲームを作る必要はない。 1つの入力、1つの移動オブジェクト、1つの明確な成功条件を持つ小さなループを完成させることが、ゲーム開発の最良の始まりです。