아이템 스킬 시스템 구조 설계 방식과 데이터 테이블 구조 설계 :: 게임제작[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

게임제작
[1]
등록일:2018-09-11 09:48:42 (0%)
작성자:
제목:아이템 스킬 시스템 구조 설계 방식과 데이터 테이블 구조 설계
http://blog.daum.net/jcodeno1best/21


이번 Step_7에서는 [ 아이템 스킬 시스템 구조 설계 방식 ]과 [ 데이터 테이블 구조 설계 ]에 대해서 살펴보도록 하겠습니다. 


이전에 설명을 드렸던 " Item_Table.DB "에 기능을 추가하기 위해서 튜닝 작업이 필요합니다. 

Step_5에서 " Item_Table.DB/[UseSkillType][UseSkillID] "에 대해서 논리적인 오류가 있다고 말씀을 드렸습니다. 


해당 논리적인 오류에 대해서 설명을 드리는 것과 동시에 튜닝으로 기능 추가 및 스킬을 호출하기 위한 스킬 시스템에 대해서도 간략적인 내용을 다눌 예정입니다.    


스킬 시스템의 전체를 다루기에는 볼륨 사이즈가 너무 크기 때문에 [ 아이템에 스킬을 붙이는 부분만 요약 ]하여 설명을 드릴 생각입니다. 


이제 아이템 관련된 시스템 ( Part I )의 전체 구성중에 거의 50%에 해당되는 시스템들을 설명을 드렸으며, 

남은 48%( 아이템 관련 시스템 ) & 1%( 미지의 영역 ) & 1% ( 로컬라이징 준비 )에 대해서는 이제부터 차근 차근 설명을 드리고자 합니다. 


=============================================================================


아이템에 스킬을 붙이기 위해서는 먼저 스킬 데이터 테이블이 필요합니다. 

아이템과 스킬을 연결하는 과정과 구조는 아마도 이번 Step의 끝부분에서나 본론으로 설명을 시작하지 않을까 예상됩니다. 


1. 스킬 데이터 테이블 구조 설계 및 논리적인 구조 설명을 하겠습니다. 


스킬 데이터 테이블 구조 설계를 하기 위해서 우선적으로 스킬 시스템에 대한 논리적인 구조 설명을 먼저 드리는 것이 이해를 하시기에 더 쉬울 것 같습니다. 


아래와 같이 스킬 데이터 테이블과 아이템 데이터 테이블과의 논리적인 연결 구조를 설명하겠습니다. 



※ 아이템에 스킬을 붙이기 위한 전체적인 흐름상의 구조는 위와 같은 형태가 되어질 것입니다. 

각 데이터 테이블에 있는 컬럼(기능)들에 대해서는 데이터 테이블에서 설명을 하도록 하겠습니다. 


ⓐ [ Module_Table.DB + Extrardinary_Table.DB ]에서 스킬에 대한 효과를 만들고 제약 사항들을 설정합니다.  

ⓑ 스킬에 대한 효과를 만들어 놓은 상태에서 [ SkillData_Table.DB ]에서 스킬의 사용 조건과 제한 조건들을 체크하고, 사용 조건을 만족하였을 때, 스킬 효과를 호출하여 사용하는 형태입니다. 

ⓒ [ Item_Table.DB ]에서는 ⓑ에서 언급되어진 [ 스킬 효과를 사용하기 위한 조건 』이 되어지는 형태입니다. 


위와 같은 형태의 기본 논리적인 구조가 필요하다는 것만 여기서는 이해를 하시면 좋을 것 같습니다. 


2. 여기에서는 [ Module_Table.DB ]의 데이터 테이블 구조 설계와 테이블에 대해서 설명을 하겠습니다. 


우선 아래와 같이 [ Module_Table.DB ]를 만들어 보겠습니다. 



[ Module_Table.DB ]가 위와 같이 만들었습니다. 

이제 [ Module_Table.DB ]의 컬럼에 대해서 아래와 같이 살펴보겠습니다. 


▶ Index : 모듈의 인덱스를 의미합니다.    

→ 데이터 형식 : Int(n) 

※ [ Extrardinary_Table.DB ]에서 [ Module_Table.DB/[Index] ]를 호출하여 사용하는 형태를 가집니다. 


▶ ModuleName : 모듈의 명칭을 지정할 수 있습니다. 

→ 데이터 형식 : String 

※ 특수문자를 제외한 문자열을 입력할 수 있습니다.  


▶ ModuleType : 모듈의 행동 패턴을 정의하는 타입을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

※ 타입 리스트는 아래와 같습니다. 

☞ 1 : 증가값 

☞ 2 : Tic당 추가되어질 증가값 

☞ 3 : 감소값

☞ 4 : Tic당 감소되어질 감소값 

☞ 5 : 증가율 

☞ 6 : 감소율 


☆ [ Module_Table.DB/[Index] ]는 Extrardinary_Table.DB ] 데이터 테이블에서 여러개를 호출사용 사용할 수 있는 형태로 구조를 설계하였습니다.   



3. 이제 Extrardinary_Table.DB ]의 데이터 테이블 구조 설계와 테이블에 대해서 설명을 드리겠습니다. 


우선 아래와 같이 Extrardinary_Table.DB ]를 만들고, Extrardinary_Table.DB ] 와 [ Module_Table.DB/[Index] ]의 연결되어지는 구조에 대해서 살펴보도록 하겠습니다. 


Extrardinary_Table.DB ]가 위와 같이 만들었습니다. 

이제 Extrardinary_Table.DB ]의 컬럼에 대해서 아래와 같이 살펴보겠습니다. 


 ▶ ExtraID : 상태 이상 아이디를 의미합니다. 

→ 데이터 형식 : Int(n)

※ 상태 이상 아이디는 중복값이 없도록 설정해야됩니다. 


 ▶ ExtraName : 상태 이상의 명칭을 지정할 수 있습니다. 

→ 데이터 형식 : String


 ▶  ExtraLv : 상태 이상의 레벨을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

※ 동일한 상태 이상의 경우에 상위 레벨이 하위 레벨을 덮어쓰는 형태를 가집니다. 


 ▶ ExtraGroupID : 상태 이상의 그룹 아이디를 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

※ 동일한 상태 이상 또는 동종 상태이상의 효과를 같이 사용하지 못하도록 제한을 설정할 때, 동일한 [ ExtraGroupID ]를 설정할 수 있습니다.  [ ExtraGroupID ]가 동일할 경우에 하나의 Extra 그룹으로 인지하며, 1개의 ExtrID가 적용되어진 상태일 때, 다른 ExtraID는 재사용이 불가합니다. 


단, 현재 Character에게 적용되어진 [ ExtraID Lv.n ]보다 상위 레벨의 [ ExtraID Lv.n ]은 사용이 가능하며, 이전 레벨의 ExtraID에 의해 설정되어진 효과를 초기화되어지고, 상위 ExtraID의 효과만 적용되어집니다. 


※ 위의 데이터 테이블 참조 이미지를 보면, [ Index = 12 - 경험치 확률 증가 ] & [ Index = 15 - 드랍 확률 증가 ]가 동일한 [ ExtraGroupID = Value(300) ]으로 설정되어 있습니다. 


해당 내용을 풀어서 설명을 드리면, [ 경험치 확률 증가 ] or [ 드랍 확률 증가 ] 버프는 같은 그룹으로 설정되었기에 중복해서 사용할 수 없다는 것을 의미하며, 둘 중 하나의 버프 효과가 모두 소멸되어진 이후에 사용이 가능하다는 것을 확인할 수 있습니다. 


이처럼 중복 사용이 불가능하도록 제약 조건을 설정하거나, 관리를 할 수 있는 형태를 가질 수 있습니다. 


 ▶ ModuleType : 적용되어질 모듈 타입을 지정할 수 있습니다. 

→ 데이터 형식 : [ Module_Table.DB/[Index] ]를 사용합니다. 

※ 이외의 다른 데이터 인덱스값이 입력되어지면 Server Error 처리가 되어집니다. 


 ▶ ExtraType : 상태 이상의 적용 타입을 지정할 수 있습니다. 

→ 데이터 형식 : Bool ( 0 or 1 형식 ) 

☞ 타입 적용 값 : [ 0 - DeBuff ] / [ 1 - Buff ]


 ▶ ExtraTime : 상태 이상의 효과 유지 시간을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 스킬의 묶음 단위의 재사용 시간을 설정할 수 있으며, [ 0 ~ 2,592,000 / 최장 30일 ]로 설정이 가능합니다. 

단위 형식 : 60 ( 1분 ) 


 ▶  RepeatTime : 상태 이상의 효과 반복 시간을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 스킬의 묶음 단위의 재사용 시간을 설정할 수 있으며, [ 0 ~ 2,592,000 / 최장 30일 ]로 설정이 가능합니다. 

단위 형식 : 60 ( 1분 ) 

※ 물약 회복등의 경우에 사용되어지는 컬럼이며, 현재의 아이템 스킬에서는 다루지않습니다.  

참고의 의미로 알고 계시기 바랍니다. 


 ▶ RemoveDie : 상태 이상 효과의 유지 여부를 지정할 수 있습니다. 

→ 데이터 형식 : Bool ( 0 or 1 형식 ) 

☞ 타입 적용 값 : [ 0 - 캐릭터가 죽었을 경우 유지 않함 ] / [ 1 - 캐릭터가 죽어도 유지됨 ] 


 ▶ Option0 : 상태 이상의 효과에 의해서 적용되어질 Value(n)을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

※ Module_Table.DB/[ModuleType]에서 지정되어진 Value(n)값을 설정하면 됩니다. 


 ▶ IsDisplay : 게임 화면에 Buff/Debuff Icon 표시 여부를 지정할 수 있습니다. 

→ 데이터 형식 : Bool ( 0 or 1 형식 ) 

☞ 타입 적용 값 : [ 0 - 아이콘 표시 않함 ] / [ 1 - 아이콘 표시함 ] 


 ▶ Icon : 아이콘 파일의 경로를 지정할 수 있습니다. 

→ 데이터 형식 : Sting 형식의 링크 URL 


 ▶ ExtraDesc : 상태 이상의 효과를 설명할 수 있습니다. 

→ 데이터 형식 : String



※ Extrardinary_Table.DB ]에 대해서 위와 같이 컬럼(기능)들에 대해서 살펴보았습니다. 

Extrardinary_Table.DB ]에서는 [Module_Table.DB]의 기능을 호출하여 어떤 대상에게 효과를 적용시킬 것인지를 설정한다고 이해를 하시면 조금 더 쉽게 이해가 되실 수 있습니다. 


동일한 효과나 동종 효과(다른 효과)를 같이 사용할 수 없도록 제한적으로 관리 및 상위 효과에 대한 관리도 Extrardinary_Table.DB ]에서 관리를 합니다.   


Character에게 상당히 많은 상태 이상을 적용되어지면 문제가 되어질 수 있기 때문에 Extrardinary_Table.DB ]에서 이러한 문제가 되어질 수 있는 것들에 대해서 관리 감독과 제약을 주는 것들을 정한다고 생각하시면 될 듯 싶습니다. 


어떤 대상에게 어느정도의 시간만큼 얼마의 효과를 적용시킬 것이지를 설정하였다면, 

해당 효과를 발동시키기 위한 [ 조건 = 스킬 ]에 대해서 아래와 같이 설명을 드리도록 하겠습니다. 



4. 이제 Skill_Table.DB ]의 데이터 테이블 구조 설계와 테이블에 대해서 설명을 드리겠습니다. 


우선 아래와 같이 [ Skill_Table.DB ]를 만들고, [ Skill_Table.DB ] 와 [ Extrardinary_Table.DB/[Index] ]의 연결되어지는 구조에 대해서 살펴보도록 하겠습니다. 



Skill_Table.DB ]가 위와 같이 만들었습니다. 

이제 Skill_Table.DB ]의 컬럼에 대해서 아래와 같이 살펴보겠습니다. 


▶ SkillId : 스킬 인덱스를 의미합니다. 

→ 데이터 형식 : Int(n) 

※ [ SkillId ]는 중복값이 없는 유니크한 인덱스로 설정해야됩니다. 


 SkillLevel : 스킬 레벨을 의미합니다. 

→ 데이터 형식 : Int(n) 

※ 스킬 레벨은 [ Skillid ]가 동일할 경우에 동일 스킬 레벨은 존재할 수 없습니다.  

※ Character에게 [ SkillId = 1 / SkillLevel = 1]이 스텟 증가로 적용되어진 상태에서 [ SkillId = 1 / SkillLevel = 2 ]가 대상(자신)에게 시전되어진다면, 이전의 스킬 레벨 1을 초기화하고, 스킬 레벨 2가 적용되어지는 방식을 사용합니다. 

※ Character에게 [ SkillId = 1 / SkillLevel = 3]이 스텟 증가로 적용되어진 상태에서 [ SkillId = 1 / SkillLevel = 1]을 대상(자신)에게 시전되어진다면, 이전의 스킬 레벨이 현재 시전 중인 스킬 레벨보다 높기 때문에 [ SkillId = 1 / SkillLevel = 1]은 무시되어집니다. 


 SkillName : 스킬명을 지정할 수 있습니다. 

→ 데이터 형식 : String


 SkillType : 스킬 타입을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

 스킬 타입 리스트 

        - 0 : 아이템 스킬 - 아이템을 사용하여 시전되어지는 스킬 타입일 경우 지정합니다. 

- 1 : 액티브 스킬 - 아이템을 사용하지 않고, 스킬 자체를 사용하여 시전되어지는 스킬 타입일 경우 지정합니다. 

- 2 : 패시브 스킬 - 장착 아이템에 효과로 붙일 수 있으며, 스킬 자체로도 습득시에 영구 or 일시적인 효과가 시전되어지는 스킬 타입일 경우 지정합니다.

 

※ [ Item_Table.DB/[UseSkillType] ]의 구분자가 [ Skill_Table.DB/[SkillType] ]으로 이동되어야 하는 것이 맞습니다. 

스킬의 시전 타입이 무엇인지를 [ Item_Table.DB ]에 존재한다면 논리적인 구조 오류이기 때문에 [ Skill_Table.DB ] 에서 스킬의 사용 타입을 지정하는 것이 맞습니다. 


※ 추후 스킬을 중심으로 다루는 Part n에서 [ SkillType n ]에 따라서, [ 액티브 스킬과 패시브 스킬 ]등을 장착형 장비 아이템에서도 설정을 할 수 있는 형태와 오브젝트(AI)에서도 활용을 할 수 있는 방법에 대해서 자세하게 설명을 드리도록 하겠습니다. 


현재 Step에서는 위의 3가지 정도의 스킬 타입 정도만 기본적으로 알고 계셔도 크게 무리가 없습니다. 


 ReqEquipType : 스킬을 사용하는데 필요한 장비 타입을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 0 : 일반 아이템 

☞ 1 : 양손 무기 아이템  

☞ 2 : 한손 무기 아이템 

☞ 3 : 투구 아이템 

☞ 4 : 숄더 아이템 

☞ 5 : 갑옷 아이템 

☞ 6 : 장갑 아이템 

☞ 7 : 신발 아이템 

☞ 8 : 반지 아이템

☞ 9 : 목걸이 아이템 

☞ 10 : 벨트 아이템 

☞ 11 : 팔찌 아이템 

☞ 12 : 귀걸이 아이템 

☞ 13 : 발찌 아이템 

☞ 14 : 부적 아이템 

※ 해당 장비를 착용을 하였을 때에는 스킬이 발동되어지는 형태를 의미합니다. 

※ " 0 : 일반 아이템 "으로 설정되어지면, 장비를 착용하지않아도 사용되어지는 스킬을 의미합니다. 


 IsTargetType : 스킬을 사용할 대상의 상태를 지정할 수 있습니다. 

→ 데이터 형식 : Int(n) 

☞ 대상 상태 타입 리스트 

- 0 : 죽은 상태  - 스킬을 시전하려는 대상이 죽은 상태에서만 사용 가능하도록 지정할 수 있습니다.  

   - 1 : 살아있는 상태 - 스킬을 시전하려는 대상이 살아있는 상태에서만 사용 가능하도록 지정할 수 있습니다. 


 GlobalGroupId : 스킬을 하나의 묶음 단위로 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 글로벌 그룹으로 묶인 스킬의 재사용 우선 순위는 [ GlobalGroupCycleTime > ReUseCooTime ]으로 적용되어집니다. 

ReUseCooTime ]이 완료되었다고 하더라도 스킬을 사용할 수 있는 것은 아니며, [ GlobalGroupCycleTime ]이 완료되어진 시점에서 스킬 사용이 가능합니다. 


그러나, 보편적으로 [ GlobalGroupCycleTime ]의 시간을 [ ReUseCooTime ]보다 길게 설정하지는 않습니다. 

ReUseCooTime ]을 가지는 동일 효과나 동일 상태이상등을 중복으로 연속적으로 사용하지 못하도록 설정하기 위함입니다. 


 GlobalGroupCycleTime : 스킬의 묶음 단위의 재사용 그룹을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 스킬의 묶음 단위의 재사용 시간을 설정할 수 있으며, [ 0 ~ 2,592,000 / 최장 30일 ]로 설정이 가능합니다. 

단위 형식 : 60 ( 1분 ) 


 ReUseCooTime : 스킬의 단일 재사용 시간을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 단일 스킬의 재사용 시간을 설정할 수 있으며, [ 0 ~ 2,592,000 / 최장 30일 ]로 설정이 가능합니다. 

단위 형식 : 60 ( 1분 ) 


 ApplyCount : 적용 대상의 숫자를 지정할 수 있습니다. 

→ 데이터 형식 : Int(n)

☞ 적용 대상의 숫자는 최대 10을 초과할 수 없습니다. 

※ 10이상을 초과하였을 때, 점점 데미지가 감소되어 적용되어지는 부분에 대해서는 스킬 시스템을 본론으로 다룰 때, 다시 설명을 드리도록 하겠습니다. 


 ExtraId0 : 스킬의 효과를 지정할 수 있습니다. 

→ 데이터 형식 :  [ Extrardinary_Table.DB/[Index] ]를 사용합니다.  

※ 스킬 ID에 할당되어진 1번 스킬의 효과를 의미합니다. 

※ 스킬 ID가 존재하는 경우에 반드시 [ ExtraId0 = Value ]는 존재해야됩니다. 


 ExtraId1 : 스킬의 효과를 지정할 수 있습니다. 

→ 데이터 형식 :  [ Extrardinary_Table.DB/[Index] ]를 사용합니다.  

※ 스킬 ID에 할당되어진 2번 스킬의 효과를 의미합니다. 


 ExtraId2 : 스킬의 효과를 지정할 수 있습니다. 

→ 데이터 형식 :  [ Extrardinary_Table.DB/[Index] ]를 사용합니다.  

※ 스킬 ID에 할당되어진 3번 스킬의 효과를 의미합니다. 


※ ExtraId n ~ : 스킬의 효과를 더 많이 주고 싶다면 확장도 가능합니다. 


 Description : 스킬의 효과에 대한 설명을 지정할 수 있습니다. 

→ 데이터 형식 : Sting



※ 스킬에서는 상태 이상 효과를 어떻게 발동을 시킬것인지에 대해서 설정할 수 있습니다. 

이와 같이 스킬에 대한 기본적인 구조에 대해서 한번 살펴 보았습니다. 


이제는 아이템과 스킬을 연결하는 부분에 대해서 살펴보도록 하겠습니다. 



5. 장비 아이템에 스킬 붙이는 방법에 대해서 설명을 시작하겠습니다. 


이제 위에서 설명을 드린 것들을 종합적으로 연결되어지는 형태에 대해서 정리하여 설명을 드리도록 하겠습니다. 

여기에서는 [ 착용 장비 아이템에 스킬을 붙여서 효과를 발생 시키는 것 ]에 대해서 설명을 하고자 합니다. 


< Item_Table.DB : 논리적으로 잘못 설계되어진 부분을 언급하기 위해서 이미지를 첨부합니다. >

- 아래의 빨간색 테두리 라인의 [ UseSkillType ]은 [ Item_Table.DB ]에 있을 것이 아니라, [ Skill_Table.DB ]에 있는 것이 맞습니다. 


그럼 아래와 같은 형태의 [ 데이터 테이블 ]간의 데이터를 호출하는 방식에 대해서 설명을 드립니다. 


ⓐ Module_Table.DB에서 어떤 효과들을 장비 아이템에 붙일 것인지를 먼저 설정합니다.  


※ ModuleType에 대한 설명을 아래와 같이 한번 더 명시합니다. 

▶ ModuleType : 모듈의 행동 패턴을 정의하는 타입을 지정할 수 있습니다. 

→ 데이터 형식 : Int(n) ※ 타입 리스트는 아래와 같습니다. 

☞ 1 : 증가값 

☞ 2 : Tic당 추가되어질 증가값 

☞ 3 : 감소값

☞ 4 : Tic당 감소되어질 감소값 

☞ 5 : 증가율 

☞ 6 : 감소율 


ⓑ Extrardinary_Table.DB에서는 [ Module_Table.DB ]에서 설정한 효과들을 사용할 수 있도록 가공하는 작업을 합니다. 


※ 여기에서 잘못되어진 부분이 있습니다. 

장비 아이템에 Passive Skill 형태로 붙이는 스킬이기에 설정되지 말아야하는 데이터가 설정되어 있습니다. 

혹시.... 찾으셨는지요?  


아래의 데이터 테이블과 같이 [ ExtraTime = null ] 설정이 필요합니다. 

왜냐면? 장비 아이템에 Passive Skill 형태로 적용되어지기 때문에 별도의 [ 효과 유지 시간 ]을 가지는 것이 아닌, 영구 옵션으로 적용되어지기 때문입니다. 



ⓒ Skill_Table.DB 에서는 [ Extrardinary_Table.DB ]에서 사용할 수 있도록 가공 작업한 데이터를 [ 장비 아이템에 붙일 수 있는 연결 작업 ]을 해주는 것이라고 이해를 하시면 됩니다. 




※ 위와 같이 장비 아이템에 스킬을 연결할 준비를 모두 맞췄습니다. 

- SkillType = 2 ( 패시브 스킬 )로 설정되어 있는 것을 확인하실 수 있습니다. 

- ReqEquipType = n 에서는 무슨 장비를 착용을 하였을 때, 효과가 적용되는지를 체크할 수 있습니다. 

- IsTargetType = 1 에서는 효과 대상이 살아 있는 상태일 때만 적용된다는 것을 확인하실 수 있습니다. 

- GlobalGroupId, GlobalCooCycleTime, ReUseCooTime  = 0 인 것은 사용하는 스킬이 아닌, 패시브 스킬이기 때문에 별도의 효과 유지 시간과 재사용 시간을 설정할 필요가 없기 때문에 Value ( 0 )으로 설정되었습니다. 

- ApplyCount = 1 로 설정되어진 것을 장비를 착용하는 PC 자신에게만 효과를 적용시키기 때문입니다. 


ⓓ Item_Table.DB 에서는 [ Skill_Table.DB ]에서 장비 아이템에 붙일 수 있는 연결 작업한 패시브 스킬들을 해당 아이템에 설정한 것입니다. 



※ 위와 같이 [ Module_Table.DB > Extrardinary_Table.DB > Skill_Table.DB > Item_Table.DB ]까지 효과 데이터를 생성하여 효과 데이터를 적용하기까지의 전체 흐름에 대해서 설명하였습니다. 


기본적으로 장비 또는 아이템에 스킬을 붙이는 방법에 대해서 위와 같이 설명을 드렸으며,

이를 응용하여 활용성을 높이는 것은 기획을 담당하시는 기획자분들이 실무에서 더 범용적으로 활용을 하실 수 있도록 튜닝을 하시기 바랍니다. 


각 아이템을 착용시에 적용되어지는 효과 예시는 아래와 같습니다. 


☞ 파멸의 대검을(를) 장착하였을 때, 『 최대 생명력 + 100 증가  』 효과가 적용되어집니다. 

☞ 파멸의 장검을(를) 장착하였을 때, 『 최대 생명력 + 200 증가  』 효과가 적용되어집니다. 

☞ 파멸의 대도을(를) 장착하였을 때, 『 최대 생명력 + 300 증가  』 효과가 적용되어집니다. 

☞ 파멸의 도끼을(를) 장착하였을 때, 『 최대 생명력 + 400 증가  』 효과가 적용되어집니다. 

☞ 파멸의 장궁을(를) 장착하였을 때, 『 최대 생명력 + 500 증가  』 효과가 적용되어집니다. 

☞ 파멸의 단궁을(를) 장착하였을 때, 『 최대 마나 + 100 증가  』 효과가 적용되어집니다. 

☞ 파멸의 투구을(를) 장착하였을 때, 『 최대 마나 + 200 증가  』 효과가 적용되어집니다. 

☞ 파멸의 숄더을(를) 장착하였을 때, 『 최대 마나 + 300 증가  』 효과가 적용되어집니다. 

☞ 파멸의 갑옷을(를) 장착하였을 때, 『 최대 마나 + 400 증가  』 효과가 적용되어집니다. 

☞ 파멸의 건틀렛을(를) 장착하였을 때, 『 최대 마나 + 500 증가  』 효과가 적용되어집니다. 

☞ 파멸의 그리브을(를) 장착하였을 때, 『 경험치 +10% 증가 』 효과가 적용되어집니다. 

☞ 파멸의 반지을(를) 장착하였을 때, 『 경험치 +25% 증가 』 효과가 적용되어집니다. 

☞ 파멸의 목걸이을(를) 장착하였을 때, 『 추가 경험치 + 100 증가 』 효과가 적용되어집니다. 

☞ 파멸의 벨트을(를) 장착하였을 때, 『 추가 경험치 + 250 증가 』 효과가 적용되어집니다. 

☞ 파멸의 팔찌을(를) 장착하였을 때, 『 드랍 확률 +10% 증가 』 효과가 적용되어집니다. 

☞ 파멸의 귀걸이을(를) 장착하였을 때, 『 드랍 확률 +25% 증가 』 효과가 적용되어집니다. 

☞ 파멸의 발찌을(를) 장착하였을 때, 『 추가 드랍 량 증가 +1 』 효과가 적용되어집니다. 

☞ 파멸의 보석을(를) 장착하였을 때, 『 추가 드랍 량 증가 +2 』 효과가 적용되어집니다. 


※ " 추가 드랍 량 "이라는 단어가 생소할 수 있습니다. 

설명을 드리자면, A 라는 몬스터가 드랍하는 아이템의 최대 개수는 3개라고 하였을 때, [ A 몬스터를 사냥하여 획득할 수 있는 드랍 하는 아이템의 개수가 최대 4개로 변경 ]된다는 것을 의미합니다. 


이는 즉, [ ItemDrop_Table.DB ]라는 데이터 테이블에서 구성하고 있는 [ Monster가 드랍할 수 있는 아이템의 개수와 드랍 확률 ]에서 추가적으로 드랍되어지는 아이템의 개수를 증가가 되어진다는 것을 의미합니다. 


해당 부분에서 혼동이 있을 수 있는 내용은 드랍 되는 아이템 개수( 즉, 종류 )가 1개 더 증가되어진다는 것을 의미합니다. 

A라는 몬스터가 드랍할 수 있는 개수(종류)가 3개인 경우에 1개 더 증가되어지는 방식은 3개의 구성 리스트에서 임의 선택되어 2개의 동일한 아이템이 드랍되어지는 것을 의미합니다. 


※ [ 추가 드랍 량 ]관련하여 Module_Table.DB에서 ModuleType외에 별도의 Option0 ~ n을 설정하여 체크 조건과 세부 설정등을 설정할 수 있도록 튜닝 작업이 필요하기도 합니다.  



※ 게임의 장르와 방식에 따라서 많이 달라질 수 있으며, 여기에서는 이해하기 쉽게 하기 위하여 간략화되어진 버전을 사용함에 참고하시기 바랍니다. 


===========================================================================


여기에서는 아이템에 스킬을 붙이기 위해서 필요한 것들에 대해서 데이터 테이블의 구조 설계와 데이터간의 연결 구조에 대해서 설명을 드렸습니다.   


이와 같이 게임내에서 플레이를 할 때는 간단한 것들도 실제 시스템으로 제작하기 위해서는 쉽지 않은 복잡도를 가지는 형태가 빈번합니다. 


조금 더 범용적으로 활용할 수 있도록 튜닝 작업은 물론, 게임의 장르에 맞게 튜닝 작업을 하는 것도 필수 요소겠습니다. 


다음  Step_8 : 즉시 사용 아이템 시스템 ] 이라는 주제로 Step_7에서 설명을 드린 스킬과 아이템의 연결에 의한 활용 방법에 대해서 설명을 드리도록 하겠습니다. 



『 P.s 불타는초띵 』


===========================================================================


[본문링크] 아이템 스킬 시스템 구조 설계 방식과 데이터 테이블 구조 설계
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34826
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.