게임 개발 81

게임 수학 - 삼각 함수

1. 삼각함수(Trigonometric function)직각삼각형(Right-Angled Triangle)의 삼요소 삼각비(Trigonomertric Ratio)직각 삼각형을 구성하는 세 요소 중 두 요소에 대한 비의 값 직각삼각형의 3개의 변 중 2개의 변에 대한 비를 삼각비라고 하며,총 6가지 중 중요하게 사용되는 것이 사인, 코사인, 탄젠트 3가지.  sin=OppositeHypotenusecos=AdjacentHypotenusetan=OppositeAdjacent 컴퓨터 그래픽스에서는 사인함수(Sine)와 코사인함수(Cosine)를 가장 많이 사용함.탄젠트함수(Tangent)의 경우 역함수를 사용해 벡터의 각을 구하는데 활용 삼각함수(Tr..

게임 수학 - 선형 독립

1. 벡터의 생성(Span) 시스템선형 조합(Linear Combination)벡터의 기본 연산을 사용해 새로운 벡터를 생성하는 수식v=a1v1+a2v2+a3v3+...+anvn 벡터와 스칼라를 곱하면 벡터가 되고, 벡터끼리 더한 것은 벡터가 되기 때문에결과적으로 어떤 새로운 벡터가 만들어지게(span한다) 됨 선형 의존과 선형 독립의 수학적 정의다음 수식을 만족하는 0이 아닌 계수가 존재하면 수식 내 벡터들은 선형 의존이라 함.a1v1+a2v2+a3v3+...+anvn=0 다음 수식을 만족하기 위해 모 계수 값이 0이라면 수식 내 벡터들은 선형 독립이라 함.a1v1+a2v2+a3v3+...+anvn=0 문..

게임 수학 - 벡터

1. 벡터(Vector)의 정의수 직선에서의 표현의 한계수를 점으로 표현한다면 1차원의 도형 수직선 위에 있는 것들만 표현이 가능.1차원 상에서 의미있는 무언가를 표현하기에는 주어진 공간이 너무 부족함.데카르트 좌표계(Cartesian Coordinate System)수의 시스템을 기반으로 영역을 확장해 표현하는 방식.두 실수 집합을 교차시켜서(직교) 평면을 표현하고 오른쪽과 위쪽을 +방향으로 지정한다.이렇게 영역을 확장한 모습은 두 실수 집합을 곱집합으로 확장한 R⨉R (곱집합으로 구성된 평면)로 볼 수 있다.곱집합의 원소는 순서쌍이므로 두 집합의 원소를 각각 미지수 x와 y로 두면 이는 (x, y)로 표현할 수 있다.이를 좌표(Coordinate)라고 함.직교한다: 90도로 배치한다는 의미를 넘어 가..

게임 수학 - 함수

1. 함수(Function)의 기초함수를 왜 배워야 하는가? 게임의 공간을 구성하고 화면에 보여지는 전 과정은 대부분 공간과 공간의 변환으로 구성됨.이러한 변환은 근본적으로 집합과 집합의 대응 관계에 기반하고 있으며, 이러한 메카니즘을 설명하는 이론이 함수.함수에 대한 개념을 제대로 정립하는 것이 게임 공간과 공간의 변환을 올바르게 이해할 수 있는 기본 지식이 됨. 함수의 정의 첫 번째 집합 X의 요소인 x가 두 번째 집합 요소인 y에 대응될 때, y = f(x) 라고 표기 함수의 성립 조건 : 첫 번째 집합의 모든 요소가 사용되어야 한다. 함수가 아닌 대응 관계첫 번째 집합의 어떤 원소에 대한 대응 관계가 빠져 있을 때첫 번째 집합의 한 원소가 두 번째 집합의 두 가지 이상의 원소에 대응할 때  함수에..

게임 수학 - 수의 구조

1. 수의 시각화왜 수에 대해 알아야 하는가?게임 세계는 벡터로 구성된 시스템. 이 시스템 위에서 콘텐츠가 만들어짐.벡터는 수를 사용해 만들어진 대상이므로, 벡터를 정확히 이해하기 위해서는 결국 수가 만들어내는 시스템에 대한 이해가 필요하다.수(Numbers)의 종류다양한 수의 개념이 존재하며, 각각은 대문자를 사용해 집합으로 구분하여 부른다. 실수 집합(The set of real numbers) R실수 집합 R은 수 사이에 빈틈이 없는 연속된 무한의 요소로 구성된 수의 집합임이러한 실수 집합의 개념과 원소의 개념에서의 수를 바라보는 것을 훈련할 필요가 있음. 수 직선(Number Line)실수 집합 R의 요소를 점으로 나열하면 연속성 있는 직선으로 표현할 수 있음.수의 표현하나의 체계에서 대소를 비교..

언리얼 5 - 게임의 완성

게임의 승패조건 관리게임 모드멀티 플레이를 포함해 게임에서 유일하게 존재하는 게임의 심판 오브젝트최상단에서 게임의 진행을 관리하며, 게임 판정에 관련된 중요한 행동을 주관하는데 적합.다양한 게임 규칙을 적용할 수 있도록 핵심 기능과 분리해 설계하는 것이 바람직함.게임의 상태와 플레이어의 상태를 별도로 저장할 수 있는 프레임워크를 제공함  // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "GameFramework/GameModeBase.h"#include "Interface/ABGameInterface.h"#include "ABGameM..

언리얼5 - 리플렉션을 활용하는 언리얼 에디터 UI와 UI의 확장

언리얼 에디터 UI언리얼 에디터는 런타임 또는 디자인 타임에 클래스, 속성, 메서드 정보를 활용하여 자동으로 에디터의 UI를 생성하거나 확장하는 작업을 지원함.개발자가 직접 특성 클래스를 수정하지 않아도 리플렉션을 통해 자동으로 타입과 속성 정보를 읽고, 이를 바탕으로 UI를 동적으로 생성하거나 관리할 수 있음. 언리얼의 리플렉션 시스템은 UCLASS, UPROPERTY, UFUNCTION 등을 통해 타입과 속성 정보를 메타 데이터로 저장.이를 기반으로 속성 패널(Details Panel), 블루프린트 노드, UI 확장 등을 자동으로 생성할 수 있음. 1. 리플렉션을 활용한 Details Panel 생성UCLASS와 UPROPERTY를 사용해 속성을 정의하면 언리얼 리플렉션 시스템이 이를 읽고 Detai..

언리얼 5 - 게임 플로우 다듬기

게임 구성 요소의 정리게임 구성 요소의 분류세 개의 레이어를 기준으로 게임을 구성하는 다양한 기능의 구현  게임 플로우를 위해 보강할 내용죽었을 때 NPC와 플레이어의 처리이동 속도의 적용포션/스크롤 아이템의 추가 구현과 캐릭터의 적용스탯 기능 및 UI 기능의 보강 캐릭터 관련 보완사항 수정// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"#include "Character/ABCharacterBase.h"#include "Engine/StreamableManager.h"#include "Interface/ABCharacterAIInterface.h"#..

언리얼 C++ - 정적 분기와 동적 로직, 리플렉션의 사용

정적 분기와 동적 로직의 차이 정적 분기(ex. Switch문) :모든 분기에 대해 미리 연결하고 구현해놓아야 함.플레이어가 단축키를 수정한다면? 정적 분기만으로 구현하려면 모든 키에 대해 미리 매핑을 해놔야함. 동적 로직 :런타임 중에 분기가 추가되거나 수정될 수 있음.데이터를 기반으로 값을 설정할 수 있음. JSON 파일을 읽어와 설정할 수 있음.미리 모든 동작을 연결해놓지 않아도 런타임 중에 키 설정이나 게임 진행상황에 따라 분기(행동, 동작)가 추가로 연결될 수 있는 것. 리플렉션(C#) :복잡한 동적 로직을 구현할 수 있게 됨런타임 중에 타입 정보에 접근해 조회하거나, 메서드를 동적으로 호출할 수 있게 됨→ 프로그램이 보다 동적이고 유지보수에 용이해짐 1. 유연성ex. 플러그인 시스템으로 외부 ..

언리얼C++ - Delegate를 배열에 저장해서 사용하기

언리얼에서 델리게이트는 내부적으로 복잡한 형태(함수 포인터, 바운드 객체 등)를 유지해야하기 때문에 일반적인 값 타입처럼 복사하거나 전달하는 작업이 제한적임. void Bar(FOnTakeItemDelegate Delegate);→  불가능하거나 비효율적.위 코드처럼 델리게이트를 값으로 전달하려고 하면 델리게이트를 복사하는 과정에서 문제가 발생함.이 때문에 언리얼 엔진은 주로  참조를 통해 전달하거나 별도의 래퍼를 사용하는 방식을 권장. TArray DelegateArray;DelegateArray.Add(SomeDelegate);→  마찬가지로 TArray는 내부적으로 복사 생성자와 할당 연산자를 사용해 데이터를 관리하기 때문에제대로 동작하지 않음. 결국 Delegate는 복사 가능한 타입이 아니기 때..

반응형