「ロブロックスのタイクーンみたいなゲームを自分で作りたい」「キットを使わずに仕組みから知りたい」
ロブロックス(Roblox)スタジオでタイクーンを作る方法を、実際の画像付きで誰でも簡単に分かるように解説します。タイクーンは、機械が作ったものを売ってお金をため、新しい機械を買って、どんどん稼ぎを増やしていくゲームです。ここでは、キットを使わずに、箱を落とす機械、流すベルト、お金に換える回収口、2台目を買うボタンまで、スクリプト1つで作ります。
中級ステップ16/28 前の記事:ロブロックス(Roblox)のバッジの作り方 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。右上にお金を出す「leaderstats」の仕組みはコイン集めゲームの作り方で解説しています。
今回の完成状態:下の画像のように、右上のMoney(画像の1)が、2台のドロッパー(画像の2)から落ちた黄色い箱がベルトで運ばれるたびに増えていけば成功です(画像は2台目を買った直後で、Moneyは0です)。

タイクーンの部品
| 名前 | 役目 |
|---|---|
| ClaimPad(緑の床) | 最初に乗った人が、この土地の持ち主になる |
| Dropper1(灰色の箱) | 2秒ごとに、お金になる黄色い箱を落とす |
| Conveyor(黒いベルト) | 上に落ちた箱を、右へ運ぶ |
| Collector(赤い回収口) | 届いた箱を消して、持ち主のお金を増やす |
| BuyDropper2(青い床) | お金を50払うと、2台目のドロッパーが出る |
| Dropper2 | 買うまではServerStorageに置いておく2台目 |
1. 土地の部品を置く
新しいBaseplateを開き、エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

出てきた一覧の検索欄に「Folder」と入れ、一覧の「Folder」を押します(赤い枠)。

Workspaceの中にFolderが入ります。エクスプローラで選んだままF2キーを押し、名前を「Tycoon」に変えます(赤い枠)。

Enterキーで名前を決めたら、エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Part」と入れ、一覧の「Part」を押します(赤い枠)。

Tycoonの中にPartが入ります。エクスプローラで選んだままF2キーを押し、名前を「Conveyor」に変えます(赤い枠)。

続けて、Tycoonの中に残りの部品を入れます。1つずつ手順を書きます。
ClaimPad
- エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します。
- 一覧の検索欄に「Part」と入れ、一覧の「Part」を押します。
- Tycoonの中にできた「Part」を選んだままF2キーを押し、「ClaimPad」と入力してEnterキーを押します。
BuyDropper2
- エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します。
- 一覧の検索欄に「Part」と入れ、一覧の「Part」を押します。
- Tycoonの中にできた「Part」を選んだままF2キーを押し、「BuyDropper2」と入力してEnterキーを押します。
Dropper1
- エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します。
- 一覧の検索欄に「Part」と入れ、一覧の「Part」を押します。
- Tycoonの中にできた「Part」を選んだままF2キーを押し、「Dropper1」と入力してEnterキーを押します。
Collector
- エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します。
- 一覧の検索欄に「Part」と入れ、一覧の「Part」を押します。
- Tycoonの中にできた「Part」を選んだままF2キーを押し、「Collector」と入力してEnterキーを押します。
Drops(フォルダー)
- エクスプローラの「Tycoon」にマウスを乗せて、右に出る「+」を押します。
- 一覧の検索欄に「Folder」と入れ、一覧の「Folder」を押します。
- Tycoonの中にできた「Folder」を選んだままF2キーを押し、「Drops」と入力してEnterキーを押します。
入れたばかりのパーツは、スポーン地点の上に重なっています。5つのパーツの名前・大きさ・位置・色は、次の表のとおりにします。
| 名前 | Size | Position | BrickColor |
|---|---|---|---|
| ClaimPad | 4, 0.4, 4 | -6, 0.2, -12 | Bright green(緑) |
| BuyDropper2 | 4, 0.4, 4 | 2, 0.2, -12 | Bright blue(青) |
| Conveyor | 24, 1, 4 | 0, 0.5, -20 | Black(黒) |
| Dropper1 | 2, 2, 2 | -10, 6, -20 | 灰色のまま |
| Collector | 2, 4, 4 | 13, 2, -20 | Bright red(赤) |
表の値は、エクスプローラでパーツを選び、プロパティの欄に入れます。まずConveyorです。
- エクスプローラで「Conveyor」を押して選びます。
- Conveyorを選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「24, 1, 4」と入れてEnterキーを押します(下の1枚目)。
- Conveyorを選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「0, 0.5, -20」と入れてEnterキーを押します。ベルトが奥へ動きます(下の2枚目)。
- Conveyorを選んだまま、プロパティの検索欄に「BrickColor」と入力し、右の欄を押して「Black(黒)」を選びます(下の3枚目)。
ほかの4つのパーツも、Conveyorと同じやり方で表の値を入れます。1つずつ手順を書きます。
ClaimPad
- エクスプローラで「ClaimPad」を押して選びます。
- ClaimPadを選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「4, 0.4, 4」と入れてEnterキーを押します。
- ClaimPadを選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「-6, 0.2, -12」と入れてEnterキーを押します。
- ClaimPadを選んだまま、プロパティの検索欄に「BrickColor」と入力し、右の欄を押して「Bright green(緑)」を選びます。
BuyDropper2
- エクスプローラで「BuyDropper2」を押して選びます。
- BuyDropper2を選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「4, 0.4, 4」と入れてEnterキーを押します。
- BuyDropper2を選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「2, 0.2, -12」と入れてEnterキーを押します。
- BuyDropper2を選んだまま、プロパティの検索欄に「BrickColor」と入力し、右の欄を押して「Bright blue(青)」を選びます。
Dropper1(色は灰色のまま変えません)
- エクスプローラで「Dropper1」を押して選びます。
- Dropper1を選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「2, 2, 2」と入れてEnterキーを押します。
- Dropper1を選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「-10, 6, -20」と入れてEnterキーを押します。
Collector
- エクスプローラで「Collector」を押して選びます。
- Collectorを選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「2, 4, 4」と入れてEnterキーを押します。
- Collectorを選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「13, 2, -20」と入れてEnterキーを押します。
- Collectorを選んだまま、プロパティの検索欄に「BrickColor」と入力し、右の欄を押して「Bright red(赤)」を選びます。
5つとも入れ終わると、エクスプローラのTycoonの中に部品が並び(画像の1)、3D画面に土地ができます(画像の2)。

ベルトも含めて、すべてのパーツを固定(Anchored)します。ベルトを固定したままでも箱を運べることは、このあとテストで確かめます。順にやっていきます。
- エクスプローラで「ClaimPad」を押して選び、プロパティの検索欄に「Anchored」と入力して、Anchoredにチェックを入れます(下の画像の赤い枠)。
- エクスプローラで「BuyDropper2」を押して選び、プロパティの検索欄に「Anchored」と入力して、Anchoredにチェックを入れます。
- エクスプローラで「Conveyor」を押して選び、プロパティの検索欄に「Anchored」と入力して、Anchoredにチェックを入れます。
- エクスプローラで「Dropper1」を押して選び、プロパティの検索欄に「Anchored」と入力して、Anchoredにチェックを入れます。
- エクスプローラで「Collector」を押して選び、プロパティの検索欄に「Anchored」と入力して、Anchoredにチェックを入れます。

2. 2台目のドロッパーをServerStorageに置く
エクスプローラの「Workspace」の左の「▼」を押して閉じると、下の「ServerStorage」が見えます。「ServerStorage」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Folder」と入れ、一覧の「Folder」を押します(赤い枠)。

エクスプローラで選んだままF2キーを押し、名前を「TycoonItems」に変えます(赤い枠)。

エクスプローラの「TycoonItems」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Part」と入れ、一覧の「Part」を押します(赤い枠)。

エクスプローラで選んだままF2キーを押し、名前を「Dropper2」に変えます(赤い枠)。

ServerStorageの中に、TycoonItemsとDropper2が並びます(赤い枠)。

Dropper2の大きさと位置を決めて、固定します。色は灰色のままです。
- エクスプローラでDropper2を選んだまま、プロパティの検索欄に「Size」と入力し、Sizeに「2, 2, 2」と入れてEnterキーを押します(下の1枚目)。
- Dropper2を選んだまま、プロパティの検索欄に「Position」と入力し、▼CFrameのすぐ下のPositionに「-4, 6, -20」と入れてEnterキーを押します(下の2枚目)。
- Dropper2を選んだまま、プロパティの検索欄に「Anchored」と入力し、Anchoredにチェックを入れて固定します(下の3枚目)。
ServerStorageの中のものは、遊ぶ人の画面には出ません。買ったときにスクリプトがTycoonへ移すと、はじめて見えるようになります。
3. タイクーンを動かすスクリプトを入れる
エクスプローラの「ServerScriptService」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

一覧の検索欄に「Script」と入れ、一覧の「Script」を押します(赤い枠)。

Scriptが入り、中身の画面が開きます。エクスプローラで「Script」を押して選び、F2キーを押して名前を「TycoonService」に変えます(赤い枠)。

TycoonServiceを選んだまま、プロパティの検索欄に「RunContext」と入力し、「▼動作」の欄にあるRunContextの一覧から「Server」を選びます(赤い枠)。RunContextは、スクリプトをサーバーとプレイヤーのどちらで動かすかを決める設定です。Serverにすると、ゲームのサーバー側で動きます。

開いているTycoonServiceの画面で、中身を全部消して、次のコードを貼り付けます。
local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
local ServerStorage = game:GetService("ServerStorage")
local tycoon = workspace:WaitForChild("Tycoon")
local claimPad = tycoon:WaitForChild("ClaimPad")
local conveyor = tycoon:WaitForChild("Conveyor")
local dropper1 = tycoon:WaitForChild("Dropper1")
local collector = tycoon:WaitForChild("Collector")
local buyButton = tycoon:WaitForChild("BuyDropper2")
local drops = tycoon:WaitForChild("Drops")
local dropper2 = ServerStorage:WaitForChild("TycoonItems"):WaitForChild("Dropper2")
local DROP_SECONDS = 2 -- 何秒ごとに1個落とすか
local DROP_VALUE = 5 -- 1個でもらえるお金
local DROP_LIFETIME = 20 -- 落とした物が自動で消えるまでの秒数(長くてもこの秒数で消える)
local PRICE = 50 -- 2台目のドロッパーの値段
local CONVEYOR_SPEED = 6 -- コンベアの速さ(1秒に進むスタッド)
local owner = nil -- この土地の持ち主(最初はだれもいない)
local bought = false -- 2台目を買ったか
-- 参加した人ごとに Money を用意する
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = 0
money.Parent = leaderstats
end)
local function getMoney(player)
local leaderstats = player:FindFirstChild("leaderstats")
return leaderstats and leaderstats:FindFirstChild("Money")
end
-- コンベア:固定したまま、上に乗った物を +X の向きへ流す
conveyor.AssemblyLinearVelocity = Vector3.new(CONVEYOR_SPEED, 0, 0)
-- ドロッパーの真下に、お金になる箱を1個作る
local function makeDrop(dropper)
local drop = Instance.new("Part")
drop.Name = "Drop"
drop.Size = Vector3.new(1, 1, 1)
drop.Color = Color3.fromRGB(255, 200, 0)
drop.Position = dropper.Position - Vector3.new(0, dropper.Size.Y / 2 + 1, 0)
drop:SetAttribute("Value", DROP_VALUE) -- この箱がいくらになるかを箱に書いておく
drop.Parent = drops
drop:SetNetworkOwner(nil) -- 箱の動きはサーバーが計算する
Debris:AddItem(drop, DROP_LIFETIME) -- 回収されなくても、いつか必ず消える
end
-- ドロッパーを動かし始める(土地の中にある間だけ動く)
local function startDropper(dropper)
task.spawn(function()
while dropper.Parent == tycoon do
if owner then
makeDrop(dropper)
end
task.wait(DROP_SECONDS)
end
end)
end
-- 受け取る床:最初に乗った人が持ち主になる
claimPad.Touched:Connect(function(hit)
if owner then return end
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
owner = player
claimPad.Color = Color3.fromRGB(255, 80, 80)
print(player.Name .. " がこの土地の持ち主になりました")
end)
-- 回収口:Drops の中の箱だけを数える(人が触れても増えない)
collector.Touched:Connect(function(hit)
if hit.Parent ~= drops then return end
local value = hit:GetAttribute("Value")
hit:Destroy()
if not owner or not value then return end
local money = getMoney(owner)
if money then
money.Value += value
end
end)
-- 買うボタン:持ち主がお金を持っているときだけ買える
buyButton.Touched:Connect(function(hit)
if bought then return end
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or player ~= owner then return end
local money = getMoney(player)
if not money or money.Value < PRICE then return end
bought = true
money.Value -= PRICE
dropper2.Parent = tycoon
startDropper(dropper2)
buyButton:Destroy()
end)
-- 持ち主が抜けたら、土地をだれでも受け取れる状態に戻す
Players.PlayerRemoving:Connect(function(player)
if player ~= owner then return end
owner = nil
claimPad.Color = Color3.fromRGB(80, 200, 80)
drops:ClearAllChildren()
end)
startDropper(dropper1)

| コードの部分 | していること |
|---|---|
| leaderstats と Money | 参加した人ごとに、右上に出るお金を用意する |
| conveyor.AssemblyLinearVelocity | 固定したベルトに「動いている速さ」を持たせ、上に乗った物を右へ運ぶ |
| makeDrop | ドロッパーの下に黄色い箱を作り、箱にDROP_VALUEで決めた「Value 5」という値段を書いておく |
| SetNetworkOwner(nil) | 箱の動きをサーバーが計算する。遊ぶ人の側から箱を動かしてお金をごまかされないための作りで、通信のようすによっては箱の動きが少しカクつくことがある(Robloxの公式の説明より) |
| Debris:AddItem | 回収されなかった箱も、DROP_LIFETIMEで決めた20秒がたつと自動で消す |
| claimPad.Touched | 最初に乗った人を持ち主にする |
| collector.Touched | Dropsの中の箱だけを数えてお金を増やす |
| buyButton.Touched | 持ち主がお金をPRICEで決めた50以上持っていれば、2台目を出してボタンを消す |
お金を増やしたり減らしたりするのは、サーバーで動くこのScriptだけです。回収口は、コードの「hit.Parent ~= drops」の行で、スクリプトが作ってDropsに入れた箱だけを数える作りにしています。
ただし、Robloxの公式の説明によると、Touched(触れたという知らせ)は、遊ぶ人の端末から実際には触れていなくても送れることがあります。緑の床と青い床は、アバターが触れたことで動きます。公開するゲームでは、触れた人のアバターが本当に床の近くにいるかを、サーバーのScriptで距離を測って確かめると安全です。
4. テストで土地を受け取る
3D画面の上の作品のタブ「Place11」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。緑の床に乗ると、床が赤くなり(画像の1)、出力に「(アカウント名) がこの土地の持ち主になりました」と出ます(画像の2)。持ち主が決まると、ドロッパーが黄色い箱を落とし始めます。

5. 箱が運ばれてお金が増えるか確かめる
少し待つと、右上のMoney(画像の1)が5ずつ増えていき、30になりました。箱はベルトの上を右へ流れて(画像の2)、赤い回収口に吸い込まれます。

6. 2台目のドロッパーを買う
Moneyが50になると(画像の1)、青い床(画像の2)で2台目を買えるようになります。

Moneyが50のときに青い床に乗ると、Moneyが50減って0になり(画像の1)、青い床が消えて、2台目のドロッパーが出てきました(画像の2)。2台になったので、落ちてくる箱の数も2倍になります。
Shift + F5キーでテストを停止します。以下は、アソビシフト編集部がこの記事の手順どおりに作って、テストで確かめた結果です。

| 試したこと | 結果 |
|---|---|
| 緑の床に乗る | 床が赤くなり、持ち主になった |
| 待つ | 箱がベルトで運ばれ、Moneyが5ずつ増えた |
| Money 50で青い床に乗る | Moneyが50減って0になり、ボタンが消えて2台目が出た |
数字を変えて遊びを調整する
表の数は、どれもTycoonServiceのコードの上のほうにあります。エクスプローラのServerScriptServiceの中の「TycoonService」をダブルクリックして開き、たとえば「local DROP_SECONDS = 2」の行の「2」を書きかえます。
| 変えたいこと | 変える数 | 例 |
|---|---|---|
| 箱を落とす間隔 | DROP_SECONDS | 2 → 1にすると2倍の速さで落ちる |
| 1個の値段 | DROP_VALUE | 5 → 10 |
| 2台目の値段 | PRICE | 50 → 100にすると、買うまで長くかかる |
| ベルトの速さ | CONVEYOR_SPEED | 6 → 10 |
| 箱が消えるまでの秒数 | DROP_LIFETIME | 箱がたまって重いときは短くする |
箱が増えすぎるとゲームが重くなるので、箱は回収口で消すほかに、コードの上のDROP_LIFETIMEで決めた秒数(20秒)がたつと、Debrisで自動で消しています。重くなったときの調べ方はゲームが重いときの直し方で解説しています。
お金が増えないときの確かめ方
| 症状 | 見るところ | 直し方 |
|---|---|---|
| 箱が落ちてこない | 持ち主 | 緑の床に乗ったか。持ち主がいないと箱は落ちない |
| 箱がベルトで動かない | Conveyor | 名前が「Conveyor」か。AssemblyLinearVelocityの行が消えていないか |
| 箱が回収口に届いてもお金が増えない | Drops | 箱がTycoonの中の「Drops」に入っているか |
| 右上にMoneyが出ない | leaderstats | 「leaderstats」が小文字で合っているか |
| 青い床に乗っても買えない | お金と持ち主 | 持ち主本人か、Moneyが50以上あるか |
| 2台目が出てこない | ServerStorage | 「TycoonItems」の中に「Dropper2」があるか |
ツールボックスのタイクーンキットを使うときは
ツールボックスには、タイクーンをまとめて作れるキットもあります。キットの中にはスクリプトがたくさん入っていることがあるので、使う前に中身を確かめます。確かめ方はツールボックスは安全?で解説しています。この記事のように1から作ると、どの部品が何をしているかが分かるので、あとから機械を足すのも簡単です。
AIに相談するときの伝え方
Roblox Studioで、キットを使わずにタイクーンを作っています。
ServerScriptServiceのScript1つで、ドロッパーが2秒ごとに箱を落とし、固定したベルト(AssemblyLinearVelocity)で運び、回収口で持ち主のleaderstatsのMoneyを5増やしています。
3台目のドロッパーを100で買えるボタンを足したいです。お金はサーバーでだけ変えてください。
よくある質問
抜けてもお金が残るようにしたい
このコードでは、ゲームを抜けるとお金は消えます。残したいときは、DataStoreで保存します。保存のしかたはDataStoreの使い方で解説しています。
2人で遊べる?
このコードの土地は1つだけで、最初に緑の床に乗った人が持ち主になります。コードの最後のほうのPlayers.PlayerRemovingの部分は、持ち主が抜けたときに、土地をほかの人が受け取れる状態に戻すためのものです。人数分の土地を作るときは、Tycoonのフォルダーを複製して、土地ごとに持ち主を覚えるように書きかえる必要があります。
次のステップ(中級 17/28)
次は、ゲームが重くなったときに、原因を測って直します。
次に知りたいことを選ぶ
- 次のステップ:ゲームが重くなったときに、原因を測って直します → ロブロックス(Roblox)のゲームが重いときの直し方
- お金の出し方の基本を知りたい → ロブロックス(Roblox)でコイン集めゲームを作る方法
- お金を保存したい → ロブロックス(Roblox)のDataStoreの使い方
- タイクーンで売るアイテムを作りたい → ロブロックス(Roblox)のゲームパスの作り方





