Unreal Engine - 데디케이티드 서버 8 (게임 흐름)
·
Unreal Engine
1. PlayerController타이틀 전용 컨트롤러 및 맵 추가 동작 모습게임 시작 전 start 화면 구현Start 버튼을 누르면 Join Server 수행 구조Title Level (새로운 레벨 추가)GameModeBase_Title (새로운 GameMode 추가)DXTitlePlayerController (새로운 PlayerController 추가 -> 위젯 띄워주기)구현 내용ADXTitlePlayerControllervoid ADXTitlePlayerController::BeginPlay(){ Super::BeginPlay(); if (!IsLocalController()) { return; } //not server if (IsValid(UIWidgetClass)) { UIWidgetI..
Unreal Engine - AI (2)
·
Unreal Engine
1. AI 애니메이션 구현1 - 1. Overview캐릭터와 AI의 입력 방식의 차이점캐릭터플레이어의 입력을 받은 후 AddMovementInput을 통해 이동 처리가 이루어진다."입력값"에 따라 애니메이션 블랜딩을 수행AIAIController가 이동 및 행동을 결정, MoveToActor 또는 MoveToLocation을 통해 내비게이션 기반 이동 처리"AI의 상태 (이동속력 등)" 에 따라 애니메이션 변경애니메이션 전환 방식캐릭터애니메이션 BP에서 플레이어의 입력값을 기반으로 Speed나 Direction 값을 세팅,Speed나 Direction 등의 변수를 통해 애니메이션 전환AIBT나 BB에서의 AI 행동감지 또는 애니메이션 BP로직으로 애니메이션 변경MoveTo 등의 함수를 통해 움직임이 실행..
알고리즘 수업 최종 정리
·
알고리즘(코딩테스트)
이전 내용https://gbleem.tistory.com/87 1, 2 주차 알고리즘 정리1. STL 기본 구조STL이란C++ 내장 템플릿 기반 라이브러리컨테이너, iterator, 알고리즘으로 구성되어 있다.주요 컨테이너vector동적 배열로 구현된 컨테이너원소 삽입/삭제를 마지막 원소에 할때는 O(1gbleem.tistory.com 1. 정렬https://gbleem.tistory.com/98 버블, 선택, 삽입 정렬 + 퀵 정렬업데이트) 병합 정렬과 이분탐색 알고리즘 추가자세한 예시는 해당 글에 있고, 전반적인 정리는 아래 링크의 글을 참고하면 된다.https://gbleem.tistory.com/128 정렬 및 탐색 알고리즘 정리1. 정렬 알gbleem.tistory.com 버블 정렬앞에서부터 ..
Unreal Engine - AI (1)
·
Unreal Engine
1. NavMeshBoundVolume1 - 1. OverviewNavMeshBoundVolume은 AI가 움직이는 영역을 정의할 수 있는 범위를 말한다.액터 배치 -> 볼륨 -> 내비메시 바운드 볼륨 해당 볼륨의 특징으로는 기본적인 세팅에서는 동적인 범위 생성이 불가능하다는 점이다.아래와 같이 레벨에 설치 후 단축키 P를 통해서 내비메시가 깔린 범위를 체크할 수 있다. 그러나 게임 플레이 도중, 장애물이나 여러 움직임에 따라 내비메시의 범위를 조절하고 싶다면, Dynamic 설정을 해주어야 한다.프로젝트 세팅 -> 엔진 -> 네비게이션 메시 -> 런타임 -> 런타임 생성디폴트 값으로는 static으로 되어있지만, 동적으로 생성하기 위해서는 dymamic을 선택해주면 된다. 1 - 2. Dynamic 종..
MST
·
알고리즘(코딩테스트)
참고자료https://blog.encrypted.gg/1024 [실전 알고리즘] 0x1B강 - 최소 신장 트리안녕하세요, 오늘 다룰 주제는 최소 신장 트리(Minimum Spanning Tree)라는 개념입니다. 보통 코딩 좀 치는 사람들 사이에서는 MST라고 많이들 부릅니다. 그런데 Spanning이나 신장 이 단어가 너무 낯설지blog.encrypted.gg 1. 최소 스패닝(신장) 트리신장 트리란주어진 방향성이 없는 그래프의 부분 그래프들 중에서 모든 정점을 포함하는 트리를 말한다.부분 그래프란 주어진 그래프에서 일부 정점과 간선만을 택해서 구성한 그래프를 말한다.참고) 트리는 무방향이면서 사이클이 없는 연결 그래프그림 예시신장트리가 아닌 예시는 모든 정점을 포함하지 않거나, 사이클이 존재하기 때문..
TIL day 87
·
TIL
1. 코딩테스트오늘은 class 5의 LCS 2 문제를 풀었습니다.https://www.acmicpc.net/problem/9252 DP쪽 문제 풀이에 아직 약점이 있다고 생각이 들었고, LCS 관련된 내용이 정리되지 않은 것 같아서 해당 내용을 추가적으로 정리해 보았습니다.https://gbleem.tistory.com/168 LCS1. Longest Common Substring두 문자열 사이에서 연속적으로 공통된 문자 중 가장 긴 문자열 찾기 (최장 공통 문자열) 과정2차원 배열을 통해서 하나씩 비교하면서두 문자가 다르면 dp[i][j] = 0같은 문자가gbleem.tistory.com 2. 언리얼어제 다 정리하지 못한 멀티플레이 최적화에 대한 내용 정리를 마무리했습니다.https://gbleem..
LCS
·
알고리즘(코딩테스트)
1. Longest Common Substring두 문자열 사이에서 연속적으로 공통된 문자 중 가장 긴 문자열 찾기 (최장 공통 문자열) 과정2차원 배열을 통해서 하나씩 비교하면서두 문자가 다르면 dp[i][j] = 0같은 문자가 나온 순간 dp[i][j] = dp[i-1][j-1] + 1아래와 같은 표의 형태로 dp 배열을 구성할 수 있다 -ABC DEF-0000000G0000000B0010000C0002000D0000300F0000001E0000010 결론적으로 최장 공통 문자열의 길이는 3이 된다. 2. Longest Common Subsequence최장 공통 "부분수열" -> 중간에 끊기더라도 부분수열로서 연속된 문자열을 찾기 과정2차원 배열을 통해서 하나씩 비교하기두 문자가 다르면 dp[i -..
Unreal Engine - 멀티플레이 네트워크 최적화 2
·
Unreal Engine
https://gbleem.tistory.com/166 Unreal Engine - 멀티플레이 네트워크 최적화 11. Recap1 - 1. Server - Client 모델언리얼 엔진은 멀티플레이 게임에서 Server-Client 구조를 사용한다.서버만이 결정을 내리며, Authority를 가진다.클라이언트끼리는 직접 통신하지 않는다.클라이언트에서gbleem.tistory.com위의 글에서 이어지는 내용입니다. 3. Actor Replication Optimization3 - 1. Network Bandwidth 관리네트워크 bandwidth는 한정된 자원이기 때문에, 항상 중요한 정보는 놓치지 않고 불필요한 데이터는 줄이는 과정이 필요하다3 - 1 - 1. Relevancy"액터"가 "클라이언트"에게 ..
Unreal Engine - 멀티플레이 네트워크 최적화 1
·
Unreal Engine
1. Recap1 - 1. Server - Client 모델언리얼 엔진은 멀티플레이 게임에서 Server-Client 구조를 사용한다.서버만이 결정을 내리며, Authority를 가진다.클라이언트끼리는 직접 통신하지 않는다.클라이언트에서 진행한 행동을 서버로 보내면, 서버는 해당 행동을 처리하고 그 결과를 다시 클라이언트로 보낸다.1 - 2. Gameplay Framework게임모드와 게임 스테이트는 서버에서 해당 로직을 체크한다.게임 스테이트는 게임 모드는 서버에만 있기 때문에, 게임모드의 결과를 가져와서 리플리케이트 하여 가지고 있게 된다.게임 스테이트를 통해서 게임모드의 결과값을 클라이언트에게 전해준다.플레이어 컨트롤러는 서버, 그리고 소유하는 클라이언트에만 존재한다.플레이어 컨트롤러가 실행한 결과..
TIL day 86
·
TIL
1. 코딩테스트오늘은 class 4의 특정한 최단 경로 문제를 풀었다.https://www.acmicpc.net/problem/1504 문제를 보고 다익스트라 문제일 것이라는 생각이 들었다.이유는 가중치가 존재하고,최단 경로를 구해야 했기 때문이다.아직 다익스트라 코드에 익숙하지 않아서 기존에 공부한 코드를 좀 참고하여 풀었다. 추가로 다익스트라 문제를 몇 개 풀었는데, 배열로는 시간초과가 발생하는 문제가 있어서 우선순위 큐 이용한 방식에 익숙해지면 될 것 같다. 코드 해설이 문제에 있어서는 추가적으로 무조건 지나가야할 정점이 2개가 주어진다. 이 정점을 모두 지나면서 최단경로를 구해야하기 때문에 아래와 같은 과정을 수행했다.다익스트라 하는 함수를 시작점을 매개변수로 넣어 여러번 수행할 수 있게 하였다...