Королівська битва. Завершення проекту

Ви створили багатокористувацьку королівську битву! 

У цій серії ви зробили:
  • Створили модульні сценарії, які обробляють різні ігрові функції, наприклад телепортацію гравців.
  • Дізналися, як кодувати спеціальні події для початку та кінця матчів.
  • Використовували масиви для керування гравцями, коли вони приєднуються, виграють або залишають ігри.

Ваша гра майже готова для інших. Залучіть гравців у свою гру, зробивши свою арену унікальною та створивши привабливу мініатюру.
Додаткові покращення

Нижче наведено кілька способів покращити ваш досвід.

Покращте візуальні ефекти карти

Візуально цікава карта справляє сильне перше враження від вашої гри, заохочуючи людей почати грати. Витратьте трохи часу, щоб перетворити рівень сірого ящика на справжню карту. Під час створення переконайтеся, що ваша карта має чітке налаштування.

Для натхнення нижче наведено кілька прикладів карт, створених розробниками Roblox.

Карта від Luxeyes
Карта Janedel

Ви можете створювати в Studio або використовувати готові ресурси. Нижче наведено деякі запропоновані ресурси, завантажені Roblox, які можна використовувати для створення середовища. Кожна упаковка містить моделі високої якості з повною текстурою.

Зміна силового поля

Під час гри ви могли помітити силове поле, коли гравці відроджуються. Змініть тривалість дії силового поля у властивостях SpawnLocation.Клацніть відповідне місце появи.
У «Властивості» > «Форс-поле» змініть значення «Тривалість».

Playtest і Confirm Variables

Успішні ігри на Roblox часто тестуються, щоб переконатися, що ігровий процес веселий і чесний.

Протестуйте свою гру з однолітками та перевірте наступне:Чи влаштовує тривалість матчу? Матчі закінчуються надто швидко без гравця-переможця чи тривають надто довго?
Чи підходить вам розмір карти? Чи є якісь зони, які здаються занадто порожніми? Чи знадобиться багато часу, щоб зустріти іншого гравця?

Тестуйте, оцінюйте та змінюйте змінні, щоб покращити ігровий процес. Деякі приклади:Змініть GameSettings.matchDuration, щоб зробити матчі довшими на більшій карті.
Збільште тривалість перерви, якщо гравці вважають, що це надто раптово.

Зробіть лобі соціальним

Популярні ігри в Roblox часто додають міні-ігри, щоб заохотити гравців розважатися та спілкуватися, поки вони чекають перерви. Це може включати розміщення сфер із фізикою, щоб гравці могли грати, або навіть міні-смуги перешкод.

Додаткові завдання

Багато додатків Roblox продовжують отримувати оновлення навіть після випуску. Нижче наведено кілька додаткових завдань, які можуть додати нові функції для вашого проекту.

Пастки

Зробіть карти складнішими, додавши пастки або перешкоди, які шкодять гравцям. Дізнайтесь більше у Створення пасток.

Відстеження оцінки

Створіть таблицю лідерів, яка відстежує, скільки разів хтось виграє раунд. Введіть код один, використовуючи цю статтю в таблицях лідерів.

Бонуси

Створюйте частини зі сценарієм, які вносять зміни, наприклад змінюють швидкість гравця або силу атаки інструменту. Пам’ятайте, що після закінчення матчу використовуйте resetMatch(), щоб відтворити набір посилень. Для довідки дізнайтеся більше в підручнику Powerups .

Додайте більше арен

Створіть більше арен із різними налаштуваннями та закодуйте випадковий вибір карт. Кожного разу, коли гравці починають матч, скрипт модуля під назвою MapManager вибере випадкову карту, а потім призначить гравців до цих місць появи за потреби. Позначте поле коду нижче, якщо вам потрібні підказки або щоб побачити одну реалізацію.

--[[
Примітки щодо налаштування:
1. У Workspace створіть папку під назвою Maps. Зберігайте всі частини карти в окремих папках.
2. Для кожної окремої карти додайте папку під назвою SpawnLocations
3. Для початку матчу, використовується pickNewMap(), щоб отримати випадкову карту. Для появи гравців, використовується GetSpawnLocations(), щоб отримати таблицю з усіма локаціями.
]]

local MapManager = {}

local mapsFolder = workspace.Maps
-- Stores all maps that can be rotated between
local availableMaps = mapsFolder:GetChildren()

-- Stores the current map in play
local activeMap

-- Used to get random maps.
local randomGenerator = Random.new()

-- Gets a random map from the available maps table
function MapManager.pickNewMap()
local whichMapKey = randomGenerator:NextInteger(1,#availableMaps)
activeMap = availableMaps[whichMapKey]
print("New map: " .. activeMap.Name)
end

-- returns a table with the maps current spawn points
function MapManager.getSpawnLocations()
local spawnPoints = activeMap:FindFirstChild("SpawnLocations")
local availableSpawnPoints = spawnPoints:GetChildren()
return availableSpawnPoints
end

return MapManager