Похожие презентации:
27. Лобби
1.
2023Название программы
Roblox
Тема занятия
Лобби
Изображение от Storyset на Freepik.com
2.
2023План
занятия
Roblox
Введение
Практика
Лобби;
Практика
Скриптинг;
Домашнее задание
Итоги
Изображение от Storyset на Freepik.com
3.
2023Roblox
Проверяем
домашнее задание
1. Вертолёт
Получилось ли у тебя
создать еще один вертолет?
2. Площадки
3. Обратная связь
Где ты расположил
вертолетные площадки?
Что в выполнении домашнего
задания тебе показалось
самым сложным?
Изображение от Storyset на Freepik.com
4.
2023Roblox
Введение
На этом уроке ты новую карту под лобби,
оформишь ее ландшафт, создашь важные
для механики лобби объекты.
Научишься добавлять
несколько карт к одной игре.
Напишешь скрипт механики
телепорта между картами.
Изображение от Storyset на Freepik.com
5.
2023Roblox
Практика
Лобби
Изображение от Storyset на Freepik.com
6.
2023Roblox
Практика
В чем недостаток больших игр,
где одновременно сражаются много игроков?
Вот несколько советов,
как прокачать лобби:
Нужно ждать, когда все соберутся. И время
ожидания разработчики помогают скрасить
с помощью лобби – отдельной арены,
на которую постепенно подключаются игроки.
1
Разложи в нем все оружие из игры
(но помни, оно должно исчезнуть после того,
как игроки полетят на настоящую битву);
2
Сделай предметы окружения разрушаемыми
и интерактивными;
3
Оставь возможность поменять скин
персонажа прямо из лобби;
4
На свой страх и риск добавь войсчат.
В процессе они могут попробовать надеть
любую броню, пострелять из любого оружия,
и даже покататься на транспорте.
Ну и конечно же организовывать флешмобы
(«Come to me, I'm a snake» в PUBG).
7.
2023Практика
Для лобби нам необходимо
создать дополнительную карту.
Создай новую карту выбрав один
из первых трех шаблонов.
Roblox
8.
2023Практика
Сгенерируй на карте ландшафт,
определи место спауна.
Внимание! Карта должна быть
не слишком большой.
Помни, что это место временного
ожидания начала раунда.
На ней не должен присутствовать
основной геймплей.
Roblox
9.
2023Roblox
Практика
Как будет работать лобби
Игроки спаунятся на этой карте.
На ней есть две функционально важные
локации: ворота для подтверждения
готовности играть и локация, где
располагаются все готовые игроки.
Когда игрок заходит в ворота
для подтверждения, его телепортируют
на локацию ко всем готовым игрокам
(но все еще не в основную игру).
После того, как закончилось время
ожидания начала игры, игроков
телепортирует на другую карту – основную.
10.
2023Практика
Дай волю фантазии и создай ворота
для телепорта на локацию ожидания:
Roblox
11.
2023Практика
Внутри ворот расположи
маленький невидимый парт.
Он нам понадобится, чтобы
прикрепить к нему интерфейс,
который будет передавать
информацию об оставшемся
времени до телепортации,
и количестве игроков, готовых
к отправке.
Roblox
12.
2023Roblox
Практика
1
3
Переименуй этот парт в
«GuiPart», а сами ворота в
«Gate».
2
Объедини их в одну модель
и переименуй ее в «Gate».
В GuiPart добавь BillboardGui,
а в BillboardGui добавь Frame
В Frame добавь:
TextLabel и переименуй
его в «Status»;
TextLabel и переименуй
его в «time»;
TextLabel и переименуй
его в «players»;
UIPadding. Этот объект применяет
отступ к границам объектов интерфейса.
13.
2023Практика
Настрой внешний вид интерфейса:
Roblox
14.
2023Практика
Теперь нам необходимо создать
ограниченную территорию,
в которую будут телепортировать
готовых к игре игроков.
Создай такую локацию.
Roblox
15.
2023Практика
И расположи внутри нее еще один
невидимый парт. К этому парту
игроки будут телепортироваться.
Не забудь поставить этот парт
на якорь и отключить свойство коллизии.
Roblox
16.
2023Roblox
Практика
1
Переименуй этот парт
в «TeleportPart», а барьер
локации в «Barrier».
2
Объедини эти парты
в модель и переименуй
ее в «Zone».
Нам осталось добавить еще один
невидимый парт на карту
и расположить его вне этих двух локаций.
Он нам понадобится для того,
чтобы телепортировать игрока обратно,
если вдруг он передумал начинать игру.
Изображение от Storyset на Freepik.com
17.
2023Практика
Создай такой парт, сделай его
невидимым, поставь на якорь
и отключи свойство коллизии.
Roblox
18.
2023Roblox
Практика
Переименуй этот парт
в «LeaveRoomPart».
Теперь нам осталось создать интерфейс
экрана телепортации и кнопку выхода
из локации, где находятся игроки, готовые к игре.
1
Для этого в StarterGui
добавь ScreenGui
2
Переименуй его
в «MainGui».
3
В MainGui добавь Frame
4
Переименуй его
в «Teleporting».
5
В Teleporting
добавь TextLabel.
19.
2023Практика
Настрой внешний вид интерфейса
так, чтобы он захватывал весь экран.
Roblox
20.
2023Практика
Сделай объекты интерфейса невидимыми,
но не с помощью параметра Visible, а с помощью
BackgroundTransparency у Teleporting
и TextTransparency у TextLabel.
Roblox
21.
2023Roblox
Практика
Теперь давай создадим кнопку.
1
Добавь в MainGui
кнопку TextButton
2
Переименуй ее
в «LeaveButton».
22.
2023Практика
Настрой ее внешний вид.
И сделай невидимой
с помощью параметра Visible.
Roblox
23.
2023Roblox
Интерфейс
и локации готовы.
Осталось заскриптовать все механики
и подключить основную карту к игре.
Изображение от Storyset на Freepik.com
24.
2023Для начала опубликуй карту
лобби с помощью
Publish to Roblox.
Roblox
Затем перейти на карту
с основным геймплеем и опубликуй
ее с помощью Publish to Roblox
As…
Высветится окно с играми, в которые
можно добавить карту.
25.
2023Практика
Выбери карту лобби.
Затем нажми на Add as a new place
и сохрани.
Roblox
26.
2023Roblox
Практика
Скриптинг
Изображение от Storyset на Freepik.com
27.
2023Практика
Перед тем, как начать писать скрипт,
нам необходимо настроить пару
параметров игры.
Для начала измени
максимальное количество
игроков на обеих картах.
Roblox
28.
2023Практика
После этого зайди в настройки
безопасности игры Security
и разреши доступ игры
к API серверам.
Это необходимо, чтобы игра имела
возможность телепортировать
игроков между картами.
Roblox
29.
2023Roblox
Практика
1
3
Теперь добавь внутрь модели ворот
Gate серверный скрипт Script
В Teleporting интерфейса добавь
локальный скрипт LocalScript
2
Переименуй его
в «GateScript».
4
Переименуй его
в «TeleportingScript».
30.
2023Roblox
Практика
5
В LeaveButton добавь
локальный скрипт LocalScript
7
В ReplicatedStorage добавь
два RemoteEvent
8
Переименуй их в «LeaveEvent»
и «TeleportingEvent».
6
Переименуй его
в «LeaveScript».
Эти события будут передавать
информацию от серверного скрипта
к локальным скриптам интерфейса.
31.
2023Roblox
Практика
Открой серверный скрипт GateScript и напиши в нем следующее:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
local TS = game:GetService("TeleportService")
local placeId = "13306869515"
local leaveGuiEvent = game.ReplicatedStorage.LeaveEvent
local TeleportingEvent = game.ReplicatedStorage.TeleportingEvent
local list = {}
local billboard = script.Parent.GuiPart.billboardGui
local timer = nil
local teleporting = false
local spawnTeleport = workspace.Zone.TeleportPart
local function updateGui()
billboard.Frame.players.Text = "Players: " ..#list.. "/30"
end
local function removeFromList(character)
for i=1,#list do
if list[i] == character.Name then
table.remove(list,i)
updateGui()
end
Продолжение
кода
32.
202321
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Roblox
end
end
local function teleportPlayers()
if #list > 0 then
billboard.Frame.Status.Text = "TELEPORTING"
billboard.Frame.Status.TextColor3 = Color3.fromRGB(255, 0, 0)
local playersToTeleport = {}
local teleportTime = 0
for i=1,#list do
if game.Players:findFirstChild(list[i]) then
table.insert(playersToTeleport,game.Players:findFirstChild(list[i]))
TeleportingEvent:FireClient(game.Players:findFirstChild(list[i]))
else
table.remove(list,i)
end
end
local code = TS:ReserveServer(placeId)
teleporting = true
TS:TeleportToPrivateServer(placeId,code,playersToTeleport)
repeat wait() until #list <= 0
billboard.Frame.Status.Text = "READY"
billboard.Frame.Status.TextColor3 = Color3.fromRGB(255, 0, 0)
teleporting = false
end
Продолжение
кода
33.
202347
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Roblox
end
script.Parent.Gate.Touched:Connect(function(hit)
if hit.Parent:findFirstChild("Humanoid") then
if teleporting == false then
local char = hit.Parent
local player = game.Players:FindFirstChild(char.Name)
local alreadyExists = false
for i=1,#list do
if list[i] == char.Name then
alreadyExists = true
end
end
if alreadyExists == false then
if #list < 30 then
table.insert(list,char.Name)
char.PrimaryPart.CFrame = spawnTeleport.CFrame + Vector3.new(10, 0, 0)
updateGui()
leaveGuiEvent:FireClient(player)
end
player.CharacterRemoving:connect(function(character)
removeFromList(character)
end)
Продолжение
кода
34.
2023Roblox
Практика
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
end
end
end
end)
leaveGuiEvent.OnServerEvent:Connect(function(player)
if player.Character then
player.Character:MoveTo(game.Workspace.LeaveRoomPart.Position)
removeFromList(player.Character)
end
end)
while wait() do
timer = 45
for i=1,timer do
timer = timer - 1
billboard.Frame.time.Text = timer
wait(1)
end
teleportPlayers()
end
Комментарии
к скрипту
35.
2023Roblox
Практика
Для того, чтобы узнать ID карты, которых
необходимо вставить в скрипт, открой
AssetManager через вкладку View.
Зайди в папку Places.
Нажми ПКМ на необходимую
карту и скопируй ее ID.
36.
2023Roblox
Открой локальный скрипт TeleportingScript и напиши в нем следующее:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
local TweenService = game:GetService("TweenService")
local player = game.Players.LocalPlayer
local TeleportingEvent = game.ReplicatedStorage.TeleportingEvent
local background = script.Parent
local text = background.TextLabel
TeleportingEvent.OnClientEvent:Connect(function(timer)
local goal_start = {}
local goal_start1 = {}
goal_start.BackgroundTransparency = 0
goal_start1.TextTransparency = 0
local tweenInfo = TweenInfo.new(2)
local tween_start = TweenService:Create(background, tweenInfo, goal_start)
local tween_start1 = TweenService:Create(text, tweenInfo, goal_start1)
tween_start:Play()
tween_start1:Play()
end)
Комментарии
к скрипту
37.
2023Roblox
Открой локальный скрипт LeaveScript и напиши в нем следующее:
1
2
3
4
5
6
7
8
9
10
11
12
local LeaveEvent = game.ReplicatedStorage.LeaveEvent
local player = game.Players.LocalPlayer
local button = script.Parent
LeaveEvent.OnClientEvent:Connect(function()
button.Visible = true
end)
button.MouseButton1Down:connect(function()
LeaveEvent:FireServer()
button.Visible = false
end)
Комментарии
к скрипту
38.
2023Roblox
Всё готово!
Попробуй протестировать.
Подсказка:
Чтобы протестировать телепорт между
картами, лучше найти игру в самом Роблоксе
и проверить механику там.
Изображение от Storyset на Freepik.com
39.
2023Roblox
Домашнее
задание
1. Локации
2. Игроки
Оформи карту лобби,
добавив на нее различные
декорации и оружие;
Измени количество игроков
на карте в настройках карты
и в скриптах.
Отправь наставнику файл
карты в формате .rblx.
Изображение от Storyset на Freepik.com
40.
2023Roblox
Итоги
1. Что такое…
3. Как узнать…
Что такое UIPadding?
Как узнать ID карты?
2. Как сделать…
4. Поделись
Как добавить новую карту
к игре?
Что тебе показалось
интереснее: создавать
локации или писать скрипт?
Изображение от Storyset на Freepik.com