인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

MOOOON님의 프로필 이미지
MOOOON

작성한 질문수

[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템

공격력 주문력 스킬 계수 레벨 적용

작성

·

23

0

롤의 스킬에는 각종 스탯계수가 붙어있는데요, 공격력계수, 주문력계수, 공격속도계수 등이 있습니다.

저는 현재 각 스킬의 계수 관리를 위해서 DealDamage 이펙트의 레벨을 필요한 만큼 만들어서 이용중입니다.

예를 들어, ad,ap 계수가 전부 1인 스킬을 구현한다고 하면, DealDamage 이펙트의 레벨을 2개 만들어서 ad계수가 1인 데미지 이펙트, ap계수가 1인 데미지 이펙트를 스킬에 다 추가하는 방식으로 하고 있습니다.

 

그런데, 레벨로 관리하니까 너무 직관적이지 않아 고민입니다. 예를 들어, ad계수가 1.5인 이펙트의 레벨이 3이라면, 스킬에 장착된 이펙트를 볼 때 이펙트를 또 한 번 더 들어가서 계수가 몇인지 확인하는 것이 너무 불편하게 느껴져서 질문드립니다.

 

강사님은 어떤 방식으로 관리하는 것이 좋다고 생각하시나요??

답변 2

0

Developer G님의 프로필 이미지
Developer G
지식공유자

수강해주셔서 감사합니다.

저 같은 경우는 RPG 개발용 개인 Framework를 가지고 있는데요,
이 프레임워크에는 강의의 Database를 Excel/GoogleSheet로 Export/Import 하는 기능이 갖춰져 있습니다.
그래서 아주 간단한 게임의 경우에는 그때그때 Framework에서 바로 Data를 수정하구요, 좀 규모가 크면 Excel/GoogleSheet로 Data를 수정한 뒤 Framework로 Import합니다.
이런 기능을 구현해놓으면 나중에 Data 변조를 방지를 위해서 실제 Database(SQL)에서 정보를 받아와야할 때도 편합니다.

Excel로 Export/Import 기능은 이 강의에 넣을까하다가 괜히 DB 구조 작성에 대해 어설프게 이해시켜드릴까봐 뺐는데(좀 복잡하기도 하구요.), 해당 내용에 대한 요청이 많아서 다음 강의로 예정된 ItemSystem 강의에서 다루게 될 것 같습니다.


더 간단한 해결책으로는, 지금 SkillSystemWindow에서 목록에 있는 Skill을 누르면 우측에 Skill의 Custom Editor가 뜨는 것처럼, Skill의 EffectSelector에 Effect를 넣으면 Foldout 형태로 Effect의 Custom Editor가 그려지게 만들면 됩니다.(보통 InlineEditor라고 부릅니다.) 그럼 Effect Tab으로 이동할 필요 없이 바로 확인이 가능하겠죠. 직접 만들기 힘드시다면, Odin Inspector나 InlineEditor Attribute를 제공하는 Open Source Custom Atrrbiute들이 많기 때문에 그쪽으로 찾아보시면 될 것 같습니다. 아니면 Effect의 정보를 다 그리지말고 Level별 Action 정보들만 그려서 바로 수정할 수 있게 해준다던가, 여러가지로 Tool 내에서 직관성을 개선할 방법이 많습니다. 툴 프로그래머들이 하는게 이런 일들입니다.

다만, 확실히 아셔야할건 Excel을 이용하든, Tool의 기능을 강화하든 모듈식 구조는 정보가 여기저기 흩어져있기 때문에 직관성이 떨어지는건 어쩔 수 없는 부분입니다, RPG의 Quest 같은 것들도 제대로 만들면 Quest 하나를 구성하기 위해 많은 수의 Table이 필요하구요, 기획자나 프로그래머나 이 구조를 설계하고 익숙해지는데 많은 시간이 들어갑니다.

감사합니다.


MOOOON님의 프로필 이미지
MOOOON
질문자

답변해주셔서 감사합니다.

구글 시트에 IO를 Export, Import하는 기능은 저도 개인적으로 만들어 놓고 이용중인데요,

구글 시트로 데이터를 수정하는 것은 제가 느끼는 불편한 점과는 상관이 없어보여서 InlineEditor를 적용시키거나 익숙해질 수밖에 없겠네요.

지금 생각해보니 전에 하던 프로젝트들처럼 이펙트 레벨을 고유 Id라고 생각하면 똑같긴 하네요.

 

추가로, ItemSystem 강의는 언제 개설 예정이신지 궁금합니다.

Developer G님의 프로필 이미지
Developer G
지식공유자

3~4월 중 에 개설을 예상하고 있습니다.

0

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

스킬의 계수를 관리하는 방법은 게임의 시스템과 구현 방식에 따라 많은 접근 방법이 존재합니다. 현재 질문 주신 내용처럼 여러 레벨의 DealDamage 이펙트를 만들어서 관리하는 방식은 나름의 유연성을 제공할 수 있지만, 직관적이지 않아 불편하실 수도 있습니다. 다양한 스탯 계수를 더 효율적으로 관리할 수 있도록 몇 가지 방법을 추천드립니다.

스킬 계수 관리 방법:

  1. 프로퍼티 객체 사용:

    • 각각의 스탯 계수를 별개의 프로퍼티로 관리하여, 스킬 이펙트를 설정할 때 이러한 프로퍼티 객체를 사용하도록 합니다. 예를 들면, ADRatio, APRatio 등의 프로퍼티를 만들어 필요에 따라 조합하여 사용할 수 있습니다.
  2. 스킬 데이터 클래스 확장:

    • 스킬 데이터 클래스를 확장하여 계수를 별도의 속성으로 관리합니다. 그리하여 이펙트 설정시 직관적으로 계수를 확인할 수 있습니다. 예를 들면, 클래스에 adCoefficient, apCoefficient와 같은 변수를 추가합니다.
  3. 계수 템플릿 시스템:

    • 공통으로 사용하는 계수 조합을 템플릿으로 만들어 관리합니다. 템플릿을 기반으로 스킬을 생성 및 조합하면 코드의 가독성이 높아집니다. 이 방법을 사용하면 계수의 시각적 확인이 잠재적으로 개선됩니다.
  4. JSON 등 외부 설정 파일 사용:

    • 스킬 계수를 JSON, XML 등의 외부 파일로 작성하여 관리합니다. 외부 설정 파일을 사용하여 계수 변경 시 코드 베이스 변경 없이 빠르게 수정할 수 있습니다.
  5. 스킬 효과 계산 함수 사용:

    • 스킬 사용 시 효과 계산을 함수로 분리하여, 각 함수가 특정 스탯 계수에 맞춰 연산되도록 합니다. 이 함수는 스킬 데이터 객체에서 서로 다른 값을 가져와 사용하도록 구성합니다.

참고할 질문 및 답변

  • 스킬제작 질문입니다

    • 이 질문에서는 다양한 리그오브레전드 스킬을 구현하기 위한 방법들을 설명합니다. 스킬에 필요한 요소들의 관리를 보다 효과적으로 할 수 있는 방법을 제시합니다.
  • 적 스킬 관련 질문

    • 적 스킬의 개별적인 피해 계수 관리를 위해서 어떤 방식으로 개발을 해야 하는지 논의하고 있습니다. 여기에 제시된 방법들은 사용자 스킬에도 응용될 수 있습니다.

위에 설명된 방법들 중에 현재 프로젝트의 구조와 사용자가 선호하는 방식에 맞는 것을 시도해 보시면 좋겠습니다. 다양한 방법을 시험하며 본인의 프로젝트에 가장 적합한 방식을 발견하시길 바랍니다.

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

MOOOON님의 프로필 이미지
MOOOON

작성한 질문수

질문하기