22. 결정
20
• 몬스터 안에 생성 – UI생성, 소유권 관리에서 유리
• 수동 획득 – 자동/수동 전환 가능으로 큰 의미 없다
• 즉시 획득 – 이 기획에서 다루기 힘든 내용
• 무조건 – 아이템에 따라 달라질 수 있다
• 구체적 – 이 기획에서 다루기 힘든 내용
• 간섭 최소화 – 이 기획에서 다루기 힘든 내용
25. 전리품의 생성
22
기획 의도
보상, 유저가 위험을 무릎쓰거나 수고한
대가로 주어지는 보상이다.
전리품 분배에 필요한 요소들을 결정하는
과정.
사전 시스템
이후의 전리품이라 함은, 보물 상자 외에
도 몬스터 시체 등, 던전 탐험 혹은 몬스터
처치로 인한 모든 보상을 포함한다.
몬스터가 죽으면 파티클이 생성되어, 전리
품 가방의 생성을 알리고, 몬스터를 클릭
시 전리품 가방이 열린다.
생성된 전리품의 종류와 방법은 이미 결정
되어 있다고 가정한다.
38. 시스템 정의
35
사전 정의
monster1.dropitem으로 부터 생성되는
아이템 종류와 방법은 결정되어 있다고
가정한다.
전리품 생성
1)
2)
3)
전리품 가방 클래스인 dropitem1 생성.
monster1.dropitem으로 부터
dropitem1.item으로 데이터를 인계한다.
인계되는 데이터 종류는 ex.1참조.
몬스터시체 위 마우스 우클릭 시 활성되
는 함수 생성.
함수의 내용은 전리품 가방 UI 로드.
Call dropitem1.ui.show
39. Ex.1 Dropitem1.item 메모리
표1. 생성 아이템 데이터 예시
bagid
itmId image
18R
7G
4D
10J
11K
3C
2B
5E
6F
itmName itmmaxquantity itmquantity instantid
propertyid1
100
3620131024 233602R player1
골드
1
120131024 233602G player1
썬더퓨리
1
120131024 233602D player1
나무방패
나무지팡
1
120131024 233602J player1
이
1
120131024 233602K player1
얼음장검
1
120131024 233602C player1
풀헬름
1
120131024 233602B player1
녹슨검
1
120131024 233602E player1
쌍검
1
120131024 233602F player1
강철검
propertyid2
데이터 종류
가방ID, 아이템ID, UI컨트롤ID, 아이템이름, 아이템 최대 수
량, 아이템 수량, 고유ID, 소유권1, 소유권2
40. 전리품의 획득
36
기획 의도
상황에 따라서 달라지는 아이템의 획득 과
정을 설계한다.
복잡하고 예외사항이 많으므로 정확하고
오류없는 시스템을 목표로 한다.
사전 시스템
몬스터의 첫 타겟이 소유권 획득.
monster1.dropitem으로 부터 생성되는
아이템 종류와 방법은 결정되어 있다고
가정한다.
아이템 획득 과정에서 인벤토리의 정
리 기능은 고려하지 않는다.
아이템을 획득하는 방법은 드래그앤드
롭 방법도 있지만, 그 방법은 고려하지
않는다.
43. UI 열기
39
시체
우클릭 시
Call Dropitem1.ui.show
전리품 가방
UI
전리품 메모리
dropitem1
아이템 클릭
PC 인벤토리
메모리
소유권
확인
획득 방
법 결정
데이터 인계 함수
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
44. 시체 클릭
40
사전 정의
기획 의도
전리품을 UI 상 한 단계 아래에 배치하
여, 소유권을 가방 단위로 구분하고, 바
닥에 아이템들이 널브러져 혼잡해지는
것을 방지한다.
처치한 몬스터의 시체가 전리품 가방
이 되어 소유권 판정에 유리하다
monster1.dropitem으로 부터 생성되는
아이템 종류와 방법은 결정되어 있다고
가정한다.
정의
1)
시체를 마우스 우클릭 시 전리품 가방 및
아이템 데이터가 저장된 UI를 불러온다.
Call dropitem1.ui.show
52. 그러므로,
• 인벤토리 제약이 심한 MMORPG 류는,
• 아이템을 수동획득하는 것이 유리하다
대부분의 경우에 수동/자동을 선택/전환할 수 있다
48
53. 아이템 클릭
49
사전 정의
기획 의도
자동으로 획득하는 경우에 비해 원하
는 아이템만을 획득할 수 있으므로, 인
벤토리를 효율적으로 사용할 수 있다.
아이템이 없는 빈 칸을 클릭하면 아무
일도 일어나지 않는다.
아이템을 수동으로 획득한다.
자동 획득에 비해, 한 번 더 조작해야
하는 번거로움이 있다.
정의
1)
아이템 획득 프로세스를 시작한다.
소유권 확인 단계로.
59. 플레이어 인스턴트 가방
55
기획 의도
아이템의 획득은 복잡한 과정이므로
데이터의 손상, 변경, 오류를 막기 위해
사본 데이터를 만든다.
아이템 획득을 요청하면, 전리품 데이
터는 임시 가방으로 인계된다.
획득 검사에 따라, 플레이어 가방 메모
리에 임시 가방 데이터를 인계 하거나
임시 가방의 데이터를 폐기한다.
정의
1)
PC 인벤토리와 같지만, 메모리 상에만
존재하는 가상의 가방.
PC1.Instantbag
60. 데이터 인계
56
기획 의도
아이템 획득 프로세스의 중간 과정.
정의
1)
Dropitem1.item의 데이터를
PC1.instantbag으로 인계한다.
PC1.instantbag = Dropitem1.item
71. 빈 칸 검사
• 좌에서 우, 위에서 아래로 빈 칸을 검사한다
실제로는 UI를 검사하는 것이 아니라 메모리를 검사한다
67
72. 빈 칸이 하나라도 있으면,
• Blankchk_pc1_bag = True
하나도 없으면 False
68
73. 빈 칸 검사
69
기획 의도
아이템을 획득하기 전 가방에 빈 공간
이 있는 지를 확인한다.
사전 정의
이 기획에서는 16칸 가방만을 다룬다.
정의
1)
플레이어 가방의 메모리 값을 순서대로
검사하여 값이 Empty가 아닌 것이 있으
면, 검사를 중단하고, Blankchk_pc1_bag
= True로 한다. 없으면, False.
85. 검사결과 같은 게 있으면,
• Dplchk_pc1_bag = True
같은 게 하나도 없으면 False
81
86. 중복 체크
82
기획 의도
아이템을 획득하기 전, 소지품에 같은
항목이 있는 지를 확인한다.
수량이 최대가 아닌 중복 아이템을 빈
칸으로 볼 것인 지, 아이템으로 볼 것인
지 를 결정하는 과정.
정의
1)
2)
3)
좌에서 우, 위에서 아래의 순서로 진행한
다.
Pc1.instantbag 의 아이템ID와 PC의 가방
내 아이템ID를 비교한다.
같은 것이 있다면, 그 아이템의 수량과 최
대 수량을 비교한다. 값이 같다면,
dplchk_pc1_bag = True로 한다. 검사 결
과 위를 만족하는 값이 없으면, False로
한다.
91. 두 가지 값을 조합하여,
• 모든 경우의 수를 표현할 수 있다
전리품 분배에 관련하여
87
92. 네 가지 경우의 수
• Blank = True, Dplchk = True
• Blank= True, Dplchk = False
• Blank= False, Dplchk = True
• Blank= False, Dplchk = False
88
93. 네 가지 경우의 수
• 빈 칸이 있고 중복이 있다
• 빈 칸이 있고 중복이 없다
• 빈 칸이 없고 중복이 있다
• 빈 칸이 없고 중복이 없다
89
94. 빈 칸이 있고 중복이 있다
• 중복을 채우고 남는게 있으면, 빈 칸을 채운다
• 채우고 남는게 없으면, 종료
90
95. 빈칸 有 중복 有
91
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간과 중복 아이템이 모두 있을 때, 우
선 순위 및 처리 방법을 결정한다.
정의
1)
사전 정의
아이템 획득 과정에서 인벤토리의 정
리 기능은 고려하지 않는다.
아이템을 획득하는 방법은 드래그앤드
롭 방법도 있지만, 그 방법은 고려하지
않는다.
dplchk_pc1_bag 값과
blankchk_pc1_bag 값이 모두 True 이면,
pc1.TT 를 실행한다.
Call pc1.TT
97. 빈칸 有 중복 無
93
정의
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간은 있지만 중복 아이템은 없는 상
태.
예외가 아닌 가장 일반적인 상황이다.
1)
dplchk_pc1_bag 값이 True 이고,
blankchk_pc1_bag 값이 False 이면,
pc1.TF 를 실행한다.
Call pc1.TF
98. 빈 칸이 없고 중복이 있다
• 중복을 채우고 남는게 있으면, 전리품 가방을 채운다
• 채우고 남는게 없으면, 종료
94
99. 빈칸 無 중복 有
95
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간은 없지만 중복 아이템은 있는 상
태.
중복 아이템을 빈 공간으로 보는 경우,
인벤토리가 가득찼어도 획득할 수 있다.
정의
1)
dplchk_pc1_bag 값이 False 이고,
blankchk_pc1_bag 값이 True 이면,
pc1.FT 를 실행한다.
Call pc1.FT
100. 빈 칸이 없고 중복이 없다
• 획득 프로세스를 종료하고
• “빈 칸이 없습니다.” 출력
96
101. 빈칸 無 중복 無
97
정의
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간이 없고 중복 아이템도 없는 상황.
1)
dplchk_pc1_bag 값이 False 이고,
blankchk_pc1_bag 값이 False 이면,
pc1.FF 를 실행한다.
Call pc1.FF
114. 합 > 최대수량
Itmquantity = 10
110
Itmquantity = 11
>
Itmmaxquantity = 20
빈 칸에 나머지를 집어 넣는다
인스턴트백의 데이터 삭제, 전리품 데이터 및 UI 삭제
115. 빈칸 有 중복 有
111
정의
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간과 중복 아이템이 모두 있을 때, 우
선 순위 및 처리 방법을 결정한다.
1)
2)
사전 정의
아이템 획득 과정에서 인벤토리의 정
리 기능은 고려하지 않는다.
아이템을 획득하는 방법은 드래그앤드
롭 방법도 있지만, 그 방법은 고려하지
않는다.
아이템 획득 메시지는 채팅 창에 표시
되는 것으로 가정한다.
3)
pc 인벤토리를 ‘중복 검사’와 같은 방법
으로 검사하여 중복인 아이템의 슬롯 번
호, ID를 참조한다.
(pc1.inventory.itemquantity)
pc1.instantbag.itmquantity 와
pc1.inventory.itequantity를 합하여 그 값
은 plus로 하고, Plus pc1.inventory.itmmmaxquantity = exeed
로 한다.
a. exeed <= 0 이면,
pc1.inventory.itmquantity = plus로
한다.
b. exeed > 0 이면,
pc1.inventory.itmquantity =
pc1.inventory.itmmaxquantity 로 하
고, ‘빈 칸 검사’를 수행하여 빈 슬
롯의 pc1.inventory 값에
pc1.instantbag(itmqantity = exeed)
값을 인계한다.
pc1.instantbag 과 dropitem1.item 데이
터를 모두 삭제한다.
122. 빈칸 有 중복 無
118
정의
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간은 있지만 중복 아이템은 없는 상
태.
예외가 아닌 가장 일반적인 상황이다.
1)
2)
pc 인벤토리를 ‘중복 검사’와 같은 방법
으로 검사하여 중복인 아이템의 슬롯 번
호, ID를 참조한다.
(pc1.inventory.itemquantity)
pc1.inventory 값에 pc1.instantbag 값을
대입한다.
127. 빈칸 無 중복 有
123
정의
1)
2)
기획 의도
전리품을 획득하는 과정에서 인벤토리
공간은 없지만 중복 아이템은 있는 상
태.
3)
pc 인벤토리를 ‘중복 검사’와 같은 방법
으로 검사하여 중복인 아이템의 슬롯 번
호, ID를 참조한다.
(pc1.inventory.itemquantity)
pc1.instantbag.itmquantity 와
pc1.inventory.itmquantity를 합하여 그 값
은 plus로 하고, Plus pc1.inventory.itmmmaxquantity = exeed
로 한다.
a. exeed <= 0 이면,
pc1.inventory.itmquantity = exeed
로 한다.
b. exeeds > 0 이면,
pc1.inventory.itmquantity =
pc1.inventory.itmmaxquantity 로 하
고, dropitem1.item.itmquantity =
exeed 로 한다.
pc1.instantbag의 데이터를 삭제한다.
132. 순서도
128
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
PC 인벤토리
메모리
전리품 가방
UI
전리품 메모리
dropitem1
아이템 클릭
소유권
확인2
데이터 인계 함수
골드 획
득
플레이어
인스턴트 가방
데이터 인계 함수
134. 골드 획득
130
정의
기획 의도
전리품 중 골드를 획득 하는 방법.
1)
2)
3)
pc1의 골드 데이터는 pc1.gold에 저장한
다.
Pc1.instantbag.itmID값이 골드의 ID 값이
면, Pc1.gold = pc1. gold +
pc1.instantbag.gold 로 한다.
Pc1.instantbag과 dropitem1.itm 의 데이
터를 삭제한다.
135. 소유권의 생성 및 확인
131
기획 의도
전리품의 공정한 분배를 위해 전리품의 소
유권을 생성한다.
소유권을 생성하고 확인하는 과정을 필요
한 곳에 위치시킨다.
사전 시스템
몬스터의 첫 어그로 대상(타겟)이 몬스터
전리품의 소유권을 획득하게 된다. 파티라
면, 파티가 획득.
일부 몬스터의 가방은 소유권이 없더라도
같은 파티면 열 수 있다. 그러나 아이템획
득 소유권은 없을 수 있다.
143. 소유권 확인1
139
기획 의도
정의
소유권을 가방에 부여하여 묶음 단위
로 전리품의 분배가 이루어진다.
1)
사전 정의
일부 몬스터의 가방은 소유권이 없더
라도 같은 파티면 열 수 있다. 그러나
아이템획득 소유권은 없을 수 있다.
2)
몬스터의 HP가 0이 될 때, 생성되는 함
수 Dropitem1.ui.show를 실행시키려 하면,
insproperty와 시도자의 ID를 검사하여 두
값이 같으면, 전리품 UI를 불러온다.
3)
같지 않으면, UI로드를 취소한다.
몬스터의 첫 어그로 대상(타겟)이 몬스
터 전리품의 소유권을 획득하게 된다.
파티라면, 파티가 획득.
몬스터의 첫 타겟이 된 PC의 ID를
insproperty에 저장해 놓는다.
145. 소유권 확인2
141
정의
1)
기획 의도
예외적으로 타인이 가방을 열었을 때,
소유권한을 검사하여 소유권자가 아니
면 획득 프로세스를 중단한다.
몬스터의 첫 타겟이 된 PC의 ID를 메모
리에 저장해 놓는다.
2)
몬스터의 HP가 0이 될 때, 생성되는 전
리품의 dropitem1.item.propertyid1에 저
장해 놓은 PC의 ID를 인계한다.
3)
위에서 생성된 전리품 가방 내의 아이템
중 하나를 획득하려고 시도할 때,
propertyid1과 시도자의 ID를 검사하여 두
값이 같으면, 아이템획득 프로세스를 진
행한다.
4)
같지 않으면, 프로세스를 중단하고, “획
득할 수 없습니다.”라는 메세지를 출력한
다.
164. 파티의 생성 및 분배 방법 설정
기획 의도
원하는 설정에 따라 전리품 분배 방법
이 변경될 수 있는 시스템을 만든다.
사전 정의
주사위 굴림, 착용자 우선 획득 시스템
은 만들어 져 있다고 가정한다.
위의 두 시스템을 활성하면, 특정 아이
템 등급을 정하여 그 등급 이상의 아이
템은 주사위 굴림과 착용자를 고려하여
획득 방법이 결정된다.
영웅 등급 이상의 아이템이나, 위의 분
배 등급에 해당하는 아이템은 이 기획
의 내용에 해당되지 않는다.
정의
1)
2)
3)
4)
최초 파티 생성 시 partyID를 생성한다.
파티원순서 번호를 각 플레이어에게 배
정한다. Partynmb
몬스터가 죽을 때, 위의 두 값을 몬스터
의 소유권 property1, property2에 각각 부
여한다.
전리품 분배 방법을 설정한다. “자유 획
득”, “ 차례 대로 획득”.
160
165. 순서도
161
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
PC 인벤토리
메모리
전리품 가방
UI
아이템 클릭
소유권
확인2
획득 방
법 결정
데이터 인계 함수
전리품 메모리
dropitem1
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
166. 자유 획득
162
정의
1)
2)
기획 의도
파티 내 소유권을 파티원 모두로 한다.
3)
4)
5)
6)
몬스터의 첫 타겟이 된 PC의 partyID를
insproperty에 저장해 놓는다.
몬스터의 HP가 0이 될 때, 생성되는 함
수 Dropitem1.ui.show를 실행시키려 하면,
insproperty와 시도자의 partyID를 검사하
여 두 값이 같으면, 전리품 UI를 불러온다.
같지 않으면, UI로드를 취소한다.
몬스터의 HP가 0이 될 때, 생성되는 전
리품의 dropitem1.item.propertyid1에 위
의 partyID를 인계한다.
위에서 생성된 전리품 가방 내의 아이템
중 하나를 획득하려고 시도할 때,
propertyid1과 시도자의 partyID를 검사하
여 두 값이 같으면, 아이템획득 프로세스
를 진행한다.
같지 않으면, 프로세스를 중단하고, “획
득할 수 없습니다.”라는 메세지를 출력한
다.
167. 차례 대로 획득
기획 의도
163
5)
파티 내 소유권을 순차적으로 정한다.
정의
1)
2)
3)
4)
몬스터의 첫 타겟이 된 PC의
partyID를 insproperty에 저장해 놓
는다.
몬스터의 첫 타겟이 된 PC가 속해
있는 파티의 파티넘버, partynmb를
저장해 놓는다.
몬스터의 dropitem1.item.property1
= insproperty로 하고, property2 =
insnmb 로 한다.
insnmb = insnmb + 1
6)
7)
8)
9)
몬스터의 HP가 0이 될 때, 생성되는 함수
Dropitem1.ui.show를 실행시키려 하면,
insproperty와 시도자의 partyid를,
insnmb와 시도자의 partynmb의 일치 여
부를 확인한다.두 결과 값이 모두 참인 경
우, 전리품 UI를 불러온다.
같지 않으면, UI로드를 취소한다.
몬스터의 HP가 0이 될 때, 생성되는 전
리품의 dropitem1.item.propertyid1에 위
의 partynmb 값을 인계한다.
위에서 생성된 전리품 가방 내의 아이템
중 하나를 획득하려고 시도할 때,
property1과 시도자의 partyid를,
propertyid2과 시도자의 partynmb의 일치
여부를 확인한다.두 결과 값이 모두 참인
경우, 아이템 획득 프로세스를 진행한다.
같지 않으면, 프로세스를 중단하고, “획
득할 수 없습니다.”라는 메세지를 출력한
다.
170. 소유권 확인1
166
정의
기획 의도
1)
몬스터의 첫 타겟이 된 PC의 partyid 값
을 검사하여,
a. 값이 empty이면, 2), 3), 4)를 진행
한다.
b. 값이 empty가 아니고 차례대로획
득이면, 차례대로획득 프로세스를
진행한다.
c. 값이 empty가 아니고 차례대로획
득이 아니면, 자유획득 프로세스를
진행한다.
2)
몬스터의 첫 타겟이 된 PC의 ID를
insproperty에 저장해 놓는다.
3)
몬스터의 HP가 0이 될 때, 생성되는 함
수 Dropitem1.ui.show를 실행시키려 하면,
insproperty와 시도자의 ID를 검사하여 두
값이 같으면, 전리품 UI를 불러온다.
4)
같지 않으면, UI로드를 취소한다.
소유권을 가방에 부여하여 묶음 단위
로 전리품의 분배가 이루어진다.
사전 정의
몬스터의 첫 어그로 대상(타겟)이 몬스
터 전리품의 소유권을 획득하게 된다.
파티라면, 파티가 획득.
일부 몬스터의 가방은 소유권이 없더
라도 같은 파티면 열 수 있다. 그러나
아이템획득 소유권은 없을 수 있다.
171. 소유권 확인2
167
기획 의도
예외적으로 타인이 가방을 열었을 때,
소유권한을 검사하여 소유권자가 아니
면 획득 프로세스를 중단한다.
2)
몬스터의 첫 타겟이 된 PC의 ID를 메모
리에 저장해 놓는다.
3)
몬스터의 HP가 0이 될 때, 생성되는
전리품의 dropitem1.item.propertyid1에
저장해 놓은 PC의 ID를 인계한다.
4)
위에서 생성된 전리품 가방 내의 아이
템 중 하나를 획득하려고 시도할 때,
propertyid1과 시도자의 ID를 검사하여
두 값이 같으면, 아이템획득 프로세스를
진행한다.
5)
같지 않으면, 프로세스를 중단하고, “획
득할 수 없습니다.”라는 메세지를 출력
한다.
정의
1)
몬스터의 첫 타겟이 된 PC의 partyid 값
을 검사하여,
a. 값이 empty이면, 2), 3), 4)를 진행
한다.
b. 값이 empty가 아니고 차례대로획
득이면, 차례대로획득 프로세스를
진행한다.
c. 값이 empty가 아니고 차례대로획
득이 아니면, 자유획득 프로세스를
진행한다.
175. 두 가지 변수 생성
171
파티1
5.25 Gold
R, 소수점 변수
5 Gold
P, 정수 변수
5.25 Gold
R = P이면, Gold = Gold + P로 한다
R = P가 아니면, 획득자는 Gold = Gold + P + 1,
파티원은 Gold = Gold + P
177. 골드 획득
173
정의
1)
기획 의도
2)
전리품 중 골드를 획득하는 방법.
3)
4)
획득자의 Partyid가 Empty라면 2)를 진
행한다. 아니라면, “파티 골드 획득”을 진
행한다.
pc1의 골드 데이터는 pc1.gold에 저장한
다.
Pc1.instantbag.itmID값이 골드의 ID 값이
면, Pc1.gold = pc1. gold +
pc1.instantbag.gold 로 한다.
Pc1.instantbag과 dropitem1.itm 의 데이
터를 삭제한다.
178. 파티 골드 획득
174
정의
1)
2)
기획 의도
파티에서 골드를 분배하는 방법.
3)
4)
PC1의 골드 데이터는 PC1.gold에 저장
한다.
PC1.instantbag.itmID값이 골드의 ID 값
이면, (pc1.instantbag.itm.quantity / 파티
원의 수) 를 소수 변수 R, 정수 변수 P에
각각 넣는다.
R=P라면,
1) 파티원의 PC.gold = PC.gold + P로
한다.
2) 아니라면, 획득자(PC1)은
PC1.gold = PC1.gold + P + 1로 하
고, 파티원은 PC.gold = PC.gold +
P로 한다.
Pc1.instantbag과 dropitem1.itm 의 데이
터를 삭제한다.
181. 순서도
177
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
PC 인벤토리
메모리
전리품 가방
UI
아이템 클릭
소유권
확인2
획득 방
법 결정
데이터 인계 함수
전리품 메모리
dropitem1
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
182. 순서도
178
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
PC 인벤토리
메모리
아이템 클릭
소유권
확인2
획득 방
법 결정
데이터 인계 함수
전리품 메모리
dropitem1
가방 닫기
전리품 가방
UI
플레이어
가방 검
사
소유권
확인3
데이터 인계 함수
플레이어
인스턴트 가방
183. 소유권 포기
179
기획 의도
전리품의 획득 권한을 파티원 모두로
변경한다.
전리품은 공정하게 분배되어야 하므로,
1차 소유권자가 획득을 포기하더라도
2차 소유권자는 획득할 수 있도록 한다.
사전 시스템
닫기 버튼을 눌러 가방을 닫는 것 외에
도, 이동하면 가방이 닫힌다.
이동하여 가방이 닫힐 때에도 같은 프
로세스를 적용한다.
정의
1)
2)
파티상태(partyid = not empty)이고 차례
대로 획득(turnsecurevalue = true)일 때,
전리품 가방에 아이템이 남아있는 채로
가방을 닫으면,
해당 전리품 가방 및 아이템의 소유권
1(propertyid1)을 파티의 partyid로 한다.
dropitm.itm.property1 = partyid
194. 그러므로,
190
서버
플레이어1
플레이어2
플레이어3
A를 클릭
A를 클릭
A를 클릭
소유권 확인
소유권 확인
소유권 확인
가방 공간 확
인
가방 공간 확
인
플레이어4
가방 공간 확
인
P3가 A획득
P3가 A획득
P3가 A획득
P3가 A획득
가방 검사 이후 요청이 가능하게 한다
인벤토리외에도 획득할 수 있는 조건인가를 검사한다
P3가 A획득
196. 순서도
192
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
전리품 가방
UI
소유권
확인1
PC 인벤토리
메모리
전리품 메모리
dropitem1
아이템 클릭
서버
소유권
확인2
데이터 인계 함수
Yes
No
획득 방
법 결정
데이터 인계 함수
플레이어
가방 검
사
플레이어
인스턴트 가방
삭제
197. 획득 판정
193
기획 의도
여러 플레이어가 동시에 아이템 획득
을 요청하는 경우를 처리한다
정의
1)
소유권 검사 결과와 빈칸검사 결과 아이
템을 획득할 수 있는 경우라면, 서버에 아
이템 획득을 요청한다.
2)
요청 순으로 처리하되, 처리 중에는 다른
요청을 처리하지 않는다.
3)
요청이 동시에 도착한다면, 파티의 번호
(파티 가입 순서)가 낮은 순으로 획득을
결정한다.
203. 몬스터 시체
199
기획 의도
전리품 UI를 따로 생성하지 않고 몬스터의
시체를 재활용한다.
사전 시스템
몬스터가 죽으면 이름이 회색으로 바뀌면
특정 모션을 취하는 시체로 변한다.
204. UI 구성
200
4
1
몬스터 시체
몬스터가 죽어 시체이자, 가방이 된다.
5
6
2
선택 커서
몬스터 시체가 선택되었음을 나타내는 강조 커
서.
1
3
파티클
전리품을 의미하는 반짝이는 파티클 생성.
2
3
4
몬스터 상세 정보
윈도우에 몬스터 이름 및 소유권한을 표시한
다.
5
몬스터 이름
윈도우에 몬스터 이름을 표시한다.
6
소유 권한
윈도우에 몬스터의 소유 권한을 표시한다.
207. 순서도
203
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
전리품 가방
UI
전리품 메모리
dropitem1
아이템 클릭
소지품 가방UI
PC 인벤토리
메모리
소유권
확인2
획득 방
법 결정
데이터 인계 함수
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
208. 전리품 가방
204
기획 의도
전리품을 UI 상 한 단계 아래에 배치하여,
소유권을 가방 단위로 구분하고, 바닥에 아
이템들이 널브러져 혼잡해지는 것을 방지
한다.
사전 시스템
전리품 가방의 생성 위치는 캐릭터를 가리
지 않는 상하좌우의 한 곳에 생성한다.
전리품의 획득은 마우스 우클릭 하거나 마
우스로 드래그하여 소지품 창에 드롭하는
방법이 있다.
209. UI 구성
205
1
2
5
4
전리품 가방
전리품 들이 담겨있는 한 묶음이다.
2
가방 이름
가방의 이름. 몬스터 이름의 길이 때문에 “아
이템”으로 통일.
3
3
가방 공간
골드, 아이템 등, 구체적인 전리품이 들어가는
장소.
1
4
6
몬스터 등급
이 기획서에서는 다루지 않는다.
5
6
닫기 단추
눌러 가방을 닫는다.
아이템 슬롯
전리품 가방 UI의 하부 UI로 저장된 데이터로
부터 아이템 및 골드 UI를 불러온다.
7
7
스핀 버튼
아이템이 4개 초과일 때 생성. 보여지는 아이
템 리스트를 변경한다.
210. UI 기능
206
3
아이템
1
마우스로 우클릭하면, 아이템을 획득한다.
소유권한이 없으면, 획득 프로세스를 취
소한다.
마우스 좌클릭으로 드래그해서 소지품창
으로 넣을 수 있다. 이 내용은 다루지 않는
다.
스핀 버튼
2
1
아이템이 4개 초과일 때 생성. 아래 버튼
을 누르면 출력되는 아이템 리스트를 변경.
닫기 버튼
3
전리품 가방 UI를 닫는다.
2
파티 상태로 전리품이 남겨진 채 닫으면,
소유권을 포기한다.
212. 순서도
208
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
전리품 가방
UI
전리품 메모리
dropitem1
아이템 클릭
소지품 가방UI
PC 인벤토리
메모리
소유권
확인2
획득 방
법 결정
데이터 인계 함수
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
213. 전리품 분배 설정
209
기획 의도
파티 설정을 변경한다.
UI 단계 상 2단계, 3단계에 배치하여 UI 1
단계가 혼잡해지는 것을 방지한다.
214. UI 구성 및 기능
210
1
2
1
캐릭터 창
이미지, 이름, 체력, 마나 UI를 포함. 마우스
우클릭하여 설정 창을 생성한다.
설정 창
전리품 분배 설정 외 게임 설정이 나열되어 있
다.
3
전리품 분배 설정 창
전리품 분배 설정을 한다. 이 기획서에서는 자
유 획득과 차례 대로 획득 만을 다룬다.
5
4
전리품 분배 설정 탭
선택하여 전리품 분배 설정 창을 생성한다.
4
5
6
선택하여 전리품 분배 설정을 자유 획득으로
한다.
3
6
2
7
자유 획득 탭
차례 대로 획득 탭
선택하여 전리품 분배 설정을 차례대로 획득
으로 한다.
7
강조 탭
현재 마우스 커서로 가리키는 탭을 강조한다.
216. 순서도
212
시체
파티 생성
분배 설정
우클릭 시
Call Dropitem1.ui.show
소유권
확인1
전리품 가방
UI
전리품 메모리
dropitem1
아이템 클릭
소지품 가방UI
PC 인벤토리
메모리
소유권
확인2
1
획득 방
법 결정
데이터 인계 함수
플레이어
가방 검
사
데이터 인계 함수
플레이어
인스턴트 가방
217. 소지품 가방
213
기획 의도
인벤토리를 가방 단위로 생성한다.
사전 시스템
소지품 가방은 기본 가방(16 x 16)만을 다
룬다.
이 기획서에서는 전리품의 획득 방법으로
마우스 우클릭만을 고려한다.
218. UI 구성
214
1
소지품 창
소지품을 담고 있는 인벤토리 공간.
2
5
4
2
가방 이름
가방의 이름. “소지품”으로 통일.
3
가방 공간
아이템 슬롯을 포함하는 범위. 아이템 슬롯의
개수를 한정한다.
기본 가방의 슬롯의 개수는 16개.
획득하는 가방의 슬롯은 2 * x 개. x 는 1 이상
의 정수.
왼쪽 위부터 오른쪽 아래 순으로, 아이템 슬롯
에 넘버링을 한다.
6
4
3
5
6
가방 아이콘
이 기획서에서는 다루지 않는다.
닫기 단추
눌러 가방을 닫는다.
아이템 슬롯
빈칸이거나 아이템을 표시한다. 소지품 가방
UI의 하부 UI로 저장된 데이터로 부터 아이템
UI를 불러온다.
7
1
7
골드 슬롯
보유하고 있는 골드의 양을 표시.
219. UI 기능
215
3
1
아이템 슬롯
아이템을 사용한다. 이 기획서에서는 다루지
않는다.
1
2
골드 슬롯
골드를 획득하면 골드의 레이블을 변경한다.
그 외의 기능은 생략
3
닫기 단추
눌러 가방을 닫는다.
2