Inflearn brand logo image

Inflearn Community Q&A

lionhas994720's profile image
lionhas994720

asked

Lee Deok-woo's Unreal Programming Part 4 - Gameplay Ability System

Chapter 10: Implementing a Character's Area-of-Effect Skills

TA

Written on

·

96

0

언리얼에서 어빌리티 시스템을 이용하여 구현중입니다.

플레이어가 도끼를 휘둘러 몬스터가 넉백되는 시스템을 구현할때 플레이어가 도끼를 휘두르는 것을 GA, AT, TA로 구현했습니다. (광역 공격)

현재 상황은 TA에서 AddForce로 몬스터를 넉백처리 해주는데, AddForce로 몬스터를 넉백하는 것을 몬스터의 넉백 어빌리티로 구현하는것이 좀 더 괜찮은 코드일까요? 아니면 기존처럼 TA에서 몬스터의 넉백을 구현하는 것이 나을까요...?

몬스터에게 ASC를 생성하고 어트리뷰트까지 달아준 뒤 넉백 어빌리티를 만드는거는 너무 과한 코드일까라는 생각이 들어서요.

unreal-engineue-blueprintunreal-engine5언리얼-c++gas

Answer 2

0

ideugu님의 프로필 이미지
ideugu
Instructor

안녕하세요.
GAS소스를 보셨다면 아시겠지만 꽤나 복잡한 구조를 가지고 있습니다. 그래서 GAS를 적용하기 위해 Actor에 ASC를 추가하고 다양한 요소를 활용하는건 일반적인 처리에 비해 오버헤드가 발생할 수 밖에 없습니다. 그래서 저는 모든 기능을 GAS화 시키는 것에 대해서는 좋은 방법이라 생각하진 않습니다.

하지만 GAS를 사용하는 중요한 이유는 강의에서는 복잡해 다루지 않지만, 궁극적으로 멀티플레이어 환경에서 중요하게 활용되는 예측과 롤백 메커니즘을 이 프레임웍이 지원해주기 때문입니다.
정리하면 다음과 같은 기준으로 GAS도입이 필요한지 아닌지 결정해주면 될 것 같습니다.
- GA, GE등은 클라에서 빠르게 선 실행하되, 서버에서 Reject판정을 보낼 시 롤백이 가능한 중요한 어빌리티에 대해 사용해주는 것이 좋습니다.
- AT, TA는 이러한 어빌리티에서 장판기와 같은 효과를 보여주고 사용자 캔슬이 가능한 어빌리티에 사용하는 것이 좋습니다. 예를 들어 수류탄이라던가 보스가 시전하는 광역기 같은 어빌리티가 되겠지요.

0

안녕하세요, 인프런 AI 인턴입니다. lionhas99님.

언리얼 엔진에서 게임플레이 어빌리티 시스템(GAS)를 활용한 넉백 시스템 구현에 대해 고민하고 계시는 것 같네요. GAS를 이용하면 시스템을 구조화하고 확장 가능하게 만들 수 있는 장점이 있습니다. 하지만 모든 기능을 GAS로 구현해야 하는 것은 아니며, 상황에 따라 적절히 사용하는 것이 중요합니다.

TA에서 구현 vs. 몬스터의 넉백 어빌리티로 구현

  1. TA(Tactical Actions)에서 구현:

    • 장점: 코드가 간결해집니다. TA에서 직접 AddForce를 통해 몬스터를 넉백 처리하는 것은 상대적으로 구현이 단순하고 빠르게 적용할 수 있습니다. 이 방식은 시스템이 간단하거나 넉백 자체가 게임의 핵심 기능이 아닌 경우에 적합합니다.
    • 단점: 시스템이 커질 경우 관리가 어려울 수 있으며, 만약 넉백이 다른 요소와 결합되어 복잡한 상호작용을 필요로 할 경우 확장성이 떨어질 수 있습니다.
  2. 몬스터의 넉백 어빌리티로 구현:

    • 장점: 어빌리티를 통해 구현하면 게임 내 다른 상태나 효과와 강력한 상호작용을 설계할 수 있습니다. GAS의 다양한 기능을 활용할 수 있으며, 코드가 보다 모듈화되고 유지보수가 쉬워질 수 있습니다.
    • 단점: 초기에 설정하는 데 시간이 들고, 과도한 설계가 될 수 있습니다. 특히 넉백 효과가 단순한 경우에는 오버엔지니어링이 될 수 있습니다.

결국 선택은 게임의 요구 사항과 가용한 리소스, 팀의 GAS 익숙도에 따라 달라질 수 있습니다. 만약 넉백을 다른 시스템과 연계하거나, 다양한 상황에서 재사용할 계획이라면 어빌리티로 구현하는 것을 고려해 볼 수 있습니다. 반면, 단순한 효과고 다른 시스템과 연계될 가능성이 적다면 지금과 같이 TA에서 구현하는 방식도 충분히 괜찮습니다.

기존 유사한 질문을 다룬 답변이 있으니 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

lionhas994720's profile image
lionhas994720

asked

Ask a question