본문 바로가기

전체 글

(8)
길찾기 알고리즘(DFS, BFS, Dijkstra) 길찾기 알고리즘에는 DFS, BFS, 다익스트라, Best-First Search, A* 등 다양한 것이 존재합니다. 그 중 오늘은 DFS와 BFS, 다익스트라에 대해 학습해보겠습니다. 1. DFS (Depth First Search) DFS는 깊이 우선 탐색이라고 하며, 이름에 걸맞게 어떠한 그래프를 탐색할 때 최대한 깊숙히 탐색을 한 후, 더 탐색할 수 없으면 다른 경로를 탐색하는 알고리즘입니다. 만약 위와 같은 그래프가 있고, 2차원 배열로는 저렇게 표현했다고 합시다. 시작점이 노드 A라고 했을 때, DFS 알고리즘으로 그래프를 순회한다면 어떤 순서로 순회를 할까요? - DFS의 순회 과정 - 1) A와 연결된 노드는 B와 C 입니다. A는 자신과 연결된 2개의 노드 중 어떤 노드를 선택할 지 고릅..
미로 생성 알고리즘(Binary Tree, Sidewinder) 본 미로 생성 알고리즘 아이디어는 http://www.jamisbuck.org/mazes/ 블로그에 있습니다. 미로를 만들기 전 준비단계 미로를 만들기 전에는 벽으로 둘러싸인 격자 Grid를 만들어야 합니다. 여기서 초록색은 갈 수 있는 부분 빨간색은 벽을 말합니다. void InitBoard() { // 일단 길을 다 막아버림 for (int y = 0; y < _size; y++) { for (int x = 0; x < _size; x++) { if (x % 2 == 0 || y % 2 == 0) _tile[y, x] = TileType.Wall; else _tile[y, x] = TileType.Empty; } } } 1. Binary Tree Algorithm 해당 알고리즘은 미로 생성 알고리즘 ..
Indexer 문법 c#으로 배열을 구현한다고 했을 때, Indexer는 어떻게 구현할 수 있을까? T[] array = new T[SIZE]; public T this[int index] { get { return array[index]; } set { _data[index] = value; } }
5일차 (Unreal Document 튜토리얼 따라하기 2) 따라 할 튜토리얼 https://docs.unrealengine.com/ko/Programming/Tutorials/PlayerInput/index.html 플레이어 입력 및 폰 Pawn 클래스를 확장하여 플레이어 입력에 반응시킵니다. docs.unrealengine.com 플레이어 입력 및 폰 플레이어 입력 및 폰 튜토리얼에서는 플레이어의 입력에 따라 Pawn이 움직일 수 있게 만든다. 입력 매핑은 "편집 - 프로젝트 세팅-엔진-입력"에서 해줄 수 있으며 바인딩이라는 항목에서 액션 매핑, 축 매핑 중 적절한 것에 키를 할당해주면 된다. // "Grow" 키를 누르거나 뗄 때 반응합니다 InputComponent->BindAction("Grow", IE_Pressed, this, &AMyPawn::Sta..
4일차 (Unreal Document 튜토리얼 따라하기 1) 따라할 튜토리얼 https://docs.unrealengine.com/ko/Programming/Tutorials/index.html C++ 프로그래밍 튜토리얼 언리얼 엔진 프로그래밍에 대한 실전 학습용 단계별 안내서입니다. docs.unrealengine.com 게임 조종 카메라 기존 게임 조종 카메라 튜토리얼에서는 아래와 같이 Camera를 셋팅한다. UPROPERTY(EditAnywhere) AActor* CameraOne; UPROPERTY(EditAnywhere) AActor* CameraTwo; 이 튜토리얼의 마지막에는 직접 해보기라는 항목이 있었다. 나는 여기서 2번째인 "하나의 배열 변수를 사용하여 카메라를 저장하면, CameraOne & CameraTwo를 사용했을 때와는 달리 카메라가 ..
3일차 (Unreal Battery Collector Tutorial 따라하기) 9~21강(完) - Character Class 확장하기 BlueprintNativeEvent 이벤트 발생 시에 코드에서 설정한 부분이 실행되게 함 블루프린트에서는 설정될 수 없는 부분임 해당 컴포넌트와 오버랩되는 Actor들을 가져오고 싶다면? 컴포넌트->GetOverlappingActors(저장할 액터 배열); // Get all overlapping Actors and store them in an array TArray CollectedActors; CollectionSphere->GetOverlappingActors(CollectedActors); GameMode클래스 ~GameMode클래스에서는 게임 룰을 다룸 EditDefalutsOnly 게임 모드의 경우 레벨에 직접 객체를 올려두고 인스턴스에서 값을 변경..
2일차 (Unreal Battery Collector Tutorial 따라하기) 6~8강 - Spawn Volumn 만들기 들어갈 내용 : When to Spawn, Where to Spawn, What to Spawn ( 언제 , 어디서, 무엇을 스폰할 것인가 ) FORCEINLINE과 UFUNCTION은 호환되지 않음 FORCEINLINE class UStaticMeshComponent* GetMesh() const { return PickupMesh; } 위와 같은 함수를 BlueprintCallable로 만들고 싶은 경우(즉, UFUNCTION 프로퍼티를 사용해야하는 함)에 FORCEINLINE을 사용하면 안된다. UPROPERTY(BlueprintCallable, Category = "Pickup") class UStaticMeshComponent* GetMesh(); 위와 같은 방..
1일차 (Unreal Battery Collector Tutorial 따라하기) 1~5강 ACTOR ( UObject에 기반하여 만들어짐 ) - Header File (기본 생성 코드) UCLASS( ) 에디터가 가비지 콜렉션, 키워드 설정 등 UObject의 특성을 갖도록 해주는 클래스 GENERATED_BODY( ) 보일러 플레이트 텍스트로 엔진 링킹 등을 담당함 BeginPlay( ) 해당 Actor가 생성되었을 때 호출될 함수 Tick( ) 매 프레임마다 호출될 함수 - Cpp File (기본 생성 코드) PrimaryActorTick.bCanEverTick (bool 타입) 해당 Actor가 매 프레임마다 호출되게 할 것인지를 정함 True이면 매 프레임 호출, False이면 매 프레임 호출 X - 추가 내용 UPROPERTY(VisibleAnywhere, BlueprintReadO..