목록전체 글 (453)
나만의 작은 도서관
라이브 코딩(Live Coding)이란?라이브 코딩은 언리얼 에디터를 켠 상태에서 C++ 코드를 컴파일하고 그 결과를 에디터에 즉시 반영하는 기능이다. UE5에선 기본적으로 활성화되어 있으며, Ctrl + Alt + F11 단축키를 누르거나 에디터 창에서 오른쪽 아래에 위치한 아이콘을 눌러 실행한다.(아래 사진 참고)라이브 코딩의 탄생 배경기존의 문제점 - 소스 코드를 적용하려면 에디터를 껐다 켜야 한다. 언리얼 에디터는 기본적으로 변경된 게임 코드를 적용하기 위해 프로세스를 껐다 다시 켜야 한다. 왜냐하면 언리얼 에디터 “프로세스”가 DLL(동적 링크 라이브러리) 파일로 컴파일된 게임 코드(“UE5Editor-MyGame.dll”같은)를 자신의 프로세스 메모리에 올린 상태로 돌아가기 때문. 게임 DLL..
이전 내용해당 글은 아래 링크의 확장입니다.https://pledge24.tistory.com/286 [Network] TCP vs UDP목차TCP, TCP 통신 과정UDPTCP와 UDP 작동 비교 예제TCP와 UDP 비교표 신뢰할 수 있는 전송 프로토콜: TCP TCP(Transmission Control Protocol)는 호스트 간 접속과 송수신의 신뢰성이 보장되는 환경에서 통신하기pledge24.tistory.com 순서 보장을 위한 TCP의 시퀀스 번호(SEQ)TCP는 데이터의 전송 순서를 보장하는 기능이 있다. 네트워크를 타고 오면서 순서가 뒤섞여 버려도 수신 측에서 기존 순서대로 재정렬할 수 있어야 한다는 것이다. 그렇다면 TCP는 재정렬을 어떻게 하는 걸까? 바로 헤더에 적힌 시퀀스 번호(..
나는 vector가 있는데 왜 불편한 C 배열을 쓰고 싶어 할까?vector라는 좋은 게 있는데 왜 C 배열을 쓰고 싶어지는 이유는 크게 두 가지 정도 있는 것 같다.첫 번째는 C 배열이 vector보다 가독성이 높다는 점이다. 개인적으로 vector와 같이 적는 것보단 int arr[5]와 같이 적는 게 훨씬 눈에 잘 들어왔다. 그래서 vector >와 같이 꺾쇠 지옥에 시달리다 보면 int arr[5][5]와 같은 문법이 그리워지곤 한다.두 번째는 고정된 크기임을 명시하고 싶을 때이다. vector는 기본적으로 크기 조절을 막을 수 있는 방법이 없다. 그래서 고정된 크기로 쓸 vector는 계속 머릿속으로 ‘이 vector는 고정 크기다’라는 생각을 하고 있어야 되는데 이게 너무 귀찮았다. 물론 st..
std::copy란?template OutputIt copy(InputIt first, InputIt last, OutputIt d_first);std::copy란 지정한 범위의 메모리를 복사하여 다른 위치에 붙여 넣는 함수로, 3개의 iterator를 인자로 받으며 [first, last) 범위의 메모리를 복사하여 d_first부터 붙여 넣는다.다른 STL Algorithm 함수들과 동일하게 last 위치는 범위에 포함시키지 않기 때문에 std::copy의 last 위치의 메모리가 복사 범위에 들어가지 않음을 유의해야 한다.std::copy를 사용할 수 있는 범위가 굉장히 넓지만, 제목에서 알 수 있듯 자주 사용되는 상황은 vector 부분 복사이다. 예제는 아래와 같다.vector v1 = {1, 2..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] 다시 정리하는 액터의 Life Cycle 액터의 생명 주기(Life Cycle)이란?레벨에 Actor가 생성, 초기화, 플레이, 소멸되는 전체과정각 단계마다 특정 이벤트 함수들이 자동으로 호출된다.각 이벤트 함수들이 어느 시점에 호출되는지 이해하면 적절한 시점에 로직을 채워 넣을 수 있음 액터 생성 단계 Construction Script액터가 처음 생성될 때 실행.에디터에서 액터의 속성(Property)을 수정할 때마다 호출되므로, 이곳에 게임플레이 로직을 작성하거나, 무거운 작업을 추가하면 안 된다.여기서 액터의 속성은 에디터에서 액터의 디테일 패널에 노출되는 값들이 대표적이다. 따라서, 액터를 레벨에 배치..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. [언리얼] BeginPlay()에 대해서… BeginPlay() 함수란?BeginPlay는 액터(AActor)가 월드(UWorld)에서 처음으로 활성화되고 시뮬레이션되기 시작할 때 단 한 번 호출되는 이벤트 함수이다. BeginPlay()가 호출되는 정확한 시점?하나의 액터를 두고 BeginPlay가 호출되는 시점을 정확하게 표현하자면 아래와 같다.액터의 모든 초기화 작업이 완료되었으며(부착된 컴포넌트 포함), 월드에 해당 액터가 등록되어 인지할 수 있는 시점. 레벨에 배치된 액터의 BeginPlay(), 게임 도중에 스폰된 액터의 BeginPlay()언리얼에서 이 둘의 BeginPlay() 호출 시점은 조금 다르다..
