전체 글 7

[책임지는 프로그래머] 2화 - 언리얼 엔진에서의 구현 상속

프로그래밍을 공부하다 보면 꼭 듣게 되는 조언이 있다.“구현 상속은 피하라. 인터페이스 상속과 조합(Composition)을 써라.”처음에는 이런 말들이 좀 어렵게 느껴졌다.“그냥 상속하면 되지, 왜 피하라고 하지?”그래도 공부를 하다 보니 이런 조언들이 단지 문법 얘기가 아니라, 설계 철학과 유지보수의 관점에서 나온다는 걸 알게 됐다.그런데, 요즘 언리얼 엔진을 배우면서 약간 혼란스러웠다.언리얼에서는 구현 상속을 너무 당연하게 쓰고 있었기 때문이다.AActor, UObject, UComponent 등 거의 모든 핵심 기능들이 상속을 전제로 만들어져 있다.게다가 Tick(), BeginPlay() 같은 오버라이드도 기본처럼 쓰인다.그래서 어느 순간 이런 의문이 생겼다.“도대체 왜 일반 C++에서는 구현 ..

[책임지는 프로그래머] 1화 - Programming as CPU Instructions

Programming as CPU Instructions— “프로그래밍은 CPU에게 내리는 명령이다”라는 관점에서 본 C++과 컴파일러, 그리고 프로그래머의 책임프로그래밍은 CPU에 내리는 명령이다C++과 컴파일러, 그리고 프로그래머의 책임에 대한 나의 정리요즘 C++을 공부하면서, 문득 이런 생각이 들었다.프로그래밍은 결국 CPU에게 명령을 내리는 일이다.이건 너무 당연한 말일지도 모르지만, 그 당연함이 오히려 나에겐 큰 인식의 전환이었다."CPU가 결국 내 코드를 실행한다"는 당연한 사실을 구체적인 책임의 문제로 느끼기 시작했기 때문이다.내가 내리는 명령, 누가 번역해주는가?물론 우리가 직접 CPU 인스트럭션을 작성하지는 않는다.C++처럼 고수준 언어로 코드를 짜고, 그 코드를 컴파일러가 번역해서 실..

[언리얼 입문] 5 - 언리얼 C++ 코드의 진입 방식과 구조 이해

언리얼은 C++ 기반 게임 엔진이다.블루프린트만으로 게임을 만들 수 있지만,결국 언리얼의 진짜 힘은 C++ 구조를 이해하고 제어할 수 있을 때 발휘된다.이번 편에서는 언리얼에서 C++ 코드는 어떻게 동작하고,어디에서 시작하며, 어떤 구조로 확장되는지를 소개한다.1. 언리얼의 C++ 클래스는 어떻게 생겼나?언리얼의 C++ 클래스는 UCLASS()와 GENERATED_BODY()를 통해리플렉션과 에디터 연동이 가능한 구조를 만든다.UCLASS()class AMyActor : public AActor{ GENERATED_BODY()public: AMyActor();protected: UPROPERTY(EditAnywhere) float Health; UFUNCTION(Blueprin..

[언리얼 입문] 4 - Blueprint 시스템의 작동 원리와 한계

언리얼을 처음 접하면 대부분은 블루프린트부터 시작한다.시각적인 스크립팅 언어로, 빠르게 기능을 만들 수 있다.하지만 그 내부에는 어떤 구조가 있고, 한계는 무엇일까?이번 편에서는 블루프린트의 작동 원리, 엔진 내부 구조, 그리고C++과의 연결 방식을 초심자 관점에서 풀어본다.1. 블루프린트란?UObject 또는 AActor를 기반으로 만든 시각적 클래스 확장 도구에디터 안에서 노드 기반으로 로직을 구성코드 없이도 복잡한 게임플레이 구현 가능예:BeginPlay → Delay → Print StringInput Action → Jump 실행2. 내부적으로 어떻게 작동하나?언리얼은 블루프린트를 C++ 구조 위에서 다음과 같이 처리한다:UCLASS(Blueprintable) → 블루프린트로 확장 가능UFUNC..

[언리얼 입문] 3 - 언리얼의 실행 흐름과 이벤트 구조

게임은 시간 속에서 동작하는 시스템이다.언리얼에서는 그 흐름을 구성하는 BeginPlay, Tick, 이벤트, 입력 처리 구조가 핵심이다.이번 글에서는 언리얼에서 오브젝트가 어떻게 동작을 시작하고,어떤 식으로 플레이어 입력이나 충돌, 인터랙션에 반응하는지를 정리한다.1. 언리얼의 실행 사이클언리얼의 한 프레임은 대략 다음 순서로 진행된다:BeginPlay →Tick →물리 업데이트, 애니메이션 →렌더링 →다음 프레임2. BeginPlay와 TickBeginPlayActor가 처음 활성화될 때 1회 실행초기화, 리소스 로딩, 변수 세팅 등에 사용void AMyActor::BeginPlay(){ Super::BeginPlay(); UE_LOG(LogTemp, Log, TEXT("Hello Unre..

[언리얼 입문] 2 - 언리얼 오브젝트의 중심: Actor와 Component 이해하기

언리얼에서 모든 게임 오브젝트는 Actor라는 개념을 중심으로 돌아간다.그리고 이 Actor는 다양한 Component로 구성된다.이번 편에서는 Actor와 Component의 개념, 역할, 구조, 그리고 실습 예제를 통해 이를 체감해본다.1. Actor란 무엇인가?AActor는 언리얼에서 월드에 존재할 수 있는 모든 오브젝트의 기본 단위다.위치, 회전, 스케일을 가진다 (Transform)레벨에 배치되거나 런타임에 생성된다컴포넌트를 통해 기능을 확장한다AActor ├── RootComponent ├── MeshComponent ├── CollisionComponent └── CustomComponent2. Component란 무엇인가?UActorComponent는 Actor에 붙어서 특정 기능을 수행하..

[언리얼 입문] 1 - 언리얼 엔진 개요와 ‘오브젝트 구조’ 빠르게 훑기

이 시리즈는 언리얼을 처음 접하는 초심자에게 엔진이 어떻게 구성되어 있는지를 설명하고,구조를 이해한 뒤 스스로 실습을 확장할 수 있도록 돕기 위해 만들어졌습니다.1. 언리얼 엔진은 어떤 엔진인가?언리얼은 Epic Games가 만든 고성능 게임 엔진입니다.AAA급 콘솔, PC 게임부터 모바일, 영화, 건축 시각화까지 폭넓게 사용됨C++ 기반의 고성능 실행 구조강력한 에디터 + 블루프린트 + 네이티브 C++ 코드가 통합된 아키텍처에디터 자체가 게임처럼 동작 (실시간 실행, 시뮬레이션 중심)2. Unity와 무엇이 다른가?항목 Unity Unreal주 언어C#C++진입 난이도낮음상대적으로 높음구조GameObject + ComponentActor + Component메모리 관리GC (자동)수동 관리 + GC (..