분류 전체보기 91

STL - set

namespace pmr { template using set = std::set; } Time Complexity Red - Black Tree로 구현되어 search에 O(logn)의 시간이 걸리며, 삽입 및 삭제는 O(logn + a)의 시간이 걸린다. Red - Black Tree 자가 균형 이진 탐색 트리로, 다음과 같은 조건들을 만족한다. 모든 노드는 빨간색 또는 검은색이다. 루트 노드는 검은색이다. 모든 리프 노드(NIL)들은 검은색이다. 빨간색 노드의 자식은 검은색이다. (즉, 빨간색 노드가 연속으로 나올 수 없다.) 모든 리프 노드에서 Black Depth는 같다 (즉, 리프 노드에서 루트 노드까지 가는 경로에서 만나..

Metaverse/복습 2024.01.30

RPC

RPC(Remote Procedure Call)는 로컬에서 호출되지만 호출하는 머신과는 다른 머신에서 원격 실행되는 함수를 말한다. RPC 함수는 네트워크 연결을 통해 클라이언트와 서버 사이에 메시지를 전송할 수 있다. 이 기능의 주요 용도는 휘발성인 비신뢰성 게임플레이 이벤트를 위한 것이다. 사운드 재생, 파티클 스폰, 액터의 핵심적인 기능과는 무관한 일시적인 효과와 같은 작업을 하는 이벤트 등을 포함한다. RPC 사용하기 함수를 RPC로 선언하려면 UFUNCTION 선언에 Server, Client, NetMulticast 키워드를 붙여주기만 하면 된다. ex) 함수를 서버에서 호출되지만 클라이언트에서 실행되는 RPC로 선언하려면 UFUNCTION( Client ) void ClientRPCFunct..

Metaverse/UE5 2024.01.29

Network

Network 모드 유형 NM_Standalone 로컬 머신에서 실행되며 원격 머신에서 클라이언트를 받지 않는 서버를 나타낸다. 싱글 플레이어, 또는 멀티 플레이 게임에 적절하다. NM_DedicatedServer 로컬 플레이어가 없어 사운드, 그래픽, 사용자 입력, 기타 플레이어 관련 기능을 제거하여 보다 효율적인 실행이 가능한 전용 서버이다. 이 서버 유형은 신뢰 서버에서 호스팅되는 멀티 플레이어 게임에 사용되며, 경쟁형 MOBA, MMO, 온라인 슈팅 게임 등 퍼포먼스가 중요해서 신뢰성 있는 서버가 필요한 경우에 사용된다. NM_ListenServer 로컬 플레이어가 있는 서버로, 원격 플레이어에게도 접속을 허락한다. 이 유형의 서버는 데디케이티드 서버가 불필요한 경쟁 또는 협력 게임에 좋으며, 사..

Metaverse/UE5 2024.01.29

Animation

Static Mesh와 Skeletal Mesh 먼저 Static Mesh는 메시 데이터가 고정되어 있어 변경이 불가능한 데이터이다. Skeletal Mesh는 메시 데이터와 뼈대 데이터로 나뉘어져 있고, 이를 이용해 애니메이션에 적용될 수 있다. 각 뼈대의 Bone을 이동 및 회전시킴으로써 팔다리를 움직일 수 있게 한다. Bone / Rig / Skeleton Bone: 뼈대의 뼈에 해당 Rig: 각 본들이 어떻게 연결되어 있는지를 나타냄 Skeleton: 뼈대 구조 목록과 각 본이 어떻게 연결되어 있는지에 대한 정보 애니메이션을 가져와서 사용하려면 해당 애니메이션은 스켈레톤 정보가 필요함 애니메이션 데이터(Animation Sequence) 자체가 본의 트랜스폼 정보를 키프레임에 저장한 것 Anima..

Metaverse/UE5 2024.01.25

Protobuf

Protocol Buffers Google에서 개발한 데이터 직렬화 형식으로, 구조화된 데이터를 이진 형식으로 효율적이고 컴팩트하게 저장하여 네트워크 연결을 통해 더 빠르게 전송할 수 있음 작성된 프로그램을 다른 플랫폼으로 쉽게 포팅할 수 있고, 다양한 응용프로그램에서 사용할 수 있는 구조화된 데이터를 만드는 효율적이고 강력한 방법 언어 독립적 구문을 사용하면 선택한 서로 다른 프로그래밍 언어를 사용하여 작성된 프로그램이 서로 안정적으로 통신할 수 있음 구조화된 데이터는 바이너리 형식으로 저장되기 때문에 XML이나 JSON과 같은 텍스트 기반 형식보다 훨씬 작아 네트워크를 통한 전송이 더 빠름 확장하기 쉽게 설계되어 빠르게 변화하는 데이터 구조와 새로운 기능을 처리하는 데 이상적 활용 시스템 간의 데이터..

Metaverse/Network 2024.01.22

STL - sort

sort 범위의 요소 정렬 std::invoke(comp, std::invoke(proj, *(it + n)), std::invoke(proj, *it)) 요소는 주어진 comp 비교 함수를 통해 비교가 진행됨 이때, ranges::begin(r) ~ ranges::end(r)로 범위를 표현할 수 있음 Time Complexity O(Nlog(N)) 이때, N = ranges::distance(first, last)이다. struct sort_fn { template requires std::sortable constexpr I operator()(I first, S last, Comp comp = {}, Proj proj = {}) const { if (first == last) return first..

Metaverse/복습 2024.01.18

Crescendor - HandTracking Transform API

이벤트가 발생하면, 사용자의 손의 위치를 반환하여 해당 위치로 오브젝트의 위치를 변경하려고 한다. 그러면 Hand 관련 API에서 Transform 정보를 받아와야했고, 그 정보는 OVRHand의 PointerPose였다. 또한, PointerPose에 사용자의 Hand Data를 대입하기 위해 OVRHand에 Tracked Pose Driver라는 컴포넌트가 필요했다. Tracked Pose Driver는 트래킹 대상 객체의 정보를 전달해주는 컴포넌트이다. OVRPlugin과 OVRCommon에는 각각 HandState와 FromFlippedZVector3f() 가 명시되어 있다. 간단한 테스팅을 위해 다음과 같이 함수를 작성하여 UI 버튼 클릭 이벤트 발생 시 Note의 위치를 바꿔주었다. using..

Metaverse/Unity 2024.01.17

스마트한 선택들

요즘엔 책을 많이 못읽는다... 이건 오빠 방 책꽂이에 2권이나 있길래 몰래 기숙사로 가져와 읽은 책이다ㅎ 읽었던 내용 중 사회적 비교 편향에 대해 가장 생각을 많이 해봤다. 벤처 기업을 하는 사람들이 가장 흔히 저지르는 오류 가운데 하나로, 벤처 기업을 설립할 때 자기 자신보다 더 나은 사람들을 고용한다는 것이다. 자신의 긍정적인 것은 확대하고, 타인의 것은 축소하는 경향이 있다. 다른 사람의 코드를 보고 아 이 정도면 나도 좀만 더 했으면 해결했겠다... 했던 것들이 생각났다ㅋㅋㅋ 내가 과제로 제출했던 프로젝트들이 제출할 때까지만 해도 정말 잘한 것 같고, 애정이 가득하다가 조금 시간이 지난 뒤 다시 보면 또 허접해보이는,, 그런 현상들도 많았다. 이제는 객관적으로 생각하며 만족하지 말고 끝까지 애정..