본문 바로가기

전체 글

(339)
이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해 수강 후기 언리얼 엔진에서 제공해주는 멀티플레이 기능을 학습하기 위해 해당 강좌를 수강하였습니다. 지난 파트2에서 진행했던 프로젝트를 기반으로 멀티플레이 기능을 추가하고 다듬는 식으로 강의가 진행되었습니다. 주요 강의 내용을 정리하면 다음과 같습니다 - 액터의 리플리케이션(연관성, 우선권) - 언리얼 인사이트를 통한 패킷분석 - RPC - 움직임 리플리케이션 분석과 신규 움직임 추가 - 게임모드 & 게임스테이트 & 플레이어 스테이트 확장 파트1 완강 이후 파트2를 반정도 듣다가 파트3 내용을 먼저 듣고싶어서 완강까지 달렸는데, 특히 파트3을 진행하며 배운 내용들이 귀하다는 생각이 들었습니다. 네트워크 멀티플레이 게임에 대한 내용을 이렇게 접근하기 쉽게 정리한 자료를 찾기도 힘들기도 하고, 이 강의에서 배운 내용의 ..
[Unity] 가비지 컬렉션, 베스트 프래틱스 이 글은 unity에서의 가비지 컬렉션에 대해 알아보기 위해 정리한 글입니다. 초반부에는 유니티 공식문서를 기반으로 내용을 정리하고, 후반에는 참고한 글들과 개인적 경험을 바탕으로 글을 작성하겠습니다. 공식문서(매뉴얼) 정리 내용 Unity는 응용 프로그램에서 메모리를 처리하기 위해 세 가지 메모리 관리 레이어를 사용합니다 - 관리되는 메모리: 관리되는 힙과 가비지 컬렉터를 사용하여 자동으로 메모리를 할당하는 제어되는 메모리 레이어 - 관리되지 않는 메모리: 가비지 컬렉터를 사용하지 않는 메모리 - 네이티브 메모리: Unity에서 엔진을 구동하는 데 사용하는 c++ 메모리. 가비지 컬렉터는 애플리케이션에서 메모리를 관리하는 가장 쉬운 방법이지만, 메모리 해제/할당 타이밍을 예측할 수 없기 때문에 불안정한..
[EMC++] 소개 소개 c++11의 변화의 폭은 매우 크다 - auto선언, 범위 기반 for 루프, 람다 표현식, 오른값 참조 등등.. - 새로운 동시성 기능 - nullptr와 별칭 선언 등장 - 스마트 포인터 - 객체 이동 이 책은 c++11과 c++14의 기능들 자체가 아니라, 그 기능들의 효과적인 적용 방법을 서술하는 데 전념 c++11에서 가장 널리 쓰이는 기능은 아마 이동 의미론(move semantics) - 오른값(rvalue)에 해당하는 표현식과 왼값(lvalue)에 해당하는 표현식이 구분됨 - 오른값은 이동 연산이 가능한 객체를 가리키지만, 왼값은 일반적으로 그렇지 않음 - 일반적으로, 주소를 취할 수 있다면 왼값, 없다면 오른값 함수 호출의 맥락에서, - 인수(argument): 함수에 전달한 표현식..
[렌더링] 셰이더 기초 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 정점 변형 - 컬러 픽셀 - 셰이더 프로퍼티 활용하기 - 버텍스에서 프래그먼트로 데이터 전달하기 - 컴파일된 셰이더 코드 검사 - 타일링 및 오프셋을 사용하여 텍스쳐 샘플링 1. 기본 씬 Unity에서 새 씬을 생성할 떄 기본 카메라와 디렉셔널 라이트로 시작합니다. 씬에 구를 추가하고 원점에 배치한 다음 카메라를 바로 앞에 배치합니다. 이 씬은 매우 단순한 장면이지만 이미 많은 복잡한 렌더링이 진행 중입니다. 렌더링 ..
[렌더링] 행렬 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 큐브 그리드를 만듭니다. - 크기 조정, 위치 지정 및 회전을 지원합니다. - 변환행렬로 변형을 수행합니다. - 간단한 카메라 투영을 생성합니다. 렌더링에 기본에 대한 튜토리얼 시리즈의 첫 번째 파트입니다. 변환 행렬을 다룹니다. 렌더링 시리즈를 본격적으로 시작하기에 앞서 절차적 그리드로 시작하는 메시 기본 시리즈를 살펴봅니다. 그러면 메시가 어떻게 작동하는지 이해할 수 있습니다. 이 시리즈에서는 이러한 메시가 실제로..
[메시 기초] 메시 변형 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 물체에 광선을 투사하고 디버그 라인을 그립니다. - 힘을 정점의 이동량으로 변환합니다. - 스프링과 댐핑으로 형태를 유지합니다. - 오브젝트의 변형을 보정합니다. 1. 씬 설정 중앙에 하나의 큐브 구체가 있는 씬부터 시작하겠습니다. 변형을 제대로 테스트 하기 위해서는 구에 적절한 수의 정점이 포함되어야 합니다. 구의 격자 크기를 20으로 설정하고 반지름을 1로 설정했습니다. 2. 매시 변형 변형을 처리할 'MeshDe..
[메시 기초] 큐브 구체 (Catlikecoding) 해당 글은 CatlikeCoding의 튜토리얼을 실습하며 번역해놓은 글입니다. 번역 과정에서 제가 내용을 덧붙이거나 삭제한 부분이 존재합니다. 원본의 링크는 글 하단에 있습니다. 원본 글에 적혀있지 않은 내용을 추가할 때에는 (작성자 추가: ..내용)과 같은 형태로 작성하겠습니다. 요약 - 정육면체를 구체로 변환합니다. - Unity에서 매핑을 시각화합니다. - 변환을 비판적으로 검토합니다. - 수학을 사용하여 더 나은 접근 방식을 생각해 보세요 1. 둥근 큐브 조정하기 지난 튜토리얼에서 둥근 큐브로 완벽한 구를 만들 수 있다는 것을 눈치 채셨을 것입니다. 큐브의 세 차원의 값을 모두 같은 값으로 변경하고 Roundness를 해당 크기의 절반으로 설정합니다. 만약 이 컴포넌트로 얻고 싶은 메시가 구라고 ..
230806 C++ 라이브러리 1. 동적 라이브러리는 '공유 라이브러리'라고도 불리며, 정적 라이브러리의 문제를 해결하기 위해 만들어졌다. 프로그램이 동적 라이브러리와 링크되면, 라이브러리 모듈이 실행 파일로 복사되는 대신 동적 라이브러리가 필요하다는 정보만 기록하여 둔다. 이후 실행 파일이 실제로 실행되어 메모리로 올라가면 동적 라이브러리를 참조하여 필요한 정보를 메모리에 올리게 된다. 이후 다른 프로그램이 실행되며 같은 라이브러리 함수를 참고하고자 하면, 이미 메모리에 존재하는 동적 라이브러리를 참고하여 바로 링크 작업을 하게 된다. 2. 특정 CPU나 운영체제를 위해 최적화된 동적 라이브러리를 사용할 수 있다. 3. dynamic linking은 별다른 옵션을 주지 않으면 운영체제에서 해주며(기본 옵션이 dynamic linki..