
유니티 개발자를 위한 언리얼 C++ #7
이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 무기 클래스를 열면 이런 게 나옵니다. // Weapon.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Weapon.generated.h" UCLASS(Blueprintable) class MYG...

이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 무기 클래스를 열면 이런 게 나옵니다. // Weapon.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Weapon.generated.h" UCLASS(Blueprintable) class MYG...

서론 게임 개발자라면 글리치(glitch)와 익스플로잇(exploit)이라는 단어에 익숙할 것이다. 벽을 뚫고 지나가는 스피드런 기법, 인벤토리 복제 버그, 메모리 조작을 통한 무한 체력. 이 모든 것은 게임이 의도하지 않은 방식으로 동작하도록 만드는 기술이다. 그리고 이것이 바로 해킹의 본질이다. 보안(Security)이라는 단어를 들으면 대...

이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 캐릭터의 데미지 처리 코드를 열면 이런 게 나옵니다. // DamageableCharacter.h UCLASS() class MYGAME_API ADamageableCharacter : public ACharacter { GENERATED_BODY() public: ADamageabl...

서론 이 문서는 인터넷 인프라 — 클라이언트 개발자의 호기심 시리즈의 3번째 편입니다. “인터넷은 24시간 365일 쉬지 않고 돌아간다.” 당연한 이야기처럼 느껴지지만, 한 발짝 물러서 생각해 보면 질문이 떠오릅니다. 그 주체는 누구일까요? 사람이 24시간 모니터 앞에 앉아 있는 걸까요? 물론 아닙니다. 인터넷을 쉬지 않고 굴리는 것은 프...

이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 캐릭터 클래스를 열면 이런 게 나옵니다. // MyCharacter.h UCLASS() class MYGAME_API AMyCharacter : public ACharacter { GENERATED_BODY() public: AMyCharacter(); protected: v...

서론 이 문서는 인터넷 인프라 — 클라이언트 개발자의 호기심 시리즈의 2번째 편입니다. 지금 이 글을 읽고 있는 여러분의 주변은 보이지 않는 전자파와 빛으로 가득합니다. WiFi 라우터에서 쏟아지는 2.4GHz 전파, 셀 타워에서 날아오는 5G 밀리미터파, 벽 속 광케이블을 질주하는 적외선 레이저 — 이 모든 것이 여러분의 눈에 보이지 않을...

이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 인벤토리 시스템 코드를 열면 이런 게 나옵니다. // InventoryComponent.h UCLASS() class MYGAME_API UInventoryComponent : public UActorComponent { GENERATED_BODY() public: bool AddIt...

서론 이 문서는 인터넷 인프라 — 클라이언트 개발자의 호기심 시리즈의 1번째 편입니다. 게임 개발자로서 우리는 렌더링 파이프라인의 동작 원리에는 꽤 익숙합니다. 정점 셰이더가 어떻게 클립 공간으로 변환하는지, 프래그먼트 셰이더가 픽셀 색상을 어떻게 결정하는지, GPU가 드로우콜을 어떻게 배칭하는지 설명할 수 있습니다. 하지만 누군가 “브라우...

들어가며 2026년 2월 5일, Anthropic이 Claude Opus 4.6을 출시했다. 이전 포스트(실전 데이터로 보는 게임 개발자의 AI 활용법)에서 47일간의 사용 데이터를 공유했는데, 그 기간 중 전반부는 Opus 4.5, 후반부는 Opus 4.6으로 작업한 셈이다. 이 글에서는 벤치마크 숫자와 실제 게임 개발 현장에서의 체감 차이를 함...

이 코드, 읽을 수 있나요? 언리얼 프로젝트에서 캐릭터가 무기를 장착하는 코드를 열어보면 이런 게 나옵니다. // MyCharacter.cpp void AMyCharacter::EquipWeapon(AWeapon* NewWeapon) { if (CurrentWeapon != nullptr) { CurrentWeapon-...