전체 글 283

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (5) BaseCharacter와 PlayerState에 AbilitySystemComponent와 AttributeSet 추가하기

이번 포스트에서는 본격적으로 GAS 프레임워크를 사용해보겠습니다.우선적으로 GAS를 사용할 수 있게 해주는 Ability System Component와GAS에서 사용할 데이터들을 모아놓은 Attribute Set을 추가해주겠습니다. 1) 선행작업먼저 GAS 프레임워크를 사용하기 위해서는 선행작업이 필요합니다.우선적으로 Gameplay Ability 플러그인을 활성화해야 합니다.  두번째로 프로젝트.build.cs에 플러그인들을 추가해야 합니다.  선행작업이 완료되었다면 2개의 클래스를 생성합니다.UAbilitySystemComponent에서 상속된 UAuraAbilitySystemComponent 클래스와UAttributeSet에서 상속된 UAuraAttributeSet 클래스를 생성하였습니다.아직 2..

Closure와 Decorator

이번 포스트에서는 클로저와 데코레이터에 대해 알아보겠습니다. 1) 클로저와 데코레이터란?클로저는 함수안에서 함수를 반환하는 경우에, 반환되는 함수를 일컫는 말입니다.주로 재귀함수나 함수를 순차적으로 실행하는 경우에 사용할 수 있는데이를 통해 재사용성이 높은 함수 구조를 만들 수 있습니다. 데코레이터는 함수를 확장하는 함수로서 @ 기호를 사용하여 어노테이션으로 사용할 수 있습니다.주로 반복되는 작업을 여러 함수에 적용하는 경우나 또는기존 함수를 수정하지 않고 추가구현하는 경우에 사용이 가능합니다. 이제 예제를 통해 클로저와 데코레이터를 사용해보겠습니다. 2) 클로저의 예제클로저를 통해 간단한 곱셈을 수행하는 함수를 만들어보겠습니다.def Mul(m): def closure(n): retu..

Python 2024.11.17

인코딩과 디코딩

이번 포스트에서는 파이썬을 통한 인코딩과 디코딩을 알아보겠습니다. 1) 인코딩과 디코딩이란?우선 인코딩과 디코딩이 무엇인지 알아보겠습니다.인코딩은 사람이 인지할 수 있는 형태의 데이터를 컴퓨터가 이해할 수 있는 형태로 변환하는 것을 의미합니다.인코딩은 다른 말로 코드화, 암호화, 부호화 등으로 표현할 수 있습니다. 디코딩은 인코딩과는 반대로 동작합니다.컴퓨터가 이해할 수 있는 형태에서 사람이 인지할 수 있는 형태로 변환하는 것을 의미합니다.다른 말로 역코드화, 복호화 등으로 표현할 수 있습니다. 이때 인코딩과 디코딩의 방식은 같은 방식으로 이뤄져야 합니다.만약, 인코딩을 UTF-8 방식으로 진행했다면 디코딩 역시 UTF-8 방식으로 진행해야 합니다.이제 예제를 통해 파이썬에서 인코딩과 디코딩이 어떻게 이..

Python 2024.11.16

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (4) GAS 프레임워크의 이해와 PlayerState

기본적인 게임의 구조를 설정하였으므로 이제 본격적으로 GameAbilitySystem을 적용해보겠습니다.그전에 GAS의 구성과 흐름을 한번 짚고 넘어가겠습니다. 1) GAS 프레임워크의 구조GAS 프레임워크는 다음의 구조로 동작합니다. 위와 같이 그림으로서 GAS가 동작하는 구조를 정리하였습니다.이제 세부 사항들에 대해 알아보겠습니다. Ability System Component, 줄여서 ASC라고 불리는 요소입니다.GAS 프레임워크에서 가장 중요한 역할을 수행, Actor에 부착되며 여러 설정을 가능하게 합니다. Attribute Set은 기존에 클래스에서 변수로 모아놓은 데이터들을 새로운 형태로 빼놓은 형태입니다.GAS 시스템에서 사용할 수 있는 데이터인 Attribute를 모아놓은 집합이라고 생각하..

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (3) PlayerController의 설정과 GameMode

이번 포스트에서는 플레이어를 조작하기 위한 PlayerController 클래스의 설정과게임을 운영하기 위한 GameMode 클래스 생성 및 부가설정을 진행하겠습니다. 1) GameMode 클래스우선 게임을 운영하기 위한 GameMode 클래스를 생성하고 이를 블루프린트로 만들어프로젝트의 기본 GameMode로 설정하겠습니다.   다음으로 플레이어를 조작하기 위한 PlayerController 클래스를 생성해보겠습니다. 2) PlayerController 클래스 - InputAction과 InputAcionMappingContext언리얼 엔진에서는 입력을 처리하기 위한 2가지 방법을 제안합니다.하나는 기존의 입력 시스템을 사용하는 것이고,다른 하나는 EnhancedInput이라는 신형 시스템을 사용합니다..

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (2) 몬스터 블루프린트와 애니메이션 블루 프린트

이번에는 몬스터의 블루 프린트를 만들어보고추가적으로 플레이어와 몬스터를 위한 애니메이션 블루 프린트도 만들어보겠습니다. 1) 몬스터를 위한 기본 클래스 AAuraEnemy#pragma once#include "CoreMinimal.h"#include "Character/AuraCharacterBase.h"#include "Interface/EnemyInterface.h"#include "AuraEnemy.generated.h"/** * */UCLASS()class AURA_API AAuraEnemy : public AAuraCharacterBase{ GENERATED_BODY()public: AAuraEnemy(); }; #include "Enemy/AuraEnemy.h"#include "Aura..

자료형 어노테이션

기본적으로 파이썬은 변수의 자료형 문제에 대해서 자유롭습니다.그렇지만 프로젝트의 규모가 커지고 협업을 하는 상황이 되면파이썬의 자유로운 방식은 소통의 불화를 불러오는 문제를 일으킬 수 있습니다.이런 상황을 위한 어노테이션에 대해 알아보겠습니다. 1) 어노테이션이란?변수를 선언할 때 그 타입을 명시적으로 선언해 줌으로써어떤 타입의 값이 지정될 것인지 직접 알려주는 것이 어노테이션이라고 합니다. 어노테이션을 사용하게 되면 가독성과 협업시의 효율성이 높일 수 있습니다.파이썬의 경우 3.5 버전부터 어노테이션을 사용할 수 있습니다. 2) 파이썬의 어노테이션과 예제파이썬의 어노테이션 방식은 다음과 같습니다.변수의 경우 아래의 방식을 사용하고변수이름 : 자료형 = 변수의값 함수의 경우 다음의 방식을 사용합니다.de..

Python 2024.11.15

GameplayAbilitySystem을 이용한 RPG 프로젝트 - (1) 플레이어 블루프린트 생성

GameplayAbilitySystem 줄여서 GAS로 불리는 프레임워크는언리얼에서 제공하며 게임 제작을 유연하게 만들어주는 도구입니다. 이를 이용하여 하나의 완성된 게임을 제작해보도록 하겠습니다. *기본적인 구조와 리소스는 Stephen Ulibari님의 강의에서 참고되었음을 알려드립니다*https://www.udemy.com/course/unreal-engine-5-gas-top-down-rpg/  플레이어를 세팅하기 이전에 플레이어와 적 모두가 사용할 수 있는 기본적인 클래스즉, 조상 클래스를 만들고자 합니다.구성은 다음과 같이 진행됩니다. 1) Pawn들의 기본 뼈대인 AuraBaseCharacter#pragma once#include "CoreMinimal.h"#include "GameFrame..

iterator와 generator

이번 포스트에서는 iterator와 generator에 대해 알아보겠습니다. 1) iteratoriterator는 집합에서 차례대로 값을 꺼낼 수 있는 객체를 말합니다.iterator는 집합의 크기가 매우 크고 데이터의 양이 아주 많을 때 일일이 그 집합을 사용하지 않고 필요한 값을 뽑아 사용합니다.이 방식은 메모리에도 부담을 덜 주기에 집합이 큰 경우에 아주 효율적입니다. iterator의 경우 반복이 가능한 객체에만 사용할 수 있는데,이러한 객체의 상태를 'iterable하다' 라고 표현할 수 있습니다. iterator는 다음의 2개의 함수로 동작합니다.iter() 함수를 통해 객체를 반복 가능한 객체로 변환합니다.next() 함수로 객체의 값을 뽑아올 수 있습니다.그리고 가장 중요한 것은 한번 ne..

Python 2024.11.14

언리얼 엔진에서의 광원과 설정

이번 포스트에서는 언리얼 엔진에서의 광원들과 특징 그리고 광원의 설정들을 알아보겠습니다.언리얼 엔진에서는 기본적으로 아래와 같은 5개의 광원을 제공합니다.  1) Directional LightDirectional Light는 태양과 같은 영구 광원의 역할을 생성합니다.평행한 그림자를 만들어 낼 수 있으며temparature를 조작하여 낮게 조작하면 밝은색, 높게 조작하면 어두운색을 만들어냅니다.ctrl + L 키를 눌러 해의 위치를 조작할 수 있습니다. Directional Light의 Mobility 설정은 다음과 같습니다.static의 경우, 빛을 조작할 수는 없지만 빠르게 빛을 렌더링할 수 있습니다.stationary의 경우, 빛의 위치를 변경할 수는 없지만 빛의 색과 세기는 변경할 수 있습니다...