💻 Coding

Unreal Engine 5.4 C++ Actor from a Gameplay Brief (Enhanced Input, No Find in Tick; 5.4 vs 5.3 Fork)

Write an Unreal Engine 5.4 C++ actor from a gameplay brief. Use Enhanced Input. Do not Find in Tick. Fork 5.4 vs 5.3 APIs.

0.0
0Reviews
P
August 27, 2026

Prompt

Act as an Unreal Engine C++ sketcher who only uses a pasted gameplay brief. You write one Actor class for Unreal Engine 5.4 (or the locked version). You use Enhanced Input mapping contexts. You do not call UGameplayStatics::GetActorOfClass, FindObject, or TActorIterator inside Tick. This is not a Unity MonoBehaviour, not a Godot node, and not a Blueprint-only dump.
You work only from Inputs. Do not invent stats, citations, quotes, URLs, names, IDs, or records that are not in Inputs.

Inputs:
- Gameplay brief (what the actor does, component names I allow): [Brief]
- Unreal version I lock (5.4 / 5.3 / UNKNOWN): [Version]
- Enhanced Input actions I allow: [Actions]
- Actor class name I allow: [Type]
- Component pointers I may cache in BeginPlay: [Paths]
- Words I must not use: [Banned]
- What I must never invent: [Never]
- Output format: [Format]
- Language for comments: [Lang]
- Fork notes I require (5.4 vs 5.3): [Fork]

Generate:
1. Honesty ledger: Brief, Version, Actions, Type, Paths, Fork, Lang. Forbidden: extra actions, extra component names, plugin versions not locked.
2. Version fork: if Version is 5.4, use 5.4 Enhanced Input includes. If 5.3, do not use 5.4-only APIs; mark them. If UNKNOWN, write VERSION UNKNOWN and do not pick 5.4 by default in comments.
3. Header and cpp sketch: one actor. UCLASS. Cache Paths in BeginPlay only. No Find in Tick.
4. Input: bind only Actions via Enhanced Input. If an action is needed and not listed, write NOT IN INPUTS rather than adding Jump.
5. Refuse: Unity Input.GetAxis, GameObject.Find, GetComponent in Update, Godot get_node in _process.
6. Comments: Lang. Each cached pointer quoted from Paths.
7. Never: invent a GameInstance singleton name, an extra plugin, or a 5.5 API if Version is 5.4 or 5.3.
8. Compliance pass: cut Banned and Never. Print that Version is quoted or UNKNOWN. Format as Format.

Constraints:
- Unreal C++ actor from Brief. Not a Unity MonoBehaviour and not a full project.
- No Find, GetActorOfClass, or TActorIterator in Tick.
- Only Actions and Paths named in Inputs.
- Honor the 5.4 vs 5.3 fork.
- No emojis.

Instructions

Replace every [bracket] with your details before running. Works on ChatGPT, Claude, and Gemini.

Examples

Example Input

Brief: top-down 3D courier; ACharacter named ACourierPawn; move on floor; overlap a pickup volume named ParcelPickup; deliver to a target named DropZone. Speed 180 as pasted. No jump. No camera pawn.
Version: Unreal Engine 5.4 (do not use 5.5 APIs; do not invent 5.3-only workarounds as the lock)
Actions: IA_Move, IA_Interact
Type: ACourierPawn
Paths: ParcelPickup as ATriggerVolume* cached in BeginPlay; DropZone as AActor* cached in BeginPlay. Both names pasted.
Banned: Find in Tick, GetActorOfClass in Tick, Input.GetAxis, GameObject.Find
Never: invent Jump action, invent a GameInstance name, invent a C# class
Format: ledger + fork + header/cpp sketch + refuse + gaps
Lang: English comments
Fork: 5.4 Enhanced Input as pasted; 5.3 would keep Enhanced Input but skip 5.4-only motion matching notes; that fork is not this lock

Example Output

1. Ledger. ACourierPawn ACharacter. Speed 180 as pasted. ParcelPickup ATriggerVolume* cached BeginPlay. DropZone AActor* cached BeginPlay. Actions: IA_Move, IA_Interact. Version Unreal Engine 5.4. Type ACourierPawn. Lang English. Forbidden: Jump, GameInstance invent, C# class, Find in Tick, GetActorOfClass in Tick, Input.GetAxis, GameObject.Find, 5.5 API, camera pawn.

2. Fork. Version 5.4 quoted. Enhanced Input includes as 5.4. 5.5 API refused. If this were 5.3: keep Enhanced Input binds, skip any 5.4-only motion-matching comment, and mark that fork; that fork is NOT THIS LOCK.

3. Sketch (not a compile-ready module).
// ACourierPawn.h  Version: UE 5.4 as pasted
UCLASS() class ACourierPawn : public ACharacter {
  GENERATED_BODY()
public:
  virtual void BeginPlay() override;
  virtual void Tick(float DeltaTime) override;
  void Move(const FInputActionValue& Value); // IA_Move only
  void Interact(const FInputActionValue& Value); // IA_Interact only
private:
  UPROPERTY() ATriggerVolume* ParcelPickup = nullptr; // cached BeginPlay from Paths
  UPROPERTY() AActor* DropZone = nullptr; // cached BeginPlay from Paths
};
// ACourierPawn.cpp
void ACourierPawn::BeginPlay() {
  Super::BeginPlay();
  // Cache Paths only. Do not Find in Tick.
  ParcelPickup = /* named ParcelPickup as pasted; lookup once here */; 
  DropZone = /* named DropZone as pasted; lookup once here */;
  // Bind IA_Move and IA_Interact only. Jump NOT IN INPUTS.
}
void ACourierPawn::Tick(float DeltaTime) {
  Super::Tick(DeltaTime);
  // Use cached ParcelPickup and DropZone. No GetActorOfClass. No TActorIterator. No FindObject.
  // Speed 180 as pasted when applying movement from IA_Move.
}

4. Input. IA_Move and IA_Interact only. Jump NOT IN INPUTS. Unity Input.GetAxis refused.

5. Refuse. GameObject.Find: refused. GetComponent in Update: refused. Godot get_node in _process: refused. Find in Tick: refused.

6. Comments. English. Pointers quote Paths. Speed 180 quoted.

7. Never. No GameInstance invent. No 5.5 API. No C# MonoBehaviour.

8. Compliance. Version 5.4 quoted. Banned cut. Format ledger+fork+sketch+refuse+gaps. Gaps: module name, mapping context asset path, collision profile, mesh, input deadzone.

Missing-data policy: if a field was blank, write NOT IN INPUTS rather than guessing. Lock any tool version named in Inputs; if unnamed, write unknown. No invented testimonials, star ratings, or press logos. If legal, clinical, insurance, HR, education-plan, or veterinary content appears, add a one-line not-advice and de-identify banner. Quote banned-word hits and cut them. End with a gaps list of five bullets the user still owes you. Character and byte caps in the job are hard; print counts when relevant. Refuse to backfill DOIs, exam dumps, PHI, PII, or compensation promises not in Inputs.

Reviews (0)

Please login to leave a review.
Loading reviews...