ロブロックス(Roblox)のゲームが重いときの直し方|開発者コンソールで原因を測って1つずつ直す方法を画像で解説

制作手順難易度: 中級所要時間: 約30分(目安)情報確認日: 2026年10月30日

「作ったゲームがカクカクする」「どこが重いのか分からない」

ロブロックス(Roblox)で作ったゲームが重いときの直し方を、実際の画像付きで誰でも簡単に分かるように解説します。この記事では、わざと重くしたスクリプトを使って、どこが重いかを測る→1つだけ直す→同じ方法で測り直す流れを練習します。

中級ステップ17/28 前の記事:ロブロックス(Roblox)スタジオでタイクーンを作る方法 全体の順番を見る

使うもの:Roblox Studioが起動するパソコン、重くなっている作品(練習なら新しいBaseplate)。スクリプトの入れ方はスクリプトの作り方で解説しています。

直す前に決めておく3つのこと

「重い」と感じたら、いきなり部品を消したりコードを書き直したりせず、まず次の3つを決めます。

決めること例
どの場面で重いかスタート直後、敵が増えたとき、画面を開いたとき
どの端末で重いかパソコン、スマホ、2人以上で遊んだとき
比べる条件同じ場所、同じ人数、同じ操作

直す前と後で同じ条件で測らないと、本当に軽くなったのか分かりません。

練習:わざと重いゲームを作る

練習として、800個の小さなパーツを毎フレーム回し続けるスクリプトを使います。Studioのホーム画面の左の「テンプレート」から「Baseplate」(赤い枠)を押して、新しいBaseplateを開きます。画像の赤い枠が「次に押す場所」で、画像を押すと大きく表示できます。

エクスプローラの「ServerScriptService」にマウスを乗せて、右に出る「+」(赤い枠)を押してください。ボタンの名前や置き場所は、Roblox側の更新で変わることがあります。

一覧の「Script」(赤い枠)を押して入れます。

できたScriptをエクスプローラで選んでF2キーを押し、名前を「Spinner」と入れてEnterキーを押します(赤い枠)。

RunContextは、そのスクリプトをサーバーとプレイヤーの画面のどちらで動かすかを決める設定です。エクスプローラで「Spinner」を選んだ状態で、プロパティの検索欄に「RunContext」と入力します。「▼動作」の中のRunContextの欄(最初は「Legacy」)を押し、一覧から「Server」(赤い枠)を選びます。

Spinnerのスクリプトの画面(閉じていたら、エクスプローラの「Spinner」をダブルクリックして開きます)で、中身を全部消して、次のコードを貼り付けます。

-- 重くなる例:毎フレーム、800個のパーツを1つずつ回す
local RunService = game:GetService("RunService")
local folder = Instance.new("Folder")
folder.Name = "Spinners"
folder.Parent = workspace

for i = 1, 800 do
	local part = Instance.new("Part")
	part.Size = Vector3.new(1, 1, 1)
	part.Anchored = true
	part.Position = Vector3.new((i % 40) * 2 - 40, 5 + math.floor(i / 40) * 2, -30)
	part.Parent = folder
end

RunService.Heartbeat:Connect(function()
	for _, part in folder:GetChildren() do
		part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(5), 0)
	end
end)

「Heartbeat(ハートビート)」は、1秒に約60回、毎フレーム呼ばれる合図です。そのたびに800個のパーツを1つずつ回しているので、とても重い処理になります。

3D画面の上の作品のタブ「Place3」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。空中にたくさんの四角いパーツが並んで回ります。

1. パフォーマンスのまとめで、全体の重さを見る

テスト中に、3D画面上部メニューの「ウィンドウ」から「パフォーマンスのまとめ」(画像の1)にマウスを乗せ、出てきた一覧の「パフォーマンスのまとめ」(画像の2)を押してください。

画面の左上に、緑色の文字で数字が出ます(赤い枠)。

表示意味見るところ
FPS1秒間に画面を何回描きかえているか60に近いほどなめらか。大きく下がっていたら重い
Physicsぶつかりや落下などの計算msec(ミリ秒)が大きいと重い
Render画面を描く処理部品やエフェクトが多いと大きくなる
Network receiveサーバーから届くデータ動く部品が多いと大きくなる

2. MicroProfilerで、1フレームの中身を見る

テスト中にCtrl+F6キーを押すと、画面の上に「MicroProfiler(マイクロプロファイラー)」の帯が出ます(赤い枠)。ウィンドウメニューの「パフォーマンスのまとめ」の一覧の「MicroProfiler」からも開けます。一覧にはCtrl+Alt+F6と書かれていますが、テスト中の画面ではCtrl+F6キーでも開きました。

帯の右上の「Time」「Avg」「Max」(赤い枠)は、1フレームにかかった時間(ミリ秒)です。1秒に60回描くには、1フレームを約16.7ミリ秒以内に終える必要があります。帯の棒が高いほど、そのフレームに時間がかかっています。棒の色は重さではなく、どの種類の処理に時間がかかったかを表します。もう一度Ctrl+F6キーを押せば消せます。

3. 開発者コンソールで、どのスクリプトが重いかを見る

テスト中にF9キーを押すと、「Developer Console(開発者コンソール)」が開きます。

左上の「Log」(画像の1)を押すと、見られる項目の一覧が出ます。「Scripts」(画像の2)を押します。

動いているスクリプトの一覧が出ます。「Spinner」の行を見ると、「Activity(%)」が18.066、「Rate(/s)」が60.000になっています(赤い枠)。左上の緑の数字は、手順1で開いた「パフォーマンスのまとめ」の表示です。

項目意味
Activity(%)そのスクリプトが処理に使っている時間の割合。大きいほど重い
Rate(/s)1秒間に何回動いているか

Spinnerは、1秒に60回、毎回800個を回しているので、ほかのスクリプトより飛び抜けて重いことが分かりました。

4. 1つだけ直して、同じ方法で測り直す

Shift + F5キーでテストを停止します。

回し方を「毎フレーム」から「0.2秒ごと」に変えます。0.2秒ごとにまとめて20度ずつ回すので、回る速さは直す前のおよそ3分の1になります。ここでは重さがどう変わるかを見るのが目的です。コードの変更箇所は、Spinnerの「RunService.Heartbeat」の部分を書きかえています。1行目のコメント(「–」で始まる説明の行)も書きかえていますが、コメントは動きに関係しません。

Spinnerの画面で、中身を全部消して、次のコードを貼り付けます。

-- 800個のパーツを回す(直したあと)
local RunService = game:GetService("RunService")
local folder = Instance.new("Folder")
folder.Name = "Spinners"
folder.Parent = workspace

for i = 1, 800 do
	local part = Instance.new("Part")
	part.Size = Vector3.new(1, 1, 1)
	part.Anchored = true
	part.Position = Vector3.new((i % 40) * 2 - 40, 5 + math.floor(i / 40) * 2, -30)
	part.Parent = folder
end

-- 直した例:毎フレームではなく、0.2秒ごとにまとめて回す
while true do
	for _, part in folder:GetChildren() do
		part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(20), 0)
	end
	task.wait(0.2)
end

3D画面の上の作品のタブ「Place3」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。F9キーを押して開発者コンソールを開き、左上の「Log」を押して、一覧の「Scripts」を押します。Spinnerの「Activity」が1.367、「Rate」が4.000に下がりました(赤い枠)。

以下は、アソビシフト編集部が撮影したパソコンで、直す前と後を同じ方法で確かめた結果です。

直す前直した後
回し方毎フレーム0.2秒ごと
Activity18.066%1.367%
Rate60.000/s4.000/s

毎フレーム動かす必要のない処理を、間をあけて動かすだけで、重さは大きく下がります。数字はパソコンによって変わりますが、直す前と後を同じ方法で比べることが大切です。

よくある重くなる原因

原因確かめ方直し方の例
毎フレーム動く処理が多い開発者コンソールのScriptsでRateが60のもの間をあけて動かす。変化があったときだけ動かす
部品が多すぎる見えない場所や遠くに細かい部品がないかまとめられる部品はまとめる。見えないものは消す
動く部品が多いパフォーマンスのまとめのNetwork receive動かす必要のない部品は固定する(エクスプローラでその部品を選んだ状態で、プロパティの検索欄に「Anchored」と入力し、チェックを入れる)
エフェクトや光が多いパフォーマンスのまとめのRender数を減らす。同時に出さない
影を作る部品が多い小さな部品や遠くの部品も影を作っていないか影が目立たない部品は、プロパティのCastShadowのチェックを外す。影の見た目が乱れることがある(Robloxの公式の説明にある注意)
形の細かいメッシュ(ほかのソフトで作った形の部品)やユニオン(複数の部品をくっつけて1つにした形)が多いMeshPartやユニオンのCollisionFidelity(当たり判定の細かさを決める設定)小さくて固定した物は、CollisionFidelityを「Box」にすると当たり判定が軽くなる(普通のPartにはこの欄はない)

AIに相談するときの伝え方

AIに相談するときは、測った数字と条件を一緒に伝えます。

Roblox Studioで作ったゲームが重いです。原因を一緒に絞り込みたいです。
・重くなる場面:(例)テスト開始直後から
・端末:(例)Windowsのパソコン
・開発者コンソールのScriptsで重いもの:(例)Spinner、Activity 18%、Rate 60/s
・そのスクリプトのコード:(ここに貼る)
見た目を変えずに軽くする方法を1つずつ示し、直した後に何を測ればよいか教えてください。

よくある質問

スマホで重いかどうかも調べられる?

Studioのデバイスシミュレータ(スマホなどの画面の大きさを再現する機能)で確かめられるのは見た目までで、スマホでの重さは分かりません。スマホでの重さは、公開してから実際のスマホで遊んで確かめるのが確実です。公開の方法はゲームを公開する方法で解説しています。

数字はいくつなら合格?

決まった合格ラインはありません。FPSが60近くを保てているのが1つの目安です。ただし、平均が60でも時々1フレームだけ大きく遅れると、カクッと止まったように感じます。MicroProfilerの帯に、飛び抜けて高い棒がないかも見ます。大事なのは、直す前と後を同じ条件で比べて、本当に軽くなったかを確かめることです。

次のステップ(中級 18/28)

次は、敵が道を歩き、タワーが撃つタワーディフェンスを作ります。

→ ロブロックス(Roblox)スタジオでタワーディフェンスを作る方法【前編】

次に知りたいことを選ぶ

次に読む記事