어지간한 게임이라면 아이템은 당연하게도 다양한 아이템 카테고리가 존재한다. 식량, 회복, 전투 등등..

내 게임 같은 경우도 마찬가지다. 그런데, 회복 아이템이 하나도 안나온다거나, 식량이 하나도 안나온다거나... 이러면? 운빨에 의해 그냥 게임 말아먹는건데 이런 상황을 나는 원하지 않아서 기초 자원을 보장하기 위한 최소한의 수단을 마련해두기 위해 드랍 시스템을 만들어보았음.


우선 드랍 테이블의 기반이 되는 추상 클래스에서 이렇게 아이템 카테고리를 분할하는 데이터베이스용 리스트를 만들고 (Array로 한번 더 감싼 이유는, 등급에 의한 구별을 쉽게 하기 위함)

a67208ad231e782da9535d46d25dd2e92970df333789e1b966304e330a73a46ed33ff906d85bf5c8591bb46f4b0f2cf29a212859af

아래와 같은 방식으로, 원하는 아이템 비율을 넣어주면, 자동으로 리스트를 생성해주는 메서드를 만들었고, params _modified를 이용하여, 세부 조절도 가능하게 만들었음.



a67b1caa0f16b54cb6ff5a56eb5dc0ecd3e326b3d7a8c05c2342f676ab8dbec9f61e



그런 다음 각 드롭 테이블을 구현하는 박스는, 아래와 같이 리스트들의 비율 조합으로 결정함. 


a66434aa191a782cb66f5d65ee91aee5762f58c5ea6ca5f0e8451390bfb953c2b9bfabe3e1fdbcf42449ffd98f8d40def9

얘는 전반적인 부분에서 사용될 가장 기초적인 박스고


a05709ab1c26782dbe4a5a5fd291a8de81c704467fd23ce0b23c184012a5284e4c768459

얘네들 같이 구성된게, 특정 지역에 등장하는, 확정 자원을 위한 박스들임




a16d08aa2402b27ebe34064d565acff5ad1f358d62bbea7a8ab9d5b4ab19ff89809b9459503dd7ee16359f68bda4eb421833d3

어쩌피 각 박스는 테이블만 만들어서 요청 받을때마다 적당히 아이템 목록을 내놓는 구조기에, 위와 같이 그냥 박스를 최초로 생성해서 참조가능한 형태로 만들어두고



a17a30aa121f782b9f435a5eea9f3433a29dcbdd9f5e126d5da562fe


이런 식으로 각 그리드의 꼭짓점에 적당히 그리드 정보 메타 타일 배치해준 뒤에,




a04804aa012fb27ebef1c6bb11f11a39ff2c13fff6f424def1

이런 식으로 메타타일 해석기 하나 만들어서 맵 스캐너에 붙여줌.
이제 좌표를 이 클래스로 보내주면, 해당 좌표가 어느 속성의 그리드 소속인지 알 수 있다.




a14a20ad231eb450baff5c6dc65af4c524a837bec0d3e02b34fd7197937b043dacb562f67db94b0dbfc4b14256

이후 지역 기반 기본 상자 제공자하고,



a76a08ad231eb35592ff5c6dc65af4c538faded96bb171ff345b918dab13c5601cae6f505abb058274327d2aa6cb

특화 그리드 기반으로 특화 상자를 미리 세팅 해 준 다음에,



a15e31aa1b22782ab84b5c65f691affcd9ced8785c0530f1f8c421ae8c6764aeadf895

이렇게 상자 추가해 주는 메서드를 만들고




a0513caa0e03782a936b5b4ef291a8d61bc691fed6ef80292a94b4e811c134cbdbede8

초기화용 메서드에 타일 파싱 종료되는 대로, 특화 박스 -> 일반 박스 순서대로 생성하게 한다. (일반 박스는 어디든지 배치 될 수 있기에, 특화를 먼저 배치함)

이제 게임을 실행해주면


a76800aa071e782a93635d65ee9f343357d597b0d223e472dff217c0



a76800aa071e782a93635d65ee91aeefcf061da994029741a092f4ee6b7f4f1d8fe69b

이런 식으로 군사 지역에는 일반 박스도 등장 하지만,


a76800aa071e782b84665b4ce29f343350e06b025ea396352f36c796



a76800aa071e782b84665b4ce291aeef89ef3e95a68f482e68c51c05df8963e6b2a9edf5

이렇게 전투 관련 물품만 등장하는 특화 박스도 들어가있고,




a1592caa2522782b84665b4ce29f343329e92e58387fe9c716557eb3


a1592caa2522782b84665b4ce291aeef15bef71dcc087265daa570466e7e2fc17736940b


서점은 책 전용 박스 등장



a1562dad263e782b84665b4ce29f3433f75b439096ba1e5d038c98aa


a1562dad263e782b84665b4ce291aeef7da0b4cdbcc0476c6c9b3651ba7c88a0caab64

마트는 식료 전용 박스 등장



a14028ad263e782b84665b4ce29f343314f3e4f7f9589468d5884b4a


a14028ad263e782b84665b4ce291aeef22e2da01f0b92f0e73d8c7bf830b26057380d9

병원은 의료물품 전문 박스가 등장하게 되었다



이제 저 위의 타일 해석기 기반으로, 적 분대 사전 생성해서 꽂아주도록 로직 변경하고, 아이템 드랍은 비율 조절만 해주면 될듯