Otimização

A otimização no Roblox é crucial para um jogo mais fluido em todos os dispositivos, maior estabilidade do jogo e maior retenção de usuários. Jogos otimizados têm maior probabilidade de receber avaliações e críticas positivas, aumentando sua visibilidade. Várias técnicas estão disponíveis para otimizar seu jogo de forma eficaz.

Streaming

O streaming no Roblox carrega e descarrega dinamicamente o conteúdo 3D conforme necessário, melhorando a experiência do jogador.
Image 1
Roblox Studio
  • Reduzindo a contagem de partes, pois menos partes levam a melhor desempenho.
  • Otimizar texturas para equilibrar qualidade visual e desempenho, especialmente para dispositivos de baixo desempenho.
  • Otimizar iluminação limitando luzes dinâmicas e usando luzes sem sombra quando possível, pois esses ajustes reduzem a carga computacional e melhoram o desempenho geral do jogo.

Configurações de Streaming

DefaultO motor escolhe a melhor opção, atualmente a mesma que o modo Legacy.
LegacyModelos carregam com seu pai quando um jogador entra e não descarregam, a menos que o pai faça.
ImprovedOs modelos carregam apenas quando necessário, não durante a entrada do jogador. Modelos não espaciais carregam logo após, enquanto modelos espaciais carregam conforme necessário e podem ser descarregados posteriormente.

Habilita ou desabilita o streaming de conteúdo do jogo.

DefaultSem verificações extras; os jogadores podem encontrar conteúdo ausente.
PauseReceivePausa a recepção de dados se partes críticas estiverem ausentes, evitando problemas de jogabilidade.
RequestSolicita partes ausentes quando um jogador entra em uma área, reduzindo as chances de encontrar conteúdo não carregado.

Define a área mínima ao redor do jogador onde o conteúdo é transmitido com a maior prioridade. O padrão é 64 studs. Aumentar esse valor usa mais memória e largura de banda.

Define a distância máxima do jogador onde o conteúdo é transmitido. O padrão é 1024 studs. O motor pode manter o conteúdo carregado anteriormente além desse raio, se a memória permitir.

DefaultO conteúdo é removido apenas quando a memória está baixa (igual ao LowMemory).
LowMemoryDescarrega conteúdo para liberar memória quando necessário.
OpportunisticDescarrega conteúdo além do raio alvo mesmo sem pressão de memória, otimizando o desempenho.

Nível de Detalhe (LOD)

No Roblox, essa configuração determina a qualidade visual dos modelos em experiências com streaming de instâncias habilitado.
StreamingMeshUsa uma 'impostora' de malha de baixa resolução para modelos fora do raio de streaming.
Disabled/AutomaticMalhas de baixa resolução não são exibidas, mantendo o detalhe completo dentro do raio de streaming.
Image 1
Roblox Studio

Física

Para otimizar o desempenho do jogo no Roblox, gerenciar configurações de física é crucial. Você pode desativar partes que não exigem física definindo-as como ancoradas (part.Anchored = true). Além disso, minimizar colisões desnecessárias desativando a colisão para certas partes (part.CanCollide = false) aumenta ainda mais o desempenho.
Image 1
Image 2
Roblox Studio

Mais Opções de Otimização

  • Reduzindo a contagem de partes, pois menos partes levam a melhor desempenho.
  • Otimizar texturas para equilibrar qualidade visual e desempenho, especialmente para dispositivos de baixo desempenho.
  • Otimizar iluminação limitando luzes dinâmicas e usando luzes sem sombra quando possível, pois esses ajustes reduzem a carga computacional e melhoram o desempenho geral do jogo.
  • Uso Eficiente de Partes e Malhas: Minimizar o uso de malhas de alta densidade e usar as BaseParts do Roblox sempre que possível.
  • Otimização de Scripts: Identificando e eliminando loops desnecessários, otimizando algoritmos e usando estruturas de dados eficientes.
  • Otimização de Rede: Reduzir a transmissão de dados e garantir uma comunicação fluida cliente-servidor.
  • Otimizações no Lado do Cliente: Transferir tarefas para o cliente para reduzir a carga do servidor e melhorar a resposta.
  • Serviço de Detritos: Usar o Serviço de Detritos para gerenciar objetos temporários.
local Debris = game:GetService("Debris")

local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace

-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)

Microprofiler

O MicroProfiler é uma ferramenta no Roblox Studio usada para analisar e diagnosticar problemas de desempenho em seu jogo.
Image 1
Roblox Studio

Ctrl Alt F6 (⌘⌥F6)

Image 1
Roblox Studio

MicroProfiler (Azul & Laranja)

Image 1
Roblox Studio
Color BarDetailsIndication
LaranjaO tempo de trabalho excede o tempo de renderização em quadros padrão.Indica desempenho normal, onde o foco está na CPU.
AzulO tempo de renderização excede o tempo de trabalho.Indica um gargalo de renderização. Passe o mouse para ver detalhes em 'Esperando pela Thread de Renderização'. Um grande número de barras azuis sugere que a renderização é o principal problema.

MicroProfiler (Picos)

Image 1
Roblox Studio
Graph PositionDetailsIndication
MeioAs barras geralmente devem estar no meio do gráfico.Indica operação normal com agendamento de tarefas equilibrado.
PicosAs barras aumentam ou disparam acima do meio do gráfico.Indica que mais tempo foi necessário para realizar um processo do Agendador de Tarefas, geralmente devido ao aumento da carga de trabalho, como lidar com muitas partes móveis.

MicroProfiler (Pausa)

Ctrl P (⌘P)

Os quadros no MicroProfiler podem ser navegados clicando ou arrastando no gráfico, com a roda de rolagem usada para ampliar a linha do tempo. Diferentes tarefas são mostradas com rótulos coloridos, e quando uma tarefa é executada durante outra, o rótulo correspondente aparece diretamente abaixo do outro.
Image 1
Roblox Studio

MicroProfiler (Ampliar)

Clique com o botão direito em um rótulo para ampliar a linha do tempo para corresponder à duração do rótulo.

Image 1
Image 2
Roblox Studio

Clique com o botão esquerdo para mostrar o gráfico de linhas no canto inferior direito da visualização do jogo, mostrando quanto tempo a tarefa leva a cada quadro. Este gráfico permite testes de desempenho.

Image 1
Roblox Studio
PrincipalDetails
PrincipalGerencia entrada, física, animações, som, atualizações do Studio e coordena outras threads.
TrabalhadorAuxilia a thread principal em tarefas como rede, física e pathfinding. Vários trabalhadores são usados com base nos núcleos da CPU.
Renderização (GPU)Lida com a renderização gráfica.

Perfilagem Personalizada

Para monitorar quanto tempo os scripts levam para tarefas complexas, comece usando debug.profilebegin no início e debug.profileend no final da seção. Isso medirá o tempo gasto entre esses pontos e criará um rótulo na linha do tempo do MicroProfiler.
local Debris = game:GetService("Debris")

local part = Instance.new("Part")
part.Position = Vector3.new(0, 10, 0)
part.Parent = workspace

-- Add the part to Debris, which will remove it after 5 seconds
Debris:AddItem(part, 5)