Roblox para desenvolvedores de Unreal

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Esta página inclui informações para ajudar os desenvolvedores de Unreal Engine experientes a começar com o Roblox: orientação básica, uma comparação conceitual e diferenças importantes entre as duas plataformas.

Se oriente

O Esboçador do Unreal e o Explorador do Roblox Studio são as principais janelas para organizar elementos em espaços 3D.Ambos exibem uma hierarquia de objetos e pastas.No entanto, o Outliner tem uma estrutura mais plana e menos definida e mostra apenas Actors .A janela do Explorer tem uma estrutura profundamente aninhada e rigorosa e exibe todos os objetos como parte da hierarquia, mesmo objetos que seriam considerados componentes no Unreal.

O Gerenciador de Recursos do Roblox Studio e a Caixa de Ferramentas se sobrepõem ao Navegador de Conteúdo Unreal.O Gerenciador de Recursos permite que você gerencie todos os recursos dentro da sua experiência, enquanto a Caixa de Ferramentas permite que você acesse quaisquer recursos que tenha publicado.A Caixa de Ferramentas também permite que você pesquise a Loja do Criador por recursos do Roblox ou da comunidade.A Loja do Criador é semelhante ao Mercado do Unreal Engine, mas você pode acessá-la diretamente a partir da interface do usuário do Studio.

Diferenças filosóficas

O Roblox é um "motor de simulação" em vez de um motor de jogo tradicional.Unreal Actors e Roblox Parts ambos servem como blocos de construção fundamentais, mas na prática, os dois são bastante diferentes:

  • Representação : Actors em Unreal são um conceito de nível superior para qualquer objeto em um nível, enquanto Parts em Roblox são projetados para representar objetos físicos como blocos de madeira e esferas de plástico.
  • Física : Para executar simulações de física no Unreal, você ativa a física dentro de determinados componentes (como o StaticMeshComponent ) ou adicionando componentes ao Actors , como restrições de física.No Roblox, a física é construída no digitarde dado Parts ; o motor lida com interações automaticamente.

Você pode ver a diferença imediatamente se criar um Actor e um Part.O Actor tem pouco mais do que uma localização, rotação e dimensionar/escalonar.O Part tem a mesma informação - mais um material e cor, valores para refletância e transparência, massa e forma, e muito mais.Os dois só começam a compartilhar propriedades semelhantes quando você compara um StaticMeshActor em Unreal (por exemploum cubo) para um MeshPart em Roblox.

An example Unreal actor in the Details panel.

Painel de Detalhes do Editor Irreal
>

An example Roblox part in the Properties window.
Janela de Propriedades do Roblox Studio

Outra comparação útil é a Unreal Actor para o Roblox Model.Modelos atuam como um contêiner para uma coleção de peças interconectadas da mesma maneira que Actors em Unreal são contêineres para componentes.Você especifica uma das partes do modelo como sua parte primária para definir o ponto de pivô.Modelos também contêm scripts, animações, efeitos sonoros, prompts, restrições, emissores de partículas e muito mais.

Por exemplo, um Unreal Actor pode ter um NiagraComponent que usa vários emissores para alcançar o efeito visual desejado, uma malha para a forma, uma restrição de física para adicionar elasticidade e um script para a interatividade do jogador.No Outliner, você vê um único Actor chamado SpringyFireball .

No Roblox, um modelo comparável SpringyFireball na janela do Explorer pode parecer algo assim:


Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

A filosofia de física padrão do Roblox se estende ao processo de construção de modelos 3D.No Roblox, soldar múltiplas peças juntas em uma montagem é uma excelente maneira de construir rapidamente coisas, porque o Roblox trata as peças soldadas como um único corpo rígido.Essa abordagem não é prática no Unreal.

Em vez de usar unidades métricas padrão para comprimento e massa, o Roblox usa unidades noticiais chamadas studs e Roblox Mass Units (RMUs).Para conversões e recomendações aproximadas de métricas em torno do uso, veja Unidades.

Questões de localização

As experiências do Roblox são multijogador por padrão, então o Roblox Studio inclui muitos locais de armazenamento diferentes com comportamentos específicos.Por exemplo, um script pode ser executado quando você colocá-lo em ReplicatedStorage, mas não quando você colocá-lo em StarterPlayerScripts.Para mais informações, veja Tempo de execução cliente-servidor e Organização de objetos.

Localização | Descrição :--- | :--- Espaço de Trabalho | Representa o mundo do jogo.Esta localização funciona bem para scripts de servidor que se anexam diretamente a objetos e controlam seu comportamento.ReplicatedFirst | Contém objetos que se replicam para o cliente antes de qualquer outra coisa.Esta localização é ideal para o conjunto mínimo absoluto de objetos e scripts de cliente necessários para exibir uma página de carregamento.ReplicatedStorage | Contém objetos que são replicados tanto para o cliente quanto para o servidor.Esta localização é ideal para Class.ModuleScript\|ModuleScripts que você deseja usar tanto no servidor quanto no cliente.Class.LocalScript\|LocalScripts não corra desta localização, mas Class.Script\|Scripts com um contexto de execução de Client faça.Serviço de Script de Servidor | Contém scripts do servidor.Esta localização é ideal para scripts que precisam acessar funcionalidades ou objetos do lado do servidor, como lógica de jogo e armazenamento em nuvem.Armazenamento do Servidor | Contém objetos do lado do servidor.Esta localização é ideal para objetos grandes que não precisam ser imediatamente replicados aos clientes quando eles se juntam a uma experiência.Scripts não são executados a partir desta localização, mas você pode armazenar o lado do servidor Class.ModuleScript\|ModuleScriptsStarterPlayer.StarterCharacterScripts | Contém Class.LocalScript\|LocalScripts que são executados quando o personagem é gerado.StarterPlayer.StarterPlayerScripts | Contém scripts gerais de propósito Class.LocalScript\|LocalScripts que são executados quando o jogador se junta à experiência.StarterGui | Contém elementos de GUI que o cliente exibe quando carrega o jogo.Class.LocalScript\|LocalScripts pode correr desta localização.Esta localização é ideal para scripts que modificam a interface do usuário do jogo, como adicionar botões, menus e pop-ups.Pacote de Iniciante | Geralmente contém apenas Class.Tool\|Tools, mas também pode incluir Class.LocalScript\|LocalScripts para configurar mochilas de jogador.

Programação

As experiências do Roblox suportam três tipos diferentes de scripts Luau:

  • Scripts de cliente

    Esses scripts são executados no cliente e o servidor não tem visibilidade em seu comportamento.Por razões legadas, esses scripts podem tomar a forma de LocalScripts ou Scripts com um valor de RunContext de Client.Scripts de cliente tipicamente vivem em ReplicatedStorage , StarterPlayerScripts ou StarterCharacterScripts .

  • Scripts do servidor

    Esses scripts são executados no servidor e o cliente não tem visibilidade em seu comportamento.Os scripts do servidor têm um valor de RunContext de Server e normalmente vivem em ServerScriptService, o conteúdo do qual não é replicado para o cliente do jogo.

  • Scripts de módulo

    Esses scripts são pedaços reutilizáveis de código que retornam exatamente um valor, geralmente uma função ou tabela (ou uma tabela de funções).Em vez de duplicar código em scripts de cliente e servidor, use scripts de módulo para compartilhar código e dados entre os dois.Scripts de módulo muitas vezes vivem em ReplicatedStorage, mas podem viver em outro lugar se você quiser compartilhar código entre scripts no mesmo lado do limite cliente-servidor.

O Unreal não tem o conceito de diferentes tipos de scripts.Se você optar por fazer um jogo multijogador, você escreve código adicional para sincronizar o estado do jogo entre o servidor e os clientes.

No Unreal, muito da funcionalidade da engine está disponível ao estender as classes integradas como UObject , ACharacters , ULevel e UWorld em C++ ou Blueprint.O Unreal suporta eventos personalizados, mas muitas classes incluem eventos que o motor invoca automaticamente como parte do ciclo de vida natural do nível.

Comparado ao sistema de "tique" irreal, os scripts do Roblox são muito mais baseados em eventos.Você acessa a funcionalidade do motor similar ao se inscrever em serviços e ouvir atualizações.

C++ e Luaau

Para scripting, o Unreal usa C++. O Roblox usa Luau, um idioma de script derivado de Lua 5.1.

Comparado ao Luau, o C++ tem uma vantagem geral de desempenho, que pode ou não ser relevante para os tipos de experiências que você deseja compilação / versão / build.Luau é gradualmente digitado e tem uma síntese menos verbosa.Em projetos maiores, no entanto, a digitação gradual pode introduzir categorias de bugs que os idiomas fortemente tipados como C++ evitam, portanto, considere habilitar verificação de tipo rigorosa em scripts do Roblox.

O Unreal também inclui um sistema de script visual chamado Blueprints.O Roblox tem plugins de terceiros que oferecem funcionalidades semelhantes, mas sem sistema comparável integrado.

Exemplo de código Luau

O seguinte exemplo de código Luau mostra como, depois que um jogador equipa uma vara de pesca, ouvir a entrada do usuário (neste caso, a chaveE ) e chamar funções adicionais:


-- Obtenha os serviços de jogo necessários
local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Obtenha um script de módulo do ReplicatedStorage que retorne uma única função
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Assume que este script é um filho da vara de pesca
local fishingPole = script.Parent
local ACTION_CAST = "Cast"
-- Verifique se a chave está baixo, então chame outra função
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Ative apenas a ação quando o jogador equipar a vara de pesca
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Desabilite a ação quando o jogador desequipar a vara de pescar
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

O script do Roblox pode ser relativamente conciso porque o Roblox tem muitas suposições integradas: um Player com um personagem Humanoid conectado ao servidor e pode equipar Tools.Essas suposições não existem no Unreal, então a implementação seria muito diferente.

Recursos

Unreal e Roblox ambos suportam a importação de malhas e modelos personalizados no formato .fbx .Certos tipos de recursos podem exigir configurações e configurações de exportação específicas de seu software de modelagem de terceiros.Para mais informações, consulte as seguintes páginas:

No Unreal, a importação de recursos é feita no seu diretório Content, visível no Navegador de Conteúdo.No Roblox, os recursos são importados para o seu Espaço de Trabalho e na seção Caixa de Ferramentas ou Inventário da Gerenciador de Recursos.

O Roblox também oferece um plugin de código aberto Blender para simplificar o processo de importação, semelhante à função Enviar para Unreal das Ferramentas do Blender.

Transformações

As transformações do props.engine e do Roblox's CFrames servem a propósitos semelhantes ao representar transformações 3D de objetos:

  • Ambas as transformações e CFrames representam a posição e a rotação de um objeto no espaço 3D.Transformações incluem dimensionar/escalonar, enquanto o Roblox usa uma propriedade BasePart.Size que não faz parte do CFrame.
  • Ambos suportam multiplicação (ou seja, composição) para transformações complexas e têm métodos integrados para outras manipulações.

Colaboração

No Unreal, você colabora com sistemas de controle de versão como Perforce ou SVN, geralmente através da interface de usuário integrada do Unreal.Esses sistemas de controle de versão usam o modelo centralizado de "checkout" que bloqueia os arquivos enquanto uma pessoa trabalha neles.

Os arquivos do Roblox vivem na nuvem (embora você possa exportar cópias), então o Roblox Studio fornece fluxos de trabalho de colaboração integrados para edição simultânea, gerenciamento de grupos, permissões, elaboração de scripts e muito mais.Veja Colaboração.

Plugins

Semelhante ao Unreal, o Roblox Studio suporta plugins, que podem simplificar ou dar a você controle adicional sobre vários aspectos do processo de desenvolvimento.Plugins estão disponíveis na Loja do Criador, assim como recursos, muitos grátis.

Glossário

| Irreal | Roblox | Notas | | :--- | :--- | :--- | | Nível | Lugar | | | Ator | Part ou Model | Veja Diferenças filosóficas .| | Classe de projeto | Pacote | | | Transformar | CFrame | CFrame não inclui informações de escala.Veja Transformações.| | Outliner | Janela Explorer | | | Painel de Detalhes | Janela de Propriedades | | | Porta de Visualização de Nível | Visualização de Porta | | | Navegador de Conteúdo | Gerenciador de Recursos ou Caixa de Ferramentas | | | Modo de Paisagem | Editor de Terreno | | | Início do Jogador | | | | Log de Saída | Saída | | | Loja de Criadores | Criador de Loja | | | Barra de menu | Barra de menu | | | Plugin | Plugin | | | Registro de saída | Saída | | | Mercado | Loja do Criador | | | Barra de menu | Barra de menu | | | Plugin | Plugin | |