Unreal Engine 연동
Unreal Engine 연동
텍스트 중심 가이드입니다 · 예상 소요 10분
중급프레임워크 연동10분읽기 약 2분업데이트 2026-04-14
Unreal Engine에서 ConnectBase C++ SDK로 멀티플레이와 데이터를 연동합니다
이 튜토리얼에서 배울 내용
Unreal SDK 플러그인 설치
C++에서 SDK 초기화
게임서버 연결 및 룸 관리
Blueprint 연동
Unreal Engine 연동
Unreal Engine에서 ConnectBase C++ SDK를 사용하여 멀티플레이, 데이터 저장, 실시간 통신을 구현합니다.
완성된 기능
- Unreal Engine 프로젝트에 ConnectBase 플러그인 설치
- C++에서 SDK 초기화 및 서버 연결
- 게임서버 룸 생성/참여
- Blueprint에서 SDK 기능 호출
사전 준비
- Unreal Engine 5.2 이상이 설치되어 있어야 합니다
- C++ 프로젝트로 생성되어 있어야 합니다 (Blueprint 전용은 C++ 변환 필요)
- ConnectBase 콘솔에서 앱을 만들고 Public Key를 확인합니다
1. 플러그인 설치하기
방법 1: Marketplace (권장)
- Epic Games Launcher → Marketplace 탭
- "ConnectBase" 검색
- 무료 → 프로젝트에 추가 클릭
- 프로젝트를 선택하고 설치
방법 2: 수동 설치
- GitHub Releases에서 최신 버전 다운로드
- 압축 해제하여
Plugins/ConnectBase/폴더에 복사 .uproject파일에 플러그인 추가:
json
{
"Plugins": [
{
"Name": "ConnectBase",
"Enabled": true
}
]
}- 프로젝트를 다시 빌드합니다
2. SDK 초기화하기
게임 시작 시 SDK를 초기화합니다. GameInstance 클래스에서 설정하는 것을 권장합니다.
MyGameInstance.h:
cpp
#pragma once
#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "ConnectBase/ConnectBaseClient.h"
#include "MyGameInstance.generated.h"
UCLASS()
class UMyGameInstance : public UGameInstance
{
GENERATED_BODY()
public:
virtual void Init() override;
UPROPERTY()
UConnectBaseClient* CB;
};MyGameInstance.cpp:
cpp
#include "MyGameInstance.h"
void UMyGameInstance::Init()
{
Super::Init();
// SDK 초기화 — Public Key는 프로젝트 설정에서 관리
CB = UConnectBaseClient::Create("cb_pk_...");
CB->Connect();
UE_LOG(LogTemp, Log, TEXT("ConnectBase SDK 초기화 완료"));
}💡 Public Key를 코드에 직접 넣는 대신,
DefaultGame.ini에서 관리하는 것을 권장합니다:ini[ConnectBase] PublicKey=cb_pk_...
3. 게임서버 연결 & 룸 관리
멀티플레이 게임의 룸을 생성하고 참여합니다.
cpp
// 새 룸 생성
void AMyGameMode::CreateRoom()
{
auto* GI = GetGameInstance<UMyGameInstance>();
FRoomOptions Options;
Options.MaxPlayers = 4;
Options.GameMode = "deathmatch";
Options.Region = "kr";
GI->CB->GameServer->CreateRoom(Options,
FOnRoomCreated::CreateLambda([](const FRoom& Room)
{
UE_LOG(LogTemp, Log, TEXT("룸 생성됨: %s"), *Room.Id);
})
);
}
// 기존 룸 참여
void AMyGameMode::JoinRoom(const FString& RoomId)
{
auto* GI = GetGameInstance<UMyGameInstance>();
GI->CB->GameServer->JoinRoom(RoomId,
FOnRoomJoined::CreateLambda([this](const FRoom& Room)
{
UE_LOG(LogTemp, Log, TEXT("룸 참여 완료: %d명"), Room.PlayerCount);
// 상태 변경 이벤트 구독
Room.OnStateChanged.AddLambda([this](const FGameState& State)
{
SyncPlayerStates(State);
});
})
);
}4. 실시간 상태 동기화
cpp
// Tick에서 내 상태 전송
void AMyPlayerController::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
if (IsLocalController() && GetPawn())
{
FPlayerState State;
State.Position = GetPawn()->GetActorLocation();
State.Rotation = GetPawn()->GetActorRotation();
State.Animation = CurrentAnimState;
auto* GI = GetGameInstance<UMyGameInstance>();
GI->CB->GameServer->SendState(State);
}
}
// 다른 플레이어 상태 수신
void AMyGameMode::SyncPlayerStates(const FGameState& State)
{
for (const auto& Player : State.Players)
{
AActor* PlayerActor = FindPlayerActor(Player.Id);
if (PlayerActor)
{
// 부드러운 보간 이동
FVector NewLocation = FMath::VInterpTo(
PlayerActor->GetActorLocation(),
Player.Position,
GetWorld()->GetDeltaSeconds(),
10.0f
);
PlayerActor->SetActorLocation(NewLocation);
}
}
}5. Blueprint 연동
C++ 없이 Blueprint에서도 SDK를 사용할 수 있습니다:
- Get ConnectBase 노드로 SDK 인스턴스 획득
- Create Room / Join Room 노드로 룸 관리
- Send State 노드로 상태 전송
- On State Changed 이벤트로 상태 수신
💡 Blueprint 노드는 C++ API를 그대로 감싸고 있으므로, 동일한 기능을 사용할 수 있습니다.
6. 빌드 & 테스트
- 에디터에서 테스트: PIE(Play In Editor)에서 2인 이상 테스트
- Play → Number of Players: 2
- Net Mode: Play As Client
- 패키징: File → Package Project로 빌드
- Dedicated Server: Server Target으로 별도 빌드 가능
다음 단계
- 매치메이킹 —
CB->GameServer->FindMatch()로 자동 매칭 - 보이스 채팅 — WebRTC 기반 음성 채팅 연동
- 리더보드 — 데이터베이스에 점수 저장 및 순위 조회
- 인앱 결제 — 서버리스 함수로 결제 처리
이 튜토리얼이 도움이 됐나요?