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..
TIL day 79
·
TIL
1. 코딩테스트오늘 오전에는 저번에 연습이 필요하다고 느껴진 배낭문제 유형의 DP 문제를 풀었습니다. 평범한 배낭https://www.acmicpc.net/problem/12865더보기#include using namespace std;int n, k;pair props[102];int dp[102][100'002];int answer = 0;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> k; for (int i = 1; i > w >> v; props[i].first = w; props[i].second = v; } for (int i = 1; i  동전https://www.acmicpc.net/problem/9084더보기#include..
Unreal Engine - 데디케이티드 서버 6 (동기화)
·
Unreal Engine
1. 캐릭터 걷기 및 점프 동기화코드더보기//animinstance.h#pragma once#include "CoreMinimal.h"#include "Animation/AnimInstance.h"#include "DXAnimInstanceBase.generated.h"class UCharacterMovementComponent;UCLASS()class SCC_DEDICATEDX_API UDXAnimInstanceBase : public UAnimInstance{ GENERATED_BODY() public: virtual void NativeInitializeAnimation() override; virtual void NativeUpdateAnimation(float DeltaSeconds) overr..
TIL day 78
·
TIL
1. 언리얼오늘은 오전부터 멀티플레이 공부를 하고 프로젝트를 진행하고 있습니다. https://gbleem.tistory.com/156 Unreal Engine - 데디케이티드 서버 5 (RPC, Replication)https://gbleem.tistory.com/152  Unreal Engine - 데디케이티드 서버 4 (RPC)1. RPC 개념https://gbleem.tistory.com/140#6.%20RPC-1-5 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라gbleem.tistory.com멀티플레이 관련 공부를 하면서, 개념은 점차 잡혀가고 있어서 다행인 것 같습니다.오늘은 NetMulticast와 프로퍼티 리플리케이션 관련해서 공부..
Unreal Engine - 데디케이티드 서버 5 (RPC, Replication)
·
Unreal Engine
https://gbleem.tistory.com/152  Unreal Engine - 데디케이티드 서버 4 (RPC)1. RPC 개념https://gbleem.tistory.com/140#6.%20RPC-1-5 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST 역할을 하는 서버용gbleem.tistory.com이어지는 글 입니다. 1. NetMulticast RPC vs Replication1 -1. overview게임에서 리플리케이션 된 액터가 있을때, 이 액터의 속성이 서버에서 수정된 경우를 생각해보자넷 멀티캐스트 RPC를 통해서 서버 + 모든 클라이언트에게 변경된 값을 알려주거나프로퍼티 리플리케이션을 ..
TIL day 77
·
TIL
1. 코딩테스트오늘은 수업중에 DP관련 문제를 풀었습니다.https://www.acmicpc.net/problem/1535DP 배낭문제 유형의 문제였는데, 이 문제 유형 관련해서 좀 더 공부를 해봐야겠다는 생각이 들었습니다.현재 턴을 가지고 진행하면서체력과 같은 제한이 있는 경우2차원 배열을 사용하고 2중 for문을 통해서 문제를 해결하는 것 같은데, 좀 더 템플릿화해서 익숙해져야 할 것 같습니다.더보기#include using namespace std;int n;pair board[22];int dp[22][102]; //현재 i번째 왔을때 남은 체력 j 일때의 기쁨int answer = 0;int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n; fo..