2024/01 107
-
리플리케이션을 쉽게 풀어서 이야기하면, 서버와 클라이언트 간 데이터 동기화를 의미한다. 여기에서 언리얼 리플리케이션은 언제 동기화를 시킬지. 아니면 동기화시키지 못할경우 가장 근사한 값을 유지시켜야 함으로, 어떤방식으로 유지하는지 등을 이야기 한다. 멀티플레이에만 중요한 개념이라기 보다는, 데이터 동기화, 통신 필요분야 에서 사용하는 개념인데, 보동 3가지로 구분해서 생각한다. 동기화 : 서버와 클라이언트 간의 게임상태, 플레이어 입력을 동기화하여 모든 플레이어가 일관된 게임을 플레이할 수 있도록 한다. 상태 전송 : 서버에서 변경된 상태를 클라이언트에 전송하여 실시간반영을 할 수 있도록 한다. RPC(Remote Procedure Call) : 함수 호출을 서버에서 클라이언트로, 또는 그 반대로 전송하..
-
리플렉션[Reflection] 프로그램이 실행시간에 자기자신을 조사하는 기능이다. 이러한 기능은 에디터의 디테일 패널, 시리얼라이제이션, 가비지콜렉션, 네트워크 리플리케이션, 블루프린트/C++ 커뮤니케이션 등 다수 시스템에 탑재된 기능이다. 그러나, C++자체에서는 리플렉션 을 지원하지 않는다. 언리얼에서는 자체적으로 C++클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를 수집, 질의 , 조작하는 별도의 시스템이 구축되어있다. 이러한 리플렉션은, '프로퍼티 시스템' 이라고 부르는데, 리플렉션은 그래픽용어이기 때문. 쉽게 이해해보자. 우리가 C++에서 객체를 정의 / 생성하고 값을 부여할 때 에는 런타임 전에 수정하고. 런타임 중에 해당 객체를 수정하기 위해서는 컴파일을 종료하고. 내부 코드를 수정..
-
배열은 같은 데이터 타입의 값들을 일렬로 나열한 것 이다. 각 항목은 배열의 위치로 구분된다. C++에서 배열을 선언할 때는 배열의 크기를 명시적으로 설정해야 한다. 배열의 크기로 값이 변할 수 있는 변수를 줄 수는 없다. 배열의 크기는 상수여야 한다. 또는 상수 표현식(constant expression)[constexpr]을 배열 크기 선언에 이용할 수 있다. int myArray[3]; myArray[0] = 0; myArray[1] = 0; myArray[2] = 0; 위와같이 3개의 정수값을 담는 배열을 선언하고, 배열의 항목을 모두 0으로 초기화한다. 이러한 초기화 방식은 다른 방법이 있는데, 반복문을 사용해서 초기화 할 수있고, 또는 초기화 매커니즘을 사용해서 초기화 할 수 있다. int m..
-
-
1.1.7 조건문 조건문은 주어진 표현식의 결과가 참(true)인지, 거짓(false)인지 에 따라 특정 코드의 실행 여부를 결정할 수 있게 해준다. C++ 에서는 주로 세가지 형태의 조건문을 사용한다. if/else 문 가장 흔한 조건문은 if문으로, 보통 else 문과 함께 사용한다. if문은 조건이 참이면 if문 아래 블록 또는 블록이 없을 경우. 바로 아래 라인의 코드를 실행한다. 조건이 거짓이라면, else블록의 코드를 실행한다. else 블록이 없다면, if문 블록 아래 라인의 코드가 실행된다. if문의 괄호 영역에 들어갈 구문은 반드시 불(Bollean)변수 이거나, 불타입의 결과값을 가져야 한다. 논리 산출 연산자는 표현식이 true, false의 불타입 결과를갖게 해준다. switch문 ..
-
1.1.6 데이터 타입 C++에서는 int, bool 과 같은 기본 데이터 타입을 이용하여, 좀 더 복잡한 데이터 타입을 정의할 수 있다. C++에 익숙해지고 나면 C언어에서 상속받은 데이터 티입보다 class를 이용한 더 효과적인 방법을 이용하게 될 것 이다. 다음 설명하는 두가지 방법은 데이터 타입을 정의하기 위한 기초적인 내용이다. 열거타입 정수(int) 타입은 엄밀히 말하면 특정 범위에 속한 숫자들의 나열이다. 열거타입(enumeration type)은 어떤 숫자들을 나열할지 프로그래머가 마음대로 정할 수 있게 해준다. 예를들어 enum마냥, 객체의 고유번호를 int값을 할당하여 종류를 나타내는 고유번호로 이용할 수 있다. const 제한자를 붙이면, 해당 변수값이 절대 바뀌지 않음을 명시적으로 ..