6.72M
Категория: ПрограммированиеПрограммирование

27. Лобби

1.

2023
Название программы
Roblox
Тема занятия
Лобби
Изображение от Storyset на Freepik.com

2.

2023
План
занятия
Roblox
Введение
Практика
Лобби;
Практика
Скриптинг;
Домашнее задание
Итоги
Изображение от Storyset на Freepik.com

3.

2023
Roblox
Проверяем
домашнее задание
1. Вертолёт
Получилось ли у тебя
создать еще один вертолет?
2. Площадки
3. Обратная связь
Где ты расположил
вертолетные площадки?
Что в выполнении домашнего
задания тебе показалось
самым сложным?
Изображение от Storyset на Freepik.com

4.

2023
Roblox
Введение
На этом уроке ты новую карту под лобби,
оформишь ее ландшафт, создашь важные
для механики лобби объекты.
Научишься добавлять
несколько карт к одной игре.
Напишешь скрипт механики
телепорта между картами.
Изображение от Storyset на Freepik.com

5.

2023
Roblox
Практика
Лобби
Изображение от Storyset на Freepik.com

6.

2023
Roblox
Практика
В чем недостаток больших игр,
где одновременно сражаются много игроков?
Вот несколько советов,
как прокачать лобби:
Нужно ждать, когда все соберутся. И время
ожидания разработчики помогают скрасить
с помощью лобби – отдельной арены,
на которую постепенно подключаются игроки.
1
Разложи в нем все оружие из игры
(но помни, оно должно исчезнуть после того,
как игроки полетят на настоящую битву);
2
Сделай предметы окружения разрушаемыми
и интерактивными;
3
Оставь возможность поменять скин
персонажа прямо из лобби;
4
На свой страх и риск добавь войсчат.
В процессе они могут попробовать надеть
любую броню, пострелять из любого оружия,
и даже покататься на транспорте.
Ну и конечно же организовывать флешмобы
(«Come to me, I'm a snake» в PUBG).

7.

2023
Практика
Для лобби нам необходимо
создать дополнительную карту.
Создай новую карту выбрав один
из первых трех шаблонов.
Roblox

8.

2023
Практика
Сгенерируй на карте ландшафт,
определи место спауна.
Внимание! Карта должна быть
не слишком большой.
Помни, что это место временного
ожидания начала раунда.
На ней не должен присутствовать
основной геймплей.
Roblox

9.

2023
Roblox
Практика
Как будет работать лобби
Игроки спаунятся на этой карте.
На ней есть две функционально важные
локации: ворота для подтверждения
готовности играть и локация, где
располагаются все готовые игроки.
Когда игрок заходит в ворота
для подтверждения, его телепортируют
на локацию ко всем готовым игрокам
(но все еще не в основную игру).
После того, как закончилось время
ожидания начала игры, игроков
телепортирует на другую карту – основную.

10.

2023
Практика
Дай волю фантазии и создай ворота
для телепорта на локацию ожидания:
Roblox

11.

2023
Практика
Внутри ворот расположи
маленький невидимый парт.
Он нам понадобится, чтобы
прикрепить к нему интерфейс,
который будет передавать
информацию об оставшемся
времени до телепортации,
и количестве игроков, готовых
к отправке.
Roblox

12.

2023
Roblox
Практика
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.

2023
Roblox
Практика
1
Переименуй этот парт
в «TeleportPart», а барьер
локации в «Barrier».
2
Объедини эти парты
в модель и переименуй
ее в «Zone».
Нам осталось добавить еще один
невидимый парт на карту
и расположить его вне этих двух локаций.
Он нам понадобится для того,
чтобы телепортировать игрока обратно,
если вдруг он передумал начинать игру.
Изображение от Storyset на Freepik.com

17.

2023
Практика
Создай такой парт, сделай его
невидимым, поставь на якорь
и отключи свойство коллизии.
Roblox

18.

2023
Roblox
Практика
Переименуй этот парт
в «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.

2023
Roblox
Практика
Теперь давай создадим кнопку.
1
Добавь в MainGui
кнопку TextButton
2
Переименуй ее
в «LeaveButton».

22.

2023
Практика
Настрой ее внешний вид.
И сделай невидимой
с помощью параметра Visible.
Roblox

23.

2023
Roblox
Интерфейс
и локации готовы.
Осталось заскриптовать все механики
и подключить основную карту к игре.
Изображение от Storyset на Freepik.com

24.

2023
Для начала опубликуй карту
лобби с помощью
Publish to Roblox.
Roblox
Затем перейти на карту
с основным геймплеем и опубликуй
ее с помощью Publish to Roblox
As…
Высветится окно с играми, в которые
можно добавить карту.

25.

2023
Практика
Выбери карту лобби.
Затем нажми на Add as a new place
и сохрани.
Roblox

26.

2023
Roblox
Практика
Скриптинг
Изображение от Storyset на Freepik.com

27.

2023
Практика
Перед тем, как начать писать скрипт,
нам необходимо настроить пару
параметров игры.
Для начала измени
максимальное количество
игроков на обеих картах.
Roblox

28.

2023
Практика
После этого зайди в настройки
безопасности игры Security
и разреши доступ игры
к API серверам.
Это необходимо, чтобы игра имела
возможность телепортировать
игроков между картами.
Roblox

29.

2023
Roblox
Практика
1
3
Теперь добавь внутрь модели ворот
Gate серверный скрипт Script
В Teleporting интерфейса добавь
локальный скрипт LocalScript
2
Переименуй его
в «GateScript».
4
Переименуй его
в «TeleportingScript».

30.

2023
Roblox
Практика
5
В LeaveButton добавь
локальный скрипт LocalScript
7
В ReplicatedStorage добавь
два RemoteEvent
8
Переименуй их в «LeaveEvent»
и «TeleportingEvent».
6
Переименуй его
в «LeaveScript».
Эти события будут передавать
информацию от серверного скрипта
к локальным скриптам интерфейса.

31.

2023
Roblox
Практика
Открой серверный скрипт 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.

2023
21
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.

2023
47
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.

2023
Roblox
Практика
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.

2023
Roblox
Практика
Для того, чтобы узнать ID карты, которых
необходимо вставить в скрипт, открой
AssetManager через вкладку View.
Зайди в папку Places.
Нажми ПКМ на необходимую
карту и скопируй ее ID.

36.

2023
Roblox
Открой локальный скрипт 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.

2023
Roblox
Открой локальный скрипт 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.

2023
Roblox
Всё готово!
Попробуй протестировать.
Подсказка:
Чтобы протестировать телепорт между
картами, лучше найти игру в самом Роблоксе
и проверить механику там.
Изображение от Storyset на Freepik.com

39.

2023
Roblox
Домашнее
задание
1. Локации
2. Игроки
Оформи карту лобби,
добавив на нее различные
декорации и оружие;
Измени количество игроков
на карте в настройках карты
и в скриптах.
Отправь наставнику файл
карты в формате .rblx.
Изображение от Storyset на Freepik.com

40.

2023
Roblox
Итоги
1. Что такое…
3. Как узнать…
Что такое UIPadding?
Как узнать ID карты?
2. Как сделать…
4. Поделись
Как добавить новую карту
к игре?
Что тебе показалось
интереснее: создавать
локации или писать скрипт?
Изображение от Storyset на Freepik.com
English     Русский Правила