Game Development
by Ian Wen
Introduction
INFOR 37th 學術
Roblox 遊戲開發七年經驗
50萬+ 遊戲參訪次數
主業是打超爛的競程
Roblox是一個線上遊戲平台,讓玩家能夠創建、分享及遊玩由用戶創建的遊戲。它提供"強大"的開發工具Roblox Studio,玩家可以用Lua程式語言設計遊戲,適合各種年齡層,並擁有多樣的遊戲體驗和社交功能。
專為創建 Roblox 平台上的遊戲而設計。它提供直觀的界面和多種功能,讓使用者能夠輕鬆設計遊戲場景、物件及互動元素。開發者可以利用 Lua 程式語言編寫遊戲邏輯,並且支持多玩家協作。
官方提供的遊戲模板,選 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
創建你的第一個 Part
Home 選單下的 Part,展開有多種形狀可以選擇
以最基礎的 Block 為範例
搭建一個跑酷遊戲
1. 簡單蓋個平台
搭建一個跑酷遊戲
2. 創建一個 Spawnpoint (用Explorer新增)
搭建一個跑酷遊戲
3. 簡單放幾個拿來跳的方塊
搭建一個跑酷遊戲
4. 測試遊玩
可以運用 CanCollide 屬性開關碰撞或是改變透明度
增加跑酷難度
小任務 - 幫你的跑酷遊戲增加玩法
方式不限
ex: 沒創意的學魷魚遊戲蓋玻璃橋 (其中一邊沒有碰撞)
地形編輯器
可以蓋各種地形 各種材質
也可以蓋水 (有內建游泳功能)
Views 中打開工具箱
免費素材
1. 可以查詢各種你想放的素材
2. 任何人都可以上傳自己的東西到toolbox中
3. 注意使用,可能會有病毒 (大部分沒有)
4. 英文查詢才能查到比較多的物件
免費素材
簡單推薦一些好用的免費素材/查詢方法
1. 建築類,直接查你想要哪種建築,通常都有
2. 車輛類,特別查車輛的現實型號會查到比較精緻的
3. 槍械類,推薦 ACS 2.0.1 這個槍械系統
4. 飛機類,簡單好用的就是 GS 飛機系統
5. 其他想找的都可以問我,我會教你怎麼查
免費素材
Lua & Script
ㄌㄨㄚˋ
自己看
*阿它 1-based 的,自己注意一下
腳本
什麼?
有三種?
腳本
Server
(Game)
Client #1
Client #2
Client #3
Client #4
遊戲會有一個 Server 與多個 Client (玩家)
腳本
Server
(Game)
Client #1
Client #2
Client #3
Client #4
Server 發生的事會同步給所有 Client
但 Client 發生的事不會同步到其他 Client
腳本
對,老傳統了
對,老傳統了
對,老傳統了
對,老傳統了
Output 端:所有腳本的輸出都在這
正確執行 錯誤 警告都會寫在這裡
腳本自己
的 上級
的名字
遊戲 的 ServerScriptService 的 Script
. 是往下找人
.Parent 往上找人/屬性
game 遊戲最上級
script 腳本本人
Example
放在一個方塊下
while true do
script.Parent.Transparency = 1
wait(1)
script.Parent.Transparency = 0
wait(1)
end
它就可以一秒消失 一秒出現 如此循環
Color
在腳本裡寫顏色
Math
跟數學有關的
ex: 隨機亂數
Enum
預定義的常數集, 通常用來表示一組具有限定值的選項
ex: 材質 (其實可以用 String 寫)
遊戲中的 "事件"
還記得 Scratch 嗎?
製作遊戲的時候也是要用到很多這樣的 "Event"
碰撞事件
Touched
不同物件會有不同的事件可以觀測
事件發生如果腳本要做事
可以用 :Connect(函式)
綁訂函式與事件
做一顆按鈕
我們要用到 ClickDetector 這個物件
它的性質就是會把它的上級變得可以按
事件發生時呼叫函式也會傳入一些參數
例如 MouseClick 這個事件會傳入按它的玩家
做一個按鈕門
按鈕被按下時可以控制開關
(Hint: 要控制 CanCollide 碰撞跟 Transparency 透明度窩!)
(Hint 2: 建議可以這樣做門的架構)
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)
一樣,Roblox 提供的功能遠遠不止這些
今天時間講不完
接下來實作有任何希望達成的功能
都可以問我!
& 不是我不想備課的自由創作時間
植物人不算
預計:
設計一個場景
完成僵屍生成的腳本
安裝一個槍械系統
或是其他你想要的玩法
設計一個你喜歡的場景
設計一個你喜歡的場景 (十分easy啦)
寫點腳本
範例:
每 20 秒生成一隻僵屍
1. 從 toolbox 找一隻有系統的僵屍
2. 把它丟到 ReplicatedStorage
3. 每20秒複製一隻它到 Workspace
放一隻僵屍到 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() 移動到座標
測試執行
注意 Part 的碰撞要關掉,不然僵屍生成的時候會被方塊卡到
方塊可以比地面高一點,避免僵屍生成穿模地板
以 ACS 2.0.1 為例
1. 先去遊戲設定把 Avatar 改成 R6
(否則槍械系統不支援)
2. ToolBox 搜尋 "ACS 2.0.1"
3. 放進遊戲
以 ACS 2.0.1 為例
4. 展開資料夾,底下會有更多資料夾
5. 把底下一層資料夾內的東西都放到遊戲對應位置
6. 測試執行,看有沒有槍可以玩了
加入更多槍械
當你在查的時候可能發現旁邊有一堆酷酷的槍
如何安裝?
通常會有1個Model跟1個相同名稱的Tool (板手圖案)
Tool 丟到 StarterPack 下
Model 丟到 GunModels 資料夾下
如何安裝?
通常會有1個Model跟1個相同名稱的Tool (板手圖案)
Tool 丟到 StarterPack 下
Model 丟到 GunModels 資料夾下
現在你就有一把自己加入的槍枝了
可以想想如何增加更多玩法
試著找到合適的素材
或自己做看看
剩下的時間都給你們自由創作遊戲
也可以發布到 Roblox 平台上讓大家玩
一樣,有問題都可以問
遊戲開發是一種將技術與創意融合的魔法