전체 글 390

DX11 - 무게중심좌표계 이론

Interpolation v1에서 v2까지의 거리가 있다고 가정했을 때. v0은 v1,v2 중간 어딘가에 있다, 이때, v1에서 v0까지 거리를 a라고 할 때, v0에서 v2는 b이다. 그럼 v0이 v1에 가까워지면 b가 커지고, v0이 v2에 가까워지면 a가 커지는 것을 알 수 있다. 이러한 v는 다음과 같이 표현할 수 있다. v = b/a+b* v1 + a/a+b *v2 여기서 b/a+bv1을 w라고 표현하면, a/a+b * v2는 1-w로 표현할 수 있다. 그럼 이제… 세 점 사이의 정 가운데 p가 있다고 해보자. 세 점은 각각 v1, v2, v3라 할 때 p를 다음과 같이 표현할 수 있다. p = v1 + v2 + v3 / 3 = 1/3 v1 + 1/3 v2 + 1/3 v3 = w1v1 + w2v..

그래픽스/DX11 2024.09.24

프로그래머스 C++ Lv.2 퍼즐게임 (PCCP 기출문제 2번)

https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  이분탐색 쓸 생각 못했었는데 적용하는 계기가 되었다. #include #include #include #include using namespace std;bool Possiblelevel(int level, vector diffs, vector times, long long limit){ long long time_cur = times[0], time_prev = 0; long long..

프로그래머스 - Lv.1 동영상 재생기

코딩테스트 연습 - [PCCP 기출문제] 1번 / 동영상 재생기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  1. 10초 미만인 경우의 max값을 구한다.2. 오프닝 구간 사이에 있는 경우 오프닝 끝으로 계속 보내주는 걸 고려하기3. 시간이 최소 시간 이하인 경우, 최대 시간 이상인 경우 고려하기 string solution(string video_len, string pos, string op_start, string op_end, vector commands) { string answer ..

디버깅에 도움되는 메소드 ensure 사용법

c++용법에서 Assert 매크로가 있는데ue5에도 이와 비슷하게 응용할 수 있다. 1. Check(표현식) assert결과가 false면 실행을 중지시킨다. 2. Ensure (표현식) ensure을 사용하여 오류를 디버깅 하는 방법에는 3가지가 있다. 1. ensure( 표현식 )표현식을 검증하여 실패하는 그 지점까지 이르는 콜스택을 생성한다. 2.ensureMsgf(표현식, TEXT("")) 해당 표현식 검증이 실패되면 TEXT에 써져있는 구문으로 오류를 체크할 수 있다. 3. if문을 사용하는 표현식 위 3가지 방식을 코드화하면 다음과 같다.

UE5 2024.09.22

AVL

AVL은 균형 잡힌 이진트리 종류 중 하나 입니다.이진트리의 종류는 대략적으로 다음과 같습니다- AVL- 2-3 트리- 2-3-4 트리- Red-Black 트리- B 트리  자동으로 균형을 잡는 AVL 트리와 균형 인수(Balance Factor) 균형 인수 = 왼쪽 서브 트리의 높이 - 오른쪽 서브 트리의 높이 균형 인수를 통해서 해당 트리의 균형을 잡기 위한 척도를 잡을 수 있다.AVL트리는 균형 인수의 절대값이 2 이상인 경우에 균형을 잡기 위한 트리의 재조정을 진행한다.  이 그림과 반대로 오른쪽 트리의 깊이가 3이고 왼쪽 트리의 깊이가 1라면균형 인수는 -2일것이다.  AVL 트리의 균형이 무너지는 상태(= 이를 리밸런싱이 필요한 상황이라한다. )를바로잡는 회전은 4가지로 정리가 된다.  LL회..

1. GameplayAbilitySystem 플러그인 소개

게임 플레이 시스템은 MOBA 타이틀 또는 RPG에서 찾을 수 있는유형의 능력과 속성을 구축하기 위한 매우 유연한 프레임워크입니다. 게임 속 캐릭터가 사용할 수 있는 액션이나 패시브 능력,이러한 액션으로 인해 다양한 속성이 쌓이거나 닳아 없어질 수 있는 상태 효과인'쿨타운' 타이머 또는 리소스 비용을 구현하여위와 같은 방법으로 액션의 사용을 규제하고, 각 레벨에서 해당 기능의 수준과 효과를 변경할 수 있습니다.또한 입자 또는 음향 효과 등 역시 게임플레이 어빌리티 시스템으로 활성화 할 수 있습니다. 간단히 말해, 이 시스템은 현대 RPG 또는 MOBA 타이틀에 설정된캐릭터의 능력에 대해서 복잡한 게임 내 능력을 설계하고 구현할 때 효율적으로 네트워크화 하는데 도움이 될 수 있도록 만들어진 것입니다. 게임..

UE5/GAS 2024.09.19

[DevLog] Lucy 240917

추가 기능 1- idle 상태, relax 상태 , jog 상태 분리relax는 idle상태에서 실행되고 2초 지나면 랜덤으로 팔 휘적거리거나 좀 편안해 보이는 애니메이션 재생함.애니메이션이 3개면 실행 확률을 다음과 같이 조정함1 애님 - 30%2 애님 - 40%3 애님 - 30%이 정도로 나누어 랜덤 실행되도록 함 기본적은 Anim Instance는 c++에서 값을 받아옴.해당 값을 ABP에서 관리하고 수정 가능하도록 함. 추가 기능 2향상된 인풋 시스템에 맞는 게임 플래이 태그 제작 및 인풋 시스템 cpp 제작  오늘 적용한 것MIXAMO에서 애니메이션을 받아와 파라곤 캐릭터에 맞게리타겟팅함- 언리얼 기본 마네킹 스켈레톤을 이용해서 리타겟팅 하였다.캐릭터 애니메이션 - Idle, Relax, Jog..

Enhanced Input System Input Binding Process (향상된 인풋 시스템 인풋 바인딩 과정)

1. Native Gameplay Tags- Define input tags(입력 태그 정의) 입력 태그를 정의해줍니다. 입력 태그는 점프, 이동, 발사 등 다양한 입력 동작을 나타내는 식별자입니다. 이러한 입력 태그는 소스 파일에서 다음과 같은 형태로 정의해줄 수 있습니다.// 해더 파일 class UInputAction; class UInputMappingContext; USTRUCT(BlueprintType) struct FLucyInputActionConfig { GENERATED_BODY() public: UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (Categories = "InputTag")) FGameplayTag InputTag; UPR..

UE5 2024.09.16

C++ 람다 식

람다 식이란? C++ 11 이상에서는 람다 식(종종 람다라고도 함)은 함수에 인수로 호출되거나 전달되는 윛에서 익명 함수 개체(클로저)를 정의하는 편리한 방법입니다. 일반적으로 람다는 알고리즘 또는 비동기 함수에 전달되는 몇 줄의 코드를 캡슐화하는 데 사용됩니다. 이 문서에서는 람다를 정의하고 다른 프로그래밍 기술과 비교합니다. 해당 장점을 설명하고 몇 가지 기본 예제를 제공합니다. 람다 식의 일부 다음 함수에 서 번째 인수 std::sort()로 전달되는 간단한 람다입니다.#include #include void abssort(float* x, unsigned n) { std::sort(x, x + n, //람다 표현식 시작 [](float a, float b) { return (std::abs(a) ..