목록언리얼 엔진 (77)
게임 개발 메모장
char 우선 char라는 변수 선언부터 언급해야 하는데 char은 문자라는 1-byte의 변수이다. 즉 단어 하나를 뜻하는 것이며 더 나아가 2-byte인 한글과는 문자 길이가 맞지 않아 깨진 것을 확인 할 수 있다. 또 char값에 정수를 대입해도 정수로 받아 들이는 것이 아닌 ASCII 코드로 해석한다. char a = 65; cout
TEXT 매크로 TEXT("Hello World"); 언리얼에서는 문자열 리터럴을 TEXT 매크로 안에 넣어서 TEXT("Hello World") 이런식으로 넘기는게 좋다. - 어떤 플랫폼에서든 동작할 수 있도록 언리얼이 인코딩을 해주기 때문이다. 모든 플랫폼에서 2 바이트 문자열로 동작하게끔 해준다. FString C++ 에서의 string처럼 문자열 처리와 관련된 메서드들 사용 가능 FString str = TEXT("Hello World"); printf 함수 FString::printf(TEXT("Actor Name: %s, ID : %d, Location X : %.3f", *GetName(), ID, GetActorLocation().X); C언어의 printf와 비슷하다. 형식 문자열을 출력..
C++ const, constexpr constexpr 이란 컴파일 시간 상수를 만드는 키워드 컴파일 시간에 결정되는 상수 값으로만 초기화 할 수 있다. constexpr이 변수를 상수로 만들어 준다고 하는데 그럼 const와 똑같은데 무슨 차이가 있나? 상수에는 2가지 상수가 존재하는데 1. 컴파일 시간에 알 수 있는 상수. 2. 컴파일 시간에 알 수 없는 상수. (실행시간에 알 수 있는 실행시간 상수) 이렇게 두 종류의 상수가 존재한다. 컴파일 시간에 알 수 있는 상수를 컴파일 시간 상수 (compile-time constant)라고 하고, 컴파일 시간에 알 수 없는 상수 즉 실행시간에 알 수 있는 상수를 런타임 상수(runtime constant)라고 한다. const는 컴파일 시간에 알 수 있는 ..
동기식 (Synchronous) 작업을 하나 시작하고 완료되면 다음 작업을 시작한다. 예를 들어, 서버에 요청을 보낸 뒤에 클라이언트에서 결과를 받아야 다음 작업을 시작하는 방식 비동기식 (Asynchronous) 서버에 요청을 보낸 뒤에 동기 방식과 달리 바로 다음 작업을 시작한다. 동기 방식에 비해서 자원을 효과적으로 처리할 수 있다. 따라서, 동기 방식과 달리 작업이 끝나면 이를 알 수 있도록 처리 결과를 반환하는 콜백 함수가 필요하다.
클래스 마다 생명 주기가 달라질수도 있는데 클래스 내부에서 다른 클래스의 Raw포인터를 들고 있는거 자체가 위험하다. 그래서 언리얼에서 제공하는 스마트 포인터를 사용해라
1. 코드 자동 완성 : ctrl + space 2. 마우스 쓰지 않고 코드 블럭 씌우기 : shift + 방향키 3. 디버깅 하지 않고 시작 : ctrl + F5 4. 주석 처리(해제) : ctrl + shift + / 5. 코드 전체 선택 : ctrl + a 👉🏻 자동 정렬 : ctrl + k + f 6-1. 솔루션 탐색기 켜기 : ctrl + alt + L 6-2. 솔루션 탐색기 끄기 : shift + ESC 7. 솔루션 빌드 : ctrl + shift + b 8. 커서가 있는 코드 줄(라인) 복사해서 바로 아래에 붙이기 : ctrl + d 9. 코드 감싸기 ctrl + k + s 10. Visual Studio 전체 검색 : ctrl + q 11. 열(column)모드 편집 : alt + 드래그 ..
https://codetime.tistory.com/639 [Unreal 4] Visual Studio 세팅 정리 언리얼 엔진용 Visual Studio 구성 엔진 버전 별 비주얼 스튜디오 버전 매칭 언리얼 엔진 버전 비주얼 스튜디오 버전 4.25 이상 VS 2019 4.22 이상 VS 2017 / VS 2019 4.15 이상 VS 2017 4.10 이상 VS 2015 4.2 이상 VS 20 codetime.tistory.com
1. 언리얼에서는 클라이언트에서 서버로 패킷을 보내는 방법은 서버RPC가 유일하기 때문이다. 서버에 보낼 명령의 중요도에 따라 Reliable 인지 Unreliable 인지 판단해서 RPC 함수를 선언해주면 된다. 2. 게임 플레이 판정은 서버에서 무조건 처리하는 것 게임을 구현할 때 가끔식은 서버의 부하를 줄이고 게임의 쾌적한 반응성을 위해서 클라이언트에서 중요한 기능을 처리하는 경우가 종종 있다. 하지만, 최종 판정은 항상 서버에서 진행되도록 원칙을 지켜줘야 된다. 3. 게임 플레이에 영향을 주는 중요한 정보는 프로퍼티 리플리케이션을 사용하는 것이다. 예를 들어, 모바일 게임을 하고 있는데 엘리베이터를 타서 접속이 잠시 끊어진 상황이라면 엘리베이터에서 내리면 다시 재접속을 하게 될 텐데 이렇게 재접속..
* TTuple은 2개 이상의 값을 하나의 변수에 담기 위해 사용됨. * UObject가 아니여서 UPROPERTY나 UFUNCTION으로 사용할 수 없음. 사용 예시 코드 결과 화면 한 가지 특이점이 있다면 Test3에 있는 Key와 Value는 자료형이 2개인 TTuple에서만 사용 가능하다. 아마도 TMap에 있는 TTuple로 인식하는 듯 하다. 담겨진 값을 설정하거나 가져오고자 할 때 모두 Get 함수를 사용하면 된다. 참조자로 넘겨주기 때문이다.
만약 위와 같은 화면을 위해 레이아웃을 구성해야 된다면? 방법은 여러가지가 있겠다.. xml에 하나하나 그려가며 잡아줄 수도 있고, 코드로 동적으로 원하는 만큼의 레이아웃을 만들어 붙일 수도 있고. 등등.. 사실 정답은 없다. 하지만 위의 방법들은 리스트의 아이템이 많아질수록 xml이 굉장히 복잡해지거나 길어져 보기에도 불편하고 유지보수에도 힘들것 같고, 한번에 화면에 모두 그려야하기에 안드로이드가 부담스러워 할 것 같다. ListView를 사용한다면 좀 더 간단하게, 좀 더 부담이 덜 되도록 알아서 관리를 받을 수 있다. ListView란? ListView란 무엇일까요? ListView는 말 그대로 View들을 리스트처럼 보여주도록 하는 컨테이너 이다. '컨테이너'라 함은 흔히 알고 계시는 선박에서 물..