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개가 주어진다. 이 정점을 모두 지나면서 최단경로를 구해야하기 때문에 아래와 같은 과정을 수행했다.다익스트라 하는 함수를 시작점을 매개변수로 넣어 여러번 수행할 수 있게 하였다...
TIL day 85
·
TIL
1. 코딩테스트백준 클래스 4의 알파벳 문제https://www.acmicpc.net/problem/1987처음 풀이bfs로 찾을 것인데, 특이점은 선택한 경로로 이동하는 동안에 방문 배열을 유지해야 한다.예를 들어, CAAB /n ADCB 라는 char 배열이 주어졌을 때C -> A -> D 로 가는 경로가 있다면, 이 "해당 경로에만 유지되는" 방문체크 배열이 필요하다.그 이유는 bfs 방문하는 순서가 인접한 것들부터 방문하고 퍼져 나가는 순서인데, 이렇게 되면 오른쪽으로 방문하는(y가 커지는) 경로와 아래로 방문하는(x가 커지는) 경로에 둘 다 A가 있으므로 만약 오른쪽으로 먼저 진행했다면, 아래로는 방문을 못하는 경우가 생긴다. (이미 A는 방문체크를 해버리니까) 그래서 해결책으로 queue 자체..
UE5 Issues - 리슨 서버 게임 이슈들
·
Unreal Engine
1. 호스트의 권한게임 시작 버튼을 Host만 누를 수 있게 하고 싶어서 아래와 같은 로직을 생각하게 되었다.처음에 시작 버튼을 Hidden 한 상태로 시작한다.해당 UI를 가지고 있는 owning actor를 찾아서HasAuthority() 함수를 통해 서버인지 확인하고 서버라면, 버튼이 Visible 한 상태로 바꿔주는 작업을 해준다.또한, 버튼이 눌러지지 않도록 disable 상태로 만들어 준다.다음으로는 게임모드가 가진 상태에 따라서 UI의 실행 상태를 정해주는 로직을 구성했다.리슨 서버이기 때문에 HasAuthority 체크 후 UGameplayStatics::GetGameMode를 통해서 게임모드를 가져온 후해당 변수르 Tick에서 체크하여 true인 경우, 버튼을 활성화 시켜준다. 궁금증UI..
Unreal Engine - 멀티캐스트 델리게이트
·
Unreal Engine
0. 델리게이트델리게이트 공식 문서 언리얼에서의 사용특정 상황이 발생했을 때 다른 객체에게 알려주기 위해서 사용환다.예를 들어,캐릭터의 체력이 0이 되었을 때 UI와 게임모드, 사운드 등에서 한 번에 반응을 할 때 사용할 수 있다.캐릭터가 체력과 관련된 델리게이트 변수를 가지고 있고, 이 변수를 체력이 0이 될때 BroadCast 하면UI나 게임모드 등 다른 부분에서 바인딩 한 모든 함수들을 동시에 실행할 수 있다.예시//character.hDECLARE_MULTICAST_DELEGATE(FDeathDelegate);...public: void TakeDamage(float Damage); UPROPERTY() FDeathDelegate DeathDelegate; //characte..
Unreal Engine - 데디케이티드 서버 7 (동기화 2)
·
Unreal Engine
캐릭터의 체력을 UI와 연동하는 시스템 구현하기 1. 액터 컴포넌트 동기화1 - 1. 세팅새롭게 생성한 파일Status Component캐릭터의 체력을 set하고 get하는 함수들 존재멀티캐스트 델리게이트를 통해 변수 생성HPWidgetText를 setting 하는 함수와해당 UI의 Owner에 대한 정보를 가진 변수와 해당 변수를 가져오는 함수 존재UPROPERTY(VisibleAnywhere, BlueprintReadOnly)TObjectPtr OwningActor;HPTextWidgetComponent연결된 widget을 가져와서 Owner를 통해 초기화 진행위젯 컴포넌트의 역할?수정한 로직PlayerCharacterStatus Component와 HPTextWidgetComponent 변수 추가 ..
DP (배낭 문제)
·
알고리즘(코딩테스트)
1. 특징배낭 문제 유형의 경우, 특정 스텝을 나아가는 도중에 "제약조건" 을 가지고 있어서 해당 조건을 체크해주는 작업이 필요하다. 예를 들어,물건들을 고르는 방법의 수를 구하는데 "최대 무게"가 정해져 있음동전을 모으는 방법의 수를 구하는데 "최대 금액" 이 정해져 있음인사를 하면서 얻는 기쁨을 구하는데 "최대 체력"이 정해져 있음  그렇기 때문에, 이중 for문을 사용해야 하는 경우가 많다.step을 밟아 나가는 for문제약조건을 지켜주는 for문 2. 예시https://www.acmicpc.net/problem/1535 이 문제는 가장 스탠다드한 형태의 문제이다.바깥 for문을 통해 step을 밟아 나가면서안쪽 for문을 통해서 제약조건을 지켜준다.더보기#include using namespace..