【はじめに】
道具(#2において)は揃いましたか?では、いよいよ開発区間へ出発進行です!
…と言いたいところですが、その前に一つだけ、絶対に理解しておかなければならない「ゲームプログラミングの鉄則」があります。 それは、普通のアプリ(電卓やExcelなど)とゲームの決定的な違いです。
普通のアプリ: ユーザーが何か入力するまで、じっと待っている。
ゲーム: ユーザーが何もしていなくても、世界は動き続けている。
敵は迫ってくるし、AIは動き続け、時間は進むし、BGMは流れる。この「動き続ける世界」をどうやって作っているのでしょうか?
§1. パラパラ漫画の原理
実は、ゲーム画面は動いていません。ものすごい速さで「静止画」を切り替えているだけです。 これは「パラパラ漫画」やアニメーションと同じ理屈です。
この「1秒間に何枚絵を切り替えるか」をFPS(Frames Per Second)と呼びます。一般的なゲームは60FPS。つまり、1秒間に60回も画面を描き直しているのです。
§2. ゲームの心臓部「無限ループ」
では、どうやって1秒に60回も処理を行っているのか? ここで登場するのが、プログラミングの禁じ手とも言われる「無限ループ(While True / Loop)」です。
ゲームのプログラムは、起動した瞬間から終了するまで、猛スピードで以下の3つのステップを延々と繰り返しています。これがゲームの心臓の鼓動(ゲームループ)です。
【ループの1周(約1/60秒)でやっていること】
入力(Input)を受け取る
「今、プレイヤーは右キーを押したか?」「ボタンを押したか?」をチェックします。
更新・計算(Update)する
入力に合わせてキャラの座標を少し変える。
敵をAIで動かす。
弾が当たったか判定する。
描画(Render)する
計算結果に基づき、キャラクターや背景の絵を画面に表示する。
そしてまた「1. 入力」に戻る。これを人間には感知できない速度で繰り返すことで、キャラクターが滑らかに動いているように見えるのです。
§3. 「フリーズ」の正体
この仕組みがわかると、ゲームが「重い」「カクつく」理由もわかります。
もし「2. 更新・計算」のステップで、ものすごく時間のかかる計算(例えば、画面上の敵1万体の動きを計算するなど)をしてしまったらどうなるでしょうか?
1周に1秒かかってしまったら、画面は1秒に1回しか更新されません(1FPS)。これが「ラグ」や「カクつき」の正体です。最悪の場合、次の入力すら受け付けなくなり「フリーズ」します。
ゲームプログラマーは、常に「いかにこの1周の処理を軽くして、1/60秒以内に収めるか」という、時間との戦いをしているのです。
※処理が間に合わない場合は、リアルタイムのゲームの場合パラメータを減らしたり、ゲーム速度を遅くするなどを行わなければ、データが崩れたり、ゲームがクラッシュしたりの原因になります。
【まとめ】
「キャラクターが右に動く」 プレイヤーにとっては単純なことですが、プログラムにとっては「右キー入力を検知し、X座標を計算し、新しい位置に絵を描き直す」というループの結果なのです。
この感覚を掴めば、あなたはもうゲームクリエイターの思考回路を手に入れています。 次はいよいよ、この世界に彩りを加える「素材」の話に入っていきましょう。

0 件のコメント:
コメントを投稿