Roblox Studio
Game Development
by Ian Wen
Index
介紹
Introduction
講師 - 温世揚
INFOR 37th 學術
Roblox 遊戲開發七年經驗
50萬+ 遊戲參訪次數
主業是打超爛的競程

<- 背包問題 (Real)

Roblox
Roblox是一個線上遊戲平台,讓玩家能夠創建、分享及遊玩由用戶創建的遊戲。它提供"強大"的開發工具Roblox Studio,玩家可以用Lua程式語言設計遊戲,適合各種年齡層,並擁有多樣的遊戲體驗和社交功能。

Roblox Studio
專為創建 Roblox 平台上的遊戲而設計。它提供直觀的界面和多種功能,讓使用者能夠輕鬆設計遊戲場景、物件及互動元素。開發者可以利用 Lua 程式語言編寫遊戲邏輯,並且支持多玩家協作。
打開 roblox studio

有帳號的登入,沒帳號的註冊後登入
首頁導覽

近期打開過的地圖檔
創建/管理地圖
打開 Templates

官方提供的遊戲模板,選 Baseplate 創建新的地圖檔
遊戲編輯器
畫面上會有很多功能/視窗

遊戲編輯器
上排選單

主要功能選單,點選可以切換到不同功能區
對應功能
遊戲編輯器
上排選單 - Views
可以開啟/關閉各種功能的視窗
對應功能

確認 Explorer 跟 Properties 已打開
遊戲編輯器
Explorer 遊戲檔案總管

1. 管理遊戲物件
2. 每個物件都是資料夾,可以拖曳放置到不同地方
3. 遊戲預設的最高層級資料夾,分別對應不同功能
4. Workspace 是遊戲運行的 "世界"
所有玩家/可見的物件都在 Workspace 下
遊戲編輯器
Properties 屬性編輯器
(*以選取 Spawnpoint 為例)

1. 管理遊戲各種東西的"屬性"
(ex: 顏色 材質 透明度 三維空間中的座標)
2. 有些可改 有些不可改
3. 常用的有:
Color: 以 rgb 色號儲存的顏色
Transparency: 透明度 (0~1,1 全透明)
Anchored: 錨固 (是否受物理引擎影響)
Material: 材質 (可以調整各種物件的材質)
4. 不同的物件有不同的屬性
遊戲編輯器
移動視角、選取/修改/操作模型
W、S 視角前後移動
A、D 視角左右移動
E、Q 視角上下移動
滑鼠滾輪可以大幅度的操作視角前後
左鍵選取物件 右鍵可以展開功能選單

上列選單中選 Home 後會看到四種選取模式
1. 單純選取,可用滑鼠拖曳移動
2. 移動軸,可用水平 垂直的軸拖拉移動
3. 縮放,調整大小,按著 alt 再拉可以等比縮放
4. 旋轉,調整 x y z 方向旋轉角度
遊戲編輯器
執行遊戲
上列選單中選 Home 可以看到 Play,
下拉選單打開會有不同模式

1. 遊玩,會模擬以玩家角度玩遊戲的樣子
2. 以視角當前位置作為起始點遊玩
3. 執行,從伺服器端觀察遊戲運行
遊戲編輯器
發布遊戲與遊戲設定

Publish to Roblox 發布遊戲到 Roblox 平台
Save to Roblox 儲存遊戲檔案至 Roblox
差異是玩家能不能玩到你存的版本
Publish 可以
Save 不能
遊戲編輯器
發布遊戲與遊戲設定
Game Settings 下可以設定遊戲,看不懂官方寫的解釋再問

Permissions
設定遊戲的遊玩權限

Avatar
玩家遊玩時的虛擬人偶
R6 - 身體由 6 塊方塊組成
R15 - 身體由 15 塊方塊組成
遊戲編輯器
功能太多講不完
只講常用的
等等演示的時候請仔細看
如果看到我做一些你看不懂的事請及時舉手跟我說
我會講解
或是你實作時好奇什麼功能的用途都可以問我
探索時間 5 分鐘
場景與物件設計
Design your game
first block
創建你的第一個 Part

Home 選單下的 Part,展開有多種形狀可以選擇
以最基礎的 Block 為範例
Parkour game
搭建一個跑酷遊戲

1. 簡單蓋個平台
Parkour game
搭建一個跑酷遊戲
2. 創建一個 Spawnpoint (用Explorer新增)


Parkour game
搭建一個跑酷遊戲
3. 簡單放幾個拿來跳的方塊

Parkour game
搭建一個跑酷遊戲
4. 測試遊玩

可以運用 CanCollide 屬性開關碰撞或是改變透明度
增加跑酷難度
task. 1
小任務 - 幫你的跑酷遊戲增加玩法
方式不限
ex: 沒創意的學魷魚遊戲蓋玻璃橋 (其中一邊沒有碰撞)

Terrain Editor
地形編輯器

可以蓋各種地形 各種材質
也可以蓋水 (有內建游泳功能)

Toolbox
Views 中打開工具箱

免費素材
Toolbox
1. 可以查詢各種你想放的素材
2. 任何人都可以上傳自己的東西到toolbox中
3. 注意使用,可能會有病毒 (大部分沒有)
4. 英文查詢才能查到比較多的物件
免費素材

Toolbox
簡單推薦一些好用的免費素材/查詢方法
1. 建築類,直接查你想要哪種建築,通常都有
2. 車輛類,特別查車輛的現實型號會查到比較精緻的
3. 槍械類,推薦 ACS 2.0.1 這個槍械系統
4. 飛機類,簡單好用的就是 GS 飛機系統
5. 其他想找的都可以問我,我會教你怎麼查
免費素材
Lua 基礎 & 實作
Lua & Script
Lua
ㄌㄨㄚˋ
自己看
*阿它 1-based 的,自己注意一下
Script
腳本

什麼?
有三種?
Script
腳本

Server
(Game)
Client #1
Client #2
Client #3
Client #4
遊戲會有一個 Server 與多個 Client (玩家)
Script
腳本

Server
(Game)
Client #1
Client #2
Client #3
Client #4
Server 發生的事會同步給所有 Client
但 Client 發生的事不會同步到其他 Client
Script
腳本

- Script - Server 端運行的腳本
- LocalScript - 放在 Client 端運行的腳本
- ModuleScript - 不會自動運行,只會在被其他 Script require() 的時候隨著運行
Hello world
對,老傳統了

- 創建一個 Script 在 ServerScriptService 下
- print("Hello World")
- 執行遊戲
Hello world
對,老傳統了

- 創建一個 Script 在 ServerScriptService 下
- print("Hello World")
- 執行遊戲
- Nothing Happend?
Hello world
對,老傳統了
- 創建一個 Script 在 ServerScriptService 下
- print("Hello World")
- 執行遊戲
- Nothing Happend?
- 打開這個像列印機的玩意

Hello world
對,老傳統了
- 創建一個 Script 在 ServerScriptService 下
- print("Hello World")
- 執行遊戲
- Nothing Happend?
- 打開這個像列印機的玩意


Output 端:所有腳本的輸出都在這
正確執行 錯誤 警告都會寫在這裡
Roblox script
最常用:找上下級

腳本自己
的 上級
的名字

遊戲 的 ServerScriptService 的 Script
. 是往下找人
.Parent 往上找人/屬性
game 遊戲最上級
script 腳本本人
Roblox script
Example
放在一個方塊下
while true do
script.Parent.Transparency = 1
wait(1)
script.Parent.Transparency = 0
wait(1)
end
它就可以一秒消失 一秒出現 如此循環
Roblox script
Color

在腳本裡寫顏色
Roblox script
Math
跟數學有關的

ex: 隨機亂數
Roblox script
Enum
預定義的常數集, 通常用來表示一組具有限定值的選項
ex: 材質 (其實可以用 String 寫)

events
遊戲中的 "事件"

還記得 Scratch 嗎?
製作遊戲的時候也是要用到很多這樣的 "Event"
events
碰撞事件
Touched

不同物件會有不同的事件可以觀測
事件發生如果腳本要做事
可以用 :Connect(函式)
綁訂函式與事件
events
做一顆按鈕

我們要用到 ClickDetector 這個物件
它的性質就是會把它的上級變得可以按

事件發生時呼叫函式也會傳入一些參數
例如 MouseClick 這個事件會傳入按它的玩家
task. 2
做一個按鈕門
按鈕被按下時可以控制開關
(Hint: 要控制 CanCollide 碰撞跟 Transparency 透明度窩!)
(Hint 2: 建議可以這樣做門的架構)

task. 2 - ans
status = false
script.Parent.ClickDetector.MouseClick:Connect(function()
status = not status
if status then
script.Parent.Parent.Door.Transparency = 1
script.Parent.Parent.Door.CanCollide = false
else
script.Parent.Parent.Door.Transparency = 0
script.Parent.Parent.Door.CanCollide = true
end
end)
other
一樣,Roblox 提供的功能遠遠不止這些
今天時間講不完
接下來實作有任何希望達成的功能
都可以問我!
小遊戲製作
& 不是我不想備課的自由創作時間
沒有植物的植物大戰僵屍
植物人不算
預計:
設計一個場景
完成僵屍生成的腳本
安裝一個槍械系統
或是其他你想要的玩法
scene design
設計一個你喜歡的場景

scene design
設計一個你喜歡的場景 (十分easy啦)

zombie spawnpoints
寫點腳本
範例:
每 20 秒生成一隻僵屍
1. 從 toolbox 找一隻有系統的僵屍
2. 把它丟到 ReplicatedStorage
3. 每20秒複製一隻它到 Workspace
zombie spawnpoints
放一隻僵屍到 ReplicatedStorage

創建一個 Part 跟 Script 作為僵屍重生點

while true do
local newzombie = game.ReplicatedStorage["Drooling Zombie"]:Clone()
newzombie.Parent = workspace
newzombie:MoveTo(script.Parent.Position)
wait(20)
end
Model 是沒有 Position 屬性可以改的,得用 :MoveTo() 移動到座標
zombie spawnpoints

測試執行
注意 Part 的碰撞要關掉,不然僵屍生成的時候會被方塊卡到
方塊可以比地面高一點,避免僵屍生成穿模地板
Gun system
以 ACS 2.0.1 為例
1. 先去遊戲設定把 Avatar 改成 R6
(否則槍械系統不支援)
2. ToolBox 搜尋 "ACS 2.0.1"
3. 放進遊戲

Gun system
以 ACS 2.0.1 為例
4. 展開資料夾,底下會有更多資料夾

5. 把底下一層資料夾內的東西都放到遊戲對應位置
6. 測試執行,看有沒有槍可以玩了
Gun system
加入更多槍械

當你在查的時候可能發現旁邊有一堆酷酷的槍
Gun system
如何安裝?

通常會有1個Model跟1個相同名稱的Tool (板手圖案)

Tool 丟到 StarterPack 下

Model 丟到 GunModels 資料夾下
Gun system
如何安裝?

通常會有1個Model跟1個相同名稱的Tool (板手圖案)

Tool 丟到 StarterPack 下

Model 丟到 GunModels 資料夾下
Gun system

現在你就有一把自己加入的槍枝了
more?
可以想想如何增加更多玩法
試著找到合適的素材
或自己做看看
自由創作
剩下的時間都給你們自由創作遊戲
也可以發布到 Roblox 平台上讓大家玩
一樣,有問題都可以問
The end
遊戲開發是一種將技術與創意融合的魔法
聯課 - 遊戲開發
By wen Ian
聯課 - 遊戲開發
- 99