목록Game Engine (22)
Visual Studio
UnrealUnreal Object SystemUObject는 nullptr과 비교하지 않고 IsValid를 사용하여 검사한다.UObject를 상속받은 멤버 변수에 raw pointer 대신 TObjectPtr을 사용한다.TWeakObjectPtr는 Raw pointer보다 더 정확한 IsValid 체크를 할 수 있도록 도와준다. 해당 객체가 댕글링되면 nullptr로 세팅된다.Math 관련FVector, FMatrix, FBox, FBoxSphereBounds 등의 수학 클래스들은 기본 생성자에서 명시적으로 멤버 변수를 초기화해주지 않는다. 따라서 생성자 인자로 EForceInit::ForceInit을 넣거나 직접 값을 초기화 해주는 것을 권장한다.Package 관련Package Path: 해당 패키지..
Fast Object Picking | 포프머신 포인터의 확실한 이해 | 고속성장에 필요한 C | 컴퓨터 동작원리의 이해 수백명에게 5.0 만점 리뷰를 받은 초특급 C 언어 인강! POCU 아카데미에서 C 언어를 마스터하세요! blog.popekim.com
블루프린트와는 다르게 DefaultSceneRoot가 자동으로 생성되지 않는다. CreateDefaultSubobject로 컴포넌트 생성시 RootComponent가 존재하지 않을 경우, 가장 처음 생성한 컴포넌트가 RootComponent가 된다. 추가로 CreateDefaultSubobject는 생성자에서만 호출 가능하고, NewObject, SpawnActor는 생성자에서 호출하면 안된다. 참고자료 [UE4] 오브젝트 생성 - CreateDefaultSubobject , NewObject, SpawnActor CreateDefaultSubobject , NewObject, SpawnActor 언리얼 엔진에서의 UObject는 오브젝트 프로토입을 기본으로 합니다. 각 UClass는 UObject와 연..
[UE4] Time Manager 유니티에서는 코루틴(Coroutine)을 지원한다. 언리얼에서는 코루틴을 지원하는 지는 확실하지는 않지만... 코루틴과 비슷한 역할을 하는 API를 찾아보았다. Timer Manager 이라는 것이다. 각설하고 사용 daru-daru.tistory.com 예제 코드 void AActor_TetrominoSpawner::BeginPlay() { Super::BeginPlay(); GetWorldTimerManager().SetTimer(spawnTimer, this, &AActor_TetrominoSpawner::SpawnTetromino, 3, false); } void AActor_TetrominoSpawner::SpawnTetromino() { ... Spawning..
How to spawn a blueprint actor via C++ Edit, i wrote no the wrong post- forums.unrealengine.com
The Art of Destruction in 'Rainbow Six: Siege' Introducing a game-changing technology in a AAA game comes with its own set of challenges. It's not enough to develop a new technology, you need to make it play nicely with other systems in the game. This session is about developing and... www.gdcvault.com

최근에 base64로 인코딩된 문자열로 Texture를 생성해야 할 일이 있었다. _image = new Texture2D(1, 1); string imageString = element.GetAttribute("value"); byte[] imageBytes = System.Convert.FromBase64String(imageString); _image.LoadImage(imageBytes); 그런데 이렇게 텍스쳐를 생성하여 렌더링해보면 아래 사진처럼 테두리에 찌꺼기(?)가 보인다. 마치 이미지의 좌우가 연결되어 있는 것처럼 가장 우측의 픽셀이 좌측에 나타나고, 아랫줄의 픽셀이 맨 위에 나타나는데, WrapMode를 Repeat에서 Clamp로 변경하면 해결할 수 있다. _image.wrapMode ..

DirectStorage는 DirectX12부터 추가된, CPU를 거치지 않고 GPU로 리소스를 로드할 수 있도록 하는 API이다. ID3D12Resource 인터페이스로 표현되는 모든 자원에 대해 적용 가능하다. 기존에는 병목 때문에 NVME SSD가 SATA SSD에 비해 게임에서 큰 성능 향상이 없었는데, 이를 이용하면 NVME SSD의 빠른 속도를 게임에서도 체감할 수 있게 된다. 기존의 리소스 로드 방식 DirectStorage를 이용한 리소스 로드 방식 기존에는 CPU에서 텍스쳐 등의 압축을 해제하는 방식이었지만 DirectStorage를 사용하면 CPU를 거치지 않고 GPU에서 decompression을 할 수 있다. 언리얼 엔진 5에서도 DirectStorage를 지원하면 좋을 것 같은데...
https://youtu.be/dffa5u44nGw?t=333 해당 튜토리얼 영상 5:33 쯤에 Inertia Tensor Scale에 대해서 설명한다. 스케일이 커질수록 각 축으로 회전시키기 더 어려워 진다고 한다. 이것을 이용하면 낮은 장애물에 부딪혔을때 날아서 미친듯이 도는 현상을 완화하는데 큰 도움이 된다. 그 유명한 볼트공중 말하는거 맞다...
https://forums.unrealengine.com/t/landscape-flicker/376900/2 Landscape flicker Hello Iby, If you are using Displacement or World Position Offset in your landscape’s material, then the flickering you are seeing is more than likely a bounds scale issue. What that means is you are pushing the vertices of your landscape outside of it forums.unrealengine.com 랜드스케이프를 편집할때 negative zbounds extension을 늘..