쾌락없는 책임 (공부)
-
[Unreal] Unreal Engine IK solver - IK는 어떤 원리로 동작할까?쾌락없는 책임 (공부)/Unreal 2023. 3. 20. 13:23
개요 엔진에서 IK 관련한 기능들을 많이 사용하게 됩니다. 발을 땅에 자연스럽게 옮긴다던가, 손 한쪽을 무기를 받치게 수정해 준다던가. 이런 기능들을 사용하면서 대충 본을 이 위치로 옮겨준다는 생각만 했지 원리에 대해서는 크게 생각해 본 적이 없습니다. 그래서 이번에 FK, IK의 차이점을 알아보고 IK solver들은 어떤 것들이 있는지 알아볼 예정입니다. IK와 FK FK가 IK에 비해서 조금 더 쉬운 느낌입니다. 간단하게 본이 있으면 본에 회전을 적용해 움직이는 방식입니다. 팔을 예시로 들면 '팔 관절을 움직여 팔을 움직인다'라는 조금 이두운동에 가까운 느낌을 줍니다. 단순히 회전을 적용하면 되는 것이기에 큰 비용이 발생하지는 않으나 직관적이지 못한 문제가 발생하게 됩니다. 예를 들어 '컵을 주워야..
-
[C++] ptr[offset], offset[ptr] 은 같은 값이다?쾌락없는 책임 (공부)/C++ 짜잘이 2023. 3. 16. 23:53
개요 악몽같은 영상을 봤다. 여러가지 언어들의 끔찍한 코드들을 보여주는 유머성 유튜브 영상이었는데 다른 언어들 보면서 '캬 뭐 이딴것들이 다 있지?' 하다가 C++이 나오자마자 머리를 탁 칠수밖에 없었다. 아니 뭔 괴상한 코드가 나왔다. 근데 해보니 실행이 된다! 진짜 너무 무섭고 손발이 덜덜 떨리는 끔찍한 모습이 아닐 수가 없다. 혹시나 이런 기괴한 모습을 보고 싶다면 아래 영상의 1:45로 이동하면 됩니다. 결론 - 기존에 사용하는 배열과 같은 이야기 기존 배열의 모습은 '배열이름[인덱스]' 이런 느낌입니다. 이걸 접근하기 위해서 C++에서 주소를 배열이름의 주소(이게 첫 원소의 주소)+인덱스(offset)로 찾기 때문에 위와 같은 일이 벌어질 수 있는 것으로 보입니다. 그야말로 끔찍한 일이 아닐 수..
-
[Unreal] Additive Animation - 애디티브 애니메이션쾌락없는 책임 (공부)/Unreal 2023. 3. 13. 22:43
개요 스마일게이트 UNSEEN 프로그램을 진행하기 위해 간단한 3인칭 움직임을 구현하던 도중 점프 착지에서 플레이어가 땅으로 가라앉는 거 같은 문제가 생기게 되었습니다. 다름 아닌 기본 애니메이션이 Addtive로 설정되어 있어서 이런 문제가 발생하게 된 것인데요. 일단은 그 설정을 끔으로써 원하는 애니메이션 작업을 할 수 있었지만 왜 이런 식으로 재생되었는지는 잘 모르는 상태입니다. 그래서 이번 글을 쓰면서 한번 정리해보려고 합니다. Additive Animation은 기본 애니메이션에 Add 하는것 말 그대로입니다. Additive Animation(애디티브 애니메이션)은 기존의 애니메이션과 재생하는 애니메이션의 차이를 통해 애니메이션을 만드는 것입니다. 만일 걷고 있는 상황에서 점프 애니메이션을 더..
-
[Unreal] 언리얼 블루프린트 vs C++, 왜 프로그래머는 C++을 써야 하는가?쾌락없는 책임 (공부)/Unreal 2023. 3. 10. 22:53
개요 언리얼을 처음 맛보면 대부분 블루프린트로 시작하게 됩니다. 저 또한 첫 접근은 블루프린트였습니다. 그런데 조금 더 심화된 과정에서는 C++을 위주로 코딩을 하게 됩니다. 이유를 들어보면 C++ 이 속도가 더 좋아서 라는 대답이 주를 이루게 되는데요. 이번에 왜 블루프린트가 C++보다 느린지에 대해서 여러 자료들을 알아봤습니다. 일단 Blueprint는 더 많은 명령을 거치게 된다 위 이유가 속도와 관련된 주된 이유였습니다. 블루프린트 함수들은 C++과 달리 객체로 유지가 됩니다. 어떤 C++ 함수들을 호출할지에 대한 정보를 가지고 있어야 한다고 합니다. 때문에 더 많은 명령을 거치고 cpu, 램 등을 많이 사용하게 된다고 합니다. 이러한 이유로 인해서 컴파일을 한다 해도 C++의 컴파일러처럼 인라인..
-
[Algorithm] 프로그래머스 미로 탈출 - C++, BFS쾌락없는 책임 (공부)/알고리즘 문제풀이 2023. 2. 20. 14:20
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include using namespace std; const int MAX = 101; int moveX[] = { 0, 0, 1, -1 }; int moveY[] = { 1, -1, 0, 0 }; int maxX, maxY; bool IsOutRange(int x, int y) { return (x = maxX || y >= maxY); } int GetMinDistance(const pair& from, const pair& end, c..
-
[Unity] Unity lobby private 일때 강퇴당하면 생기는 오류 해결쾌락없는 책임 (공부)/Unity 2023. 2. 11. 12:13
개요 private 한 Lobby를 만들고 강퇴를 하는 순간 아래처럼 이상하게 긴 오류가 나왔다. [Lobby]: Forbidden, (16403). Message: lobby is private UnityEngine.Logger:LogError (string,object) Unity.Services.Lobbies.Logger:LogError (object) (at Library/PackageCache/com.unity.services.lobby@1.0.3/Runtime/Utils/Logger.cs:17) Unity.Services.Lobbies.Internal.WrappedLobbyService:ResolveErrorWrapping (Unity.Services.Lobbies.LobbyExceptionR..
-
[Unity] Behaviour Tree에 관한 간단한 이야기쾌락없는 책임 (공부)/Unity 2023. 2. 9. 17:37
개요 지금까지는 FSM를 통해서 간단한 AI들만 만들어 왔습니다. 다만 FSM은 확실히 한계가 있고 유지보수에 있어서 코드를 보는 게 많이 힘들었습니다. 그래서 BT라는 게 있다! 는 걸 알고는 있었는데... 뭔가 알 수 없는 벽을 느껴 일단 외면하고 있었습니다. 최근에 와서 더 많은걸 알아봐야 된다는 필요성을 느끼고 있었고 이에 따라서 BT와 관련한 것들을 알아보고 정리하게 되었습니다. 일단 유니티의 경우에는 Behaviour Tree를 직접 구현하거나 에셋을 활용해야 하는데 일단 직접 구현으로 시작하게 되었습니다. Behaviour Tree 에 관한 간단한 개요 일단 FSM을 간단하게 알아보고 가겠습니다. 전에 만든 간단한 FSM 입니다. 객체는 한 개의 State만 가질 수 있고 각 State는 다..
-
[Unity] Unity Relay 를 통해서 P2P 연결 만들어보기쾌락없는 책임 (공부)/Unity 2023. 2. 1. 13:29
개요 이전 소켓 프로그래밍으로 네트워크를 제작할 때 한가지 문제점을 보게 되었습니다. 일단 포트 포워딩 없이 다른 IP를 연결하기가 힘들었고 다른 방법이 있다 했지만 네트워크 관련 지식이 없어서 다음으로 미루기만 했습니다. 다만 유니티의 최신 버전들 부터는 퍼스트 파티 네트워크 SDK 들이 생겼고 이후 Lobby와 함께 Relay를 활용해 게임 제작해 사용을 했습니다. 그래서 이번 글에서 Lobby에 이어 Relay를 간단하게 설명하려고 합니다. Lobby 유니티 공식에서도 Lobby와의 조합이 좋다고 합니다. 물론 대규모를 처리하기 위한 데디케이트 서버가 아니지만 소규모 정도는 Lobby + Relay로 충분히 가능할겁니다. Lobby는 이름처럼 매치메이킹을 위한 SDK 입니다. 이와 관련한 내용을 이..