完成項目

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

恭喜!你剛剛創建了一場多人戰鬥皇家!在這個系列中,你有:

  • 創建模組化的腳本,可處理不同的遊戲功能,例如傳送玩家。
  • 學習如何為比賽的開始和結束編寫自訂事件的代碼
  • 使用陣列來管理玩家加入、贏得或離開遊戲時。

但是,您的遊戲幾乎可以讓其他人玩 遊玩了。通過讓您的競技場獨一無二並創建引人注目的縮圖來吸引玩家到您的遊戲。

可選改進

以下是一些提升您體驗的方法。

改善地圖視覺效果

擁有視覺上有趣的地圖會為您的遊戲創造強烈的第一印象,鼓勵人們開始遊玩。花一點時間將你的灰箱等級轉換為真正的地圖。

記得在這個系列開始時寫下你遊戲的設置描述嗎?當你組建時,請確保你的地圖有清晰的設設定。作為靈感,以下是由 Roblox 開發人員建立的一些示例地圖。

由 Luxeyes 編寫的地圖
由 Janedel 編寫的地圖

您可以在工作室中建造或使用預製資產。以下是由 Roblox 上傳的一些建議資產,可用於建立環境。每包包括高品質、完全紋理化的模型。

變更力場

在遊戲期間,您可能已經注意到玩家重生時的力場。在 SpawnLocation 屬性中變更力場持續時間。

  1. 點擊相關的生成位置。
  2. 在屬性 > 力場中,變更持續時間值。

進行遊戲測試並確認變量

在 Roblox 上成功的遊戲會經常進行遊戲測試,以確保遊戲玩法有趣且公平。

與同僚一起測試您的遊戲,並檢查以追蹤中內容:

  • 比賽的時間感覺合適嗎?比賽玩家束太快,或需要太長時間嗎?
  • 地圖的大小感覺正確嗎?是否有區域感覺太空?需要花多長時間才能遇到另一名玩家?

測試、評估和修改變量以改善遊玩體驗。一些例子:

  • GameSettings.matchDuration 變更為更長的匹配在更大的地圖上。
  • 如果玩家覺得中場休息時間太突然,就讓中場休息時間變得更長。

讓大廳變得社交

Roblox 中的流行遊戲經常會添加小遊戲來鼓勵玩家在等待中場休息時娛樂和社交。這可能包括放置物理球的零件,讓玩家可以玩 遊玩,甚至是迷你障礙賽。

可選挑戰

許多 Roblox 體驗在發布後仍會持續獲得更新。以下是一些可選的挑戰,可為您的項目新增功能。

陷阱

通過添加傷害玩家的陷阱或障礙來使地圖變得更具挑戰性。在 創建陷阱 中了解更多信息。

追蹤分數

創建一個排行榜,記錄有多少次某人贏得一回合。使用此文章在 排行榜 上編寫一個代碼。

強化功能

創建指令碼零件,可以進行更改,例如修改玩家的速度或工具的攻擊力。記住,在比相符結束後,使用 resetMatch() 重新創建強化套件。參考資料,請在 強化功能 教學中瞭解更多。

新增更多場地

建造更多不同設定和代碼的競技場,並編寫隨機地圖選擇。每當玩家開始比相符時,一個名為 MapManager 的模組腳本會隨機選擇一張地圖,然後根據需要將玩家分配到那些生成位置。如需要提示或查看一個實現,請查看下方的代碼盒。


--[[
Setup Notes:
1. In Workspace, create a folder named Maps. Store all parts of a map in individual folders.
2. For each individual map, include a folder named SpawnLocations
3. When starting a match, use pickNewMap() to get a random map. When assigning player spawn points, use
GetSpawnLocations() to get a table with all locations.
]]
local MapManager = {}
local mapsFolder = workspace.Maps
-- 儲存所有可以在之間旋轉的地圖
local availableMaps = mapsFolder:GetChildren()
-- 在玩 遊玩戲中儲存當前地圖
local activeMap
-- 用於取得隨機地圖。
local randomGenerator = Random.new()
-- 從可用的地圖表中獲得隨機地圖
function MapManager.pickNewMap()
local whichMapKey = randomGenerator:NextInteger(1, #availableMaps)
activeMap = availableMaps[whichMapKey]
print("New map: " .. activeMap.Name)
end
-- 返回包含現有生成點的表
function MapManager.getSpawnLocations()
local spawnPoints = activeMap:FindFirstChild("SpawnLocations")
local availableSpawnPoints = spawnPoints:GetChildren()
return availableSpawnPoints
end
return MapManager