전체 글

[디자인 패턴] #8_게임 루프, Game Loop Pattern 게임 디자인 패턴 중 "순서 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 9 항목, "게임 루프"에 해당하는 내용입니다. 게임 루프 1. 사용 목적 * Why? : 게임 시간 진행을 유저 입력과 프로세서의 속도와 디커플링 합니다. 2. 개념 사용자 입력을 기다리는 동안 루프가 계속 돌며 게임을 진행합니다. 루프가 얼마나 빠르게 돌았는지에 따라서 "FPS"가 측정되며, 어떠한 플랫폼에서도 일정한 속도를 유지하는 것이 주요합니다! 코드 예제 1. 게임 루프의 기본 형태 while(true) { processInput(); update(); render(); } 1. 사용자 입력 처리 2. 상태 업데이트 3. 화면에 그려내기 * 주..
[Unreal]#10_Damage + Health 구현 Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다. "Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다. Health 1. AShooterCharacter.h // Character.h 내부... class Character : public ACharacter { //... public: virtual float TakeDamage(float DamageAmount, FDamageEvent const& DamageEvent, AController* EventInstigator, AActor* DamageCauser) override; // BlueprintPure와 const는 같이 갑니다. ..
[디자인 패턴] #7_이중 버퍼, Double Buffer 게임 디자인 패턴 중 "이중 버퍼 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 8 항목, "이중 버퍼"에 해당하는 내용입니다. 이중 버퍼 1. 개념 * 이중 버퍼 패턴? : 어떠한 클래스는 변경이 가능한 상태를 캡슐화합니다. 해당 상태는 지속적으로 변경되지만, 외부에서 볼 때 한 번에 변경되는 것처럼 보이게 하고 싶습니다. 따라서, 해당 클래스를 "현재" 상태와 "다음" 상태를 갖도록 합니다! 이때, "현재" 상태는 항상 "읽기" 전용이며, "다음" 상태는 항상 "쓰기" 혹은 "변경"에 사용됩니다! 2. 그렇다면, 언제? 1. 순차적으로 변경해야 하는 상태가 있을 때 2. 변경 도중에도 접근 할 수 있는 상태가 있을 때 3. 외부에서..
[디자인 패턴] #6_상태 패턴, State Pattern 게임 디자인 패턴 중 "상태 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 7 항목, "상태"에 해당하는 내용입니다. 유한 상태 기계(FSM) 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 이렇게 하면 객체는 마치 자신의 클래스를 바꾸는 것처럼 보입니다. 1. FSM, 유한 상태 기계 유한 상태 기계는 입력, 상태, 그리고 전이 (Transition)로 구성된 수학적 모델입니다. FSM = 입력 + 상태 + 전이 주요 포인트는 아래와 같습니다. 1. 가질 수 있는 "상태"가 한정적입니다. 2. 한 번에 한 가지 "상태"만 허용됩니다. 예를 들면, 서 있는 동시에 점프할 수 없습니다! 3. "입력" 혹은 "이..
[Unreal]#9-2_Shooting 설계 및 구현 Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다. "Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다. Impact Effect 1. UParticleSystem* 타입의 변수를 데이터 멤버로 선언합니다. class AGun : public AActor { //... private: UPROPERTY(EditAnywhere) UParticleSystem* ImpactEffect; }; 1. Hit 위치에 Impact 이펙트를 재생합니다. if(bSuccess == true) { FVector ShotDirection = -Rotation.Vector(); UGameplayStatics::Spa..
[Unreal]#9-1_Shooting 설계 및 구현 Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다. "Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다. Shoot 액션의 Input Binding 구현 1. Gun 클래스의 PullTrigger() 메서드 선언 // Gun.h 내부 class AGun : public AActor { //... public: void PullTrigger(); }; // Gun.cpp 내부 void AGun::PullTrigger() { // PullTrigger() 메서드가 호출되면 "Shoot!"을 출력합니다. UE_LOG(LogTemp, Warning, TEXT("Shoot!")); } 2. Charact..
[Unreal]#8_Attach Gun Actor to Shooter Character Unreal 개발 중 "Gun Actor"에 대해 알아보겠습니다. "Simple Shooter Game"의 Character Class 개발 과정 중 일부입니다. Attach Gun Actor to Shooter Character via Socket 개별적으로 생성한 Gun Actor를 "Socket"을통해 Character에 Attach 하는 방법에 대해 알아보겠습니다. 1. Mesh -> Skeleton Tree에서 Gun Actor가 들어갈 위치 확인 1. Character의 Animation Bluprint의 에디터 창을 엽니다. 2. 오른쪽 상단, "Mesh" 정보를 엽니다. 3. Gun에 해당하는 Skele..
[BOJ 알고리즘, C++] #11660_구간 합 구하기 5 BOJ 알고리즘 문제 풀이, 11660_구간 합 구하기 5 누적 합 알고리즘을 통해 수열의 구간 합을 구하는 문제 문제 풀이 1. 먼저, 2차원 배열의 누적합을 "열" 순으로 누적 합을 계산하는 것이 아니라, "행" 순으로 계산해야 합니다. 2. 누적 합을 계산하는 방법은 아래와 같이 "[i-1][j] + [i][j-1] - [i-1][j-1]"입니다. prefixSum[i][j] = prefixSum[i-1][j] + prefixSum[i][j-1] - prefixSum[i-1][j-1] "행"을 기준으로 누적 합을 계산하다 보면 "중복"으로 누적된 값이 존재합니다! 위 그림을 살펴보면, prefixSum[4]를 위해 prefixSum[2]와..
[Programmers 알고리즘, C++]#Level 2_오픈 채팅방 Programmers 알고리즘 문제 풀이, Level2_오픈 채팅방 STL 컨테이너와 String 클래스를 활용하여 풀이하는 문제입니다. 문제 풀이 1. [유저 아이디] + [닉네임] 을 묶어서 기억하기 위해 STL 컨테이너 중 "map"을 활용합니다. [Basic C++] #38_map, 연관 컨테이너 [Basic C++] #38_map, 연관 컨테이너 C++ 개발에서 표준 라이브러리(STL)의 "map"에 대해 알아보겠습니다. "전문가를 위한 C"의 16 항목, "컨테이너와 반복자 이해하기"에 해당하는 내용입니다. map, 연관 컨 webddevys.tistory.com 2. 주요 포인트는 닉네임이 변경되는 시점은 두 가지입니다. ..
[Programmers 알고리즘, C++]#Level 2_문자열 압축 Programmers 알고리즘 문제 풀이, Level2_문자열 압축 String 클래스 활용과 규칙을 찾아 풀이하는 문제입니다. 문제 풀이 1. 최대 압축 단위는 전체 길이의 1/2까지 가능합니다! 2. 압축 단위를 증가시키며(1, 2, 3...N/2) 문자열의 압축 가능 여부를 확인합니다. 3. 각 압축 단위마다 최종적으로 압축된 문자열 길이를 기억해서 비교합니다. 4. 이때, 마지막에 남아 있는 가장 작은 문자열 길이를 반환합니다. 코드 #include #include using namespace std; int solution(string s) { int len = s.size(); int answer = len; int n = ..
Hardii2
개발 블로그