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

腳本

  1. Script - Server 端運行的腳本
  2. LocalScript - 放在 Client 端運行的腳本
  3. ModuleScript - 不會自動運行,只會在被其他 Script require() 的時候隨著運行

Hello world

對,老傳統了

  1. 創建一個 Script 在 ServerScriptService 下
  2. print("Hello World")
  3. 執行遊戲

Hello world

對,老傳統了

  1. 創建一個 Script 在 ServerScriptService 下
  2. print("Hello World")
  3. 執行遊戲
  4. Nothing Happend?

Hello world

對,老傳統了

  1. 創建一個 Script 在 ServerScriptService 下
  2. print("Hello World")
  3. 執行遊戲
  4. Nothing Happend?
  5. 打開這個像列印機的玩意

Hello world

對,老傳統了

  1. 創建一個 Script 在 ServerScriptService 下
  2. print("Hello World")
  3. 執行遊戲
  4. Nothing Happend?
  5. 打開這個像列印機的玩意

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