Granting Abilities이제 실제 Gameplay Ability를 만들 차례이다.바로 Gameplay Ability 블루프린트를 만드는 것도 가능하지만, 프로젝트에서 사용할 모든 Ability가 공통으로 사용할 기능을 넣기 위해 GameplayAbility를 상속받는 C++ 베이스 클래스를 우선 생성해줄 것이다. 우리는 시작 시 캐릭터에게 Ability를 부여하는 구조를 만들 것이다.AuraCharacterBase 클래스에 게임 시작 시 캐릭터에게 부여할 Gameplay Ability 목록을 블루프린트에서 설정할 수 있는 변수(StartupAbilities)를 추가한다.그리고 이 목록의 Ability들을 실제로 캐릭터에게 부여하는 AddCharacterAbilities() 함수를 생성한다. Ab..
* 번역 주의Gameplay Abilities1. Gameplay Ability란? • GamePlay Ability는 게임에서 액터가 수행할 수 있는 행동이나 기술이다. • GamePlay Ability는 UGameplayAbility를 상속한 클래스이며, 해당 Ability가 무엇을 하는지와 어떤 조건에서 사용할 수 있는지를 정의한다. 2. Gameplay Ability의 특징비동기적 실행 • Gameplay Ability는 단순한 함수가 아니라 비동기적으로 실행되는 인스턴스 객체이다.• 특정 시점에 활성화될 수 있다. • 여러 단계(Multi-stage)의 작업(Task)을 수행할 수 있다.• 이러한 작업은 일정 시간에 걸쳐 진행될 수도 있고, 그렇지 않을 수도 있다. 수행되는 작업 • 작업은 다른..
Responding to Attribute Changes속성(Attribute) 변경을 감지하기 위해 Callback 함수 또는 Lambda 함수를 사용할 수 있다.AbilitySystemComponent에는 GetGameplayAttributeValueChangeDelegate()가 이미 구현되어 있으며, 특정 Attribute의 값이 변경되면 해당 Delegate가 자동으로 브로드캐스트된다.따라서 BindCallbacksToDependencies() 함수에서 각 Attribute의 변경 Delegate에 Lambda를 바인딩하여 속성 변경 시 UI가 자동으로 갱신되도록 구현한다. 먼저 AttributeSet을 가져온 뒤, 특정 Attribute 하나만 처리하는 것이 아니라 모든 Attribute를 처..
Mapping Tags to Attributes현재는 Strength 속성만 처리 중이며, 기존 방식을 따르면 속성마다 동일한 작업을 반복해야 한다.따라서 위젯 컨트롤러에서는 속성이 몇 개인지, 이름이 무엇인지 신경 쓰지 않고 모든 숙성을 자동으로 순회하며 브로드캐스트하는 구조를 만들 것이다. 이를 위해서 Map 자료 구조를 활용할 것이다.키는 GameplayTag로, 값은 GameplayAttribute가 되도록 매핑한다.Attribute Set에는 각 속성에 접근할 수 있는 Attribute Accessor가 존재하고, 이 함수들이 GameplayAttribute를 반환한다.하지만 이러면 함수 자체를 연결해서 저장해야하는 상황이지만, 함수는 일반 값처럼 저장할 수 없기 때문에 Delegate를 활용..
트레일러 영상 링크 : https://www.youtube.com/watch?v=wi6pFZK33l8 The Relic First Guardian발매 예정일2026년 7월 31일장르오픈월드 액션 RPG개발사Project Cloud Games출시 플랫폼PC, PS5참고 사이트https://store.steampowered.com/app/2827820/The_Relic_First_Guardian/아쿠아맨, 캡틴 마블 등 헐리우드 영화 및 콜 오브 듀티 시네마틱 등 CG/VFX 경험이 뛰어난 박인혁 CEO의 신생 개발사 신작이다. 영상에서만 느낄 수 있는 현장감을 게임으로 전달하고 싶어 직접 게임 개발사를 만든 것으로 알고 있다.공개된 영상을 보면 다크 소울의 느낌이 많이 나며, 패링과 같은 요소로 인해..
Widget Attribute Tags속성은 여러가지가 있지만, 지금은 Strength에 대해서만 설정하여 이에 대한 텍스트와 값을 설정하고 있다.따라서 이제 속성 정보가 들어왔을 때, 이 값이 어떤 속성인지 확인할 것이며, 이때 사용할 것이 Gaemplay Tag이다.이를 위해 버튼이 없는 기본 Text Value Row에서 Gameplay Tag 타입의 변수를 선언하고, 해당 변수를 공개 상태로 만들어 인스턴스에서 편집이 가능하도록 해주자. Attribute Menu에서 각 Row들의 이름을 알기 쉽도록 속성 명을 활용하여 바꿔줄 것이다.그리고 이 모든 값들을 Variable로 설정해주자. 그리고 EventGraph로 넘어와서 AttributeTags를 세팅하기 위한 함수를 설정해줄 것이다.추가로 S..
Attribute Info DelegateAttribute Menu Widget Controller를 할당했기에, 이제 Attribute Menu Widget에 표시해야하는 데이터를 전달해야 한다.이를 위해서는 콜백에 위젯을 바인딩하고, 초기 값을 브로드캐스트하는 작업이 필요하다.위젯 컨트롤러 -> 데이터 브로드캐스트 -> 위젯 수신 -> UI 갱신 broadcast할 데이터는 이미 만들어준 Aura Attribute Info(Data Asset)을 활용한다.해당 데이터는 하나의 속성에 대해 다음과 같은 정보를 담고 있다.Gameplay Tag이름(Name)설명(Description)값(Attribute Value) 따라서 앞으로 위젯 컨트롤러는 이 구조체를 브로드캐스트하고, 속성 메뉴 위젯에서 이 구조..
트레일러 영상 링크 : https://www.youtube.com/watch?v=mpj_ZTfLPlE Project Windless발매 예정일미정장르오픈월드 액션 RPG개발사KRAFTON Montréal Studio출시 플랫폼PC, PS5, Xbox Series X|S 참고 사이트https://windless.krafton.com/ko배틀그라운드로 잘 알려진 크래프톤의 캐나다 몬트리올 스튜디오가 주도해 개발 중인 작품이다.국내에서 큰 인기를 얻은 이영도 작가의 판타지 소설 '눈물을 마시는 새' 세계관을 바탕으로 제작된다.상당히 오래전부터 해당 IP를 기반으로 하여 개발 시도가 있었던 것으로 기억하는데, 이번에 AAA급 게임으로 발표되어 상당히 반가웠다.지금은 내용이 가물가물하지만, 중학생 시절 이영도 ..
트레일러 영상 링크 : https://www.youtube.com/watch?v=fTrUOHJf0tc Persona 6발매 예정일미정장르JRPG개발사Atlas출시 플랫폼PC 예정참고 사이트https://store.steampowered.com/app/2649560/6/카툰 렌더링을 기반으로 한 JRPG 명가 Atlus의 대표 시리즈 Persona의 신작이다.Persona 시리즈는 엄청난 유명세로 옛날부터 꼭 플레이해보고 싶었던 작품이지만, 각 타이틀마다 워낙 방대한 플레이 타임을 자랑하다 보니 쉽게 입문하지 못하고 있다.우선 Persona와 비슷한 분위기의 단일 작품인 메타포: 리판타지오부터 플레이해본 뒤 본편 시리즈에 도전해볼까 생각 중이다.이번 트레일러는 처음 봤을 때 다른 게임의 영상을 잘못 튼 ..
트레일러 영상 링크 : https://www.youtube.com/watch?v=jKQem4Z6ioQ Light No Fire발매 예정일미정장르오픈월드 생존 크래프팅 / 샌드박스개발사HelloGames출시 플랫폼PC 예정참고 사이트https://www.madngine.com/webdev2022/#gameNo Man's Sky의 개발사 Hello Games의 신작 게임이다.방대한 규모의 우주 탐험 게임으로 유명한 No Man's Sky에 이어, 이번에는 지구 크기의 거대한 판타지 세계를 배경으로 한 오픈월드 생존·탐험 게임을 선보였다. 비슷한 게임으로는 Minecraft, Valheim, Enshrouded 등이 떠오르는데, 현재 공개된 트레일러 기준으로는 전투 요소보다는 탐험과 생존, 건설에 더 초점을..
트레일러 영상 링크 : https://www.youtube.com/watch?v=lgH2G7OWfgk Torii: Beyond The Gates발매 예정일미정장르2D 메트로배니아개발사Oh Baby Games출시 플랫폼PC 참고 사이트https://store.steampowered.com/app/3933180/Torii_Beyond_The_Gates/일본 신사의 토리이를 중심 소재로 삼아 영혼 세계를 수작업 아트로 표현한 메트로배니아 게임이다.메트로배니아는 비교적 매니악한 장르라는 생각이 있었는데, Hollow Knight: Silksong에 대한 높은 관심을 보며 생각보다 대중적인 장르로 자리 잡아 가고 있는 것 같다.Torii: Beyond The Gates는 신화풍의 몽환적인 배경과 디테일한 수작업..
Constructing the Attribute Menu Widget Controller기존에 만들었던 Overlay Widget Controller 패턴을 그대로 활용하여 Attribute Menu Widget Controller를 구성할 차례이다.먼저 Overlay Widget Controller 구조를 다시 확인해보자면 다음과 AuraHUD에 다음과 같은 요소들이 존재한다.TObjectPtr OverlayWidget;- 실세 생성된 위젯 인스턴스Overlay Widget Class- 블루프린트에서 설정하는 클래스Overlay Widget Controller- 실제 생성된 컨트롤러Overlay Widget Controller Class- 블루프린트에서 지정하는 컨트롤러 클래스 그리고 수정사항으로 Ov..
Aura Ability System Blueprint Library우리는 프로젝트 전체에서 단 하나만 존재하는 위젯 컨트롤러에 어디서든 안전하게 접근할 수 있는 구조를 만들 것이다.특히 Blueprint에서 간단하게 함수 하나만 호출해서 현재 존재하는 위젯 컨트롤러를 얻을 수 있도록 Blueprint Function Library를 제작한다. 하지만 현재는 HUD -> Widget Contrller 생성 -> Attribute Menu 전달과 같은 방식으로 동작한다.즉 Attribute Menu가 자기 컨트롤러를 직접 찾는 거싱 아니라, Overlay 쪽에서 만들어서 넣어주는 구조이다. Overlay Widget Contrller의 경우에는 다음과 같은 문제가 있다.Health GlobeMana Glob..
Attribute Menu Widget Controller이제 Attribute Menu 전용 위젯 컨트롤러를 만들 것이다.기본 Aura Widget Controller를 상속받아 핵심 기능을 재사용한다. 그리고 핵심 기능인 바인딩 처리용 함수와, 초기 값 브로드캐스트 처리 함수를 상속해주자.현재 해당 함수들의 내용이 비어있기에 Super를 호출할 필요가 없다.이후에 필요할 때 새로 내용을 구현할 것이다. 설계 방향현재 OverlayWidgetController는 이미 존재하며, AuraHUD에서 getOverlayWidgetController() 함수를 통해 관리되고 있다.AttributeMenuWidgetController 또한 동일한 방식으로 적용되며, HUD 또는 중앙 관리 클래스에서 생성 및 ..
Attribute Info Data Asset등록한 Tag를 토대로, 속성 정보 매핑을 구현할 것이다.Data Asset 기반으로 클래스를 생성하여, 속성의 이름과 설명 등을 관리한다. 속성이 변경될 때 Widget에 단순한 숫자만 전달하는 것이 아니라, 태그, 이름, 설명, 값 등 여러 값들을 전달해야하기 때문에 우선 하나의 속성 정보를 담는 구조체를 만들어줄 것이다.여기서 AttributeValue의 경우 게임에서 계속 바뀌는 값이며 Data Asset에서 설정하는 값이 아니기에 Edit이 불가능하도록 한다. 그리고 현재는 단순히 Tag만 알고 있는 경우가 많기에, Tag를 토대로 나머지 정보를 조회할 수 있는 함수를 만들어준다.그리고 속성을 하나만 저장하는 것이 아니기 때문에 배열을 사용하여 속성 ..
