전체 글 101

[내일배움캠프 - 언리얼] DAY 41 - TA - 머티리얼 에디터

색공간여러 텍스쳐들은 각각의 여러 프로그램에 따라 제작되면 각 목적에 따라 색공간을 갖고 있다. Linear : 프로그램 내에서 선형적으로 계산하기 위한 색공간sRGB : 사람의 눈에 맞춰서 명도를 보정한 색공간 ACES 색공간Academy Color Encoding System, 영상 업계 표준 색범위, 채도가 변하는 단점언리얼 엔진은 씬뷰에서 ACES라는 색공간을 사용함톤매핑이 되는 단계에서 해당 색공간으로 변환됨톤매핑쉐이더를 연산하며 나온 색의 여러 값들을 모니터에 출력할 수 있도록 색을 변환하는 작업머티리얼 제작 기초 - 텍스처 활용노말맵하이폴에서 로우폴 단계로 가면서 유실된 디테일을 살리기 위한 기법개별 픽셀의 방향을 수정하여 표면에 유의미한 물리적 디테일을 더하는데 사용월드 포지션 오프셋오브젝..

[내일배움캠프 - 언리얼] DAY 40 - GAS 2강

GAS (Gameplay Ability System)에픽게임즈가 만든 공식 게임플레이 프레임워크핵심 구성 요소- Gameplay Tag- Gameplay Ability (직업 등)- Attribute Set- Gameplay Effect- Gameplay Cue (사운드 등 로컬에서 처리해도 되는 연출들)Attribute캐릭터의 수치 데이터게임 수치 관리직접 구현의 문제점1. 네트워크 복제를 직접 구현해야함UPROPERTY(Replicated, On_Rep=...)float Health = 100.f;2. Timer 직접 구현 (버프 등)3. UI 직접 연결4. if 문.... Tag, 데미지 계산을 직접 구현5. 최소/최대값 매번 Clamp GAS의 가장 큰 장점자동 네트워크 복제가 가장 큼실습

[내일배움캠프 - 언리얼] DAY 39 - TA - 렌더링

ShaderGPU에서 실행되는 작은 프로그램으로 3D 객체에 색, 질감, 빛 반사, 투명도 등 시각 효과를 계산하고 적용하는데 사용 렌더링 파이프라인3차원의 데이터를 2차원의 픽셀 이미지 데이터로 변환하기 위해 GPU에서 단계적으로 수행되는 처리 절차HLSL 구조와 기본 문법struct VertexInput { float3 position : POSITION; // 정점 위치 (입력) float2 uv : TEXCOORD0; // 정점 UV 텍스처 좌표 (입력) float3 normal : NORMAL; // 정점 법선 벡터 (입력)};struct VertexOutput { float4 position : SV_POSITION; // 클립 공간 위치 (출력..

[내일배움캠프 - 언리얼] DAY 38 - 오토마타와 스테이트 머신

스테이트 머신 (상태기계)- 객체가 어떤 상태인지 명확히 정하고, 그 상태에서만 가능한 행동과 전환을 허용하는 구조- 상황을 나누고, 그 상황마다 규칙을 고정하는 방식오토마타 이론추상적인 계산 모델 : 입력을 받아서 상태를 전환, 출력을 생성하는 수학적 기계 유한 오토마타푸시다운 오토마타튜링 머신 유한오토마타- DFA, NFA : 각 상태에서 각 입력마다 정확히 하나 / 0개 이상 의 전환게임에는 DFA가 적합 유한 상태 기계 (FSM)구현 방법- Enum + Switch계층적 상태 기계 (HSM)상태를 계층적으로 구성한 FSM 상속을 쓰면 계층 구조가 타입 시스템에 고정됨그러면 상태를 동적으로 재구성하기 어렵고 하나의 상태가 여러 상위 개념을 갖기 힘듬

[내일배움캠프 - 언리얼] DAY 37 - 액터와 매쉬

6번 과제 중 액터의 회전을 구현하는데 원하는대로 회전하지 않는 경우가 생겼다. 원인을 찾아보니 액터의 중심대로 회전을 시키는데 매쉬의 중심이 액터의 중심과 일치하지 않는 것이 이유였다. StaticMeshComp->SetRelativeLocation() 으로 매쉬의 중심을 액터의 중심과 일치하도록 이동하여서 중심을 맞추어 해결하였다.

[내일배움캠프 - 언리얼] DAY 36 - TA-수학 기초

벡터 (Vector)벡터는 방향과 크기를 함께 가지는 물리량이다수학적으로는 점 A에서 점 B로 향하는 차이로 표현된다A+B : 벡터의 합 (이동 누적)A-B : 두 점 간의 방향(거리)내적플레이어가 타겟을 바라보는지 판정(얼마나 같은 방향인가)-1 ~ 1 (Cos(θ) 값)외적법선 벡터 계산A, B 평면 법선행렬행렬은 숫자의 집합이다벡터를 변환하는 도구이다이동, 회전, 스케일 등의 변환은 행렬 곱셈으로 표현된다 여러 변환은 행렬곱 순서대로 결합된다SRT (계산은 TRS 순으로 먼저 계산)S : 스케일 R : 회전 T : 위치 좌표계언리얼 엔진은 Z-Up 왼손좌표계를 사용한다 Local : 자기 자신 기준World : 전역 공간 기준View : 카메라 기준 삼각함수삼각함수는 각도와 비율을 다루는 함수게임..

[내일배움캠프 - 언리얼] DAY 35 - GAS 1강

GameplayTags로 게임 설계점(.)으로 구분된 계층적 문자열 태그 시스템Character├── State│ ├── Jumping│ ├── Attacking│ └── Blocking└── Status ├── Stunned └── InvincibleCombat├── Window│ ├── Combo│ └── Parry└── Type ├── Melee └── Ranged특징- FName 기반 (경량, 빠름)- 에디터에서 관리 가능- 네트워크 복제 자동Tag 예시// C++ 예시 (참고용)FGameplayTagContainer CharacterTags;// Tag 추가CharacterTags.AddTag(FGameplayTag::RequestGameplayTag("C..

[내일배움캠프 - 언리얼] DAY 34 - 클래스와 리플렉션 시스템

리플렉션이란?C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술이다.// 클래스의 리플렉션 및 엔진 통합에 필요한 코드가 들어있음#include "Item.generated.h"// 해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미UCLASS()// 언리얼의 코드 생성 도구가 사용하는 코드를 삽입하는 역할GENERATED_BODY()UCLASS() 옵션Blueprintable / NotBlueprintable : 블루프린트에서 상속 가능한 클래스 여부BlueprintType : 블루프린트에서 변수나 참조로 사용할 수 있게 함, 이 옵션만 있으면 상속 불가에 참조만 가능UPROPERTY()1. 편집 가능 범..

[내일배움캠프 - 언리얼] DAY 33 - 액터 트랜스폼

// 위치, 회전, 스케일 설정하기// (300, 200, 100) 위치로 이동SetActorLocation(FVector(300.0f, 200.0f, 100.0f));// Yaw 방향으로 45도 회전SetActorRotation(FRotator(0.0f, 45.0f, 0.0f));// 모든 축을 2배로 스케일SetActorScale3D(FVector(2.0f));PrimaryActorTick.bCanEverTick = true;Tick 함수를 사용하기 위해 생성자에서 설정void AItem::Tick(float DeltaTime){ Super::Tick(DeltaTime); // RotationSpeed가 0이 아니라면 회전 처리 if (!FMath::IsNearlyZero(RotationSp..

[내일배움캠프 - 언리얼] DAY 32 - 로그와 라이프 사이클

// BeginPlay 호출 시점을 로그로 확인UE_LOG(LogTemp, Warning, TEXT("My Item appears!!"));로그 카테고리: LogTemp라는 임시 카테고리 사용로그 수준- Display : 일반적인 실행 흐름이나 상태 확인(흰색)- Warning : 예상치 못한 동작이나 잠재적인 문제(노란색)- Error : 즉시 수정이 필요한 심각한 문제(빨간색) // "LogSparta"라는 이름으로 로그 카테고리 선언DECLARE_LOG_CATEGORY_EXTERN(LogSparta, Warning, All);헤더 파일에서 로그 카테고리 선언LogSparta : 카테고리 이름Warning : 이 카테고리를 사용할 때 기본적으로 Warning 이상의 로그만 출력하도록 설정All : 필..