Unreal: 탬플릿 패턴/샌드박스
데이테 묶기 구조체로 묶으면 깔끔하게 해결 기본형 집착 복잡한 데이터를 무리하게 기본형으로 표현하기보단, 구조체, 클래스로 변경 캡슐화 반복되는 스위치문 새로운 분기마다 스위치문 작성해야되면 나중에 수정할 때 비효율적 상속/다형성으로 분...
데이테 묶기 구조체로 묶으면 깔끔하게 해결 기본형 집착 복잡한 데이터를 무리하게 기본형으로 표현하기보단, 구조체, 클래스로 변경 캡슐화 반복되는 스위치문 새로운 분기마다 스위치문 작성해야되면 나중에 수정할 때 비효율적 상속/다형성으로 분...
전에는 라인 트레이스를 사용하는 법을 알아봤고, 이번엔 그를 이용해 샷건을 한번 만들어보자. ##
재귀(Recursion) 반복을 구현하는 한 형태로 반복문과는 다르개 스스로를 다시 호출하는 행위를 통해 구현하는 방법이다. 함수의 형태로 함수가 스스로를 다시 호출하는 자기호출/재귀호출(Recursive Call)과 호출의 반복을 끊어줄 조건인 바닥상태(Base Case)로 이루어진다. 문제의 상태를 함수로 바로 표현함...
언리얼에는 사운드를 출력할 수 있는 여러 방법이 존재한다. SoundBase/SoundCue 기본적으로 음성파일을 불러오면 SoundBase로 들어오게 된다. SoundBase에선 기본적인 볼륨과 피치등을 음성과 관련된 설정들을 변경해 놓을 수 있으며, 이는 SoundBase PlaySoundAtLocation()/SpawnSoundAtLocation...
이전에는 GameMode/GameState를 이용해서 간단한 게임 룰을 만들어봤다. 하지만 단순 로그로 게임 진행상황을 표시하는 정도로는 게임이 아쉬울 것이다. 이번엔 UI를 추가하여 더 게임스럽게 만들어보자. HUD 생성 UMG(Unreal Motion Graphic)을 이용하면 손쉽게 UI를 구성할 수 있다. HUD(Head-Up Display)로...
3D 게임의 많은 로직은 시야를 중심으로 한다. 무엇을 가리키는지, 방향에 무엇과 충돌하는지를 알아야 어떤 사물을 보고있고, 쏜 탄환이 어디 맞았는지, 어떤각도로 맞았는지등 게임에 필요한 정보로 변환하고 사용할 수 있다. 그 기본적인 개념인 트레이스(Trace)를 연습해보자. 콜리전(Collision) 트레이스를 접하기 전에 알아야 할 개념이 있다면...
TObjectPtr<> UE4까지 존재하던 원시 포인터 (UObject*)를 대체하기 위해 추가된 템플릿 기반의 포인터이다. 지연 로딩(Lazy Loading): TObjectPtr를 사용해 선언된 데이터는 실제로 필요하게 된 때 메모리에 로딩된다. 다른 언어에서 있는 지연 평가(Lazy Evaluation)과 유사...
이전엔 레벨마다 스폰될 적들을 만들었다. 이번엔 게임의 규칙과 레벨의 생성을 구현해보자. 랜덤 건물 배치 건물은 당장은 플로우 검증 정도만 하고 싶어서 다양한 건물의 배치보단 간단한 건물배치를 이용한 맵을 구현해보도록 하겠다. 방식의 유효성, 플레이 가능성의 판단이 우선이니 일단은 정사각형 그리드로 건물이 배치될 수 있는지를 구현해볼 것이다. 간단하게...
이전에는 물체를 들 수 있는 기능과, 들었을 때의 물리, 파괴 상호작용을 구현했다. 그 상자들을 들어서 단순히 배달만 하면 재미가 없을 것이다. 이번엔 배달과정을 방해할 적 2종류를 구현해보자. 가만히 앉아있다가 배달을 방해하러 올 까마귀와 드론을 향해 물을 발사할 개구진 꼬마이다. TakeDamage기반으로 변경 기존에는 Holdable안에서 데미지...
프로시주얼 쉐이더(Procedural Shader) 머티리얼이나 텍스처를 이미지에 기반하여 사용하는게 아닌, 수학/알고리즘에 기반한 절차(procedure)에 따라 만들어내는 방법을 말한다. 생성과정을 제어함으로서 원하는 값에 따라 다양한 결과물을 만들어 낼 수 있다. 노이즈, 반복패턴, 값에 따라 바뀌는 효과등 변...