unreal-engine について
unreal-engineは、Unreal EngineでC++とBlueprintsを使った3Dゲームやシミュレーションの開発を支援するスキルです。レンダリング、物理演算、アセット管理、クロスプラットフォーム向けビルドを扱います。
主な機能
- 01C++とBlueprintsによる開発
- 023Dレンダリングと物理演算の設定
- 03BlueprintとC++アセットの管理
- 04非同期タスクの利用
- 05Unreal Build Toolによるプロジェクトのビルド
活用シーン
- 01Blueprintによるゲームロジックの試作
- 02C++ Actorとゲーム機能の作成
- 033Dゲームやシミュレーションの構築
- 04ビルドやBlueprintのエラー調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill unreal-engineインストール後、Claude Code で/unreal-engineを入力して読み込まれたか確認します。
詳細
unreal-engine
目的
このスキルを使うと、AI が Unreal Engine の開発を支援できます。クロスプラットフォームのプロジェクトを対象に、C++ と Blueprints を使用した 3D ゲームやシミュレーションの作成に重点を置いています。
使用するタイミング
マルチプレイヤーゲーム、シミュレーション、VR 体験など、高品質な 3D ゲームを開発するときに使用します。高度なレンダリング、物理演算、AI の挙動が必要なプロジェクトや、迅速なプロトタイピングのために C++ とビジュアルスクリプティングを連携させる場合にも適しています。
主な機能
- C++ と Blueprints によるクロスプラットフォーム開発:Unreal Build Tool(UBT)を通じて、Windows、macOS、Linux、コンソールをサポートします。
- 3D レンダリングと物理演算:視覚効果には Niagara、シミュレーションには PhysX を活用できます。たとえば、
UPrimitiveComponent::SetSimulatePhysics(true);を使用すると、オブジェクトの物理演算を有効にできます。 - アセット管理:ブループリント(.uasset files)や C++ クラスを扱い、Engine.ini などの .ini ファイルで
r.DefaultFeature.AutoExposure=Trueのような設定を構成できます。 - マルチスレッドのパフォーマンス:バックグラウンド処理には、
AsyncTask(ENamedThreads::GameThread, [](){ /* code */ });を使用した非同期タスクを利用できます。 - ツールとの連携:バージョン管理には Git を組み込めます。また、Blueprints の HTTP リクエストを介して外部 API と連携できます。
使用パターン
プロジェクトを始めるには、UBT を使用して新しい Unreal プロジェクトを生成し、ゲームロジックを C++ コードまたは Blueprints で記述します。C++ では UCLASS オブジェクトを拡張してメソッドをオーバーライドし、Blueprints ではアクターに接続されたイベントグラフを作成します。反復テストには必ずエディターを使用します。UnrealEditor.exe MyProject.uproject で起動し、変更を UnrealBuildTool.exe でコンパイルします。エラーが発生しやすいタスクでは、コードを try-catch で囲んで UObject の操作を行い、UE_LOG(LogTemp, Warning, TEXT("Message")); でログを記録します。
主なコマンド/API
- UBT CLI コマンド:
UnrealBuildTool.exe -project=Path/To/Project.uproject -target=MyGame -configuration=Development -platform=Win64でプロジェクトをビルドします。-cleanを使用すると、クリーンビルドを実行できます。 - エディターコマンド:コマンドラインから
UnrealEditor.exe -game -logを実行すると、ログ記録を有効にしてプレイモードで起動します。 - C++ API の例:
AActor* Actor = GetWorld()->SpawnActor<AActor>(AActor::StaticClass(), FVector(0,0,0), FRotator::ZeroRotator);でアクターをスポーンし、UStaticMeshComponent* MeshComp = Actor->FindComponentByClass<UStaticMeshComponent>();でコンポーネントにアクセスできます。 - Blueprint API:Blueprints では、「Get Actor Location」ノードの後に「Set Actor Location」ノードを使用してオブジェクトを移動します。同等のコードは次のとおりです:
FVector NewLocation = Actor->GetActorLocation() + FVector(1,0,0); Actor->SetActorLocation(NewLocation);。 - 設定形式:設定には .ini ファイルを編集します。たとえば、DefaultEngine.ini では次のように設定します:
[Core.System] AllowCommandLineAudioDeviceSelection=True。コードではGConfig->GetFloat(TEXT("Section.Key"), Value, GEngineIni);を使用して設定を読み込みます。
連携に関する注意事項
Epic Games Launcher から Unreal Engine をインストールして、ワークフローに組み込みます(Epic アカウントが必要です。スクリプトでダウンロードを自動化する場合は、認証に env var $EPIC_API_KEY を使用します)。外部ツールを利用するには、Build.cs ファイルでライブラリをリンクします。たとえば、MyProject.Build.cs に PublicDependencyModuleNames.Add("Core"); を追加します。他のスキルと組み合わせる場合は、「game-dev」クラスターのツールと連携し、C++ コンパイラスキルの出力を UBT に渡します。パスには環境変数を使用します。たとえば、ルートディレクトリには $UNREAL_ENGINE_PATH を使用し、スクリプトで export UNREAL_ENGINE_PATH=/path/to/engine と設定します。API と連携するには、Unreal の HTTP モジュールを使用します:TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest(); Request->OnRequestComplete().BindLambda([](FHttpRequestPtr Req, FHttpResponsePtr Res){ /* handle response */ }); Request->ProcessRequest();。
エラー処理
よくあるエラーには、依存関係の不足によるビルドの失敗があります。UnrealBuildTool.exe -verbose でログを確認し、Build.cs にモジュールを追加して解決してください。たとえば、「Core」が不足している場合は追加して再ビルドします。実行時のクラッシュには、アサーションに ensure(Condition) を使用するか、非同期コードで例外を捕捉します:try { AsyncTask(ENamedThreads::AnyBackgroundThreadNormal, [](){ throw; }); } catch (...) { UE_LOG(LogTemp, Error, TEXT("Async error caught")); }。Blueprint のコンパイルエラーには、エディターでノードを検証して対処します。コードでは、if (IsValid(Actor)) { /* proceed */ } else { UE_LOG(LogTemp, Warning, TEXT("Actor is invalid")); } を使用します。ネットワークの問題については、if (Request->GetResponse()->GetResponseCode() == 200) { /* success */ } else { UE_LOG(LogTemp, Error, TEXT("HTTP error: %d"), Request->GetResponse()->GetResponseCode()); } で確認してください。
具体的な使用例
- シンプルな C++ アクターのビルド:
UnrealBuildTool.exe -project=NewProject.uproject -newprojecttype=Game -game=Blankで新しいプロジェクトを作成します。次に、コードで MyActor.h にUFUNCTION() void MyFunction();を追加し、MyActor.cpp にvoid AMyActor::MyFunction() { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Function called")); }を追加します。UnrealBuildTool.exe Development Win64 NewProjectでコンパイルします。 - 移動用 Blueprint の実装:Unreal Editor で ACharacter から Blueprint クラスを作成します。イベントグラフを追加し、「InputAction MoveForward」を「Add Movement Input」に接続します。対応する C++ コードは次のとおりです。AMyCharacter.cpp に、
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); PlayerInputComponent->BindAxis("MoveForward", this, &AMyCharacter::MoveForward); } void AMyCharacter::MoveForward(float Value) { AddMovementInput(GetActorForwardVector(), Value); }を記述します。
グラフの関係
- 関連するクラスター:game-dev(たとえば、ゲーム開発のワークフローで unity-engine とタグを共有します)。
- タグによる接続:unreal-engine は 3D レンダリングのスキルに関連し、game-development は blueprints と C++ に特化したツールに関連します。