분류 전체보기
-
키워드 목록 프로그래밍 패러다임 구조적 프로그래밍 데이크스트라의 해로운 성명서 goto의 해로움 OO 프로그래밍 3요소 : 상속, 캡슐화, 다형성 의존성 역전 : 인터페이스를 통한 모듈간 의존성 역전된 상호작용 가능 => 모듈간 독립성과 자유로운 의존 함수형 프로그래밍 변수의 불변성 그리고 아키텍처 : 다수의 쓰레드와 프로세스간 문제는 가변성에 의한 문제, 함수형의 장점 가변성의 분리 : 불변 컴포넌트에선 순수 함수형 언어 사용, 가변 컴포넌트에 불변 컴포넌트를 의존, 가변 컴포넌트에선 트랜잭션 메모리 참조 결론 구조적 프로그래밍 : 제어흐름의 직접적인 전화에 부과되는 규율 객체 지향 프로그래밍 : 제어흐름의 간접적인 전환에 부과하는 규율 (이는 virtual table 그리고 3요소 참고) 함수형 프로..
[틈새 독서] 클린 아키텍쳐 - 1, 2장키워드 목록 프로그래밍 패러다임 구조적 프로그래밍 데이크스트라의 해로운 성명서 goto의 해로움 OO 프로그래밍 3요소 : 상속, 캡슐화, 다형성 의존성 역전 : 인터페이스를 통한 모듈간 의존성 역전된 상호작용 가능 => 모듈간 독립성과 자유로운 의존 함수형 프로그래밍 변수의 불변성 그리고 아키텍처 : 다수의 쓰레드와 프로세스간 문제는 가변성에 의한 문제, 함수형의 장점 가변성의 분리 : 불변 컴포넌트에선 순수 함수형 언어 사용, 가변 컴포넌트에 불변 컴포넌트를 의존, 가변 컴포넌트에선 트랜잭션 메모리 참조 결론 구조적 프로그래밍 : 제어흐름의 직접적인 전화에 부과되는 규율 객체 지향 프로그래밍 : 제어흐름의 간접적인 전환에 부과하는 규율 (이는 virtual table 그리고 3요소 참고) 함수형 프로..
2021.08.20 -
언리얼 엔진의 USaveGame 객체는 1차적으로 본인만 시리얼라이즈 한 후 저장한다. 따라서 안에 들어가는 데이터가 시리얼라이즈 되어있는 데이터가 아니라면, Primitive한 타입들만 값이 보존된다. 이에 FArchive와 FArchiveProxy를 활용해 AActor나 UObject를 직렬화하고 관리하는 방법을 아래 두 사이트 링크를 통해 알 수 있다. https://interstellarechidna.com/post/serializing-actors/ Serializing Monsters for Saving and Loading At this point I have a bunch of data for monsters, resources, and plants. Now I need a way to d..
[UE4] SaveGame 내 AActor 혹은 UObject 저장/불러오기 (스크랩)언리얼 엔진의 USaveGame 객체는 1차적으로 본인만 시리얼라이즈 한 후 저장한다. 따라서 안에 들어가는 데이터가 시리얼라이즈 되어있는 데이터가 아니라면, Primitive한 타입들만 값이 보존된다. 이에 FArchive와 FArchiveProxy를 활용해 AActor나 UObject를 직렬화하고 관리하는 방법을 아래 두 사이트 링크를 통해 알 수 있다. https://interstellarechidna.com/post/serializing-actors/ Serializing Monsters for Saving and Loading At this point I have a bunch of data for monsters, resources, and plants. Now I need a way to d..
2021.08.03 -
엔진 내부에 매크로로 #define GENERATED_USTRUCT_BODY GENERATED_BODY 로 선언되어 있기에 사실상 기능이 같다.
[UE4] GENERATED_BODY vs GENERATED_USTRUCT_BODY엔진 내부에 매크로로 #define GENERATED_USTRUCT_BODY GENERATED_BODY 로 선언되어 있기에 사실상 기능이 같다.
2021.07.28 -
언리얼의 Replicate 변수는 기본적으로 Reliable하게 선언된다. 그럼에도 불구하고, 네트워크 지연과 패킷 손실이 꽤 심한 상태가 되면 정보가 유실되는 문제가 생기고 있다. (4.26 기준) 그래서 생각하기를.. 아무리 Reliable 하다 해도, 내부적으론 3-Way Handshake를 하는게 아니라 2-Way에 곁다리로 다른 처리를 해놓지 않았나 싶다. 그래서 패킷 손실이 비교적 적지만 아무래도 완벽하진 않은게 아닌가... 이 생각은 MovementComponent를 해결하려다 하게 된것인데, 언리얼에서 Teleport는 Local에서만 하기를 지향해 로컬에서 특정 서버 내 저장된 로케이션 값으로 Teleport하기 위해 Server RPC로 Request를 보낸 뒤, 서버에서 Client ..
[UE4] 리플리케이트의 배신언리얼의 Replicate 변수는 기본적으로 Reliable하게 선언된다. 그럼에도 불구하고, 네트워크 지연과 패킷 손실이 꽤 심한 상태가 되면 정보가 유실되는 문제가 생기고 있다. (4.26 기준) 그래서 생각하기를.. 아무리 Reliable 하다 해도, 내부적으론 3-Way Handshake를 하는게 아니라 2-Way에 곁다리로 다른 처리를 해놓지 않았나 싶다. 그래서 패킷 손실이 비교적 적지만 아무래도 완벽하진 않은게 아닌가... 이 생각은 MovementComponent를 해결하려다 하게 된것인데, 언리얼에서 Teleport는 Local에서만 하기를 지향해 로컬에서 특정 서버 내 저장된 로케이션 값으로 Teleport하기 위해 Server RPC로 Request를 보낸 뒤, 서버에서 Client ..
2021.07.28 -
언리얼의 Foliage에는 Custom Navigable Geometry 옵션이 존재한다. 해당 옵션은 아래와 같은 선택지가 존재하며, NO를 선택하는 경우 폴리지가 네비게이션에 영향을 주지 않게 된다.
[UE4] Foliage 의 네비게이션언리얼의 Foliage에는 Custom Navigable Geometry 옵션이 존재한다. 해당 옵션은 아래와 같은 선택지가 존재하며, NO를 선택하는 경우 폴리지가 네비게이션에 영향을 주지 않게 된다.
2021.07.09 -
Streaming Asset Cvar World.cpp 파일의 AddToWorld 에서 사용되는 command variable를 설명한다. s.UseBackgroundLevelStreaming 만약 UseBackgroundLevelStreaming가 true라면 load 중 block이 되지 않는다. s.GLevelStreamingComponentsRegistrationGranularity 커맨드 이름 : s.LevelStreamingComponentsRegistrationGranularity Timelimit이 지나지 않고 로드해야 할 Streaming Asset이 남아있다면 이 정수 값만큼씩 한 프레임마다 로드한다. s.LevelStreamingActorsUpdateTimeLimit Timelimit..
[UE4] Level Streaming cvar 변수 나열 및 분석Streaming Asset Cvar World.cpp 파일의 AddToWorld 에서 사용되는 command variable를 설명한다. s.UseBackgroundLevelStreaming 만약 UseBackgroundLevelStreaming가 true라면 load 중 block이 되지 않는다. s.GLevelStreamingComponentsRegistrationGranularity 커맨드 이름 : s.LevelStreamingComponentsRegistrationGranularity Timelimit이 지나지 않고 로드해야 할 Streaming Asset이 남아있다면 이 정수 값만큼씩 한 프레임마다 로드한다. s.LevelStreamingActorsUpdateTimeLimit Timelimit..
2021.07.09