쾌락없는 책임 (공부)
-
[C++] vector 는 2배씩 늘어나는게 맞을까?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 9. 21. 20:50
개요 벡터는 용량이 부족하면 더 큰 용량을 할당한 뒤 그곳으로 복사를 한다고 다들 알고 있을 겁니다. 여기서 더 큰 용량 을 생각할 때 '벡터는 당연히 2배씩 용량 늘어나겠지' 싶었습니다. 그런데 일을하면서 사수분이 생겼고 이 사수분이 이런 논제를 하나 던져줬습니다. '진짜 2배씩 늘어나는지 찍어보셨나요?'. 이걸 듣고 핫차 싶어서 시간 날 때 바로 테스트를 해보기로 했습니다. 결론은 마냥 2배는 아니다. 그냥 간단하게 2, 4, 8...등으로 늘어날 수 있게 유도해 봤습니다. 코드는 아래 접은 글에 있습니다. 더보기 #include #include using namespace std; int main() { vector vec; cout
-
[C++] Branchless 가 얼마나 잘 작동할까?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 8. 23. 18:30
개요 원래는 큰 생각 없었던 부분인데 유튜브 알고리즘 덕분에 생각해 볼 자료를 가지게 되었습니다. 이곳에서 Branchless에 대한 이야기를 하고 있었습니다. 저 같은 경우 학교 컴시구에서 if 구문이 명령어로 변경되었을 시 true, false 중 한곳을 맞다고 생각하고 가정한 뒤 계산을 하다가 그 가정이 틀리게 되면 이전 계산을 중지한 뒤 새 계산을 한다는 이론을 알고 있었습니다. 그래서 if문이 없으면 더 빠르지 않을까? 하고 막연하게만 생각해 왔습니다. 이번 영상을 보면서 제 생각이 마냥 옳다는 게 아니라는 걸 알아내서 이번 기회에 이에 대해 한번 적어보려고 합니다. 간단한 메모용으로요. 단순 수 비교에 있어서는 Branchless 보다 컴파일러가 더 믿을만하다 영상 초입에서 나오는 문제사항으로..
-
[Unreal] Spectator 에서 스팀 이름 가져오기쾌락없는 책임 (공부)/Unreal 2023. 7. 14. 23:28
개요 일단 이걸 하기 전 Online Subsystem Steam 플러그인을 활용하고 이를 통해 세션을 제작해야 합니다. 이 과정을 거치면 PlayerState에서 PlayerName이 스팀의 닉네임으로 설정됩니다. 그리고 이번 글에서 알려드릴 건 이 스팀 닉네임을 Spectator에서 가져오는 것입니다. Spectator Pawn 에서 관전자를 변경하는 방법 일단 다른 게임에서 보이듯 죽고 나서 관전할 플레이어를 변경할 수 있는 기능을 구현했습니다. 이는 GameMode에서 Spectator Pawn으로 할당하는 Pawn 클래스에서 관리를 하는데 아래 코드와 같은 모습입니다. void AFASpectatorPawn::SpectateNextPlayer() { if (APlayerController* Pl..
-
[Unreal] Render Through Object, 오브젝트 뒤에 있는 플레이어 보이게 하기쾌락없는 책임 (공부)/Unreal 2023. 7. 12. 10:14
개요 Apex Legend의 블러드 하운드, 오버워치의 위도우 메이커. 이 캐릭터들의 스킬에서 공통점이 있다면 오브젝트 뒤에 있는 적들의 모습을 볼 수 있다는 점입니다. 이를 통해 보이지 않는 적들을 찾아낼 수 있습니다. 이런 요소를 제작하고 있는 게임에 넣어보고자 Post Process Volume을 활용했고 이 과정을 한번 정리해 보려고 합니다. Post Process Material 제작 개요 일단 Content Browser에서 우클릭을 해서 Material을 만들어 줍니다. 저 같은 경우 PP_SearchOutEffect라는 이름을 사용했습니다. 만든 Material의 Domain을 Post Process로 설정해 줍니다. 이제 본격적인 개념을 알아봅시다. 중간에 아무 장애물이 없는 경우 Cus..
-
[Unreal] CustomDepth Stencil Value 결과가 이상한 경우쾌락없는 책임 (공부)/Unreal 2023. 7. 11. 22:29
개요 인게임에 Custom Depth를 사용하는 효과가 2개 있습니다. 하나는 인터렉팅이 가능한 오브젝트들에 보이는 아웃라인 효과, 벽 뒤 플레이어를 감지할 수 있는 투시 효과. 그런데 아웃라인 효과와 투시 효과는 각자 다른 메쉬들에게 이루어져야 했고 이들을 구분하기 위해 Stencil 값을 활용했습니다. CustomDepth Stencil Value를 활용하면 0~255까지의 수로 구분을 할 수 있어 아웃라인 효과는 50, 투영 효과는 100으로 할당해 줬습니다. 다만 이후 결과를 보게 되면 이런 이상한 모양이 나오게 됩니다. 의도하던것과 다르게 Mesh의 일부만을 이 효과를 적용시키게 되는 문제가 있었습니다. 해결 - Project Setting을 해주자 Project Setting > Engine ..
-
[Unreal] Spectator Pawn Input이 제대로 안되는 경우쾌락없는 책임 (공부)/Unreal 2023. 7. 5. 15:21
개요 - 상황 설명 현재 플레이어는 WASD와 마우스 좌클릭을 사용하고 있는 상태입니다. 여기서 죽고 나면 Spectator Pawn을 생성해 A, D, 마우스 좌, 우클릭을 통해서 관전할 플레이어를 조작할 수 있게 계획했습니다. 그런데 Spectator Pawn을 생성하고 나면 마우스 우클릭만 사용이 가능하고 기존 플레이어가 사용하고 있는 Input을 사용할 수 없는 문제가 있었습니다. 여기서 다짜고짜 Spectator Pawn의 IMC 우선순위를 높여버리면 Spectator Pawn이 게임 시작과 동시에 생성되면서 Input을 Spectator Pawn이 먹는 문제가 있습니다. 해결법 - ClearAllMappings void AFASpectatorPawn::SetupPlayerInputCompone..
-
[Unreal] Seamless, non Seamless쾌락없는 책임 (공부)/Unreal 2023. 6. 20. 15:19
개요 언리얼에서 씬을 옮기는걸 Travel이라고 하는데 여기서 방식이 Seamless, non-Seamless로 나뉘게 됩니다. 여기서 Seamless는 이름처럼 non-blocking이고 non-Seamless는 blocking입니다. 둘의 차이 분류 Seamless non-Seamless blocking 여부 (연산을 위해 멈출지 여부) non-blocking blocking Transition level 여부 (중간 로딩창) 있음 (엔진에서 설정해줘야 함) 없음 게임을 해본 입장에서 간단하게 이야기하면 Seamless는 로딩창을 가지는 것이고 non은 가지지 않는 것입니다. 그리고 보통은 Seamless 이동이 더 원활하고 연결 시에 문제가 있어도 대처할 방법들이 있어 선호된다고 합니다. non-S..