unreal-engine-cpp-pro
Guia seu agente no desenvolvimento em C++ para o Unreal Engine. Ensina as melhores práticas para otimizar o código e garantir um bom desempenho nos jogos.
O que ela faz
Este guia ajuda você a escrever código C++ para o jogo Unreal Engine 5. Ele ensina as melhores práticas para tornar seu código mais seguro, rápido e organizado, seguindo as regras do jogo.
Quando usar
- ✓Quando você está programando em C++ para o Unreal Engine 5.
- ✓Ao criar partes do jogo como personagens ou itens.
- ✓Se você precisa otimizar o desempenho do seu código ou corrigir erros.
Exemplo do que pedir para a IA
“Como posso garantir que meu código C++ para Unreal Engine 5 siga as melhores práticas?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O guia explica como usar as ferramentas do Unreal Engine corretamente, como gerenciar a memória para evitar problemas e como organizar seu código para que ele funcione bem e seja fácil de entender.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill unreal-engine-cpp-proOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/unreal-engine-cpp-pro/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Unreal Engine C++ Pro
Esta habilidade fornece diretrizes de nível especialista para desenvolver com Unreal Engine 5 usando C++. Ela foca em escrever código robusto, performático e em conformidade com os padrões.
Quando Usar
Use esta habilidade quando:
- Desenvolver código C++ para projetos Unreal Engine 5.x
- Escrever Actors, Components ou classes derivadas de UObject
- Otimizar código crítico de performance no Unreal Engine
- Depurar vazamentos de memória ou problemas de coleta de lixo
- Implementar funcionalidades expostas para Blueprints
- Seguir os padrões e convenções de codificação da Epic Games
- Trabalhar com o sistema de reflexão do Unreal (UCLASS, USTRUCT, UFUNCTION)
- Gerenciar carregamento de assets e referências "soft"
Não use esta habilidade quando:
- Trabalhar com projetos apenas em Blueprint (sem código C++)
- Desenvolver para versões do Unreal Engine anteriores à 5.x
- Trabalhar em engines de jogos não-Unreal
- A tarefa não estiver relacionada ao desenvolvimento do Unreal Engine
Princípios Fundamentais
UObject e Coleta de Lixo:
- Sempre use
UPROPERTY()para variáveis membroUObject*para garantir que sejam rastreadas pelo Coletor de Lixo (GC). - Use
TStrongObjectPtr<>se precisar manter uma referência raiz fora de um grafo UObject, mas prefiraaddToRoot()geralmente. - Entenda a verificação
IsValid()versusnullptr.IsValid()lida com o estado de "pendente de exclusão" de forma segura.
- Sempre use
Sistema de Reflexão do Unreal:
- Use
UCLASS(),USTRUCT(),UENUM(),UFUNCTION()para expor tipos ao sistema de reflexão e aos Blueprints. - Minimize
BlueprintReadWritequando possível; prefiraBlueprintReadOnlypara estados que não devem ser sobrescritos por lógica em BPs de UI/Level.
- Use
Performance em Primeiro Lugar:
- Tick: Desabilite o Tick (
bCanEverTick = false) por padrão. Habilite-o apenas se for absolutamente necessário. Prefira timers (GetWorldTimerManager()) ou lógica orientada a eventos. - Casting: Evite
Cast<T>()em loops "quentes". Armazene referências em cache emBeginPlay. - Structs vs Classes: Use structs
Fpara tipos pesados em dados e não-UObject para reduzir a sobrecarga.
- Tick: Desabilite o Tick (
Convenções de Nomenclatura (Estritas)
Siga o padrão de codificação da Epic Games:
- Templates: Prefixo
T(ex:TArray,TMap). - UObject: Prefixo
U(ex:UCharacterMovementComponent). - AActor: Prefixo
A(ex:AMyGameMode). - SWidget: Prefixo
S(widgets Slate). - Structs: Prefixo
F(ex:FVector). - Enums: Prefixo
E(ex:EWeaponState). - Interfaces: Prefixo
I(ex:IInteractable). - Booleans: Prefixo
b(ex:bIsDead).
Padrões Comuns
1. Busca Robusta de Componentes
Evite GetComponentByClass em Tick. Faça isso em PostInitializeComponents ou BeginPlay.
void AMyCharacter::PostInitializeComponents() {
Super::PostInitializeComponents();
HealthComp = FindComponentByClass<UHealthComponent>();
check(HealthComp); // Fail hard in dev if missing
}
2. Implementação de Interface
Use interfaces para desacoplar sistemas (ex: sistema de Interação).
// Interface call check
if (TargetActor->Implements<UInteractable>()) {
IInteractable::Execute_OnInteract(TargetActor, this);
}
3. Carregamento Assíncrono (Referências "Soft")
Evite referências "hard" (UPROPERTY(EditDefaultsOnly) TSubclassOf<AActor>) para assets massivos que forçam ordens de carregamento. Use TSoftClassPtr ou TSoftObjectPtr.
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSoftClassPtr<AWeapon> WeaponClassToLoad;
void AMyCharacter::Equip() {
if (WeaponClassToLoad.IsPending()) {
WeaponClassToLoad.LoadSynchronous(); // Or use StreamableManager for async
}
}
Depuração
- Logging: Use
UE_LOGcom categorias personalizadas.DEFINE_LOG_CATEGORY_STATIC(LogMyGame, Log, All); UE_LOG(LogMyGame, Warning, TEXT("Health is low: %f"), CurrentHealth); - Mensagens na Tela:
if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Died!")); - Visual Logger: Extremamente útil para depurar IA. Implemente
IVisualLoggerDebugSnapshotInterface.
Checklist antes do PR
- Este Actor precisa dar Tick? Pode ser um Timer?
- Todos os membros
UObject*estão encapsulados emUPROPERTY? - Referências "hard" (TSubclassOf) estão causando cadeias de carregamento? Podem ser Ponteiros "Soft"?
- Você limpou delegates verificados em
EndPlay?
Limitações
- Use esta habilidade apenas quando a tarefa corresponder claramente ao escopo descrito acima.
…
Perguntas frequentes
O que é 'Garbage Collection'?
É um sistema automático que limpa a memória que não está mais sendo usada pelo jogo, evitando que ele fique lento ou trave.
Por que é importante usar 'UPROPERTY()'?
Usar 'UPROPERTY()' garante que o 'Garbage Collector' saiba quais objetos de memória são importantes e não os apague por engano.
O que significa 'desabilitar o Tick'?
O 'Tick' é uma função que roda a cada quadro do jogo. Desabilitá-lo quando não é necessário economiza recursos e melhora o desempenho.
Detalhes
Descrição original do autor
Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #4447
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC