クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

レベルをデータで作る

このレッスンのあとで: レベルをデータの表として表し、星の出現の予定を作れる。

70分のレッスンコマンド1件ゲーム開発ラボ:ブラウザーでゲームループ、重力、当たり判定を学ぶ

レベルは表にすると調整しやすい

レベルデザインは、ゲームが少しずつ難しくなるように、場面を組み立てる仕事です。レベルをコードではなくデータの表で持つと、数字を変えるだけで、難しさを調整できます。

ラボのゲームも、4つのレベルを1つの表で持っています。

このレッスンのゴール

メモ

レベルをデータの表として表し、星の出現の予定を作れる。

重要な言葉

ことばいみれい
レベル難しさが同じ、ゲームの1つの段階
出現星や敵が、画面に現れること
倍率元の数に掛ける数1.25
出現の予定どのフレームで何が出るかの一覧
難易度曲線ゲームが難しくなっていく様子

学生が入力するセルは、このプレビューでは空白です。

レベルは表の1行になる

ラボのゲームの LEVELS は、4行の表です。各行に、名前、始まる点数、重力の倍率、出現の倍率が入っています。

今のレベルは、点数が届いた行のうち、いちばん後ろの行です。点数が増えると、次の行に切り替わります。

例: ラボの4つのレベル

レベル始まる点数重力星が出る間隔
Drizzle00.15050フレームごと
Shower50.21040フレームごと
Storm120.27031フレームごと
Meteors200.36025フレームごと

学生が入力するセルは、このプレビューでは空白です。

ラボで、4つのレベルを計算する

ラボのスクリプト levels.py は、game.js の表と基準の数を読み、各レベルの重力と間隔を計算します。スクリプトが出す言葉は英語です。

Drizzle from score 0 gravity 0.150 a star every 50 frames のような行が、4つ出ます。

4つのレベルを計算する

コマンド
docker exec jupyter python3 steps/levels.py

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

例: 点数からレベルを選ぶ

コード: web
<p id="out"></p>

出現の間隔は基準を倍率で割る

ゲームは、フレームの番号を間隔で割った余りが0のとき、星を出します。間隔は、基準の50を、出現の倍率で割って、四捨五入した数です。

倍率1.25なら40、1.6なら31、2なら25です。レベルが上がると、間隔が短くなり、星が増えます。

例: 60 fps で1分に出る星の数

レベル間隔1分(3600フレーム)で出る数
Drizzle5072
Shower4090
Storm31116
Meteors25144

学生が入力するセルは、このプレビューでは空白です。

難しさは少しずつ上げる

難易度曲線は、遊んでいる人にとって、ちょうどよい難しさで進むのが理想です。ラボの重力は、0.150、0.210、0.270、0.360と、少しずつ上がります。

出現の予定を、先に表にしておくと、どこで急に難しくなるかが、遊ぶ前に見えます。

よくある間違い

注意

レベルが上がるたびに、すべての数を大きくすればよいと考える人がいます。重力と出現の数を同時に上げると、反応が追いつかない急な坂になります。数は1つずつ上げ、遊んで確かめます。

このラボとソースについて: ゲーム開発ラボ:ブラウザーでゲームループ、重力、当たり判定を学ぶ

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。