Pular para o conteúdo
Skillpedia
Código em geral48 mil · #4447

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/unreal-engine-cpp-pro/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/unreal-engine-cpp-pro/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-pro

Ou 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.md
Conteú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

  1. UObject e Coleta de Lixo:

    • Sempre use UPROPERTY() para variáveis membro UObject* 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 prefira addToRoot() geralmente.
    • Entenda a verificação IsValid() versus nullptr. IsValid() lida com o estado de "pendente de exclusão" de forma segura.
  2. Sistema de Reflexão do Unreal:

    • Use UCLASS(), USTRUCT(), UENUM(), UFUNCTION() para expor tipos ao sistema de reflexão e aos Blueprints.
    • Minimize BlueprintReadWrite quando possível; prefira BlueprintReadOnly para estados que não devem ser sobrescritos por lógica em BPs de UI/Level.
  3. 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 em BeginPlay.
    • Structs vs Classes: Use structs F para tipos pesados em dados e não-UObject para reduzir a sobrecarga.

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_LOG com 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 em UPROPERTY?
  • 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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#4447
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas