← Todos os guias
Guia 5

Crie o seu primeiro jogo de roubar e defender

Cada jogador ganha uma base. Pegue a gema no meio, corra para casa para marcar ponto e acerte quem a carrega.

Grátis70 minutos · Iniciante, último guia · Roblox Studio
1
Passo 1 / 8

Prepare o lugar

  1. Abra o Roblox Studio, clique em New Experience e escolha o modelo Baseplate.
  2. A gema vai ficar no meio do mapa. Quatro bases vão ficar em volta dela, cada uma a uns 60 studs do meio.
  3. Este jogo precisa de pelo menos dois jogadores, então no final você vai testar com dois jogadores de teste.

Mais detalhes

  • O modelo Baseplate está na lista de modelos da tela inicial.
  • O campo Position no Properties mostra onde a peça está. Position 60, 0.5, 0 fica a 60 studs do meio do mapa.
  • Mova a SpawnLocation, a plataforma onde os jogadores aparecem, para perto do meio, para todos os jogadores começarem à mesma distância da gema.
  • No Mac, use a tecla Cmd toda vez que este guia disser Ctrl.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

2
Passo 2 / 8

Construa as bases

  1. No Explorer, passe o mouse sobre Workspace, clique em + e adicione uma Folder. Dê o nome Bases.
  2. Adicione uma Part. Coloque Size em 16, 1, 16, ligue Anchored e deixe ela cinza. Arraste ela para Bases e dê o nome Base1.
  3. Duplique ela três vezes com Ctrl+D. Dê às cópias os nomes Base2, Base3 e Base4 e mova uma para cada lado do mapa.

Mais detalhes

  • Para colocar a peça na pasta, arraste o nome dela no Explorer até o nome Bases.
  • As cópias feitas com Ctrl+D já ficam dentro da pasta Bases. Mude o nome de cada uma com F2.
  • Os nomes precisam ser exatamente Base1, Base2, Base3 e Base4, sem espaço antes do número.
  • Um servidor com mais de quatro jogadores tem mais jogadores do que bases. Mais tarde você pode definir o tamanho do servidor como 4 nas configurações do jogo no Creator Hub.
Dica. Deixe as quatro bases à mesma distância do meio. Assim o jogo fica justo para todo mundo.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

3
Passo 3 / 8

Crie a gema

  1. Adicione uma Part no meio do mapa, uns 4 studs acima do chão. Coloque Size em 2, 2, 2, escolha uma cor bem forte e coloque Material em Neon. Dê o nome Gem.
  2. Ligue Anchored e Massless, e desligue CanCollide.
  3. Passe o mouse sobre Gem, clique em + e adicione um ProximityPrompt. Coloque ActionText em Take e HoldDuration em 1.

O que cada parte faz

  • Um ProximityPrompt mostra um botão quando o jogador está perto. Segurar ele por 1 segundo ativa.
  • Massless ligado e CanCollide desligado evitam que a gema deixe o jogador mais lento ou empurre quem a carrega.

Mais detalhes

  • Anchored, Massless e CanCollide são caixas de seleção no Properties.
  • Quando você clica em +, digite ProximityPrompt para achar. Clique nele e depois mude ActionText e HoldDuration no Properties.
  • No jogo, um botãozinho com a letra E e a palavra Take aparece quando você está perto da gema.
  • No celular, os jogadores seguram o dedo nesse botão.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

4
Passo 4 / 8

Dê uma base e uma pontuação a cada jogador

  1. Passe o mouse sobre ServerScriptService, clique em + e adicione um Script. Dê o nome Game.
  2. Apague a linha que já está lá e cole este código. É a primeira de três partes.
  3. Aperte Play. Uma base fica verde. Essa é a sua.
ServerScriptService > Game (1 / 3)
local Players = game:GetService("Players")

local bases = workspace:WaitForChild("Bases")
local gem = workspace:WaitForChild("Gem")
local home = gem.CFrame
local carrier = nil

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local score = Instance.new("IntValue")
	score.Name = "Score"
	score.Parent = stats

	for _, base in ipairs(bases:GetChildren()) do
		if base:GetAttribute("Owner") == nil then
			base:SetAttribute("Owner", player.UserId)
			base.Color = Color3.fromRGB(60, 220, 120)
			break
		end
	end
end)

Players.PlayerRemoving:Connect(function(player)
	for _, base in ipairs(bases:GetChildren()) do
		if base:GetAttribute("Owner") == player.UserId then
			base:SetAttribute("Owner", nil)
			base.Color = Color3.fromRGB(160, 160, 160)
		end
	end
end)

O que cada parte faz

  • As primeiras linhas encontram as bases e a gema e lembram onde a gema começou.
  • SetAttribute escreve o UserId do dono na primeira base livre.
  • PlayerRemoving libera a base de novo quando o dono sai.

Mais detalhes

  • O script abre em uma nova aba. Clique dentro do código, aperte Ctrl+A e depois Ctrl+V para trocar tudo.
  • Qual base fica verde depende da ordem das bases na pasta. Ande por aí para achar a sua.
  • A lista de jogadores no canto superior direito mostra Score 0.
  • Ainda não acontece nada quando você anda até a gema e segura o E. Isso vem no próximo passo.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

5
Passo 5 / 8

Deixe os jogadores pegarem a gema

  1. Abra o script Game de novo.
  2. Cole este código embaixo do código do passo anterior.
  3. Aperte Play, ande até a gema e segure E. A gema pula para cima da sua cabeça e segue você.
ServerScriptService > Game (2 / 3)
local function resetGem()
	carrier = nil

	local weld = gem:FindFirstChild("CarryWeld")
	if weld then
		weld:Destroy()
	end

	gem.Anchored = true
	gem.CFrame = home
	gem.ProximityPrompt.Enabled = true
end

gem.ProximityPrompt.Triggered:Connect(function(player)
	local character = player.Character
	local root = character and character:FindFirstChild("HumanoidRootPart")
	if carrier or not root then return end

	carrier = player
	gem.ProximityPrompt.Enabled = false
	gem.Anchored = false
	gem.CFrame = root.CFrame * CFrame.new(0, 4, 0)

	local weld = Instance.new("WeldConstraint")
	weld.Name = "CarryWeld"
	weld.Part0 = root
	weld.Part1 = gem
	weld.Parent = gem
end)

O que cada parte faz

  • carrier lembra quem está com a gema. Ninguém mais pode pegar ela enquanto alguém a carrega.
  • Um WeldConstraint cola a gema no jogador, então ela se move junto com ele.
  • resetGem tira a solda e coloca a gema de volta no meio.

Mais detalhes

  • Para abrir o script de novo, dê um clique duplo em Game no Explorer.
  • Clique depois do último caractere do código e aperte Enter duas vezes. Depois aperte Ctrl+V. Desta vez não aperte Ctrl+A, ou você troca a primeira parte.
  • A gema flutua 4 studs acima da sua cabeça enquanto você a carrega.
  • Para testar: pegue a gema e confira se o botão Take some enquanto você a carrega.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

6
Passo 6 / 8

Adicione a pontuação e os acertos

  1. Cole esta última parte bem no final do script Game.
  2. Aperte Play, pegue a gema e corra para cima da sua base verde. O Score sobe 1 e a gema volta para o meio.
ServerScriptService > Game (3 / 3)
for _, base in ipairs(bases:GetChildren()) do
	base.Touched:Connect(function(hit)
		local player = Players:GetPlayerFromCharacter(hit.Parent)
		if player and player == carrier and base:GetAttribute("Owner") == player.UserId then
			player.leaderstats.Score.Value += 1
			resetGem()
		end
	end)
end

while true do
	task.wait(0.2)

	if carrier then
		local weld = gem:FindFirstChild("CarryWeld")
		local root = weld and weld.Part0
		local character = root and root.Parent
		local humanoid = character and character:FindFirstChildOfClass("Humanoid")

		if not humanoid or humanoid.Health <= 0 or root.Position.Y < -20 then
			resetGem()
		else
			for _, other in ipairs(Players:GetPlayers()) do
				local otherRoot = other ~= carrier and other.Character and other.Character:FindFirstChild("HumanoidRootPart")
				if otherRoot and (otherRoot.Position - root.Position).Magnitude < 5 then
					resetGem()
					break
				end
			end
		end
	end
end

O que cada parte faz

  • Cada base confere três coisas: um jogador tocou nela, esse jogador está com a gema e a base é dele.
  • O loop lá embaixo roda 5 vezes por segundo. Se outro jogador chega a menos de 5 studs de quem carrega, a gema volta.
  • O loop também reinicia a gema se quem a carrega sai do jogo ou cai do mapa.

Mais detalhes

  • De novo, clique depois do último caractere do script, aperte Enter duas vezes e cole.
  • O script pronto tem três partes nesta ordem: as bases e a pontuação, pegar a gema, e pontuar e marcar o outro jogador.
  • Uma base cinza que não é de ninguém não dá pontos. Só conta a sua própria base verde.
  • Sozinho você não consegue testar a marcação. Isso você faz com dois jogadores no próximo passo.
Erro comum. Colar esta parte no meio do script. O loop while nunca termina, então o código que fica abaixo dele nunca roda.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

7
Passo 7 / 8

Teste com dois jogadores

  1. Ao lado do botão Play, abra o menuzinho e escolha Server & Clients. Coloque o número de jogadores em 2 e aperte Play.
  2. O Studio abre duas janelas de jogo. Cada uma é um jogador diferente, com uma base diferente.
  3. Pegue a gema em uma janela. Na outra janela, corra para cima desse jogador. A gema volta para o meio.
  4. Pare o teste com o botão vermelho Stop na janela principal do Studio e depois volte o menu para Test.

Mais detalhes

  • O menuzinho é a seta bem ao lado do botão Play, no alto do Studio.
  • As duas janelas do jogo abrem uma em cima da outra. Arraste uma para o lado para ver as duas.
  • Clique dentro de uma janela antes de usar o teclado. As teclas vão para a janela em que você clicou por último.
  • Testar com duas janelas precisa de um computador com memória suficiente. Se estiver muito lento, feche outros programas antes.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

8
Passo 8 / 8

Publique

  1. Escolha File → Publish to Roblox. Dê um nome ao jogo e uma descrição curta.
  2. No site Creator Hub, abra o seu jogo e responda o questionário de Maturity.
  3. Coloque o jogo como Public e mande o link para um amigo.

Mais detalhes

  • Na primeira vez que você publica, o Studio pede um nome e uma descrição. Clique em Create.
  • O Creator Hub é o site create.roblox.com. Entre com a mesma conta e clique no seu jogo na lista.
  • O Roblox pode pedir mais coisas antes de um jogo ficar público, por exemplo uma verificação de idade na conta. A página diz o que está faltando.
  • Se você tem menos de 18 anos, faça este passo junto com um responsável.
Dica. Este jogo só é divertido com outros jogadores. Chame dois ou três amigos para o mesmo servidor na primeira partida.
Este passo não funciona para mim

Confira primeiro estas três coisas

  • O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
  • O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
  • Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.

Ainda está travado? Escreva para nós →

Agora mude você mesmo

  • Termine a rodada quando um jogador chegar a 5 pontos e volte todas as pontuações para 0.
  • Adicione uma segunda gema de outra cor.
  • Deixe quem carrega a gema mais lento. Dica: coloque Humanoid.WalkSpeed em 12 quando a gema for pega e de volta em 16 em resetGem.