2024/11 60

프로그램 실행과정

프로그램 실행과정프로그램의 실제 실행단계를 살펴보기 위해서,우리가 잘 아는 실행파일의 생성과정을 간략히 정리하고자 한다. 단계 1 : 전처리기에 의한 치환작업위 그림을 보면, 실행파일 생성의 가장 첫 번째 단계가전처리기에 의해서 이뤄짐을 알 수 있다.전처리기는 '#include', '#define'과 같이 '#' 으로 시작하는지시자의 지시에 따라서 소스코드를 적절히 변경하는 작업을 한다. 단계 2 : 컴파일러의 의한 번역단계 1에 의해서 변경된 소스코드는 여전히 C 언어로 구성되어 있어서우리가 눈으로 봐도 이해할 수 있는 내용이다.이제 이 소스코드는 컴파일러에 의해서 어셈블리 코드로 번역된다.어셈블리 코드가 무엇인지 대략은 알고 있을 것이다.CPU가 디자인될 때 CPU에게 일을 시키기 위한 명령어도 함께..

선분과 한 점과의 최단거리 알고리즘

선분과 한 점과의 최단거리는 구해서 어디다 쓸까? 캐릭터가 선로와 출동하는지 판단하는 기능을 구현할 때,공간 분할 기법을 사용하여 검색 범위를 줄일 때 등이 있다.  선분과 점의 위치 관계를 분석하여 3가지 예외상황으로 나누어 풀 수 있습니다. 1.     점 P에서 선분 AB로 수선을 그릴 수 있을 때2.     점 P에서 선분 AB로 수선을 그릴 수 없으며,         점 P가 점 A랑 더 가까울 때3.     점 P에서 선분 AB로 수선을 그릴 수 없으며,        점 P가 점 B랑 더 가까울 때 이 3가지 상황은 AP벡터를 AB벡터에 내적을 이용한 정사영시켜 구분할 수있습니다. AP 벡터와 AB 벡터를 정사영시킨 벡터가 길이 0이하라면점 P는 선분 AB에 수선을 그을 수 없는 상태입니다. ..

쓰레드 기본 사용법

멀티스레드 프로그래밍은 멀티프로세서가 장착된 컴퓨터 시스템에서 중요한 기법이다.멀티스레드 프로그래밍을 이용하면 시스템에 있는 여러 프로세서 유닛을병렬로 사용하는 프로그램을 작성할 수 있다.시스템에 프로세서 유닛이 장착되는 방식은 다양하다.독립적인 CPU 프로세서 칩이 여러 개 달려 있을 수 있고,한 프로세스 칩 안에 코어라 부르는 독립 CPU가 여러 개 있을 수 있고,또 어떤 시스템은 두 가지 방식이 혼합되기도 한다.이렇게 프로세스 유닛이 여러 개 달린 프로세서를 흔히 멀티코어 프로세서라 부른다.사실 이렇게 프로세서가 여러 개 달린 시스템이 나온지 꽤 오래되었지만이제는 서버부터 개인용 컴퓨터, 심지어 스마트폰에 이르기까지 거의 모든 시스템이멀티코어 프로세서를 사용한다.이처럼 멀티코어 프로세서가 보변화되었..

자기 전 누워서 정리하는 배열과 리스트

비선형 자료구조는 선형 자료구조를 기반으로 만들어진다.비선형 자료구조는 경우에 따라어떠한 선형 자료구조로 구현하느냐에 따라성능과 메모리 공간 차지에 영향을 미친다.따라서 선형 자료구조의 이해는 아주 중요한 기반지식이다.배열은 연속된 메모리 구조를 가지고 크기가 정해져있다.리스트는 노드와 노드로 연결된 메모리 구조를 가지고크기가 가변적이다.배열의 대표적인 stl은 벡터이다.배열은 연속된 메모리 구조를 가지기 때문에,캐시 공간적 지역성을 만족하여 주변 접근이 빠르다.또한 인덱스를 이용한 임의접근이 가능하여,데이터 접근 속도는 O(1)의 속도를 가진다.벡터는 원소 삽입 삭제 시 사이즈를 넘어선 경우,중간에 삽입 삭제가 일어나는 경우삭제되고 재할당 된다.이는 성능에 영향을 끼친다.때문에 속도면에서 리스트에 비해..

decltype과 템플릿

decltype의 개요decltype 형식 지정자는 지정된 식의 형식을 생성한다.즉 쉽게 말해 받아온 개체 타입을 그대로 개체를 생성해주는 키워드이다. decltype의 일반적 용례 템플릿decltype 형식 지정자는 auto 키워드와함께 템플릿 라이브러리를 작성하는 개발자에게 주로 유용하다. decltype 및 autoC++14에서는 후행 반환 형식 없이 decltype(auto)를 사용하여반환 형식이 템플릿 인수에 따라 달라지는함수 템플릿을 선언할 수 있다. C++11에서는 auto 키워드와 함께 후행 반환 형식에 대한decltype 형식 지정자를 사용하여 반환 형식이해당 템플릿 인수의 형식에 종속되는 함수 템플릿을 선언할 수 있다. 예를 들어, 함수 템플릿의 반환 형식이템플릿 인수의 형식에 종속되는..

STL의 vector, push_back()과 emplace_back()

push_back , emplace_back 둘의 공통점push_back , emplace_back은두 함수 모두 vector컨테이너가 주어졌을 때 한 칸을 늘리고 해당 값을 넣어주게 된다. 둘의 차이점그러나 내부적으로 동작하는 것은 조금 다른데, push_back의 경우push_back의 경우 메모리를 이동하거나 임시 객체를 이용하여임시객체가 생성되고 넣어준 뒤에 임시 객체가 삭제되는 호출이 있다.-> 복사의 개념 emplace_back의 경우대신 emplace_back은 받은 인수를 이용해 내부에서 생성자를 통한 객체 생성 후추가를 하기 때문에 임시 객체의 생성, 파괴가 없어서 push_back보다 효율적일 수 있다.-> 이동의 개념

그래서 다형성이 뭐라고요?

간단히 말하자면여러 가지 형태를 가지는 것이다. 여러 가지 형태를 가지는 것이니,오버로딩과 오버라이딩을 써서 여러 형태를 가지는 기능들을한데 묶어 분류해 놓은 것이다. 다형성은 굉장히 중요하다.그 이유는, 실제 유용성이 굉장히 많다.예를 들어 게임이라고 하면,몬스터의 종류가 많을 것이다.이런 몬스터의 부모 클래스가 되는 BaseMonster 클래스가 있을 것이고,이 클래스에 파생되는 애들도 있을 것이다.그럼 몬스터 종류가 약 20개쯤 된다고 가정해보자. 이 다른 타입들을 배열에 저장하기에는 좀 부담스럽다.귀찮고 번거로운 일이기 때문에. BaseMonster 클래스 내부에virtual 반환형 Move()  함수를 제작한다.이후 monster* 배열을 제작한 후, 이 배열 내부에 있는 moster의 move..

Custom Editor - Asset Duplicate Editor 플러그인 생성

해당 Type은 플러그인이 영향을 미칠 콘턴츠의 경로가 결정된다.이것은 게임 코드에 영향을 미치는 플러그인이라면 런타임이 되기를 바라겠지만,이제 내가 만들 건 편집 도구이니까, Editor에 영향을 미치길 바란다.따라서 영향을 미치는 Type을 Editor로 변경해준다.따라서 이 플러그인(모듈)은 로드되는 시기에 결정된다.  이제 LoadingPhase를 기본값으로 설정된 것 대신 사전 기본값으로 변경하자.이제 이 플러그인은 게임 모듈보다 먼저 로드되며,이러한 설정은 내가 만들고자 하는 사용자 정의 편집기 도구에 적합한 설정이다. 사용자 정의 편집 도구의 기능은 총 2가지를 가질 것이다. 첫째는, 애셋의 수를 줄이고 늘리거나 하는 에셋에 대한 작업둘째는 레벨에 올려져있는 액터 자체에 대한 작업이다. 에셋..

언리얼 내부 - 모듈 (Modules) 2

Modules - Overview ans Structure 언리얼 엔진의 모듈이란?모듈은 언리얼 엔진소프트웨어 아키텍처의 기본 구조적 빌딩 블록이다.이는 독립적인 코드 단위이며 일반적으로 모듈은 하나의 독립된 코드 묶음으로 처리되어 컴파일러가 이를 별도로 빌드한다. 모듈? 라이브러리와 비슷한 거 아닌가요?모듈과 라이브러리의 둘의 차이점사용자는 각 모듈을 라이브러리로 생각할 수 있지만,다음과 같은 차이점이 있다.모듈은 엔진, 게임 또는 플러그인의 다른 모듈에 따라 달라질 수 있다.추가 모듈에는 타사 라이브러리가 포함될 수 있으며,모듈은 특정 빌드 유형(ex editor only)으로 제한할 수 있다.사용 가능한 플랫폼을 제한하기 위해 화이트리스트 및 블랙리스트에 추가할 수도 있습니다. 모듈의 장점언리얼에서..

UE5 2024.11.25